editor: plugins/core - support for undo/redo selection restore in most actions
[fnpeditor.git] / src / editor / plugins / core / links / linkElement.js
index 8a9edd7..503e958 100644 (file)
@@ -39,12 +39,17 @@ _.extend(linkElement, {
 
     changeLink: function(e) {
         var el = this,
+            doc = this.wlxmlNode.document,
             dialog = Dialog.create({
             title: gettext('Edit link'),
             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();
@@ -56,7 +61,8 @@ _.extend(linkElement, {
                 event.success();
             }, {
                 metadata: {
-                    description: gettext('Edit link')
+                    description: gettext('Edit link'),
+                    fragment: doc.createFragment(doc.CaretFragment, {node: el.wlxmlNode.contents()[0], offset:0})
                 }
             });
         });
@@ -64,12 +70,15 @@ _.extend(linkElement, {
     },
 
     deleteLink: function() {
-        var el = this;
+        var el = this,
+            doc = this.wlxmlNode.document;
+
         el.wlxmlNode.document.transaction(function() {
             el.wlxmlNode.unwrapContent();
         }, {
             metadata: {
-                description: gettext('Remove link')
+                description: gettext('Remove link'),
+                fragment: doc.createFragment(doc.CaretFragment, {node: el.wlxmlNode.contents()[0], offset:0})
             }
         });
     },