Hello all..
Im trying to get started on a bit of plugin/dialog development and am starting by trying to understand existing plugins and dialogs..At the moment im having a little bit of difficulty grasping some code in the radio dialog..I would really appreciate if someone could explain to me the purpose of the setup and commit functions in the code below, and where and when they are called..Any input greatly appreciated..Thanks
/* Copyright (c) 2003-2009, 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.checkboxAndRadio.radioTitle, minWidth : 350, minHeight : 140, onShow : function() { delete this.radioButton; 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.checkboxAndRadio.radioTitle, title : editor.lang.checkboxAndRadio.radioTitle, elements : [ { id : 'name', type : 'text', label : editor.lang.common.name, 'default' : '', accessKey : 'N', setup : function( element ) { this.setValue( element.getAttribute( '_cke_saved_name' ) || element.getAttribute( 'name' ) || '' ); }, commit : function( data ) { var element = data.element; if ( this.getValue() ){ alert("this value: " + this.getValue()); element.setAttribute( 'name', this.getValue() );} else { alert("yeah"); element.removeAttribute( '_cke_saved_name' ); element.removeAttribute( 'name' ); } } }, { id : 'value', type : 'text', label : editor.lang.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 : 'id', type : 'text', label : 'ID', 'default' : '', accessKey : 'L', setup : function( element ) { this.setValue( element.getAttribute( 'id' ) || '' ); }, commit : function( data ) { var element = data.element; if ( this.getValue() ) element.setAttribute( 'id', this.getValue() ); else element.removeAttribute( 'id' ); } }, { id : 'checked', type : 'checkbox', label : editor.lang.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 ) { 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; } } } } ] } ] }; });
Re: Radio dialog question
I would say that a much easier way to understand the plugins is to have a look at the plugin tutorials that are available here: http://docs.cksource.com/CKEditor_3.x/Tutorials. Or so I was hoping when I was writing them
This one here actually describes the setup and commit functions. Good luck!
Documentation Manager, CKSource
See CKEditor 5 docs, CKEditor 4 docs, CKEditor 3 docs, CKFinder 3 docs, CKFinder 2 docs for help.
Visit the new CKEditor SDK for samples showcasing editor features to try out and download!
Re: Radio dialog question
this.commitContent( { element : element } );
What function is called here, and why is element assigned to element? Why is it not just:
this.commitContent( element );
Any feedback appreciated, thanks..