1 /* 2 Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. 3 For licensing, see LICENSE.html or http://ckeditor.com/license 4 */ 5 CKEDITOR.dialog.add( 'form', function( editor ) 6 { 7 var autoAttributes = 8 { 9 action : 1, 10 id : 1, 11 method : 1, 12 enctype : 1, 13 target : 1 14 }; 15 16 return { 17 title : editor.lang.form.title, 18 minWidth : 350, 19 minHeight : 200, 20 onShow : function() 21 { 22 delete this.form; 23 24 var element = this.getParentEditor().getSelection().getStartElement(); 25 var form = element && element.getAscendant( 'form', true ); 26 if ( form ) 27 { 28 this.form = form; 29 this.setupContent( form ); 30 } 31 }, 32 onOk : function() 33 { 34 var editor, 35 element = this.form, 36 isInsertMode = !element; 37 38 if ( isInsertMode ) 39 { 40 editor = this.getParentEditor(); 41 element = editor.document.createElement( 'form' ); 42 !CKEDITOR.env.ie && element.append( editor.document.createElement( 'br' ) ); 43 } 44 45 if ( isInsertMode ) 46 editor.insertElement( element ); 47 this.commitContent( element ); 48 }, 49 onLoad : function() 50 { 51 function autoSetup( element ) 52 { 53 this.setValue( element.getAttribute( this.id ) || '' ); 54 } 55 56 function autoCommit( element ) 57 { 58 if ( this.getValue() ) 59 element.setAttribute( this.id, this.getValue() ); 60 else 61 element.removeAttribute( this.id ); 62 } 63 64 this.foreach( function( contentObj ) 65 { 66 if ( autoAttributes[ contentObj.id ] ) 67 { 68 contentObj.setup = autoSetup; 69 contentObj.commit = autoCommit; 70 } 71 } ); 72 }, 73 contents : [ 74 { 75 id : 'info', 76 label : editor.lang.form.title, 77 title : editor.lang.form.title, 78 elements : [ 79 { 80 id : 'txtName', 81 type : 'text', 82 label : editor.lang.common.name, 83 'default' : '', 84 accessKey : 'N', 85 setup : function( element ) 86 { 87 this.setValue( element.data( 'cke-saved-name' ) || 88 element.getAttribute( 'name' ) || 89 '' ); 90 }, 91 commit : function( element ) 92 { 93 if ( this.getValue() ) 94 element.data( 'cke-saved-name', this.getValue() ); 95 else 96 { 97 element.data( 'cke-saved-name', false ); 98 element.removeAttribute( 'name' ); 99 } 100 } 101 }, 102 { 103 id : 'action', 104 type : 'text', 105 label : editor.lang.form.action, 106 'default' : '', 107 accessKey : 'T' 108 }, 109 { 110 type : 'hbox', 111 widths : [ '45%', '55%' ], 112 children : 113 [ 114 { 115 id : 'id', 116 type : 'text', 117 label : editor.lang.common.id, 118 'default' : '', 119 accessKey : 'I' 120 }, 121 { 122 id : 'enctype', 123 type : 'select', 124 label : editor.lang.form.encoding, 125 style : 'width:100%', 126 accessKey : 'E', 127 'default' : '', 128 items : 129 [ 130 [ '' ], 131 [ 'text/plain' ], 132 [ 'multipart/form-data' ], 133 [ 'application/x-www-form-urlencoded' ] 134 ] 135 } 136 ] 137 }, 138 { 139 type : 'hbox', 140 widths : [ '45%', '55%' ], 141 children : 142 [ 143 { 144 id : 'target', 145 type : 'select', 146 label : editor.lang.common.target, 147 style : 'width:100%', 148 accessKey : 'M', 149 'default' : '', 150 items : 151 [ 152 [ editor.lang.common.notSet, '' ], 153 [ editor.lang.common.targetNew, '_blank' ], 154 [ editor.lang.common.targetTop, '_top' ], 155 [ editor.lang.common.targetSelf, '_self' ], 156 [ editor.lang.common.targetParent, '_parent' ] 157 ] 158 }, 159 { 160 id : 'method', 161 type : 'select', 162 label : editor.lang.form.method, 163 accessKey : 'M', 164 'default' : 'GET', 165 items : 166 [ 167 [ 'GET', 'get' ], 168 [ 'POST', 'post' ] 169 ] 170 } 171 ] 172 } 173 ] 174 } 175 ] 176 }; 177 }); 178