X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2Fpackagist%2Fpiedsjaloux-ckeditor-component.git;a=blobdiff_plain;f=sources%2Fplugins%2Flink%2Fdialogs%2Fanchor.js;h=04a4abedea68dcc3423aed16bf8e57d32edd8378;hp=e54427597d75f1094968e6e50cadb4906b722725;hb=refs%2Ftags%2F4.7.3;hpb=1096cdefb1c9a3f3c4ca6807e272da6c92e5ed9c diff --git a/sources/plugins/link/dialogs/anchor.js b/sources/plugins/link/dialogs/anchor.js index e544275..04a4abe 100644 --- a/sources/plugins/link/dialogs/anchor.js +++ b/sources/plugins/link/dialogs/anchor.js @@ -1,5 +1,5 @@ /** - * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. + * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ @@ -18,6 +18,21 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) { } ), 'cke_anchor', 'anchor' ); } + + function getSelectedAnchor( selection ) { + var range = selection.getRanges()[ 0 ], + element = selection.getSelectedElement(); + + // In case of table cell selection, we want to shrink selection from td to a element. + range.shrink( CKEDITOR.SHRINK_ELEMENT ); + element = range.getEnclosedNode(); + + if ( element && element.type === CKEDITOR.NODE_ELEMENT && + ( element.data( 'cke-real-element-type' ) === 'anchor' || element.is( 'a' ) ) ) { + return element; + } + } + return { title: editor.lang.link.anchor.title, minWidth: 300, @@ -35,9 +50,10 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) { var newFake = createFakeAnchor( editor, attributes ); newFake.replace( this._.selectedElement ); - // Selecting fake element for IE. (#11377) - if ( CKEDITOR.env.ie ) + // Selecting fake element for IE. (http://dev.ckeditor.com/ticket/11377) + if ( CKEDITOR.env.ie ) { editor.getSelection().selectElement( newFake ); + } } else { this._.selectedElement.setAttributes( attributes ); } @@ -56,7 +72,7 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) { // Apply style. var style = new CKEDITOR.style( { element: 'a', attributes: attributes } ); style.type = CKEDITOR.STYLE_INLINE; - editor.applyStyle( style ); + style.applyToRange( range ); } } }, @@ -67,7 +83,7 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) { onShow: function() { var sel = editor.getSelection(), - fullySelected = sel.getSelectedElement(), + fullySelected = getSelectedAnchor( sel ), fakeSelected = fullySelected && fullySelected.data( 'cke-realelement' ), linkElement = fakeSelected ? CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, fullySelected ) : @@ -77,8 +93,9 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) { loadElements.call( this, linkElement ); !fakeSelected && sel.selectElement( linkElement ); - if ( fullySelected ) + if ( fullySelected ) { this._.selectedElement = fullySelected; + } } this.getContentElement( 'info', 'txtName' ).focus();