]> git.donarmstrong.com Git - roundcube.git/blobdiff - program/js/tiny_mce/themes/advanced/js/link.js
Imported Debian patch 0.5.2+dfsg-1
[roundcube.git] / program / js / tiny_mce / themes / advanced / js / link.js
index ab434da3d2be6ea6c938db2fe8c06b99b0cb9b09..53ff409e7962f0d4f2d686922e33eff2ae53714b 100644 (file)
@@ -31,15 +31,14 @@ var LinkDialog = {
        },\r
 \r
        update : function() {\r
-               var f = document.forms[0], ed = tinyMCEPopup.editor, e, b;\r
+               var f = document.forms[0], ed = tinyMCEPopup.editor, e, b, href = f.href.value.replace(/ /g, '%20');\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
                                ed.dom.remove(e, 1);\r
                                ed.selection.moveToBookmark(b);\r
@@ -49,13 +48,41 @@ 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
+               // Create new anchor elements\r
+               if (e == null) {\r
+                       ed.getDoc().execCommand("unlink", false, null);\r
+                       tinyMCEPopup.execCommand("mceInsertLink", 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 : href,\r
+                                               title : f.linktitle.value,\r
+                                               target : f.target_list ? getSelectValue(f, "target_list") : null,\r
+                                               'class' : f.class_list ? getSelectValue(f, "class_list") : null\r
+                                       });\r
+                               }\r
+                       });\r
+               } else {\r
+                       ed.dom.setAttribs(e, {\r
+                               href : href,\r
+                               title : f.linktitle.value,\r
+                               target : f.target_list ? getSelectValue(f, "target_list") : null,\r
+                               'class' : f.class_list ? getSelectValue(f, "class_list") : 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
@@ -63,7 +90,7 @@ var LinkDialog = {
                if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))\r
                        n.value = 'mailto:' + n.value;\r
 \r
-               if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))\r
+               if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))\r
                        n.value = 'http://' + n.value;\r
        },\r
 \r