X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/efe36f4f1b5df351eeb4d40a54c3900cf9a7079b..5c398fccc970cf74b857ea5c191b325564f9893f:/src/editor/modules/documentToolbar/documentToolbar.js?ds=inline diff --git a/src/editor/modules/documentToolbar/documentToolbar.js b/src/editor/modules/documentToolbar/documentToolbar.js index 7fbf6c1..33f95a6 100644 --- a/src/editor/modules/documentToolbar/documentToolbar.js +++ b/src/editor/modules/documentToolbar/documentToolbar.js @@ -1,42 +1,59 @@ define(['libs/jquery', 'libs/underscore', 'utils/wlxml', 'libs/text!./template.html'], function($, _, wlxmlUtils, template) { 'use strict'; +/* globals Node */ return function(sandbox) { + var documentTemplates = sandbox.getBootstrappedData(), + currentNode; + var view = { - node: $(_.template(template)({tagNames: wlxmlUtils.wlxmlTagNames, classNames: wlxmlUtils.wlxmlClassNames})), + node: $(_.template(template)({wlxmlUtils: wlxmlUtils, templates: documentTemplates})), setup: function() { var view = this; this.node.find('button').click(function(e) { e.stopPropagation(); + var btn = $(e.currentTarget), btnName = btn.attr('data-name'), meta = btn.attr('data-meta'), params = {}, command = btnName; - if(btn.attr('data-btn-type') === 'toggle') { - command = 'toggle-' + command; - btn.toggleClass('active'); - params.toggle = btn.hasClass('active'); - } + if(myHandlers[btnName]) { + myHandlers[btnName](btn); + } else { + if(btn.attr('data-btn-type') === 'toggle') { + command = 'toggle-' + command; + btn.toggleClass('active'); + params.toggle = btn.hasClass('active'); + } - if(btnName === 'new-node') { - command = 'newNodeRequested'; - params.wlxmlTag = view.getOption('newTag-tag'); - params.wlxmlClass = view.getOption('newTag-class'); - if(meta) { - var split = meta.split('/'); - params.wlxmlTag = split[0]; - params.wlxmlClass = split[1]; + if(btnName === 'new-node') { + command = 'newNodeRequested'; + params.wlxmlTag = view.getOption('newTag-tag'); + params.wlxmlClass = view.getOption('newTag-class'); + if(meta) { + var split = meta.split('/'); + params.wlxmlTag = split[0]; + params.wlxmlClass = split[1]; + } + } else { + params.meta = meta; } - } else { - params.meta = meta; - } - sandbox.publish('command', command, params); + if(command === 'undo' || command === 'redo') { + params.callback = function(disable) { + btn.attr('disabled', !disable); + }; + } + + _.extend(params, {ctrlKey: e.ctrlKey}); + + sandbox.publish('command', command, params); + } }); }, getOption: function(option) { @@ -44,11 +61,28 @@ return function(sandbox) { } }; + var myHandlers = { + templatesBtn: function() { + if(currentNode && currentNode.nodeType === Node.ELEMENT_NODE) { + var templateId = parseInt(view.node.find('[data-name=templates-select]').val(), 10); + documentTemplates.forEach(function(template) { + if(template.id === templateId) { + var toAdd = currentNode.document.createDocumentNode(template.content); + currentNode.after(toAdd); + } + }); + } + } + }; + view.setup(); return { start: function() { sandbox.publish('ready'); }, getView: function() { return view.node; }, + setNodeElement: function(node) { + currentNode = node; + }, getOption: function(option) { return view.getOption(option); } }; };