X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=_source%2Fplugins%2Flink%2Fdialogs%2Flink.js;h=238113a5584bb90085675f08e9b6db4538ef779d;hb=2f22c0c38f17e75be5541089076885442aaa2377;hp=a6596169d046d380e35028fedeefa790e7edfba1;hpb=4e70ea24db840898be8cc21c950363a52a2a6aba;p=ckeditor.git diff --git a/_source/plugins/link/dialogs/link.js b/_source/plugins/link/dialogs/link.js index a659616..238113a 100644 --- a/_source/plugins/link/dialogs/link.js +++ b/_source/plugins/link/dialogs/link.js @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ @@ -244,14 +244,38 @@ CKEDITOR.dialog.add( 'link', function( editor ) } // Find out whether we have any anchors in the editor. - var anchorList = new CKEDITOR.dom.nodeList( editor.document.$.anchors ), - anchors = retval.anchors = [], - item; + var anchors = retval.anchors = [], + i, count, item; - for ( var i = 0, count = anchorList.count(); i < count; i++ ) + // For some browsers we set contenteditable="false" on anchors, making document.anchors not to include them, so we must traverse the links manually (#7893). + if ( CKEDITOR.plugins.link.emptyAnchorFix ) { - item = anchorList.getItem( i ); - anchors[ i ] = { name : item.getAttribute( 'name' ), id : item.getAttribute( 'id' ) }; + var links = editor.document.getElementsByTag( 'a' ); + for ( i = 0, count = links.count(); i < count; i++ ) + { + item = links.getItem( i ); + if ( item.data( 'cke-saved-name' ) || item.hasAttribute( 'name' ) ) + anchors.push( { name : item.data( 'cke-saved-name' ) || item.getAttribute( 'name' ), id : item.getAttribute( 'id' ) } ); + } + } + else + { + var anchorList = new CKEDITOR.dom.nodeList( editor.document.$.anchors ); + for ( i = 0, count = anchorList.count(); i < count; i++ ) + { + item = anchorList.getItem( i ); + anchors[ i ] = { name : item.getAttribute( 'name' ), id : item.getAttribute( 'id' ) }; + } + } + + if ( CKEDITOR.plugins.link.fakeAnchor ) + { + var imgs = editor.document.getElementsByTag( 'img' ); + for ( i = 0, count = imgs.count(); i < count; i++ ) + { + if ( ( item = CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, imgs.getItem( i ) ) ) ) + anchors.push( { name : item.getAttribute( 'name' ), id : item.getAttribute( 'id' ) } ); + } } // Record down the selected element in the dialog. @@ -629,7 +653,7 @@ CKEDITOR.dialog.add( 'link', function( editor ) type : 'html', id : 'noAnchors', style : 'text-align: center;', - html : '