(page "index.html" (:require [app.rpc :as rpc] [app.scoreboard :as s])) (defc token nil) (defc hints-expanded false) (defc= logged-in? rpc/token-ok) (defc= error rpc/error) (defc= error-message (when error (.-message error))) (rpc/init) (html (head (link :rel "stylesheet" :type "text/css" :href "css/main.css") (title "Potluck CTF")) (body (h1 "Potluck CTF") (div :id "error" :click #(reset! rpc/error nil) :toggle (cell= (not (nil? rpc/error))) (text "\u00d7 Error: ~{error-message}")) (let [token-input (input :name "token")] (form :toggle (cell= (not logged-in?)) :submit #(do (reset! token (.-value token-input)) (rpc/check-token @token) (set! (.-value token-input) nil)) (text "Registration Token:") token-input (input :type "submit"))) (let [name-input (input :name "name")] (form :toggle logged-in? :submit #(do (rpc/set-name! @token (.-value name-input)) (set! (.-value name-input) nil)) (text "Change Name:") name-input (input :type "submit"))) (let [flag-input (input :name "flag")] (form :toggle logged-in? :submit #(do (rpc/submit-flag! @token (.-value flag-input)) (set! (.-value flag-input) nil)) (text "Flag:") flag-input (input :type "submit"))) (form :toggle logged-in? :submit #(do (reset! token nil) (reset! rpc/token-ok false)) (input :type "submit" :value "Logout")) (h2 :toggle logged-in? :click #(do (swap! hints-expanded not) (rpc/get-hints)) (text "~(if hints-expanded \"\u25be\" \"\u25b8\") Hints")) (pre :toggle hints-expanded :text rpc/hints) (h2 "Scoreboard") (s/scoreboard :scoreboard rpc/scoreboard))) ;; vim: set expandtab ts=2 sw=2 filetype=clojure :