/*\r
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
'{' +\r
'border: 1px dotted #FF0000;' +\r
'padding: 2px;' +\r
+ '}\n' );\r
+\r
+ editor.addCss(\r
+ 'img.cke_hidden' +\r
+ '{' +\r
+ 'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/hiddenfield.gif' ) + ');' +\r
+ 'background-position: center center;' +\r
+ 'background-repeat: no-repeat;' +\r
+ 'border: 1px solid #a9a9a9;' +\r
+ 'width: 16px !important;' +\r
+ 'height: 16px !important;' +\r
'}' );\r
\r
// All buttons use the same code to register. So, to avoid\r
{\r
editor.contextMenu.addListener( function( element )\r
{\r
- if ( element && element.hasAscendant( 'form' ) )\r
+ if ( element && element.hasAscendant( 'form', true ) && !element.isReadOnly() )\r
return { form : CKEDITOR.TRISTATE_OFF };\r
});\r
\r
editor.contextMenu.addListener( function( element )\r
{\r
- if ( element )\r
+ if ( element && !element.isReadOnly() )\r
{\r
var name = element.getName();\r
\r
\r
if ( name == 'input' )\r
{\r
- var type = element.getAttribute( 'type' );\r
-\r
- if ( type == 'text' || type == 'password' )\r
- return { textfield : CKEDITOR.TRISTATE_OFF };\r
+ switch( element.getAttribute( 'type' ) )\r
+ {\r
+ case 'button' :\r
+ case 'submit' :\r
+ case 'reset' :\r
+ return { button : CKEDITOR.TRISTATE_OFF };\r
\r
- if ( type == 'button' || type == 'submit' || type == 'reset' )\r
- return { button : CKEDITOR.TRISTATE_OFF };\r
+ case 'checkbox' :\r
+ return { checkbox : CKEDITOR.TRISTATE_OFF };\r
\r
- if ( type == 'checkbox' )\r
- return { checkbox : CKEDITOR.TRISTATE_OFF };\r
+ case 'radio' :\r
+ return { radio : CKEDITOR.TRISTATE_OFF };\r
\r
- if ( type == 'radio' )\r
- return { radio : CKEDITOR.TRISTATE_OFF };\r
+ case 'image' :\r
+ return { imagebutton : CKEDITOR.TRISTATE_OFF };\r
\r
- if ( type == 'image' )\r
- return { imagebutton : CKEDITOR.TRISTATE_OFF };\r
+ default :\r
+ return { textfield : CKEDITOR.TRISTATE_OFF };\r
+ }\r
}\r
\r
- if ( name == 'img' && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' )\r
+ if ( name == 'img' && element.data( 'cke-real-element-type' ) == 'hiddenfield' )\r
return { hiddenfield : CKEDITOR.TRISTATE_OFF };\r
}\r
});\r
}\r
+\r
+ editor.on( 'doubleclick', function( evt )\r
+ {\r
+ var element = evt.data.element;\r
+\r
+ if ( element.is( 'form' ) )\r
+ evt.data.dialog = 'form';\r
+ else if ( element.is( 'select' ) )\r
+ evt.data.dialog = 'select';\r
+ else if ( element.is( 'textarea' ) )\r
+ evt.data.dialog = 'textarea';\r
+ else if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'hiddenfield' )\r
+ evt.data.dialog = 'hiddenfield';\r
+ else if ( element.is( 'input' ) )\r
+ {\r
+ switch ( element.getAttribute( 'type' ) )\r
+ {\r
+ case 'button' :\r
+ case 'submit' :\r
+ case 'reset' :\r
+ evt.data.dialog = 'button';\r
+ break;\r
+ case 'checkbox' :\r
+ evt.data.dialog = 'checkbox';\r
+ break;\r
+ case 'radio' :\r
+ evt.data.dialog = 'radio';\r
+ break;\r
+ case 'image' :\r
+ evt.data.dialog = 'imagebutton';\r
+ break;\r
+ default :\r
+ evt.data.dialog = 'textfield';\r
+ break;\r
+ }\r
+ }\r
+ });\r
+ },\r
+\r
+ afterInit : function( editor )\r
+ {\r
+ var dataProcessor = editor.dataProcessor,\r
+ htmlFilter = dataProcessor && dataProcessor.htmlFilter,\r
+ dataFilter = dataProcessor && dataProcessor.dataFilter;\r
+\r
+ // Cleanup certain IE form elements default values.\r
+ if ( CKEDITOR.env.ie )\r
+ {\r
+ htmlFilter && htmlFilter.addRules(\r
+ {\r
+ elements :\r
+ {\r
+ input : function( input )\r
+ {\r
+ var attrs = input.attributes,\r
+ type = attrs.type;\r
+ // Old IEs don't provide type for Text inputs #5522\r
+ if ( !type )\r
+ attrs.type = 'text';\r
+ if ( type == 'checkbox' || type == 'radio' )\r
+ attrs.value == 'on' && delete attrs.value;\r
+ }\r
+ }\r
+ } );\r
+ }\r
+\r
+ if ( dataFilter )\r
+ {\r
+ dataFilter.addRules(\r
+ {\r
+ elements :\r
+ {\r
+ input : function( element )\r
+ {\r
+ if ( element.attributes.type == 'hidden' )\r
+ return editor.createFakeParserElement( element, 'cke_hidden', 'hiddenfield' );\r
+ }\r
+ }\r
+ } );\r
+ }\r
},\r
- requires : [ 'image' ]\r
+ requires : [ 'image', 'fakeobjects' ]\r
} );\r
\r
if ( CKEDITOR.env.ie )\r
return !!this.$.checked;\r
case 'value' :\r
var type = this.getAttribute( 'type' );\r
- if ( type == 'checkbox' || type == 'radio' )\r
- return this.$.value != 'on';\r
- break;\r
- default:\r
+ return type == 'checkbox' || type == 'radio' ? this.$.value != 'on' : this.$.value;\r
}\r
}\r
\r