summaryrefslogtreecommitdiff
path: root/plugins/forms/dialogs/radio.js
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/forms/dialogs/radio.js')
-rw-r--r--plugins/forms/dialogs/radio.js119
1 files changed, 114 insertions, 5 deletions
diff --git a/plugins/forms/dialogs/radio.js b/plugins/forms/dialogs/radio.js
index 4a05d9b..ebdf951 100644
--- a/plugins/forms/dialogs/radio.js
+++ b/plugins/forms/dialogs/radio.js
@@ -1,6 +1,115 @@
-/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
+/**
+ * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.html or http://ckeditor.com/license
+ */
+CKEDITOR.dialog.add( 'radio', function( editor ) {
+ return {
+ title: editor.lang.forms.checkboxAndRadio.radioTitle,
+ minWidth: 350,
+ minHeight: 140,
+ onShow: function() {
+ delete this.radioButton;
-CKEDITOR.dialog.add('radio',function(a){return{title:a.lang.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,onShow:function(){var c=this;delete c.radioButton;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='input'&&b.getAttribute('type')=='radio'){c.radioButton=b;c.setupContent(b);}},onOk:function(){var b,c=this.radioButton,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');c.setAttribute('type','radio');}if(d)b.insertElement(c);this.commitContent({element:c});},contents:[{id:'info',label:a.lang.checkboxAndRadio.radioTitle,title:a.lang.checkboxAndRadio.radioTitle,elements:[{id:'name',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.data('cke-saved-name')||b.getAttribute('name')||'');},commit:function(b){var c=b.element;if(this.getValue())c.data('cke-saved-name',this.getValue());else{c.data('cke-saved-name',false);c.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.checkboxAndRadio.value,'default':'',accessKey:'V',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('value',this.getValue());else c.removeAttribute('value');}},{id:'checked',type:'checkbox',label:a.lang.checkboxAndRadio.selected,'default':'',accessKey:'S',value:'checked',setup:function(b){this.setValue(b.getAttribute('checked'));},commit:function(b){var c=b.element;if(!(CKEDITOR.env.ie||CKEDITOR.env.opera)){if(this.getValue())c.setAttribute('checked','checked');else c.removeAttribute('checked');}else{var d=c.getAttribute('checked'),e=!!this.getValue();if(d!=e){var f=CKEDITOR.dom.element.createFromHtml('<input type="radio"'+(e?' checked="checked"':'')+'></input>',a.document);c.copyAttributes(f,{type:1,checked:1});f.replace(c);a.getSelection().selectElement(f);b.element=f;}}}}]}]};});
+ var element = this.getParentEditor().getSelection().getSelectedElement();
+ if ( element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'radio' ) {
+ this.radioButton = element;
+ this.setupContent( element );
+ }
+ },
+ onOk: function() {
+ var editor,
+ element = this.radioButton,
+ isInsertMode = !element;
+
+ if ( isInsertMode ) {
+ editor = this.getParentEditor();
+ element = editor.document.createElement( 'input' );
+ element.setAttribute( 'type', 'radio' );
+ }
+
+ if ( isInsertMode )
+ editor.insertElement( element );
+ this.commitContent({ element: element } );
+ },
+ contents: [
+ {
+ id: 'info',
+ label: editor.lang.forms.checkboxAndRadio.radioTitle,
+ title: editor.lang.forms.checkboxAndRadio.radioTitle,
+ elements: [
+ {
+ id: 'name',
+ type: 'text',
+ label: editor.lang.common.name,
+ 'default': '',
+ accessKey: 'N',
+ setup: function( element ) {
+ this.setValue( element.data( 'cke-saved-name' ) || element.getAttribute( 'name' ) || '' );
+ },
+ commit: function( data ) {
+ var element = data.element;
+
+ if ( this.getValue() )
+ element.data( 'cke-saved-name', this.getValue() );
+ else {
+ element.data( 'cke-saved-name', false );
+ element.removeAttribute( 'name' );
+ }
+ }
+ },
+ {
+ id: 'value',
+ type: 'text',
+ label: editor.lang.forms.checkboxAndRadio.value,
+ 'default': '',
+ accessKey: 'V',
+ setup: function( element ) {
+ this.setValue( element.getAttribute( 'value' ) || '' );
+ },
+ commit: function( data ) {
+ var element = data.element;
+
+ if ( this.getValue() )
+ element.setAttribute( 'value', this.getValue() );
+ else
+ element.removeAttribute( 'value' );
+ }
+ },
+ {
+ id: 'checked',
+ type: 'checkbox',
+ label: editor.lang.forms.checkboxAndRadio.selected,
+ 'default': '',
+ accessKey: 'S',
+ value: "checked",
+ setup: function( element ) {
+ this.setValue( element.getAttribute( 'checked' ) );
+ },
+ commit: function( data ) {
+ var element = data.element;
+
+ if ( !( CKEDITOR.env.ie || CKEDITOR.env.opera ) ) {
+ if ( this.getValue() )
+ element.setAttribute( 'checked', 'checked' );
+ else
+ element.removeAttribute( 'checked' );
+ } else {
+ var isElementChecked = element.getAttribute( 'checked' );
+ var isChecked = !!this.getValue();
+
+ if ( isElementChecked != isChecked ) {
+ var replace = CKEDITOR.dom.element.createFromHtml( '<input type="radio"' + ( isChecked ? ' checked="checked"' : '' )
+ + '></input>', editor.document );
+ element.copyAttributes( replace, { type:1,checked:1 } );
+ replace.replace( element );
+ editor.getSelection().selectElement( replace );
+ data.element = replace;
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ };
+});