X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/79d1f9aef5454bf4cf75ef8f41c07d6439914569..29a87f7c5b2ddddf7c5c738c4747ffd6f6bb35bb:/src/editor/modules/metadataEditor/metadataEditor.js diff --git a/src/editor/modules/metadataEditor/metadataEditor.js b/src/editor/modules/metadataEditor/metadataEditor.js index 0eace02..70df62e 100644 --- a/src/editor/modules/metadataEditor/metadataEditor.js +++ b/src/editor/modules/metadataEditor/metadataEditor.js @@ -7,6 +7,7 @@ define([ ], function($, _, mainTemplate, itemTemplate, OpenSelectView) { 'use strict'; +/* globals gettext */ return function(sandbox) { @@ -41,11 +42,15 @@ return function(sandbox) { this.node.find('.rng-module-metadataEditor-addBtn').click(function() { adding = true; - currentNode.getMetadata().add('',''); + currentNode.document.transaction(function() { + currentNode.getMetadata().add('',''); + }, this, gettext('Add metadata row')); }); this.metaTable.on('click', '.rng-visualEditor-metaRemoveBtn', function(e) { - $(e.target).closest('tr').data('row').remove(); + currentNode.document.transaction(function() { + $(e.target).closest('tr').data('row').remove(); + }, this, gettext('Remove metadata row')); }); this.metaTable.on('keydown', '[contenteditable]', function(e) { @@ -70,13 +75,16 @@ return function(sandbox) { row = editable.parents('tr').data('row'), isKey = _.last(editable.attr('class').split('-')) === 'metaItemKey', method = isKey ? 'setKey' : 'setValue'; - row[method](toSet); + row.metadata.node.document.transaction(function() { + row[method](toSet); + }, this, gettext('Metadata edit')); } }, 500)); }, clear: function() { }, setMetadata: function(node) { + this.node.find('.rng-module-metadataEditor-addBtn').attr('disabled', !node); if(!node) { this.metaTable.html(''); return; @@ -113,6 +121,8 @@ return function(sandbox) { var valueSelectView = new OpenSelectView({ value: row.getValue(), inputTemplate: _.template('
<%= value %>
')({value: row.getValue() || '' }), + maxHeight: '300px', + maxWidth: '100px', setInput: function(inputDOM, value) { if(inputDOM.text() !== value) { inputDOM.text(value); @@ -181,7 +191,7 @@ return function(sandbox) { if(event.type === 'metadataRemoved' && event.meta.node.sameNode(currentNode)) { view.removeMetadataRow(event.meta.row); } - if(event.type === 'nodeDetached' && event.meta.node.sameNode(currentNode)) { + if(event.type === 'nodeDetached' && event.meta.node.containsNode(currentNode)) { view.setMetadata(null); } });