switchTo = require('plugins/core/switch'),
lists = require('plugins/core/lists'),
plugin = {name: 'core', actions: [], canvas: {}, documentExtension: {textNode: {}}},
- Dialog = require('views/dialog/dialog');
+ Dialog = require('views/dialog/dialog'),
+ canvasElements = require('plugins/core/canvasElements');
+
plugin.documentExtension.textNode.transformations = {
icon: 'share-alt',
iconStyle: dir === 'undo' ? '-webkit-transform: scale(-1,1); transform: scale(-1, 1)' : '',
execute: function(callback, params) {
+ var metadata = _.last(params.document[dir+'Stack']).metadata,
+ fragment = metadata && metadata.fragment;
params.document[dir]();
+ if(fragment) {
+ if(!fragment.isValid()) {
+ fragment.restoreFromPaths();
+ }
+ if(fragment.isValid()) {
+ callback(fragment);
+ }
+ }
callback();
},
},
return newFragment;
}, {
metadata: {
- description: createParams.unwrapDescription
+ description: createParams.unwrapDescription,
+ fragment: params.fragment
},
success: callback
});
}
}, {
metadata: {
- description: createParams.wrapDescription
+ description: createParams.wrapDescription,
+ fragment: params.fragment
},
success: callback
});
executeButtonText: gettext('Apply'),
cancelButtonText: gettext('Cancel'),
fields: [
- {label: gettext('Link'), name: 'href', type: 'input'}
+ {label: gettext('Link'), name: 'href', type: 'input',
+ prePasteHandler: function(text) {
+ return params.fragment.document.getLinkForUrl(text);
+ }.bind(this)
+ }
]
}),
action = this;
dialog.on('execute', function(event) {
doc.transaction(function() {
var span = action.params.fragment.startNode.parent().wrapText({
- _with: {tagName: 'span', attrs: {'class': 'link'}},
+ _with: {tagName: 'span', attrs: {'class': 'link', href: event.formData.href }},
offsetStart: params.fragment.startOffset,
offsetEnd: params.fragment.endOffset,
textNodeIdx: [params.fragment.startNode.getIndex(), params.fragment.endNode.getIndex()]
}),
doc = params.fragment.document;
- span.setAttr('href', event.formData.href);
event.success();
return doc.createFragment(doc.CaretFragment, {node: span.contents()[0], offset:0});
}, {
metadata: {
- description: action.getState().description
+ description: action.getState().description,
+ fragment: params.fragment
},
success: callback
});
return params.fragment;
}, {
metadata: {
- description: action.getState().description
+ description: action.getState().description,
+ fragment: params.fragment
},
success: callback
});
templates.actions[0].params.template.options = config.templates;
};
+plugin.canvasElements = canvasElements;
+
return plugin;
});
\ No newline at end of file