* 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
{\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
{\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
*/\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