From dbad9338e18ed8be0ed6d9ba4d3e71bd729353c0 Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Thu, 26 Jul 2012 16:01:57 -0400 Subject: [PATCH 1/4] removed unnecessary/commented out lines --- lms/static/coffee/src/customwmd.coffee | 67 -------------------------- 1 file changed, 67 deletions(-) diff --git a/lms/static/coffee/src/customwmd.coffee b/lms/static/coffee/src/customwmd.coffee index 6b3a040a35..e893ddf0d1 100644 --- a/lms/static/coffee/src/customwmd.coffee +++ b/lms/static/coffee/src/customwmd.coffee @@ -27,19 +27,6 @@ $ -> (?!`) ///gm - ###HUB.Queue -> - console.log "initializing" - renderReady = true - HUB.processUpdateTime = 50 - HUB.Config - "HTML-CSS": - EqnChunk: 10 - EqnChunkFactor: 1 - SVG: - EqnChunk: 10 - EqnChunkFactor: 1 - ### - @processMath: (start, last, preProcess) => block = blocks.slice(start, last + 1).join("").replace(/&/g, "&") .replace(/ math = null text - @updateMathJax: => - HUB.Queue(["Typeset", HUB, "wmd-preview"]) - - - - ### - if not HUB.Cancel? #and 1 == 2 - HUB.cancelTypeset = false - CANCELMESSAGE = "MathJax Canceled" - - HOOKS = [ - { - name: "HTML-CSS Jax Config" - engine: -> window["MathJax"].OutputJax["HTML-CSS"] - }, - { - name: "SVG Jax Config" - engine: -> window["MathJax"].OutputJax["SVG"] - }, - { - name: "TeX Jax Config" - engine: -> window["MathJax"].InputJax.TeX - }, - ] - - for hook in HOOKS - do (hook) -> - HUB.Register.StartupHook hook.name, -> - engine = hook.engine() - engine.Augment - Translate: (script, state) -> - console.log "translating" - if HUB.cancelTypeset or state.cancelled - throw Error(CANCELMESSAGE) - engine.Translate.call(engine, script, state) - - prevProcessError = HUB.processError - HUB.processError = (error, state, type) -> - if error.message != CANCELMESSAGE - return prevProcessError.call(HUB, error, state, type) - else - console.log "handling message" - MathJax.Message.Clear(0, 0) - state.jaxIds = [] - state.jax = {} - state.scripts = [] - state.i = state.j = 0 - state.cancelled = true - return null - - HUB.Cancel = -> - this.cancelTypeset = true - ### - if Markdown? converter = Markdown.getSanitizingConverter() editor = new Markdown.Editor(converter) From 2e26f84e9bdb3335f3a1d1c34fef1cb4b6c34f75 Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Thu, 26 Jul 2012 16:20:26 -0400 Subject: [PATCH 2/4] improve for multiple editor on page --- lms/static/coffee/src/customwmd.coffee | 70 +++++++++++-------- lms/static/coffee/src/discussion.coffee | 2 + .../coffee/src/mathjax_delay_renderer.coffee | 13 ++-- 3 files changed, 46 insertions(+), 39 deletions(-) diff --git a/lms/static/coffee/src/customwmd.coffee b/lms/static/coffee/src/customwmd.coffee index e893ddf0d1..e8012d8f42 100644 --- a/lms/static/coffee/src/customwmd.coffee +++ b/lms/static/coffee/src/customwmd.coffee @@ -6,10 +6,6 @@ $ -> class MathJaxProcessor - inlineMark = "$" - math = null - blocks = null - MATHSPLIT = /// ( \$\$? # normal inline or display delimiter | \\(?:begin|end)\{[a-z]*\*?\} # \begin{} \end{} style @@ -27,20 +23,26 @@ $ -> (?!`) ///gm - @processMath: (start, last, preProcess) => - block = blocks.slice(start, last + 1).join("").replace(/&/g, "&") + constructor: (inlineMark, displayMark) -> + @inlineMark = inlineMark || "$" + @displayMark = displayMark || "$$" + @math = null + @blocks = null + + processMath: (start, last, preProcess) -> + block = @blocks.slice(start, last + 1).join("").replace(/&/g, "&") .replace(//g, ">") if HUB.Browser.isMSIE block = block.replace /(%[^\n]*)\n/g, "$1
\n" - blocks[i] = "" for i in [start+1..last] - blocks[start] = "@@#{math.length}@@" + @blocks[i] = "" for i in [start+1..last] + @blocks[start] = "@@#{@math.length}@@" block = preProcess(block) if preProcess - math.push block + @math.push block - @removeMath: (text) => + removeMath: (text) -> - math = [] + @math = [] start = end = last = null braces = 0 @@ -54,13 +56,13 @@ $ -> else deTilde = (text) -> text - blocks = _split(text.replace(/\r\n?/g, "\n"), MATHSPLIT) + @blocks = _split(text.replace(/\r\n?/g, "\n"), MATHSPLIT) - for current in [1...blocks.length] by 2 - block = blocks[current] + for current in [1...@blocks.length] by 2 + block = @blocks[current] if block.charAt(0) == "@" - blocks[current] = "@@#{math.length}@@" - math.push block + @blocks[current] = "@@#{@math.length}@@" + @math.push block else if start if block == end if braces @@ -79,7 +81,7 @@ $ -> else if block == "}" and braces --braces else - if block == inlineMark or block == "$$" + if block == @inlineMark or block == @displayMark start = current end = block braces = 0 @@ -92,21 +94,27 @@ $ -> @processMath(start, last, deTilde) start = end = last = null - deTilde(blocks.join("")) + deTilde(@blocks.join("")) - @replaceMath: (text) => - text = text.replace /@@(\d+)@@/g, ($0, $1) => math[$1] - math = null + replaceMath: (text) -> + text = text.replace /@@(\d+)@@/g, ($0, $1) => @math[$1] + @math = null text if Markdown? - converter = Markdown.getSanitizingConverter() - editor = new Markdown.Editor(converter) - converter.hooks.chain "preConversion", MathJaxProcessor.removeMath - converter.hooks.chain "postConversion", MathJaxProcessor.replaceMath - delayRenderer = new MathJaxDelayRenderer() - editor.hooks.chain "onPreviewPush", (text, previewSet) -> - delayRenderer.render - text: text - previewSetter: previewSet - editor.run() + Markdown.getMathCompatibleConverter = -> + converter = Markdown.getSanitizingConverter() + processor = new MathJaxProcessor() + converter.hooks.chain "preConversion", processor.removeMath + converter.hooks.chain "postConversion", processor.replaceMath + converter + + Markdown.makeWmdEditor = (appended_id) -> + converter = Markdown.getMathCompatibleConverter() + editor = new Markdown.Editor(converter, appended_id) + delayRenderer = new MathJaxDelayRenderer() + editor.hooks.chain "onPreviewPush", (text, previewSet) -> + delayRenderer.render + text: text + previewSetter: previewSet + editor.run() diff --git a/lms/static/coffee/src/discussion.coffee b/lms/static/coffee/src/discussion.coffee index 51420f38cc..50bc95d8e8 100644 --- a/lms/static/coffee/src/discussion.coffee +++ b/lms/static/coffee/src/discussion.coffee @@ -13,6 +13,8 @@ $ -> Discussion.bindDiscussionEvents(discussion) Discussion.initializeDiscussion(discussion) + Markdown.makeWmdEditor() + generateLocal = (elem) -> (selector) -> $(elem).find(selector) diff --git a/lms/static/coffee/src/mathjax_delay_renderer.coffee b/lms/static/coffee/src/mathjax_delay_renderer.coffee index 03bb4b3cc9..b70cb28246 100644 --- a/lms/static/coffee/src/mathjax_delay_renderer.coffee +++ b/lms/static/coffee/src/mathjax_delay_renderer.coffee @@ -13,9 +13,7 @@ class @MathJaxDelayRenderer constructor: (params) -> params = params || {} @maxDelay = params["maxDelay"] || @maxDelay - @bufferId = params["buffer"] || @bufferId - if not $("##{@bufferId}").length - $("
").attr("id", @bufferId).css("display", "none").appendTo($("body")) + @$buffer = $("
").attr("id", @bufferId).css("display", "none").appendTo($("body")) # render: (params) -> # params: @@ -35,7 +33,6 @@ class @MathJaxDelayRenderer if not text? text = $(elem).html() preprocessor = params["preprocessor"] - buffer = $("##{@bufferId}") if params["delay"] == false if preprocessor? @@ -54,20 +51,20 @@ class @MathJaxDelayRenderer prevTime = getTime() if preprocessor? text = preprocessor(text) - buffer.html(text) + @$buffer.html(text) curTime = getTime() @elapsedTime = curTime - prevTime if MathJax prevTime = getTime() @mathjaxRunning = true - MathJax.Hub.Queue ["Typeset", MathJax.Hub, buffer.attr("id")], => + MathJax.Hub.Queue ["Typeset", MathJax.Hub, @$buffer.attr("id")], => @mathjaxRunning = false curTime = getTime() @mathjaxDelay = curTime - prevTime if previewSetter - previewSetter($(buffer).html()) + previewSetter($(@$buffer).html()) else - $(elem).html($(buffer).html()) + $(elem).html($(@$buffer).html()) else @mathjaxDelay = 0 @mathjaxTimeout = window.setTimeout(renderer, delay) From fc4e21d4c4d5df2b83d22c03d534094cee2a0acc Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Thu, 26 Jul 2012 17:35:09 -0400 Subject: [PATCH 3/4] use wmd editor for comments --- lms/static/coffee/src/customwmd.coffee | 13 ++++++++++++- lms/static/coffee/src/discussion.coffee | 20 +++++++++++++++----- lms/static/sass/_discussion.scss | 2 +- lms/templates/discussion/inline.html | 10 +++------- lms/templates/discussion/thread.html | 19 +++++++++++-------- 5 files changed, 42 insertions(+), 22 deletions(-) diff --git a/lms/static/coffee/src/customwmd.coffee b/lms/static/coffee/src/customwmd.coffee index e8012d8f42..8a3a2d7c97 100644 --- a/lms/static/coffee/src/customwmd.coffee +++ b/lms/static/coffee/src/customwmd.coffee @@ -109,7 +109,18 @@ $ -> converter.hooks.chain "postConversion", processor.replaceMath converter - Markdown.makeWmdEditor = (appended_id) -> + Markdown.makeWmdEditor = (elem, appended_id) -> + $elem = $(elem) + if not $elem.length + console.log "warning: elem for makeWmdEditor doesn't exist" + return + if not $elem.find(".wmd-panel").length + _append = appended_id || "" + $wmdPanel = $("
").addClass("wmd-panel") + .append($("
").attr("id", "wmd-button-bar#{_append}")) + .append($(" +
+
New Post -
-
- -
-
+
% for thread in threads: diff --git a/lms/templates/discussion/thread.html b/lms/templates/discussion/thread.html index 5997b1b70c..52eb17c107 100644 --- a/lms/templates/discussion/thread.html +++ b/lms/templates/discussion/thread.html @@ -41,14 +41,17 @@ % for comment in comments:
- ${render_vote(comment)} -
-
- ${comment['body']} -
- ${render_info(comment)} - ${render_reply()} - ${render_edit()} +
+ ${render_vote(comment)} +
+
+ ${comment['body']} +
+ ${render_info(comment)} + ${render_reply()} + ${render_edit()} +
+
From 03898f4ab7406ee5fc3b3bbc235aa8c746869a7f Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Thu, 26 Jul 2012 17:57:37 -0400 Subject: [PATCH 4/4] fixed unmatched div tag --- lms/templates/discussion/thread.html | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lms/templates/discussion/thread.html b/lms/templates/discussion/thread.html index 52eb17c107..500ca66585 100644 --- a/lms/templates/discussion/thread.html +++ b/lms/templates/discussion/thread.html @@ -45,12 +45,11 @@ ${render_vote(comment)}
- ${comment['body']} -
- ${render_info(comment)} - ${render_reply()} - ${render_edit()} -
+ ${comment['body']} +
+ ${render_info(comment)} + ${render_reply()} + ${render_edit()}