Commit 7d8276b6 by Don Mitchell

Merge branch 'feature/cas/speed-editor' of github.com:MITx/mitx into feature/cas/speed-editor

parents 4efe5789 a4b6851e
...@@ -14,9 +14,13 @@ ...@@ -14,9 +14,13 @@
class="problem-editor-icon number"></span></a></li> class="problem-editor-icon number"></span></a></li>
<li><a href="#" class="dropdown-button" data-tooltip="Option Response"><span <li><a href="#" class="dropdown-button" data-tooltip="Option Response"><span
class="problem-editor-icon dropdown"></span></a></li> class="problem-editor-icon dropdown"></span></a></li>
<li><a href="#" class="header-button" data-tooltip="Header"><span
class="problem-editor-icon dropdown"></span></a></li>
<li><a href="#" class="explanation-button" data-tooltip="Explanation (aka Solution)"><span
class="problem-editor-icon dropdown"></span></a></li>
</ul> </ul>
<ul class="editor-tabs"> <ul class="editor-tabs">
<li><a href="#" class="xml-tab tab" data-tab="xml">Use Advanced Editor</a></li> <li><a href="#" class="xml-tab advanced-toggle" data-tab="xml">Advanced Editor</a></li>
<li><a href="#" class="cheatsheet-toggle" data-tooltip="Toggle Cheatsheet">?</a></li> <li><a href="#" class="cheatsheet-toggle" data-tooltip="Toggle Cheatsheet">?</a></li>
</ul> </ul>
</div> </div>
......
...@@ -28,20 +28,24 @@ ...@@ -28,20 +28,24 @@
float: left; float: left;
} }
.tab { .advanced-toggle {
height: 24px; @include white-button;
padding: 7px 20px 3px; height: auto;
border: 1px solid #a5aaaf; margin-top: -1px;
border-radius: 3px 3px 0 0; padding: 3px 9px;
@include linear-gradient(top, rgba(0, 0, 0, 0) 87%, rgba(0, 0, 0, .06)); font-size: 12px;
background-color: #e5ecf3;
font-size: 13px;
color: #3c3c3c;
box-shadow: 1px -1px 1px rgba(0, 0, 0, .05);
&.current { &.current {
background: #fff; border: 1px solid $lightGrey !important;
border-bottom-color: #fff; border-radius: 3px !important;
background: $lightGrey !important;
color: $darkGrey !important;
pointer-events: none;
cursor: none;
&:hover {
box-shadow: 0 0 0 0 !important;
}
} }
} }
...@@ -49,7 +53,7 @@ ...@@ -49,7 +53,7 @@
width: 21px; width: 21px;
height: 21px; height: 21px;
padding: 0; padding: 0;
margin: 3px 5px 0 16px; margin: 0 5px 0 15px;
border-radius: 22px; border-radius: 22px;
border: 1px solid #a5aaaf; border: 1px solid #a5aaaf;
background: #e5ecf3; background: #e5ecf3;
......
...@@ -70,6 +70,22 @@ describe 'MarkdownEditingDescriptor', -> ...@@ -70,6 +70,22 @@ describe 'MarkdownEditingDescriptor', ->
revisedSelection = MarkdownEditingDescriptor.insertSelect('my text') revisedSelection = MarkdownEditingDescriptor.insertSelect('my text')
expect(revisedSelection).toEqual('[[my text]]') expect(revisedSelection).toEqual('[[my text]]')
describe 'insertHeader', ->
it 'inserts the template if selection is empty', ->
revisedSelection = MarkdownEditingDescriptor.insertHeader('')
expect(revisedSelection).toEqual(MarkdownEditingDescriptor.headerTemplate)
it 'wraps existing text', ->
revisedSelection = MarkdownEditingDescriptor.insertHeader('my text')
expect(revisedSelection).toEqual('my text\n====\n')
describe 'insertExplanation', ->
it 'inserts the template if selection is empty', ->
revisedSelection = MarkdownEditingDescriptor.insertExplanation('')
expect(revisedSelection).toEqual(MarkdownEditingDescriptor.explanationTemplate)
it 'wraps existing text', ->
revisedSelection = MarkdownEditingDescriptor.insertExplanation('my text')
expect(revisedSelection).toEqual('[explanation]\nmy text\n[explanation]')
describe 'markdownToXml', -> describe 'markdownToXml', ->
it 'converts raw text to paragraph', -> it 'converts raw text to paragraph', ->
data = MarkdownEditingDescriptor.markdownToXml('foo') data = MarkdownEditingDescriptor.markdownToXml('foo')
......
class @MarkdownEditingDescriptor extends XModule.Descriptor class @MarkdownEditingDescriptor extends XModule.Descriptor
# TODO really, these templates should come from or also feed the cheatsheet
@multipleChoiceTemplate : "( ) incorrect\n( ) incorrect\n(x) correct\n" @multipleChoiceTemplate : "( ) incorrect\n( ) incorrect\n(x) correct\n"
@checkboxChoiceTemplate: "[x] correct\n[ ] incorrect\n[x] correct\n" @checkboxChoiceTemplate: "[x] correct\n[ ] incorrect\n[x] correct\n"
@stringInputTemplate: "= answer\n" @stringInputTemplate: "= answer\n"
@numberInputTemplate: "= answer +- x%\n" @numberInputTemplate: "= answer +- x%\n"
@selectTemplate: "[[incorrect, (correct), incorrect]]\n" @selectTemplate: "[[incorrect, (correct), incorrect]]\n"
@headerTemplate: "Header\n=====\n"
@explanationTemplate: "[explanation]\nShort explanation\n[explanation]\n"
constructor: (element) -> constructor: (element) ->
@element = element @element = element
...@@ -59,7 +62,7 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor ...@@ -59,7 +62,7 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor
### ###
confirmConversionToXml: -> confirmConversionToXml: ->
# TODO: use something besides a JavaScript confirm dialog? # TODO: use something besides a JavaScript confirm dialog?
return confirm("If you convert to the XML source representation, which is used by the Advanced Editor, you cannot go back to using the Simple Editor.\n\nProceed with conversion to XML?") return confirm("If you use the Advanced Editor, this problem will be converted to XML and you will not be able to return to the Simple Editor Interface.\n\nProceed to the Advanced Editor and convert this problem to XML?")
### ###
Event listener for toolbar buttons (only possible when markdown editor is visible). Event listener for toolbar buttons (only possible when markdown editor is visible).
...@@ -74,6 +77,8 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor ...@@ -74,6 +77,8 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor
when "number-button" then revisedSelection = MarkdownEditingDescriptor.insertNumberInput(selection) when "number-button" then revisedSelection = MarkdownEditingDescriptor.insertNumberInput(selection)
when "checks-button" then revisedSelection = MarkdownEditingDescriptor.insertCheckboxChoice(selection) when "checks-button" then revisedSelection = MarkdownEditingDescriptor.insertCheckboxChoice(selection)
when "dropdown-button" then revisedSelection = MarkdownEditingDescriptor.insertSelect(selection) when "dropdown-button" then revisedSelection = MarkdownEditingDescriptor.insertSelect(selection)
when "header-button" then revisedSelection = MarkdownEditingDescriptor.insertHeader(selection)
when "explanation-button" then revisedSelection = MarkdownEditingDescriptor.insertExplanation(selection)
else # ignore click else # ignore click
if revisedSelection != null if revisedSelection != null
...@@ -158,6 +163,12 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor ...@@ -158,6 +163,12 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor
@insertSelect: (selectedText) -> @insertSelect: (selectedText) ->
return MarkdownEditingDescriptor.insertGenericInput(selectedText, '[[', ']]', MarkdownEditingDescriptor.selectTemplate) return MarkdownEditingDescriptor.insertGenericInput(selectedText, '[[', ']]', MarkdownEditingDescriptor.selectTemplate)
@insertHeader: (selectedText) ->
return MarkdownEditingDescriptor.insertGenericInput(selectedText, '', '\n====\n', MarkdownEditingDescriptor.headerTemplate)
@insertExplanation: (selectedText) ->
return MarkdownEditingDescriptor.insertGenericInput(selectedText, '[explanation]\n', '\n[explanation]', MarkdownEditingDescriptor.explanationTemplate)
@insertGenericInput: (selectedText, lineStart, lineEnd, template) -> @insertGenericInput: (selectedText, lineStart, lineEnd, template) ->
if selectedText.length > 0 if selectedText.length > 0
# TODO: should this insert a newline afterwards? # TODO: should this insert a newline afterwards?
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment