X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=_source%2Fplugins%2Fdialogui%2Fplugin.js;h=fc3a7f467740cec2f924d147bdc4e9308afa5946;hb=66f4ae0bf0280ed56bf7c0f4ab175424dd1d47a0;hp=b6cd10c1b690f4d5f35f349db639cdd2e16ee816;hpb=c6e377a02b54abc07129d72b632763c727476a15;p=ckeditor.git
diff --git a/_source/plugins/dialogui/plugin.js b/_source/plugins/dialogui/plugin.js
index b6cd10c..fc3a7f4 100644
--- a/_source/plugins/dialogui/plugin.js
+++ b/_source/plugins/dialogui/plugin.js
@@ -13,6 +13,7 @@ CKEDITOR.plugins.add( 'dialogui' );
{
this._ || ( this._ = {} );
this._['default'] = this._.initValue = elementDefinition['default'] || '';
+ this._.required = elementDefinition[ 'required' ] || false;
var args = [ this._ ];
for ( var i = 1 ; i < arguments.length ; i++ )
args.push( arguments[i] );
@@ -34,6 +35,23 @@ CKEDITOR.plugins.add( 'dialogui' );
return new CKEDITOR.ui.dialog[elementDefinition.type]( dialog, elementDefinition, output );
}
},
+ containerBuilder =
+ {
+ build : function( dialog, elementDefinition, output )
+ {
+ var children = elementDefinition.children,
+ child,
+ childHtmlList = [],
+ childObjList = [];
+ for ( var i = 0 ; ( i < children.length && ( child = children[i] ) ) ; i++ )
+ {
+ var childHtml = [];
+ childHtmlList.push( childHtml );
+ childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) );
+ }
+ return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition );
+ }
+ },
commonPrototype =
{
isChanged : function()
@@ -69,7 +87,14 @@ CKEDITOR.plugins.add( 'dialogui' );
{
dialog.on( 'load', function()
{
- this.getInputElement().on( 'change', function(){ this.fire( 'change', { value : this.getValue() } ); }, this );
+ this.getInputElement().on( 'change', function()
+ {
+ // Make sure 'onchange' doesn't get fired after dialog closed. (#5719)
+ if ( !dialog.parts.dialog.isVisible() )
+ return;
+
+ this.fire( 'change', { value : this.getValue() } );
+ }, this );
}, this );
this._.domOnChangeRegistered = true;
}
@@ -129,13 +154,14 @@ CKEDITOR.plugins.add( 'dialogui' );
{
var html = [];
if ( elementDefinition.labelLayout != 'horizontal' )
- html.push( '
',
- contentHtml( dialog, elementDefinition ),
+ '',
+ '
',
+ contentHtml.call( this, dialog, elementDefinition ),
'
' );
else
{
@@ -147,14 +173,17 @@ CKEDITOR.plugins.add( 'dialogui' );
[
{
type : 'html',
- html : '
' + CKEDITOR.tools.htmlEncode( elementDefinition.label ) +
+ html : ''
},
{
type : 'html',
html : '
' +
- contentHtml( dialog, elementDefinition ) +
+ contentHtml.call( this, dialog, elementDefinition ) +
''
}
]
@@ -163,7 +192,7 @@ CKEDITOR.plugins.add( 'dialogui' );
}
return html.join( '' );
};
- CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, null, innerHTML );
+ CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, { role : 'presentation' }, innerHTML );
},
/**
@@ -236,12 +265,15 @@ CKEDITOR.plugins.add( 'dialogui' );
{
// IE BUG: Text input fields in IE at 100% would exceed a
or inline
// container's width, so need to wrap it inside a .
- var html = [ ' ' );
@@ -290,7 +322,9 @@ CKEDITOR.plugins.add( 'dialogui' );
/** @ignore */
var innerHTML = function()
{
- var html = [ ' ' );
@@ -334,13 +368,15 @@ CKEDITOR.plugins.add( 'dialogui' );
{
id : elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextNumber() + '_checkbox'
}, true ),
- html = [],
- attributes = { 'class' : 'cke_dialog_ui_checkbox_input', type : 'checkbox' };
+ html = [];
+
+ var labelId = CKEDITOR.tools.getNextNumber() + '_label';
+ var attributes = { 'class' : 'cke_dialog_ui_checkbox_input', type : 'checkbox', 'aria-labelledby' : labelId };
cleanInnerDefinition( myDefinition );
if ( elementDefinition[ 'default' ] )
attributes.checked = 'checked';
_.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes );
- html.push( ' |