diff --git a/cms/static/js/speed-editor.js b/cms/static/js/speed-editor.js
deleted file mode 100644
index 9ff7c0248e..0000000000
--- a/cms/static/js/speed-editor.js
+++ /dev/null
@@ -1,434 +0,0 @@
-var $body;
-var $preview;
-var $tooltip;
-var $cheatsheet;
-var $currentEditor;
-var simpleEditor;
-var xmlEditor;
-var currentEditor;
-var controlDown;
-var commandDown;
-
-
-(function() {
- $body.on('click', '.editor-bar a', onEditorButton);
- $body.on('click', '.cheatsheet-toggle', toggleCheatsheet);
- $body.on('click', '.problem-settings-button', toggleProblemSettings);
- $(document).bind('keyup', onKeyboard);
-})();
-
-function initProblemEditors($editor, $prev) {
- $currentEditor = $editor;
- simpleEditor = CodeMirror.fromTextArea($editor.find('.edit-box')[0], {
- lineWrapping: true,
-// TODO: I left out the extra keys for now.
- extraKeys: {
- 'Ctrl-N': newUnit,
- 'Ctrl-H': makeHeader,
- 'Ctrl-V': makeVideo,
- 'Ctrl-M': makeMultipleChoice,
- 'Ctrl-C': makeCheckboxes,
- 'Ctrl-S': makeStringInput,
- 'Shift-Ctrl-3': makeNumberInput,
- 'Shift-Ctrl-S': makeSelect
- },
- mode: null,
- onChange: onSimpleEditorUpdate
- });
-
- xmlEditor = CodeMirror.fromTextArea($editor.find('.xml-box')[0], {
- lineWrapping: true,
- mode: 'xml',
- lineNumbers: true
- });
-
- currentEditor = simpleEditor;
-
- $(simpleEditor.getWrapperElement()).css('background', '#fff');
- $(xmlEditor.getWrapperElement()).css({
- 'background': '#fff'
- }).hide();
-
-// TODO: is this necessary??
- $(simpleEditor.getWrapperElement()).bind('click', setFocus);
- $preview = $prev.find('.problem');
-}
-
-function toggleProblemSettings(e) {
- e.preventDefault();
-
- $(this).toggleClass('is-open');
-
- if($(this).hasClass('is-open')) {
- $(this).find('.button-label').html('Hide Advanced Settings');
- $('.problem-settings').slideDown(150);
- } else {
- $(this).find('.button-label').html('Show Advanced Settings');
- $('.problem-settings').slideUp(150);
- }
-}
-
-function toggleCheatsheet(e) {
- e.preventDefault();
-
- if(!$currentEditor.find('.simple-editor-cheatsheet')[0]) {
- $cheatsheet = $($('#simple-editor-cheatsheet').html());
- $currentEditor.append($cheatsheet);
- }
-
- setTimeout(function() {
- $cheatsheet.toggleClass('shown');
- }, 10);
-}
-
-function setFocus(e) {
- $(simpleEditor).focus();
-}
-
-function onSimpleEditorUpdate() {
- console.log('update');
- updatePreview();
- updateXML();
-}
-
-function updateXML() {
- var val = simpleEditor.getValue();
- var xml = val;
-
- // replace headers
- xml = xml.replace(/(^.*?$)(?=\n\=\=+$)/gm, '
$1
');
- xml = xml.replace(/\n^\=\=+$/gm, '');
-
- // group multiple choice answers
- xml = xml.replace(/(^\s*\(.?\).*?$\n*)+/gm, function(match, p) {
- var groupString = '\n';
- groupString += ' \n';
- var options = match.split('\n');
- for(var i = 0; i < options.length; i++) {
- if(options[i].length > 0) {
- var value = options[i].split(/^\s*\(.?\)\s*/)[1];
- var correct = /^\s*\(x\)/i.test(options[i]);
- groupString += ' ' + value + '\n';
- }
- }
- groupString += ' \n';
- groupString += '\n\n';
- return groupString;
- });
-
- // group check answers
- xml = xml.replace(/(^\s*\[.?\].*?$\n*)+/gm, function(match, p) {
- var groupString = '\n';
- groupString += ' \n';
- var options = match.split('\n');
- for(var i = 0; i < options.length; i++) {
- if(options[i].length > 0) {
- var value = options[i].split(/^\s*\[.?\]\s*/)[1];
- var correct = /^\s*\[x\]/i.test(options[i]);
- groupString += ' ' + value + '\n';
- }
- }
- groupString += ' \n';
- groupString += '\n\n';
- return groupString;
- });
-
- // replace videos
- xml = xml.replace(/\{\{video\s(.*?)\}\}/g, '\n\n');
-
- // replace string and numerical
- xml = xml.replace(/^\=\s*(.*?$)/gm, function(match, p) {
- var string;
- var params = /(.*?)\+\-\s*(.*?)/.exec(p);
- if(parseFloat(p)) {
- if(params) {
- string = '\n';
- string += ' \n';
- } else {
- string = '\n';
- }
- string += ' \n';
- string += '\n\n';
- } else {
- string = '\n \n\n\n';
- }
- return string;
- });
-
- // replace selects
- xml = xml.replace(/\[\[(.+?)\]\]/g, function(match, p) {
- var selectString = '\n\n';
- selectString += ' \n';
- selectString += '\n\n';
- return selectString;
- });
-
- // split scripts and wrap paragraphs
- var splits = xml.split(/(\<\/?script.*?\>)/g);
- var scriptFlag = false;
- for(var i = 0; i < splits.length; i++) {
- if(/\
diff --git a/common/lib/xmodule/xmodule/js/src/problem/edit.coffee b/common/lib/xmodule/xmodule/js/src/problem/edit.coffee
index 773cafccb1..465bd33f86 100644
--- a/common/lib/xmodule/xmodule/js/src/problem/edit.coffee
+++ b/common/lib/xmodule/xmodule/js/src/problem/edit.coffee
@@ -8,6 +8,7 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor
constructor: (element) ->
$body.on('click', '.editor-tabs .tab', @changeEditor)
$body.on('click', '.editor-bar a', @onToolbarButton);
+ $body.on('click', '.cheatsheet-toggle', @toggleCheatsheet);
@xml_editor = CodeMirror.fromTextArea($(".xml-box", element)[0], {
mode: "xml"
@@ -51,6 +52,15 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor
@markdown_editor.replaceSelection(revisedSelection)
@markdown_editor.focus()
+ toggleCheatsheet: (e) =>
+ e.preventDefault();
+
+# TODO: don't base off of current_editor
+ if !$(@current_editor.getWrapperElement()).find('.simple-editor-cheatsheet')[0]
+ @cheatsheet = $($('#simple-editor-cheatsheet').html())
+ $(@current_editor.getWrapperElement()).append(@cheatsheet)
+
+ setTimeout (=> @cheatsheet.toggleClass('shown')), 10
setCurrentEditor: (editor) ->
$(@current_editor.getWrapperElement()).hide()
@@ -60,15 +70,16 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor
save: ->
$body.off('click', '.editor-tabs .tab', @changeEditor)
- $body.off('click', '.editor-bar a', @onToolbarButton);
+ $body.off('click', '.editor-bar a', @onToolbarButton)
+ $body.off('click', '.cheatsheet-toggle', @toggleCheatsheet)
# TODO when logic is in place to remove the markdown if xml is edited, ensure this doesn't overwrite that
if @current_editor == @markdown_editor
{
data: MarkdownEditingDescriptor.markdownToXml(@markdown_editor.getValue())
- metadata:
+ metadata:
markdown: @markdown_editor.getValue()
}
- else
+ else
data: @xml_editor.getValue()
@insertMultipleChoice: (selectedText) ->
@@ -119,6 +130,21 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor
else
return template
+# We may wish to add insertHeader and insertVideo. Here is Tom's code.
+# function makeHeader() {
+# var selection = simpleEditor.getSelection();
+# var revisedSelection = selection + '\n';
+# for(var i = 0; i < selection.length; i++) {
+#revisedSelection += '=';
+# }
+# simpleEditor.replaceSelection(revisedSelection);
+#}
+#
+#function makeVideo() {
+#var selection = simpleEditor.getSelection();
+#simpleEditor.replaceSelection('{{video ' + selection + '}}');
+#}
+#
@markdownToXml: (markdown)->
toXml = `function(markdown) {
var xml = markdown;