mediawiki-extensions-Visual.../editcheck/modules/EditCheckInspector.js

161 lines
4.2 KiB
JavaScript
Raw Normal View History

/*!
* VisualEditor UserInterface EditCheckInspector class.
*
* @copyright See AUTHORS.txt
*/
/**
* Edit check inspector
*
* @class
* @extends ve.ui.FragmentInspector
*
* @constructor
* @param {Object} [config] Configuration options
*/
ve.ui.EditCheckInspector = function VeUiEditCheckInspector( config ) {
// Parent constructor
ve.ui.EditCheckInspector.super.call( this, config );
// Pre-initialization
this.$element.addClass( 've-ui-editCheckInspector' );
};
/* Inheritance */
OO.inheritClass( ve.ui.EditCheckInspector, ve.ui.FragmentInspector );
ve.ui.EditCheckInspector.static.name = 'editCheckReferencesInspector';
// ve.ui.EditCheckInspector.static.title = OO.ui.deferMsg( 'editcheck-dialog-title' );
ve.ui.EditCheckInspector.static.title = OO.ui.deferMsg( 'editcheck-dialog-addref-title' );
// ve.ui.EditCheckInspector.static.size = 'context';
ve.ui.EditCheckInspector.static.actions = [
{
label: OO.ui.deferMsg( 'visualeditor-dialog-action-cancel' ),
flags: [ 'safe', 'back' ],
modes: [ 'mobile', 'desktop' ]
},
{
action: 'continue',
icon: 'next',
flags: [ 'primary', 'progressive' ],
modes: [ 'mobile' ]
}
];
/* Methods */
/**
* @inheritdoc
*/
ve.ui.EditCheckInspector.prototype.initialize = function () {
// Parent method
ve.ui.EditCheckInspector.super.prototype.initialize.call( this );
// Survey panel
this.answerRadioSelect = new OO.ui.RadioSelectWidget( {
items: [
new OO.ui.RadioOptionWidget( {
data: 'uncertain',
label: ve.msg( 'editcheck-dialog-addref-reject-uncertain' )
} ),
new OO.ui.RadioOptionWidget( {
data: 'common-knowledge',
label: ve.msg( 'editcheck-dialog-addref-reject-common-knowledge' )
} ),
new OO.ui.RadioOptionWidget( {
data: 'irrelevant',
label: ve.msg( 'editcheck-dialog-addref-reject-irrelevant' )
} ),
new OO.ui.RadioOptionWidget( {
data: 'other',
label: ve.msg( 'editcheck-dialog-addref-reject-other' )
} )
]
} );
this.answerRadioSelect.connect( this, { select: 'updateActions' } );
this.answerConfirm = new OO.ui.ButtonWidget( {
flags: [ 'progressive' ],
framed: false,
label: ve.msg( 'ooui-dialog-process-continue' ),
disabled: true
} );
this.answerConfirm.toggle( !OO.ui.isMobile() );
this.answerConfirm.connect( this, { click: [ 'executeAction', 'continue' ] } );
this.form.addItems(
new OO.ui.FieldsetLayout( {
label: ve.msg( 'editcheck-dialog-addref-reject-question' ),
items: [
new OO.ui.FieldLayout( this.answerRadioSelect, {
label: ve.msg( 'editcheck-dialog-addref-reject-description' ),
align: 'top'
} ),
new OO.ui.FieldLayout( this.answerConfirm, {
align: 'left'
} )
]
} )
);
};
ve.ui.EditCheckInspector.prototype.updateActions = function () {
const isSelected = !!this.answerRadioSelect.findSelectedItem();
// desktop
this.answerConfirm.setDisabled( !isSelected );
// mobile
this.actions.setAbilities( { continue: isSelected } );
};
/**
* @inheritdoc
*/
ve.ui.EditCheckInspector.prototype.getSetupProcess = function ( data ) {
data = data || {};
return ve.ui.EditCheckInspector.super.prototype.getSetupProcess.call( this, data )
.first( function () {
this.surface = data.surface;
this.saveProcessDeferred = data.saveProcessDeferred;
this.answerRadioSelect.selectItem( null );
}, this );
};
/**
* @inheritdoc
*/
ve.ui.EditCheckInspector.prototype.getReadyProcess = function ( data ) {
return ve.ui.EditCheckInspector.super.prototype.getReadyProcess.call( this, data )
.first( function () {
this.actions.setMode( OO.ui.isMobile() ? 'mobile' : 'desktop' );
this.updateActions();
}, this );
};
/**
* @inheritdoc
*/
ve.ui.EditCheckInspector.prototype.getActionProcess = function ( action ) {
if ( action === '' ) {
return new OO.ui.Process( function () {
this.close();
}, this );
}
if ( action === 'continue' ) {
return new OO.ui.Process( function () {
this.close( { action: 'reject', reason: this.answerRadioSelect.findSelectedItem().getData() } );
ve.track( 'activity.editCheckReferences', { action: 'dialog-choose-' + this.answerRadioSelect.findSelectedItem().getData() } );
}, this );
}
return ve.ui.EditCheckInspector.super.prototype.getActionProcess.call( this, action );
};
/* Registration */
ve.ui.windowFactory.register( ve.ui.EditCheckInspector );