selectionStart = cursor.getSelectionStart(),
selectionEnd = cursor.getSelectionEnd(),
parent1 = selectionStart.element.parent() || undefined,
- parent2 = selectionEnd.element.parent() || undefined;
-
- var selectionFocus = cursor.getSelectionFocus();
-
- if(selectionStart.element.isInsideList() || selectionEnd.element.isInsideList()) {
- return;
- }
-
- var node1 = parent1.wlxmlNode,
+ parent2 = selectionEnd.element.parent() || undefined,
+ selectionFocus = cursor.getSelectionFocus(),
+ node1 = parent1.wlxmlNode,
node2 = parent2.wlxmlNode,
doc = node1.document;
- doc.createList({node1: node1, node2: node2});
- canvas.setCurrentElement(selectionFocus.element, {caretTo: selectionFocus.offset});
+ if(cursor.isSelecting()) {
+ doc.transaction(function() {
+ doc.createList({node1: node1, node2: node2, klass: params.meta === 'num' ? 'list.enum' : 'list'});
+ }, {
+ success: function() {
+ canvas.setCurrentElement(selectionFocus.element, {caretTo: selectionFocus.offset});
+ }
+ });
+ } else {
+ var list;
+ if(node1.isInside('list')) {
+ list = node1.getParent('list');
+ if((params.meta === 'num' && list.getClass() === 'list.enum') || params.meta !== 'num' && list.getClass() === 'list') {
+ list.object.extractAllItems();
+ } else {
+ list.setClass(params.meta === 'num' ? 'list.enum' : 'list');
+ }
+ }
+ }
});
commands.register('toggle-grid', function(canvas, params) {
var insertNode = function(insertion, callback) {
var doc = canvas.wlxmlDocument,
- node, metadata, creator, dialog;
+ metadata, creator, dialog;
var execCallback = function(node) {
if(callback) {
};
if(params.wlxmlTag === 'aside' && params.wlxmlClass === 'comment') {
- doc.startTransaction();
- node = insertion();
- if(user) {
- creator = user.name;
- if(user.email) {
- creator += ' (' + user.email + ')';
+ doc.transaction(function() {
+ var node = insertion();
+ if(user) {
+ creator = user.name;
+ if(user.email) {
+ creator += ' (' + user.email + ')';
+ }
+ } else {
+ creator = 'anonymous';
}
- } else {
- creator = 'anonymous';
- }
- metadata = node.getMetadata();
- metadata.add({key: 'creator', value: creator});
- metadata.add({key: 'date', value: datetime.currentStrfmt()});
- doc.endTransaction();
- execCallback(node);
+ metadata = node.getMetadata();
+ metadata.add({key: 'creator', value: creator});
+ metadata.add({key: 'date', value: datetime.currentStrfmt()});
+ return node;
+ }, {
+ success: execCallback
+ });
} else if(params.wlxmlClass === 'link') {
dialog = Dialog.create({
title: gettext('Create link'),
]
});
dialog.on('execute', function(event) {
- doc.startTransaction();
- node = insertion();
- node.setAttr('href', event.formData.href);
- doc.endTransaction();
- event.success();
- execCallback(node);
+ doc.transaction(function() {
+ var node = insertion();
+ node.setAttr('href', event.formData.href);
+ event.success();
+ return node;
+ }, {
+ success: execCallback
+ });
});
dialog.show();
} else {
- doc.startTransaction();
- node = insertion();
- doc.endTransaction();
- execCallback(node);
+ doc.transaction(function() {
+ return insertion();
+ }, {success: execCallback});
}
};
]
});
dialog.on('execute', function(event) {
- canvas.wlxmlDocument.startTransaction();
- node.setAttr('href', event.formData.href);
- event.success();
- canvas.wlxmlDocument.endTransaction();
+ canvas.wlxmlDocument.transaction(function() {
+ node.setAttr('href', event.formData.href);
+ event.success();
+ });
});
dialog.show();
return true;