From 52b077a48c743ba4d08ac00520a0bf1ef6deef5f Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Fri, 24 Feb 2017 21:27:59 +0100 Subject: Initial commit. --- template/admin/rsrc/main.js | 94 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 template/admin/rsrc/main.js (limited to 'template/admin/rsrc/main.js') 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 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 -- cgit v1.2.3