You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.2 KiB
66 lines
2.2 KiB
var $ = function(id){ return document.getElementById(id); } |
|
var iosDetected = navigator.userAgent.match("(iPad|iPod|iPhone)"); |
|
var timer = null; |
|
var timerDelay = iosDetected ? 800 : 400; |
|
var show = function(elem) { elem.style.display = "block" } |
|
var $note, $action, $preview, $plain_password, $input_elems, $dashed_line, $proposed_title, updatePreview; |
|
var firstLines_; |
|
var backendTimer; |
|
|
|
function updateProposedTitle() { |
|
clearTimeout(backendTimer); |
|
backendTimer = setTimeout(function () { |
|
var http = new XMLHttpRequest(); |
|
var url = "/propose-title"; |
|
http.open("POST", url, true); |
|
http.onreadystatechange = function() { |
|
if(http.readyState == 4 && http.status == 200) { |
|
var now = new Date(); |
|
$proposed_title.innerHTML = |
|
"Expected URL: https://www.notehub.org/" + |
|
now.getFullYear() + "/" + (now.getMonth()+1) + "/" + now.getDate() + "/" + |
|
http.responseText; |
|
} |
|
} |
|
http.send($note.value); |
|
}, 500); |
|
} |
|
|
|
function md2html(input){ |
|
return marked(input); |
|
} |
|
|
|
function onLoad () { |
|
$note = $("note"); |
|
$action = $("action"); |
|
$preview = $("preview"); |
|
$plain_password = $("plain-password"); |
|
$proposed_title = $("proposed-title"); |
|
$input_elems = $("input-elems"); |
|
$dashed_line = $("dashed-line"); |
|
updatePreview = function(){ |
|
clearTimeout(timer); |
|
var content = $note.value; |
|
var delay = Math.min(timerDelay, timerDelay * (content.length / 400)); |
|
timer = setTimeout(function(){ |
|
show($dashed_line); |
|
show($input_elems); |
|
$preview.innerHTML = md2html(content); |
|
var firstLines = content.split("\n", 2); |
|
if(firstLines_ != firstLines) { |
|
firstLines_ = firstLines; |
|
updateProposedTitle(); |
|
} |
|
}, delay); |
|
}; |
|
if($action){ |
|
if($action.value == "update") updatePreview(); else $note.value = ""; |
|
$note.onkeyup = updatePreview; |
|
$("publish-button").onclick = function(e) { |
|
if($plain_password.value != "") $("password").value = md5($plain_password.value); |
|
$plain_password.value = null; |
|
$("signature").value = md5($("session").value + $note.value); |
|
} |
|
if(iosDetected) $note.className += " ui-border"; else $note.focus(); |
|
} |
|
}
|
|
|