editor: automatically convert pasted urls to attachments to a proper links with ...
[fnpeditor.git] / src / editor / plugins / core / core.js
index 38675fb..935b6d4 100644 (file)
@@ -9,7 +9,9 @@ var _ = require('libs/underscore'),
     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 = {
@@ -264,7 +266,11 @@ var createLinkFromSelection = function(callback, params) {
             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;
@@ -272,13 +278,12 @@ var createLinkFromSelection = function(callback, params) {
     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});
         }, {
@@ -374,6 +379,8 @@ plugin.config = function(config) {
     templates.actions[0].params.template.options = config.templates;
 };
 
+plugin.canvasElements = canvasElements;
+
 return plugin;
 
 });
\ No newline at end of file