X-Git-Url: https://scm.cri.ensmp.fr/git/ckeditor.git/blobdiff_plain/256592bf803e851aa7fc953e08a6e9e58d970f8c..871bad8291b6dbc29d489d95d185458caab25158:/skins/ckeditor/_source/plugins/iframe/dialogs/iframe.js diff --git a/skins/ckeditor/_source/plugins/iframe/dialogs/iframe.js b/skins/ckeditor/_source/plugins/iframe/dialogs/iframe.js new file mode 100644 index 0000000..769b6af --- /dev/null +++ b/skins/ckeditor/_source/plugins/iframe/dialogs/iframe.js @@ -0,0 +1,229 @@ +/* +Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +(function() +{ + // Map 'true' and 'false' values to match W3C's specifications + // http://www.w3.org/TR/REC-html40/present/frames.html#h-16.5 + var checkboxValues = + { + scrolling : { 'true' : 'yes', 'false' : 'no' }, + frameborder : { 'true' : '1', 'false' : '0' } + }; + + function loadValue( iframeNode ) + { + var isCheckbox = this instanceof CKEDITOR.ui.dialog.checkbox; + if ( iframeNode.hasAttribute( this.id ) ) + { + var value = iframeNode.getAttribute( this.id ); + if ( isCheckbox ) + this.setValue( checkboxValues[ this.id ][ 'true' ] == value.toLowerCase() ); + else + this.setValue( value ); + } + } + + function commitValue( iframeNode ) + { + var isRemove = this.getValue() === '', + isCheckbox = this instanceof CKEDITOR.ui.dialog.checkbox, + value = this.getValue(); + if ( isRemove ) + iframeNode.removeAttribute( this.att || this.id ); + else if ( isCheckbox ) + iframeNode.setAttribute( this.id, checkboxValues[ this.id ][ value ] ); + else + iframeNode.setAttribute( this.att || this.id, value ); + } + + CKEDITOR.dialog.add( 'iframe', function( editor ) + { + var iframeLang = editor.lang.iframe, + commonLang = editor.lang.common, + dialogadvtab = editor.plugins.dialogadvtab; + return { + title : iframeLang.title, + minWidth : 350, + minHeight : 260, + onShow : function() + { + // Clear previously saved elements. + this.fakeImage = this.iframeNode = null; + + var fakeImage = this.getSelectedElement(); + if ( fakeImage && fakeImage.data( 'cke-real-element-type' ) && fakeImage.data( 'cke-real-element-type' ) == 'iframe' ) + { + this.fakeImage = fakeImage; + + var iframeNode = editor.restoreRealElement( fakeImage ); + this.iframeNode = iframeNode; + + this.setupContent( iframeNode ); + } + }, + onOk : function() + { + var iframeNode; + if ( !this.fakeImage ) + iframeNode = new CKEDITOR.dom.element( 'iframe' ); + else + iframeNode = this.iframeNode; + + // A subset of the specified attributes/styles + // should also be applied on the fake element to + // have better visual effect. (#5240) + var extraStyles = {}, extraAttributes = {}; + this.commitContent( iframeNode, extraStyles, extraAttributes ); + + // Refresh the fake image. + var newFakeImage = editor.createFakeElement( iframeNode, 'cke_iframe', 'iframe', true ); + newFakeImage.setAttributes( extraAttributes ); + newFakeImage.setStyles( extraStyles ); + if ( this.fakeImage ) + { + newFakeImage.replace( this.fakeImage ); + editor.getSelection().selectElement( newFakeImage ); + } + else + editor.insertElement( newFakeImage ); + }, + contents : [ + { + id : 'info', + label : commonLang.generalTab, + accessKey : 'I', + elements : + [ + { + type : 'vbox', + padding : 0, + children : + [ + { + id : 'src', + type : 'text', + label : commonLang.url, + required : true, + validate : CKEDITOR.dialog.validate.notEmpty( iframeLang.noUrl ), + setup : loadValue, + commit : commitValue + } + ] + }, + { + type : 'hbox', + children : + [ + { + id : 'width', + type : 'text', + style : 'width:100%', + labelLayout : 'vertical', + label : commonLang.width, + validate : CKEDITOR.dialog.validate.htmlLength( commonLang.invalidHtmlLength.replace( '%1', commonLang.width ) ), + setup : loadValue, + commit : commitValue + }, + { + id : 'height', + type : 'text', + style : 'width:100%', + labelLayout : 'vertical', + label : commonLang.height, + validate : CKEDITOR.dialog.validate.htmlLength( commonLang.invalidHtmlLength.replace( '%1', commonLang.height ) ), + setup : loadValue, + commit : commitValue + }, + { + id : 'align', + type : 'select', + 'default' : '', + items : + [ + [ commonLang.notSet , '' ], + [ commonLang.alignLeft , 'left' ], + [ commonLang.alignRight , 'right' ], + [ commonLang.alignTop , 'top' ], + [ commonLang.alignMiddle , 'middle' ], + [ commonLang.alignBottom , 'bottom' ] + ], + style : 'width:100%', + labelLayout : 'vertical', + label : commonLang.align, + setup : function( iframeNode, fakeImage ) + { + loadValue.apply( this, arguments ); + if ( fakeImage ) + { + var fakeImageAlign = fakeImage.getAttribute( 'align' ); + this.setValue( fakeImageAlign && fakeImageAlign.toLowerCase() || '' ); + } + }, + commit : function( iframeNode, extraStyles, extraAttributes ) + { + commitValue.apply( this, arguments ); + if ( this.getValue() ) + extraAttributes.align = this.getValue(); + } + } + ] + }, + { + type : 'hbox', + widths : [ '50%', '50%' ], + children : + [ + { + id : 'scrolling', + type : 'checkbox', + label : iframeLang.scrolling, + setup : loadValue, + commit : commitValue + }, + { + id : 'frameborder', + type : 'checkbox', + label : iframeLang.border, + setup : loadValue, + commit : commitValue + } + ] + }, + { + type : 'hbox', + widths : [ '50%', '50%' ], + children : + [ + { + id : 'name', + type : 'text', + label : commonLang.name, + setup : loadValue, + commit : commitValue + }, + { + id : 'title', + type : 'text', + label : commonLang.advisoryTitle, + setup : loadValue, + commit : commitValue + } + ] + }, + { + id : 'longdesc', + type : 'text', + label : commonLang.longDescr, + setup : loadValue, + commit : commitValue + } + ] + }, + dialogadvtab && dialogadvtab.createAdvancedTab( editor, { id:1, classes:1, styles:1 }) + ] + }; + }); +})();