]> git.immae.eu Git - perso/Immae/Projets/packagist/ludivine-ckeditor-component.git/blobdiff - sources/plugins/link/dialogs/anchor.js
Update to 4.7.3
[perso/Immae/Projets/packagist/ludivine-ckeditor-component.git] / sources / plugins / link / dialogs / anchor.js
index 2b32b71938e2d605db30ff3a4befdfbe05745b77..04a4abedea68dcc3423aed16bf8e57d32edd8378 100644 (file)
@@ -18,6 +18,21 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
                } ), 'cke_anchor', 'anchor' );\r
        }\r
 \r
+\r
+       function getSelectedAnchor( selection ) {\r
+               var range = selection.getRanges()[ 0 ],\r
+                       element = selection.getSelectedElement();\r
+\r
+               // In case of table cell selection, we want to shrink selection from td to a element.\r
+               range.shrink( CKEDITOR.SHRINK_ELEMENT );\r
+               element = range.getEnclosedNode();\r
+\r
+               if ( element && element.type === CKEDITOR.NODE_ELEMENT &&\r
+                       ( element.data( 'cke-real-element-type' ) === 'anchor' || element.is( 'a' ) ) ) {\r
+                       return element;\r
+               }\r
+       }\r
+\r
        return {\r
                title: editor.lang.link.anchor.title,\r
                minWidth: 300,\r
@@ -35,9 +50,10 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
                                        var newFake = createFakeAnchor( editor, attributes );\r
                                        newFake.replace( this._.selectedElement );\r
 \r
-                                       // Selecting fake element for IE. (#11377)\r
-                                       if ( CKEDITOR.env.ie )\r
+                                       // Selecting fake element for IE. (http://dev.ckeditor.com/ticket/11377)\r
+                                       if ( CKEDITOR.env.ie ) {\r
                                                editor.getSelection().selectElement( newFake );\r
+                                       }\r
                                } else {\r
                                        this._.selectedElement.setAttributes( attributes );\r
                                }\r
@@ -56,7 +72,7 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
                                        // Apply style.\r
                                        var style = new CKEDITOR.style( { element: 'a', attributes: attributes } );\r
                                        style.type = CKEDITOR.STYLE_INLINE;\r
-                                       editor.applyStyle( style );\r
+                                       style.applyToRange( range );\r
                                }\r
                        }\r
                },\r
@@ -67,7 +83,7 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
 \r
                onShow: function() {\r
                        var sel = editor.getSelection(),\r
-                               fullySelected = sel.getSelectedElement(),\r
+                               fullySelected = getSelectedAnchor( sel ),\r
                                fakeSelected = fullySelected && fullySelected.data( 'cke-realelement' ),\r
                                linkElement = fakeSelected ?\r
                                        CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, fullySelected ) :\r
@@ -77,8 +93,9 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
                                loadElements.call( this, linkElement );\r
                                !fakeSelected && sel.selectElement( linkElement );\r
 \r
-                               if ( fullySelected )\r
+                               if ( fullySelected ) {\r
                                        this._.selectedElement = fullySelected;\r
+                               }\r
                        }\r
 \r
                        this.getContentElement( 'info', 'txtName' ).focus();\r