|
|
|
|
@ -1,19 +1,37 @@
@@ -1,19 +1,37 @@
|
|
|
|
|
(ns NoteHub.main |
|
|
|
|
(:use [jayq.core :only [$ xhr css inner val anim show]]) |
|
|
|
|
(:require [goog.dom :as gdom] |
|
|
|
|
[goog.crypt.Md5 :as md5] |
|
|
|
|
(:require [goog.crypt.Md5 :as md5] |
|
|
|
|
[goog.crypt :as crypt] |
|
|
|
|
[NoteHub.crossover.lib :as lib] |
|
|
|
|
[clojure.browser.dom :as dom])) |
|
|
|
|
[NoteHub.crossover.lib :as lib])) |
|
|
|
|
|
|
|
|
|
(defn log |
|
|
|
|
"Logs to console.log" |
|
|
|
|
[text] |
|
|
|
|
(.log js/console text)) |
|
|
|
|
|
|
|
|
|
(defn $ |
|
|
|
|
"Returns DOM element by Id" |
|
|
|
|
[id] |
|
|
|
|
(.getElementById js/document (name id))) |
|
|
|
|
|
|
|
|
|
(defn val |
|
|
|
|
"Returns the value of the element or sets the value if the value was provided" |
|
|
|
|
([element] (.-value element)) |
|
|
|
|
([element value] |
|
|
|
|
(set! (.-value element) value))) |
|
|
|
|
|
|
|
|
|
(defn show |
|
|
|
|
"show the element" |
|
|
|
|
[element] |
|
|
|
|
(set! (.-display (.-style element)) "block")) |
|
|
|
|
|
|
|
|
|
; frequently used selectors |
|
|
|
|
(def $draft ($ :#draft)) |
|
|
|
|
(def $action ($ :#action)) |
|
|
|
|
(def $preview ($ :#preview)) |
|
|
|
|
(def $password ($ :#password)) |
|
|
|
|
(def $plain-password ($ :#plain-password)) |
|
|
|
|
(def $input-elems ($ :#input-elems)) |
|
|
|
|
(def $dashed-line ($ :#dashed-line)) |
|
|
|
|
(def $draft ($ :draft)) |
|
|
|
|
(def $action ($ :action)) |
|
|
|
|
(def $preview ($ :preview)) |
|
|
|
|
(def $password ($ :password)) |
|
|
|
|
(def $plain-password ($ :plain-password)) |
|
|
|
|
(def $input-elems ($ :input-elems)) |
|
|
|
|
(def $dashed-line ($ :dashed-line)) |
|
|
|
|
|
|
|
|
|
; Markdown Converter & Sanitizer instantiation |
|
|
|
|
(def md-converter (Markdown.Converter.)) |
|
|
|
|
@ -43,7 +61,7 @@
@@ -43,7 +61,7 @@
|
|
|
|
|
#(do |
|
|
|
|
(show $dashed-line) |
|
|
|
|
(show $input-elems) |
|
|
|
|
(inner $preview |
|
|
|
|
(set! (.-innerHTML $preview) |
|
|
|
|
(.makeHtml md-converter content))) delay))))) |
|
|
|
|
|
|
|
|
|
; set focus to the draft textarea (if there is one) |
|
|
|
|
@ -54,21 +72,21 @@
@@ -54,21 +72,21 @@
|
|
|
|
|
(val $draft "")) |
|
|
|
|
; foces setting is impossible in iOS, so we border the field instead |
|
|
|
|
(if ios-detected |
|
|
|
|
(.addClass $draft "ui-border") |
|
|
|
|
(set! (.-className $draft) (str (.-className $draft) "ui-border")) |
|
|
|
|
(.focus $draft)))) |
|
|
|
|
|
|
|
|
|
; show the preview & publish buttons as soon as the user starts typing. |
|
|
|
|
(.keyup $draft update-preview) |
|
|
|
|
(set! (.-onkeyup $draft) update-preview) |
|
|
|
|
|
|
|
|
|
; when the publish button is clicked, compute the hash of the entered text and |
|
|
|
|
; provided session key and assign to the field session-value; |
|
|
|
|
; moreover, compute the password hash as md5 before transmission |
|
|
|
|
(.click ($ :#publish-button) |
|
|
|
|
(set! (.-onclick ($ :publish-button)) |
|
|
|
|
(fn [e] |
|
|
|
|
(do |
|
|
|
|
(.update md5 (val $plain-password)) |
|
|
|
|
(val $plain-password nil) |
|
|
|
|
(when (val $plain-password) |
|
|
|
|
(val $password (crypt/byteArrayToHex (.digest md5)))) |
|
|
|
|
(val ($ :#session-value) |
|
|
|
|
(lib/hash #(.charCodeAt % 0) (str (val $draft) (val ($ :#session-key)))))))) |
|
|
|
|
(val ($ :session-value) |
|
|
|
|
(lib/hash #(.charCodeAt % 0) (str (val $draft) (val ($ :session-key)))))))) |
|
|
|
|
|