123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- /**
- * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-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' },
- tabindex: { 'true': '-1', 'false': false }
- };
- 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 value = this.getValue(),
- attributeName = this.att || this.id,
- isCheckbox = this instanceof CKEDITOR.ui.dialog.checkbox,
- attributeValue = isCheckbox ? checkboxValues[ this.id ][ value ] : value,
- isRemove = value === '' || ( attributeName === 'tabindex' && value === false );
- if ( isRemove ) {
- iframeNode.removeAttribute( attributeName );
- } else {
- iframeNode.setAttribute( attributeName, attributeValue );
- }
- }
- 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,
- getModel: function( editor ) {
- var element = editor.getSelection().getSelectedElement();
- if ( element && element.data( 'cke-real-element-type' ) === 'iframe' ) {
- return element;
- }
- return null;
- },
- 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. (https://dev.ckeditor.com/ticket/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',
- requiredContent: 'iframe[width]',
- 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',
- requiredContent: 'iframe[height]',
- 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',
- requiredContent: 'iframe[align]',
- 'default': '',
- items: [
- [ commonLang.notSet, '' ],
- [ commonLang.left, 'left' ],
- [ commonLang.right, '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: [ '33%', '33%', '33%' ],
- children: [ {
- id: 'scrolling',
- type: 'checkbox',
- requiredContent: 'iframe[scrolling]',
- label: iframeLang.scrolling,
- setup: loadValue,
- commit: commitValue
- },
- {
- id: 'frameborder',
- type: 'checkbox',
- requiredContent: 'iframe[frameborder]',
- label: iframeLang.border,
- setup: loadValue,
- commit: commitValue
- },
- {
- id: 'tabindex',
- type: 'checkbox',
- requiredContent: 'iframe[tabindex]',
- label: iframeLang.tabindex,
- setup: loadValue,
- commit: commitValue
- } ]
- },
- {
- type: 'hbox',
- widths: [ '50%', '50%' ],
- children: [ {
- id: 'name',
- type: 'text',
- requiredContent: 'iframe[name]',
- label: commonLang.name,
- setup: loadValue,
- commit: commitValue
- },
- {
- id: 'title',
- type: 'text',
- requiredContent: 'iframe[title]',
- label: commonLang.advisoryTitle,
- setup: loadValue,
- commit: commitValue
- } ]
- },
- {
- id: 'longdesc',
- type: 'text',
- requiredContent: 'iframe[longdesc]',
- label: commonLang.longDescr,
- setup: loadValue,
- commit: commitValue
- } ]
- },
- dialogadvtab && dialogadvtab.createAdvancedTab( editor, { id: 1, classes: 1, styles: 1 }, 'iframe' )
- ] };
- } );
- } )();
|