summaryrefslogtreecommitdiffstats
path: root/template/admin/rsrc/main.js
diff options
context:
space:
mode:
authorThomas Lange <code@nerdmind.de>2017-02-24 21:27:59 +0100
committerThomas Lange <code@nerdmind.de>2017-02-24 21:27:59 +0100
commit52b077a48c743ba4d08ac00520a0bf1ef6deef5f (patch)
treeb4205c194167e0e03e273957cdd0aab3be9fdf01 /template/admin/rsrc/main.js
downloadblog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.tar.gz
blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.tar.xz
blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.zip
Initial commit.v1.0
Diffstat (limited to 'template/admin/rsrc/main.js')
-rw-r--r--template/admin/rsrc/main.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/template/admin/rsrc/main.js b/template/admin/rsrc/main.js
new file mode 100644
index 0000000..3d5546f
--- /dev/null
+++ b/template/admin/rsrc/main.js
@@ -0,0 +1,94 @@
+//==============================================================================
+// Markdown tags to replace
+//==============================================================================
+var markdownTags = {
+ "bold": ["**", "**"],
+ "italic": ["*", "*"],
+ "header": ["## ", "\n"],
+ "link": ["[", "](href)"],
+ "image": ["![", "](href)"],
+ "code": ["\n~~~\n", "\n~~~\n"],
+ "quote": ["\n> ", ""],
+ "list_ul": ["* ", ""],
+ "list_ol": ["1. ", ""]
+};
+
+//==============================================================================
+// Set caret position in editor
+//==============================================================================
+function setCaretPosition(position) {
+ window.setTimeout(function() {
+ document.getElementById("content-editor").focus();
+ document.getElementById("content-editor").setSelectionRange(position, position);
+ }, 50);
+
+}
+
+//==============================================================================
+// Insert markdown around text in editor
+//==============================================================================
+function markdownReplace(tagname) {
+ var element = document.activeElement;
+
+ if(element.nodeName === 'TEXTAREA') {
+ var selectionStart = element.selectionStart;
+ var selectionEnd = element.selectionEnd;
+
+ var selectedText = element.value.substring(selectionStart, selectionEnd);
+
+ var content = element.value;
+ element.value = content.slice(0, selectionStart) + markdownTags[tagname][0] + selectedText + markdownTags[tagname][1] + content.slice(selectionEnd);
+
+ setCaretPosition(selectionStart + markdownTags[tagname][0].length + selectedText.length + markdownTags[tagname][1].length);
+ }
+}
+
+//==============================================================================
+// Insert emoticon after cursor in editor
+//==============================================================================
+function emoticonReplace(emoticon) {
+ var element = document.activeElement;
+
+ if(element.nodeName === 'TEXTAREA') {
+ var selectionStart = element.selectionStart;
+ var selectionEnd = element.selectionEnd;
+
+ var content = element.value;
+ element.value = content.slice(0, selectionStart) + emoticon + content.slice(selectionEnd);
+
+ setCaretPosition(selectionStart + emoticon.length);
+ }
+}
+
+//==============================================================================
+// Keep server-side session active if the user is writing a long text
+//==============================================================================
+addEventListener("DOMContentLoaded", function() {
+ setInterval(function() {
+ var Request = new XMLHttpRequest();
+ Request.open("HEAD", "", true);
+ Request.send();
+ }, 300000);
+}, false);
+
+//==============================================================================
+// Insert tab indent into editor if <tab> is pressed
+//==============================================================================
+addEventListener("DOMContentLoaded", function() {
+ if(document.getElementById("content-editor")) {
+ var element = document.getElementById("content-editor");
+ element.addEventListener('keydown', function(e) {
+ if(e.keyCode === 9 && !e.ctrlKey && !e.shiftKey) {
+ var selectionStart = element.selectionStart;
+ var selectionEnd = element.selectionEnd;
+
+ var content = element.value;
+
+ element.value = content.substring(0, selectionStart) + "\t" + content.substring(selectionEnd);
+
+ setCaretPosition(selectionStart + 1);
+ e.preventDefault();
+ }
+ }, false);
+ }
+}, false); \ No newline at end of file