diff options
Diffstat (limited to 'www/wiki/extensions/UploadWizard/resources/uw.FieldLayout.js')
-rw-r--r-- | www/wiki/extensions/UploadWizard/resources/uw.FieldLayout.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/www/wiki/extensions/UploadWizard/resources/uw.FieldLayout.js b/www/wiki/extensions/UploadWizard/resources/uw.FieldLayout.js new file mode 100644 index 00000000..d4d989e6 --- /dev/null +++ b/www/wiki/extensions/UploadWizard/resources/uw.FieldLayout.js @@ -0,0 +1,57 @@ +( function ( mw, uw, $, OO ) { + + /** + * FieldLayout with some UploadWizard-specific bonuses. + * + * @extends OO.ui.FieldLayout + * + * @constructor + * @inheritdoc + * @param {OO.ui.Widget} fieldWidget + * @param {Object} [config] + * @param {boolean} [config.required=false] Whether to mark this field as required + * @param {boolean} [config.align='top'] + */ + uw.FieldLayout = function UWFieldLayout( fieldWidget, config ) { + config = $.extend( { align: 'top', required: false }, config ); + uw.FieldLayout.parent.call( this, fieldWidget, config ); + uw.ValidationMessageElement.call( this, { validatedWidget: fieldWidget } ); + + this.required = null; + this.requiredMarker = new OO.ui.IndicatorWidget( { + classes: [ 'mwe-upwiz-fieldLayout-indicator' ], + indicator: 'required', + title: mw.msg( 'mwe-upwiz-error-blank' ) + } ); + + this.$element.addClass( 'mwe-upwiz-fieldLayout' ); + + this.$element.addClass( 'mwe-upwiz-details-fieldname-input' ); + this.$label.addClass( 'mwe-upwiz-details-fieldname' ); + this.$field.addClass( 'mwe-upwiz-details-input' ); + + this.setRequired( config.required ); + }; + OO.inheritClass( uw.FieldLayout, OO.ui.FieldLayout ); + OO.mixinClass( uw.FieldLayout, uw.ValidationMessageElement ); + + /** + * @return {boolean} Whether this field is marked as required + */ + uw.FieldLayout.prototype.getRequired = function () { + return this.required; + }; + + /** + * @param {boolean} required Whether to mark this field as required + */ + uw.FieldLayout.prototype.setRequired = function ( required ) { + this.required = !!required; + if ( this.required ) { + this.$label.after( this.requiredMarker.$element ); + } else { + this.requiredMarker.$element.remove(); + } + }; + +}( mediaWiki, mediaWiki.uploadWizard, jQuery, OO ) ); |