From dd2c69afdb4eb2c23a9bb493a6d0a3946b83aa96 Mon Sep 17 00:00:00 2001 From: Maciej Smolinski Date: Mon, 1 Aug 2016 19:15:42 +0200 Subject: [PATCH] Highlight: As per PR comments - preview becomes static (back-end rendered), edit more dynamic. No hooks. --- resources/edit.html | 4 +- resources/public/js/events.js | 62 ---------------------------- resources/public/js/highlight.js | 67 ------------------------------- resources/public/js/publishing.js | 17 ++++---- resources/template.html | 8 +--- 5 files changed, 12 insertions(+), 146 deletions(-) delete mode 100644 resources/public/js/events.js delete mode 100644 resources/public/js/highlight.js diff --git a/resources/edit.html b/resources/edit.html index 6325934..7d5c821 100644 --- a/resources/edit.html +++ b/resources/edit.html @@ -6,11 +6,11 @@ + - + - diff --git a/resources/public/js/events.js b/resources/public/js/events.js deleted file mode 100644 index 9965745..0000000 --- a/resources/public/js/events.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Simple Event Bus - * - * Allows to easily hook into various page rendering / markdown parsing stages with custom modules - * - * - * High Level API: - * - * // Subscribe - * events.subscribe(eventName:String, eventHandler:Function) - * - * // Publish - * events.publish(eventName:String, optionalArgument1, optionalArgument2, ..., optionalArgumentN); - * - * - * Sample Usage: - * - * event.subscribe('markdown:parsed', function () { - * console.log('Markdown Parsed'); - * }); - * - * event.subscribe('markdown:parsed', function (title) { - * console.log('Markdown Parsed For Document: ' + title); - * }); - * - * events.publish('markdown:parsed', 'SampleDocument.md'); - * // Markdown Parsed - * // Markdown Parsed For Document: SampleDocument.md - * - */ -(function (global) { - - var eventBus = { - subscribers: [], - }; - - global.events = global.events || { - - subscribe: function (eventName, eventHandler) { - // Initialize an array of event listeners if doesn't exist already - eventBus.subscribers[eventName] = eventBus.subscribers[eventName] || []; - - eventBus.subscribers[eventName].push(eventHandler); - }, - - publish: function (eventName /*, arg1, arg2, ..., argN */) { - var eventArguments = [].slice.call(arguments, 1); - - if (eventArguments.length) { - console.log('[Hooks] "%s" with args %O', eventName, eventArguments); - } else { - console.log('[Hooks] "%s"', eventName); - } - - // Call event handlers with given attributes - (eventBus.subscribers[eventName] || []).forEach(function (eventHandler) { - eventHandler.apply(null, eventArguments); - }); - }, - - }; -}(window)); diff --git a/resources/public/js/highlight.js b/resources/public/js/highlight.js deleted file mode 100644 index b46112d..0000000 --- a/resources/public/js/highlight.js +++ /dev/null @@ -1,67 +0,0 @@ -// jscs:disable maximumLineLength - -/** - * Highlight Module - * - * - * High Level API: - * - * api.init() - * - * - * Hooks To: - * - * 'document:loaded' ~> highlight.init(); - * - */ -(function (global) { - - function loadInitialScriptsAndStyles() { - var link = - document.createElement('link'); - - var mainScript = - document.createElement('script'); - - link.rel = - 'stylesheet'; - - link.href = - 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.5.0/styles/zenburn.min.css'; - - mainScript.src = - 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.5.0/highlight.min.js'; - - // On main script load, configure marked - mainScript.addEventListener('load', function () { - marked.setOptions({ - langPrefix: 'hljs lang-', - highlight: function (code) { - return hljs.highlightAuto(code).value; - }, - }); - - }); - - // Extend marked.js on edit page only - if ('marked' in global) { - document.body.appendChild(mainScript); - } - - // Preview page requires scripts only - document.head.appendChild(link); - } - - // High Level API - var api = { - init: function () { - loadInitialScriptsAndStyles(); - }, - }; - - // Hooks - if ('events' in global) { - events.subscribe('document:loaded', api.init); - } - -}(window)); diff --git a/resources/public/js/publishing.js b/resources/public/js/publishing.js index 4cedae8..3faa8e7 100644 --- a/resources/public/js/publishing.js +++ b/resources/public/js/publishing.js @@ -7,6 +7,15 @@ var timerDelay = iosDetected ? 800 : 400; var $note, $action, $preview, $plain_password, $tableau; var backendTimer; +document.addEventListener('DOMContentLoaded', function () { + marked.setOptions({ + langPrefix: 'hljs lang-', + highlight: function (code) { + return hljs.highlightAuto(code).value; + }, + }); +}); + function md2html(input) { return marked(input); } @@ -24,11 +33,6 @@ function enableButton() { button.disabled = !checkbox.checked; } -document.addEventListener('DOMContentLoaded', function () { - // Hook point - events.publish('document:loaded'); -}); - function onLoad() { $note = $("note"); $action = $("action").value; @@ -42,9 +46,6 @@ function onLoad() { timer = setTimeout(function() { $preview.innerHTML = md2html(content); $tableau.innerHTML = content.split(/\s+/).length + " words"; - - // Hook point - events.publish('content:rendered'); }, delay); }; if ($action == "UPDATE") updatePreview(); diff --git a/resources/template.html b/resources/template.html index 01c8461..16e13e1 100644 --- a/resources/template.html +++ b/resources/template.html @@ -5,6 +5,7 @@ + %HEADER% @@ -12,12 +13,5 @@ %CONTENT% %FOOTER% - - - - -