2 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.html or http://ckeditor.com/license
6 CKEDITOR
.dialog
.add( 'anchor', function( editor
)
8 // Function called in onShow to load selected element.
9 var loadElements = function( element
)
11 this._
.selectedElement
= element
;
13 var attributeValue
= element
.data( 'cke-saved-name' );
14 this.setValueOf( 'info','txtName', attributeValue
|| '' );
17 function createFakeAnchor( editor
, anchor
)
19 return editor
.createFakeElement( anchor
, 'cke_anchor', 'anchor' );
23 title
: editor
.lang
.anchor
.title
,
28 var name
= this.getValueOf( 'info', 'txtName' );
32 'data-cke-saved-name' : name
35 if ( this._
.selectedElement
)
37 if ( this._
.selectedElement
.data( 'cke-realelement' ) )
39 var newFake
= createFakeAnchor( editor
, editor
.document
.createElement( 'a', { attributes
: attributes
} ) );
40 newFake
.replace( this._
.selectedElement
);
43 this._
.selectedElement
.setAttributes( attributes
);
47 var sel
= editor
.getSelection(),
48 range
= sel
&& sel
.getRanges()[ 0 ];
51 if ( range
.collapsed
)
53 if ( CKEDITOR
.plugins
.link
.synAnchorSelector
)
54 attributes
[ 'class' ] = 'cke_anchor_empty';
56 if ( CKEDITOR
.plugins
.link
.emptyAnchorFix
)
58 attributes
[ 'contenteditable' ] = 'false';
59 attributes
[ 'data-cke-editable' ] = 1;
62 var anchor
= editor
.document
.createElement( 'a', { attributes
: attributes
} );
64 // Transform the anchor into a fake element for browsers that need it.
65 if ( CKEDITOR
.plugins
.link
.fakeAnchor
)
66 anchor
= createFakeAnchor( editor
, anchor
);
68 range
.insertNode( anchor
);
72 if ( CKEDITOR
.env
.ie
&& CKEDITOR
.env
.version
< 9 )
73 attributes
['class'] = 'cke_anchor';
76 var style
= new CKEDITOR
.style( { element
: 'a', attributes
: attributes
} );
77 style
.type
= CKEDITOR
.STYLE_INLINE
;
78 style
.apply( editor
.document
);
85 delete this._
.selectedElement
;
90 var selection
= editor
.getSelection(),
91 fullySelected
= selection
.getSelectedElement(),
94 // Detect the anchor under selection.
97 if ( CKEDITOR
.plugins
.link
.fakeAnchor
)
99 var realElement
= CKEDITOR
.plugins
.link
.tryRestoreFakeAnchor( editor
, fullySelected
);
100 realElement
&& loadElements
.call( this, realElement
);
101 this._
.selectedElement
= fullySelected
;
103 else if ( fullySelected
.is( 'a' ) && fullySelected
.hasAttribute( 'name' ) )
104 loadElements
.call( this, fullySelected
);
108 partialSelected
= CKEDITOR
.plugins
.link
.getSelectedLink( editor
);
109 if ( partialSelected
)
111 loadElements
.call( this, partialSelected
);
112 selection
.selectElement( partialSelected
);
116 this.getContentElement( 'info', 'txtName' ).focus();
121 label
: editor
.lang
.anchor
.title
,
128 label
: editor
.lang
.anchor
.name
,
130 validate : function()
132 if ( !this.getValue() )
134 alert( editor
.lang
.anchor
.errorName
);