X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/856f00d24d37590a78b78833a8aa305983e58e45..c38178af914a1015d94cc0cdef8dbb2a6ea21427:/src/editor/plugins/core/edumed/actions.js diff --git a/src/editor/plugins/core/edumed/actions.js b/src/editor/plugins/core/edumed/actions.js index 8b968b8..b79d109 100644 --- a/src/editor/plugins/core/edumed/actions.js +++ b/src/editor/plugins/core/edumed/actions.js @@ -1,9 +1,13 @@ -define(function() { +define(function(require) { 'use strict'; /* globals gettext */ +var _ = require('libs/underscore'); + +var descriptionText = gettext('Description goes here') + '...', + firstItemText = gettext('First item') + '...'; var createAction = function(actionConfig) { @@ -22,14 +26,33 @@ var createAction = function(actionConfig) { if(node.nodeType === Node.TEXT_NODE) { node = node.parent(); } + if(node.isInside('exercise')) { + node = node.getParent('exercise'); + } node.document.transaction(function() { - var exerciseNode = node.after(node.document.edumedCreateExerciseNode(actionConfig.exercise)); + var exerciseNode = node.after(node.document.edumedCreateExerciseNode(actionConfig.exercise)), + doc = params.fragment.document, + cursorTarget; //@@ if(actionConfig.exercise === 'order') { - exerciseNode.object.addItem('first item'); - exerciseNode.contents('.p')[0].append({text: 'Write here...'}); + exerciseNode.object.addItem(firstItemText); + cursorTarget = exerciseNode.contents('.p')[0].append({text: descriptionText}); + } else if(_.contains(['gap', 'replace'], actionConfig.exercise)) { + cursorTarget = _.first(exerciseNode.contents('.p')); + if(cursorTarget) { + cursorTarget = cursorTarget.append({text: ''}); + } + } else if(actionConfig.exercise.split('.')[0] === 'choice') { + _.first(exerciseNode.find('p')).append({text: descriptionText}); + cursorTarget = _.first(exerciseNode.find('item.answer')); + if(cursorTarget) { + cursorTarget = cursorTarget.append({text: ''}); + } + } + if(cursorTarget) { + callback(doc.createFragment(doc.CaretFragment, {node: cursorTarget, offset: cursorTarget.getText().length})); } }); @@ -37,8 +60,8 @@ var createAction = function(actionConfig) { }, getState: function(params) { return { - allowed: params.fragment && params.fragment.isValid() && params.fragment instanceof params.fragment.NodeFragment && !params.fragment.node.isInside('exercise'), - description: gettext('Insert exercise: ' + actionConfig.exerciseTitle) + allowed: params.fragment && params.fragment.isValid() && params.fragment instanceof params.fragment.NodeFragment, + description: gettext('Insert exercise') + ': ' + actionConfig.exerciseTitle }; } }; @@ -46,7 +69,12 @@ var createAction = function(actionConfig) { }; return [ - createAction({name: 'insertOrderExercise', icon: 'random', exercise: 'order', exerciseTitle: gettext('Order') }) + createAction({name: 'insertOrderExercise', icon: 'random', exercise: 'order', exerciseTitle: gettext('Order')}), + createAction({name: 'insertChoiceSingleExercise', icon: 'ok-circle', exercise: 'choice.single', exerciseTitle: gettext('Single Choice')}), + createAction({name: 'insertChoiceMultiExercise', icon: 'check', exercise: 'choice', exerciseTitle: gettext('Multiple Choice')}), + createAction({name: 'insertChoiceTrueOrFalseExercise', icon: 'adjust', exercise: 'choice.true-or-false', exerciseTitle: gettext('True or False')}), + createAction({name: 'insertGapsExercise', icon: 'question-sign', exercise: 'gap', exerciseTitle: gettext('Gaps')}), + createAction({name: 'insertReplaceExercise', icon: 'thumbs-down', exercise: 'replace', exerciseTitle: gettext('Replace')}) ]; -}); \ No newline at end of file +});