JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.2.1
[ckeditor.git] / _source / plugins / link / dialogs / link.js
index c7388ca..4ac6766 100644 (file)
@@ -5,6 +5,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
 \r
 CKEDITOR.dialog.add( 'link', function( editor )\r
 {\r
+       var plugin = CKEDITOR.plugins.link;\r
        // Handles the event when the "Target" selection box is changed.\r
        var targetChanged = function()\r
        {\r
@@ -93,7 +94,7 @@ CKEDITOR.dialog.add( 'link', function( editor )
 \r
        var parseLink = function( editor, element )\r
        {\r
-               var href = element ? ( element.getAttribute( '_cke_saved_href' ) || element.getAttribute( 'href' ) ) : '',\r
+               var href = ( element  && ( element.getAttribute( '_cke_saved_href' ) || element.getAttribute( 'href' ) ) ) || '',\r
                        javascriptMatch,\r
                        emailMatch,\r
                        anchorMatch,\r
@@ -417,7 +418,7 @@ CKEDITOR.dialog.add( 'link', function( editor )
                                                                                        [ 'https://' ],\r
                                                                                        [ 'ftp://' ],\r
                                                                                        [ 'news://' ],\r
-                                                                                       [ '<other>', '' ]\r
+                                                                                       [ editor.lang.link.other , '' ]\r
                                                                                ],\r
                                                                                setup : function( data )\r
                                                                                {\r
@@ -447,7 +448,7 @@ CKEDITOR.dialog.add( 'link', function( editor )
                                                                                        var     protocolCmb = this.getDialog().getContentElement( 'info', 'protocol' ),\r
                                                                                                url = this.getValue(),\r
                                                                                                urlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi,\r
-                                                                                               urlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi;\r
+                                                                                               urlOnChangeTestOther = /^((javascript:)|[#\/\.\?])/gi;\r
 \r
                                                                                        var protocol = urlOnChangeProtocol.exec( url );\r
                                                                                        if ( protocol )\r
@@ -781,7 +782,7 @@ CKEDITOR.dialog.add( 'link', function( editor )
                                                                        if ( !data.target )\r
                                                                                data.target = {};\r
 \r
-                                                                       data.target.name = this.getValue();\r
+                                                                       data.target.name = this.getValue().replace(/\W/gi, '');\r
                                                                }\r
                                                        }\r
                                                ]\r
@@ -1136,30 +1137,21 @@ CKEDITOR.dialog.add( 'link', function( editor )
 \r
                        var editor = this.getParentEditor(),\r
                                selection = editor.getSelection(),\r
-                               ranges = selection.getRanges(),\r
-                               element = null,\r
-                               me = this;\r
+                               element = null;\r
+\r
                        // Fill in all the relevant fields if there's already one link selected.\r
-                       if ( ranges.length == 1 )\r
+                       if ( ( element = plugin.getSelectedLink( editor ) ) && element.hasAttribute( 'href' ) )\r
+                               selection.selectElement( element );\r
+                       else if ( ( element = selection.getSelectedElement() ) && element.is( 'img' )\r
+                                       && element.getAttribute( '_cke_real_element_type' )\r
+                                       && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )\r
                        {\r
-\r
-                               var rangeRoot = ranges[0].getCommonAncestor( true );\r
-                               element = rangeRoot.getAscendant( 'a', true );\r
-                               if ( element && element.getAttribute( 'href' ) )\r
-                               {\r
-                                       selection.selectElement( element );\r
-                               }\r
-                               else if ( ( element = rangeRoot.getAscendant( 'img', true ) ) &&\r
-                                                element.getAttribute( '_cke_real_element_type' ) &&\r
-                                                element.getAttribute( '_cke_real_element_type' ) == 'anchor' )\r
-                               {\r
-                                       this.fakeObj = element;\r
-                                       element = editor.restoreRealElement( this.fakeObj );\r
-                                       selection.selectElement( this.fakeObj );\r
-                               }\r
-                               else\r
-                                       element = null;\r
+                               this.fakeObj = element;\r
+                               element = editor.restoreRealElement( this.fakeObj );\r
+                               selection.selectElement( this.fakeObj );\r
                        }\r
+                       else\r
+                               element = null;\r
 \r
                        this.setupContent( parseLink.apply( this, [ editor, element ] ) );\r
                },\r