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