editor: automatically convert pasted urls to attachments to a proper links with ...
[fnpeditor.git] / src / editor / plugins / core / links / linkElement.js
index 0600733..9e4a935 100644 (file)
@@ -17,8 +17,8 @@ _.extend(linkElement, {
         genericElement.init.call(this);
         _.bindAll(this, 'changeLink', 'deleteLink');
 
-        var linkText = this.wlxmlNode.getAttr('href'),
-            linkUrl = this.wlxmlNode.document.getUrlForLink(linkText);
+        var linkText = this.wlxmlNode.getAttr('href') || '',
+            linkUrl = this.getUrl(linkText);
 
         this.box = $(_.template(boxTemplate)({text: linkText, url: linkUrl}));
         this.box.find('.change').on('click', this.changeLink);
@@ -33,7 +33,7 @@ _.extend(linkElement, {
         if(event.meta.attr === 'href') {
             var link = this.box.find('[link]');
             link.text(event.meta.newVal);
-            link.attr('href', this.wlxmlNode.document.getUrlForLink(event.meta.newVal));
+            link.attr('href', this.getUrl(event.meta.newVal));
         }
     },
 
@@ -44,7 +44,11 @@ _.extend(linkElement, {
             executeButtonText: gettext('Apply'),
             cancelButtonText: gettext('Cancel'),
             fields: [
-                {label: gettext('Link'), name: 'href', type: 'input', initialValue: el.wlxmlNode.getAttr('href')}
+                {label: gettext('Link'), name: 'href', type: 'input', initialValue: el.wlxmlNode.getAttr('href'),
+                prePasteHandler: function(text) {
+                                    return this.wlxmlNode.document.getLinkForUrl(text);
+                                }.bind(this)
+            }
             ]
         });
         e.preventDefault();
@@ -72,6 +76,14 @@ _.extend(linkElement, {
                 description: gettext('Remove link')
             }
         });
+    },
+
+    getUrl: function(link) {
+        var pattern = /^[a-z]*:\/\//g;
+        if(!pattern.test(link)) {
+            link = 'http://' + link;
+        }
+        return this.wlxmlNode.document.getUrlForLink(link);
     }
 });