JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.4.3
[ckeditor.git] / _source / plugins / link / plugin.js
index f373eaf..f0278ec 100644 (file)
@@ -37,8 +37,8 @@ CKEDITOR.plugins.add( 'link',
                                'background-position: center center;' +\r
                                'background-repeat: no-repeat;' +\r
                                'border: 1px solid #a9a9a9;' +\r
-                               'width: 18px;' +\r
-                               'height: 18px;' +\r
+                               'width: 18px !important;' +\r
+                               'height: 18px !important;' +\r
                        '}\n' +\r
                        'a.cke_anchor' +\r
                        '{' +\r
@@ -58,7 +58,7 @@ CKEDITOR.plugins.add( 'link',
                                 * for this in Firefox. So we must detect the state by element paths.\r
                                 */\r
                                var command = editor.getCommand( 'unlink' ),\r
-                                       element = evt.data.path.lastElement.getAscendant( 'a', true );\r
+                                       element = evt.data.path.lastElement && evt.data.path.lastElement.getAscendant( 'a', true );\r
                                if ( element && element.getName() == 'a' && element.getAttribute( 'href' ) )\r
                                        command.setState( CKEDITOR.TRISTATE_OFF );\r
                                else\r
@@ -69,10 +69,13 @@ CKEDITOR.plugins.add( 'link',
                        {\r
                                var element = CKEDITOR.plugins.link.getSelectedLink( editor ) || evt.data.element;\r
 \r
-                               if ( element.is( 'a' ) )\r
-                                       evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link';\r
-                               else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )\r
-                                       evt.data.dialog = 'anchor';\r
+                               if ( !element.isReadOnly() )\r
+                               {\r
+                                       if ( element.is( 'a' ) )\r
+                                               evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link';\r
+                                       else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )\r
+                                               evt.data.dialog = 'anchor';\r
+                               }\r
                        });\r
 \r
                // If the "menu" plugin is loaded, register the menu items.\r
@@ -110,7 +113,7 @@ CKEDITOR.plugins.add( 'link',
                {\r
                        editor.contextMenu.addListener( function( element, selection )\r
                                {\r
-                                       if ( !element )\r
+                                       if ( !element || element.isReadOnly() )\r
                                                return null;\r
 \r
                                        var isAnchor = ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' );\r
@@ -176,13 +179,22 @@ CKEDITOR.plugins.link =
         */\r
        getSelectedLink : function( editor )\r
        {\r
-               var range;\r
-               try { range  = editor.getSelection().getRanges()[ 0 ]; }\r
+               try\r
+               {\r
+                       var selection = editor.getSelection();\r
+                       if ( selection.getType() == CKEDITOR.SELECTION_ELEMENT )\r
+                       {\r
+                               var selectedElement = selection.getSelectedElement();\r
+                               if ( selectedElement.is( 'a' ) )\r
+                                       return selectedElement;\r
+                       }\r
+\r
+                       var range = selection.getRanges( true )[ 0 ];\r
+                       range.shrink( CKEDITOR.SHRINK_TEXT );\r
+                       var root = range.getCommonAncestor();\r
+                       return root.getAscendant( 'a', true );\r
+               }\r
                catch( e ) { return null; }\r
-\r
-               range.shrink( CKEDITOR.SHRINK_TEXT );\r
-               var root = range.getCommonAncestor();\r
-               return root.getAscendant( 'a', true );\r
        }\r
 };\r
 \r