| 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' )		] };	} );} )();
 |