JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.1
[ckeditor.git] / _source / plugins / forms / dialogs / checkbox.js
1 /*\r
2 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
3 For licensing, see LICENSE.html or http://ckeditor.com/license\r
4 */\r
5 CKEDITOR.dialog.add( 'checkbox', function( editor )\r
6 {\r
7         return {\r
8                 title : editor.lang.checkboxAndRadio.checkboxTitle,\r
9                 minWidth : 350,\r
10                 minHeight : 140,\r
11                 onShow : function()\r
12                 {\r
13                         delete this.checkbox;\r
14 \r
15                         var element = this.getParentEditor().getSelection().getSelectedElement();\r
16 \r
17                         if ( element && element.getAttribute( 'type' ) == "checkbox" )\r
18                         {\r
19                                 this.checkbox = element;\r
20                                 this.setupContent( element );\r
21                         }\r
22                 },\r
23                 onOk : function()\r
24                 {\r
25                         var editor,\r
26                                 element = this.checkbox,\r
27                                 isInsertMode = !element;\r
28 \r
29                         if ( isInsertMode )\r
30                         {\r
31                                 editor = this.getParentEditor();\r
32                                 element = editor.document.createElement( 'input' );\r
33                                 element.setAttribute( 'type', 'checkbox' );\r
34                         }\r
35 \r
36                         if ( isInsertMode )\r
37                                 editor.insertElement( element );\r
38                         this.commitContent( { element : element } );\r
39                 },\r
40                 contents : [\r
41                         {\r
42                                 id : 'info',\r
43                                 label : editor.lang.checkboxAndRadio.checkboxTitle,\r
44                                 title : editor.lang.checkboxAndRadio.checkboxTitle,\r
45                                 startupFocus : 'txtName',\r
46                                 elements : [\r
47                                         {\r
48                                                 id : 'txtName',\r
49                                                 type : 'text',\r
50                                                 label : editor.lang.common.name,\r
51                                                 'default' : '',\r
52                                                 accessKey : 'N',\r
53                                                 setup : function( element )\r
54                                                 {\r
55                                                         this.setValue(\r
56                                                                         element.getAttribute( '_cke_saved_name' ) ||\r
57                                                                         element.getAttribute( 'name' ) ||\r
58                                                                         '' );\r
59                                                 },\r
60                                                 commit : function( data )\r
61                                                 {\r
62                                                         var element = data.element;\r
63 \r
64                                                         // IE failed to update 'name' property on input elements, protect it now.\r
65                                                         if ( this.getValue() )\r
66                                                                 element.setAttribute( '_cke_saved_name', this.getValue() );\r
67                                                         else\r
68                                                         {\r
69                                                                 element.removeAttribute( '_cke_saved_name' );\r
70                                                                 element.removeAttribute( 'name' );\r
71                                                         }\r
72                                                 }\r
73                                         },\r
74                                         {\r
75                                                 id : 'txtValue',\r
76                                                 type : 'text',\r
77                                                 label : editor.lang.checkboxAndRadio.value,\r
78                                                 'default' : '',\r
79                                                 accessKey : 'V',\r
80                                                 setup : function( element )\r
81                                                 {\r
82                                                         var value = element.getAttribute( 'value' );\r
83                                                         // IE Return 'on' as default attr value.\r
84                                                         this.setValue(  CKEDITOR.env.ie && value == 'on' ? '' : value  );\r
85                                                 },\r
86                                                 commit : function( data )\r
87                                                 {\r
88                                                         var element = data.element,\r
89                                                                 value = this.getValue();\r
90 \r
91                                                         if ( value && !( CKEDITOR.env.ie && value == 'on' ) )\r
92                                                                 element.setAttribute( 'value', value );\r
93                                                         else\r
94                                                                 element.removeAttribute( 'value' );\r
95                                                 }\r
96                                         },\r
97                                         {\r
98                                                 id : 'cmbSelected',\r
99                                                 type : 'checkbox',\r
100                                                 label : editor.lang.checkboxAndRadio.selected,\r
101                                                 'default' : '',\r
102                                                 accessKey : 'S',\r
103                                                 value : "checked",\r
104                                                 setup : function( element )\r
105                                                 {\r
106                                                         this.setValue( element.getAttribute( 'checked' ) );\r
107                                                 },\r
108                                                 commit : function( data )\r
109                                                 {\r
110                                                         var element = data.element;\r
111 \r
112                                                         if ( CKEDITOR.env.ie )\r
113                                                         {\r
114                                                                 var isElementChecked = !!element.getAttribute( 'checked' );\r
115                                                                 var isChecked = !!this.getValue();\r
116 \r
117                                                                 if ( isElementChecked != isChecked )\r
118                                                                 {\r
119                                                                         var replace = CKEDITOR.dom.element.createFromHtml( '<input type="checkbox"'\r
120                                                                                    + ( isChecked ? ' checked="checked"' : '' )\r
121                                                                                    + '/>', editor.document );\r
122 \r
123                                                                         element.copyAttributes( replace, { type : 1, checked : 1 } );\r
124                                                                         replace.replace( element );\r
125                                                                         editor.getSelection().selectElement( replace );\r
126                                                                         data.element = replace;\r
127                                                                 }\r
128                                                         }\r
129                                                         else\r
130                                                         {\r
131                                                                 var value = this.getValue();\r
132                                                                 if ( value )\r
133                                                                         element.setAttribute( 'checked', 'checked' );\r
134                                                                 else\r
135                                                                         element.removeAttribute( 'checked' );\r
136                                                         }\r
137                                                 }\r
138                                         }\r
139                                 ]\r
140                         }\r
141                 ]\r
142         };\r
143 });\r