type : 'select',\r
label : editor.lang.common.protocol,\r
'default' : 'http://',\r
- style : 'width : 100%;',\r
items :\r
[\r
- [ 'http://' ],\r
- [ 'https://' ],\r
- [ 'ftp://' ],\r
- [ 'news://' ],\r
+ // Force 'ltr' for protocol names in BIDI. (#5433)\r
+ [ 'http://\u200E', 'http://' ],\r
+ [ 'https://\u200E', 'https://' ],\r
+ [ 'ftp://\u200E', 'ftp://' ],\r
+ [ 'news://\u200E', 'news://' ],\r
[ editor.lang.link.other , '' ]\r
],\r
setup : function( data )\r
{\r
if ( data.target )\r
this.setValue( data.target.type );\r
+ targetChanged.call( this );\r
},\r
commit : function( data )\r
{\r
{\r
// Create element if current selection is collapsed.\r
var selection = editor.getSelection(),\r
- ranges = selection.getRanges();\r
+ ranges = selection.getRanges( true );\r
if ( ranges.length == 1 && ranges[0].collapsed )\r
{\r
- var text = new CKEDITOR.dom.text( attributes._cke_saved_href, editor.document );\r
+ // Short mailto link text view (#5736).\r
+ var text = new CKEDITOR.dom.text( data.type == 'email' ?\r
+ data.email.address : attributes._cke_saved_href, editor.document );\r
ranges[0].insertNode( text );\r
ranges[0].selectNodeContents( text );\r
selection.selectRanges( ranges );\r
\r
element.setAttributes( attributes );\r
element.removeAttributes( removeAttributes );\r
- // Update text view when user changes protocol #4612.\r
- if (href == textView)\r
- element.setHtml( attributes._cke_saved_href );\r
+ // Update text view when user changes protocol (#4612).\r
+ if ( href == textView || data.type == 'email' && textView.indexOf( '@' ) != -1 )\r
+ {\r
+ // Short mailto link text view (#5736).\r
+ element.setHtml( data.type == 'email' ?\r
+ data.email.address : attributes._cke_saved_href );\r
+ }\r
// Make the element display as an anchor if a name has been set.\r
if ( element.getAttribute( 'name' ) )\r
element.addClass( 'cke_anchor' );\r