]> git.donarmstrong.com Git - roundcube.git/blobdiff - program/js/tiny_mce/themes/advanced/js/link.js
Imported Upstream version 0.2~stable
[roundcube.git] / program / js / tiny_mce / themes / advanced / js / link.js
index ab434da3d2be6ea6c938db2fe8c06b99b0cb9b09..2974878e1e18c7e1a77545f336bbec847944bba3 100644 (file)
@@ -34,10 +34,10 @@ var LinkDialog = {
                var f = document.forms[0], ed = tinyMCEPopup.editor, e, b;\r
 \r
                tinyMCEPopup.restoreSelection();\r
+               e = ed.dom.getParent(ed.selection.getNode(), 'A');\r
 \r
                // Remove element if there is no href\r
                if (!f.href.value) {\r
-                       e = ed.dom.getParent(ed.selection.getNode(), 'A');\r
                        if (e) {\r
                                tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
                                b = ed.selection.getBookmark();\r
@@ -49,13 +49,42 @@ var LinkDialog = {
                        }\r
                }\r
 \r
-               ed.execCommand('mceInsertLink', false, {\r
-                       href : f.href.value,\r
-                       title : f.linktitle.value,\r
-                       target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,\r
-                       'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null\r
-               });\r
+               tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
 \r
+               // Create new anchor elements\r
+               if (e == null) {\r
+                       tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});\r
+\r
+                       tinymce.each(ed.dom.select("a"), function(n) {\r
+                               if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {\r
+                                       e = n;\r
+\r
+                                       ed.dom.setAttribs(e, {\r
+                                               href : f.href.value,\r
+                                               title : f.linktitle.value,\r
+                                               target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,\r
+                                               'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null\r
+                                       });\r
+                               }\r
+                       });\r
+               } else {\r
+                       ed.dom.setAttribs(e, {\r
+                               href : f.href.value,\r
+                               title : f.linktitle.value,\r
+                               target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,\r
+                               'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null\r
+                       });\r
+               }\r
+\r
+               // Don't move caret if selection was image\r
+               if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {\r
+                       ed.focus();\r
+                       ed.selection.select(e);\r
+                       ed.selection.collapse(0);\r
+                       tinyMCEPopup.storeSelection();\r
+               }\r
+\r
+               tinyMCEPopup.execCommand("mceEndUndoLevel");\r
                tinyMCEPopup.close();\r
        },\r
 \r