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, '