Esanders has uploaded a new change for review.
https://gerrit.wikimedia.org/r/199925
Change subject: Replace buttons with select widgets in GeneralReferenceDialog
......................................................................
Replace buttons with select widgets in GeneralReferenceDialog
Change-Id: I22016f1a362ece79894c5577e737b1df5180d82d
---
M modules/ve-mw/ui/dialogs/ve.ui.MWGeneralReferenceDialog.js
M modules/ve-mw/ui/styles/dialogs/ve.ui.MWGeneralReferenceDialog.css
2 files changed, 77 insertions(+), 62 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/25/199925/1
diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWGeneralReferenceDialog.js
b/modules/ve-mw/ui/dialogs/ve.ui.MWGeneralReferenceDialog.js
index d934cb4..6ba6507 100644
--- a/modules/ve-mw/ui/dialogs/ve.ui.MWGeneralReferenceDialog.js
+++ b/modules/ve-mw/ui/dialogs/ve.ui.MWGeneralReferenceDialog.js
@@ -49,45 +49,23 @@
return 400;
};
-ve.ui.MWGeneralReferenceDialog.prototype.initialize = function ( data ) {
- var topLabel, refButtonsFieldset, refBaseButtonsFieldset, refBasic,
- tools, i, len, item, button,
+/**
+ * @inheritdoc
+ */
+ve.ui.MWGeneralReferenceDialog.prototype.initialize = function () {
+ var sourceField, refBasic,
+ tools, i, len, item,
+ items = [],
limit = ve.init.mw.Target.static.citationToolsLimit;
// Parent method
- ve.ui.MWGeneralReferenceDialog.super.prototype.initialize.call( this,
data );
+ ve.ui.MWGeneralReferenceDialog.super.prototype.initialize.apply( this,
arguments );
this.panel = new OO.ui.PanelLayout( {
classes: [ 've-ui-mwGeneralReferenceDialog-panel' ],
padded: true,
expanded: false
} );
-
- topLabel = new OO.ui.LabelWidget( {
- label: ve.msg( 'visualeditor-dialog-generalreference-intro' )
- } );
-
- refButtonsFieldset = new OO.ui.FieldsetLayout( {
- classes: [ 've-ui-mwGeneralReferenceDialog-buttons-fieldset' ]
- } );
- refBaseButtonsFieldset = new OO.ui.FieldsetLayout( {
- classes: [
've-ui-mwGeneralReferenceDialog-buttons-base-fieldset' ]
- } );
-
- // Basic and re-use reference buttons
- refBasic = new OO.ui.ButtonWidget( {
- icon: 'reference',
- label: ve.msg( 'visualeditor-dialogbutton-reference-full-label'
),
- classes: [ 've-ui-mwGeneralReferenceDialog-ref-buttons' ],
- framed: false
- } );
- this.refExisting = new OO.ui.ButtonWidget( {
- icon: 'reference-existing',
- label: ve.msg(
'visualeditor-dialog-reference-useexisting-full-label' ),
- classes: [ 've-ui-mwGeneralReferenceDialog-ref-buttons' ],
- framed: false
- } );
- refBaseButtonsFieldset.$element.append( refBasic.$element,
this.refExisting.$element );
// Attach cite dialog tools
try {
@@ -99,29 +77,54 @@
if ( Array.isArray( tools ) ) {
for ( i = 0, len = Math.min( limit, tools.length ); i < len;
i++ ) {
item = tools[i];
- // Create a button
- button = new OO.ui.ButtonWidget( {
+ items.push( new OO.ui.DecoratedOptionWidget( {
icon: item.icon,
label: item.title,
- classes: [
've-ui-mwGeneralReferenceDialog-ref-buttons' ],
- framed: false
- } );
- // Attach to fieldset
- refButtonsFieldset.$element.append( button.$element );
- // Event
- button.connect( this, { click: [ 'onDialogButtonClick',
'transclusion', { template: item.template } ] } );
+ data: {
+ windowName: 'transclusion',
+ dialogData: { template: item.template }
+ }
+ } ) );
}
}
+ // Basic tools
+ refBasic = new OO.ui.DecoratedOptionWidget( {
+ icon: 'reference',
+ label: ve.msg( 'visualeditor-dialogbutton-reference-full-label'
),
+ data: { windowName: 'reference' }
+ } );
+ this.refExisting = new OO.ui.DecoratedOptionWidget( {
+ icon: 'reference-existing',
+ label: ve.msg(
'visualeditor-dialog-reference-useexisting-full-label' ),
+ data: {
+ windowName: 'reference',
+ dialogData: { useExisting: true }
+ }
+ } );
+
+ this.sourceSelect = new OO.ui.SelectWidget( {
+ classes: [ 've-ui-mwGeneralReferenceDialog-select' ],
+ items: items
+ } );
+ sourceField = new OO.ui.FieldLayout( this.sourceSelect, {
+ classes: [ 've-ui-mwGeneralReferenceDialog-source-field' ],
+ align: 'top',
+ label: ve.msg( 'visualeditor-dialog-generalreference-intro' )
+ } );
+
+ this.basicSelect = new OO.ui.SelectWidget( {
+ classes: [ 've-ui-mwGeneralReferenceDialog-select' ],
+ items: [ refBasic, this.refExisting ]
+ } );
// Events
- refBasic.connect( this, { click: [ 'onDialogButtonClick', 'reference' ]
} );
- this.refExisting.connect( this, { click: [ 'onDialogButtonClick',
'reference', { useExisting: true } ] } );
+ this.sourceSelect.connect( this, { choose: 'onSelectChoose' } );
+ this.basicSelect.connect( this, { choose: 'onSelectChoose' } );
// Assemble the panel
this.panel.$element.append(
- topLabel.$element,
- refButtonsFieldset.$element,
- refBaseButtonsFieldset.$element
+ sourceField.$element,
+ this.basicSelect.$element
);
this.$body
@@ -141,7 +144,20 @@
};
/**
+ * @inheritdoc
+ */
+ve.ui.MWGeneralReferenceDialog.prototype.getTeardownProcess = function ( data
) {
+ return
ve.ui.MWGeneralReferenceDialog.super.prototype.getTeardownProcess.call( this,
data )
+ .next( function () {
+ // Clear selections
+ this.sourceSelect.selectItem();
+ this.basicSelect.selectItem();
+ }, this );
+};
+
+/**
* Check if there are any references in the current page.
+ *
* @return {boolean} There are references
*/
ve.ui.MWGeneralReferenceDialog.prototype.doReferencesExist = function () {
@@ -157,19 +173,21 @@
};
/**
- * Respond to dialog button click
- * @param {string} windowName Window name
- * @param {Object} dialogData Data object
+ * Handle select widget choose events
+ *
+ * @param {OO.ui.OptionWidget} item Chosen item
*/
-ve.ui.MWGeneralReferenceDialog.prototype.onDialogButtonClick = function (
windowName, dialogData ) {
- var dialog = this,
- fragment = this.getFragment();
+ve.ui.MWGeneralReferenceDialog.prototype.onSelectChoose = function ( item ) {
+ var data = item.getData(),
+ // Closing the dialog may unset some properties, so cache the
ones we want
+ fragment = this.getFragment(),
+ manager = this.getManager();
- // Open the new dialog
+ // Close this dialog then open the new dialog
this.close().then( function () {
- dialog.getManager().openWindow( windowName, $.extend( {
+ manager.openWindow( data.windowName, $.extend( {
fragment: fragment
- }, dialogData ) );
+ }, data.dialogData ) );
} );
};
diff --git a/modules/ve-mw/ui/styles/dialogs/ve.ui.MWGeneralReferenceDialog.css
b/modules/ve-mw/ui/styles/dialogs/ve.ui.MWGeneralReferenceDialog.css
index 453c829..7161e7d 100644
--- a/modules/ve-mw/ui/styles/dialogs/ve.ui.MWGeneralReferenceDialog.css
+++ b/modules/ve-mw/ui/styles/dialogs/ve.ui.MWGeneralReferenceDialog.css
@@ -4,18 +4,15 @@
* @copyright 2011-2015 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
+
.ve-ui-mwGeneralReferenceDialog-panel {
margin: 1em 3em;
}
-.ve-ui-mwGeneralReferenceDialog-ref-buttons {
- display: block;
- margin: 1.5em 0;
+
+.ve-ui-mwGeneralReferenceDialog-select .oo-ui-optionWidget {
+ margin: 1em 0;
}
-.ve-ui-mwGeneralReferenceDialog-buttons-fieldset {
- margin-top: 1em;
-}
-
-.ve-ui-mwGeneralReferenceDialog-buttons-base-fieldset {
- border-top: 1px solid #cccccc;
+.ve-ui-mwGeneralReferenceDialog-source-field {
+ border-bottom: 1px solid #cccccc;
}
--
To view, visit https://gerrit.wikimedia.org/r/199925
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I22016f1a362ece79894c5577e737b1df5180d82d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits