Trevor Parscal has uploaded a new change for review.
https://gerrit.wikimedia.org/r/192972
Change subject: Context refactor
......................................................................
Context refactor
* Update ve core
* Add context item support for references, citations, templates and links
Change-Id: I5d488ecbf9768dc63de6e545505dbfd5eb84cc61
---
M VisualEditor.php
M lib/ve
M modules/ve-mw/i18n/en.json
M modules/ve-mw/init/ve.init.mw.Target.js
A modules/ve-mw/ui/contextitems/ve.ui.MWCitationContextItem.js
A modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js
A modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js
A modules/ve-mw/ui/contextitems/ve.ui.MWReferencesListContextItem.js
A modules/ve-mw/ui/contextitems/ve.ui.MWTransclusionContextItem.js
M modules/ve-mw/ui/tools/ve.ui.MWCitationDialogTool.js
M modules/ve-mw/ui/ve.ui.MWMobileContext.js
11 files changed, 391 insertions(+), 24 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/72/192972/1
diff --git a/VisualEditor.php b/VisualEditor.php
index f2ce216..a7c166d 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -526,6 +526,9 @@
'lib/ve/src/ui/ve.ui.Overlay.js',
'lib/ve/src/ui/ve.ui.Surface.js',
'lib/ve/src/ui/ve.ui.Context.js',
+ 'lib/ve/src/ui/ve.ui.ModeledFactory.js',
+ 'lib/ve/src/ui/ve.ui.ContextItem.js',
+ 'lib/ve/src/ui/ve.ui.ContextItemFactory.js',
'lib/ve/src/ui/ve.ui.TableContext.js',
'lib/ve/src/ui/ve.ui.Tool.js',
'lib/ve/src/ui/ve.ui.Toolbar.js',
@@ -554,6 +557,11 @@
'lib/ve/src/ui/actions/ve.ui.TableAction.js',
'lib/ve/src/ui/actions/ve.ui.WindowAction.js',
+
'lib/ve/src/ui/contextitems/ve.ui.CommentContextItem.js',
+
'lib/ve/src/ui/contextitems/ve.ui.LanguageContextItem.js',
+ 'lib/ve/src/ui/contextitems/ve.ui.LinkContextItem.js',
+ 'lib/ve/src/ui/contextitems/ve.ui.ToolContextItem.js',
+
'lib/ve/src/ui/commands/ve.ui.ClearAnnotationCommand.js',
'lib/ve/src/ui/commands/ve.ui.HistoryCommand.js',
'lib/ve/src/ui/commands/ve.ui.IndentationCommand.js',
@@ -578,8 +586,6 @@
'lib/ve/src/ui/widgets/ve.ui.AlignWidget.js',
'lib/ve/src/ui/widgets/ve.ui.SurfaceWidget.js',
'lib/ve/src/ui/widgets/ve.ui.LinkTargetInputWidget.js',
- 'lib/ve/src/ui/widgets/ve.ui.ContextSelectWidget.js',
- 'lib/ve/src/ui/widgets/ve.ui.ContextOptionWidget.js',
'lib/ve/src/ui/widgets/ve.ui.DimensionsWidget.js',
'lib/ve/src/ui/widgets/ve.ui.MediaSizeWidget.js',
'lib/ve/src/ui/widgets/ve.ui.WhitespacePreservingTextInputWidget.js',
@@ -627,8 +633,6 @@
'lib/ve/src/ui/styles/dialogs/ve.ui.FindAndReplaceDialog.css',
'lib/ve/src/ui/styles/dialogs/ve.ui.ProgressDialog.css',
'lib/ve/src/ui/styles/tools/ve.ui.FormatTool.css',
-
'lib/ve/src/ui/styles/widgets/ve.ui.ContextOptionWidget.css',
-
'lib/ve/src/ui/styles/widgets/ve.ui.ContextSelectWidget.css',
'lib/ve/src/ui/styles/widgets/ve.ui.DimensionsWidget.css',
'lib/ve/src/ui/styles/widgets/ve.ui.MediaSizeWidget.css',
'lib/ve/src/ui/styles/inspectors/ve.ui.CommentInspector.css',
@@ -636,6 +640,11 @@
'lib/ve/src/ui/styles/inspectors/ve.ui.LinkInspector.css',
'lib/ve/src/ui/styles/inspectors/ve.ui.SpecialCharacterInspector.css',
'lib/ve/src/ui/styles/widgets/ve.ui.SurfaceWidget.css',
+ 'lib/ve/src/ui/styles/ve.ui.ContextItem.css',
+
'lib/ve/src/ui/styles/contextitems/ve.ui.CommentContextItem.css',
+
'lib/ve/src/ui/styles/contextitems/ve.ui.LanguageContextItem.css',
+
'lib/ve/src/ui/styles/contextitems/ve.ui.LinkContextItem.css',
+
'lib/ve/src/ui/styles/contextitems/ve.ui.ToolContextItem.css',
'lib/ve/src/ui/styles/ve.ui.Overlay.css',
'lib/ve/src/ui/styles/ve.ui.Surface.css',
'lib/ve/src/ui/styles/ve.ui.Toolbar.css',
@@ -783,12 +792,11 @@
'scripts' => array(
'lib/ve/src/ui/ve.ui.MobileSurface.js',
'lib/ve/src/ui/ve.ui.MobileContext.js',
-
'lib/ve/src/ui/windowmanagers/ve.ui.MobileWindowManager.js',
-
'lib/ve/src/ui/widgets/ve.ui.MobileContextOptionWidget.js',
+
'lib/ve/src/ui/windowmanagers/ve.ui.MobileWindowManager.js'
),
'styles' => array(
+ 'lib/ve/src/ui/styles/ve.ui.MobileContext.css',
'lib/ve/src/ui/styles/ve.ui.MobileSurface.css',
-
'lib/ve/src/ui/styles/widgets/ve.ui.MobileContextOptionWidget.css',
),
'dependencies' => array(
'ext.visualEditor.core',
@@ -1085,6 +1093,8 @@
'modules/ve-mw/ui/inspectors/ve.ui.MWLinkNodeInspector.js',
'modules/ve-mw/ui/tools/ve.ui.MWLinkInspectorTool.js',
+
+
'modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js',
),
'styles' => array(
'modules/ve-mw/ui/styles/widgets/ve.ui.MWLinkTargetInputWidget.css'
@@ -1267,6 +1277,10 @@
'modules/ve-mw/ui/tools/ve.ui.MWReferenceDialogTool.js',
'modules/ve-mw/ui/tools/ve.ui.MWCitationDialogTool.js',
+
+
'modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js',
+
'modules/ve-mw/ui/contextitems/ve.ui.MWReferencesListContextItem.js',
+
'modules/ve-mw/ui/contextitems/ve.ui.MWCitationContextItem.js',
),
'styles' => array(
'modules/ve-mw/ui/styles/widgets/ve.ui.MWReferenceGroupInputWidget.css',
@@ -1287,6 +1301,8 @@
'visualeditor-dialog-reference-title',
'visualeditor-dialog-reference-useexisting-label',
'visualeditor-dialog-reference-useexisting-tool',
+
'visualeditor-dialog-referenceslist-contextitem-description-general',
+
'visualeditor-dialog-referenceslist-contextitem-description-named',
'visualeditor-dialog-referenceslist-title',
'visualeditor-dialogbutton-reference-tooltip',
'visualeditor-dialogbutton-referenceslist-tooltip',
@@ -1335,6 +1351,8 @@
'modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js',
'modules/ve-mw/ui/tools/ve.ui.MWTransclusionDialogTool.js',
+
+
'modules/ve-mw/ui/contextitems/ve.ui.MWTransclusionContextItem.js',
),
'styles' => array(
'modules/ve-mw/ui/styles/widgets/ve.ui.MWParameterResultWidget.css',
@@ -1365,6 +1383,7 @@
'visualeditor-dialog-transclusion-add-param',
'visualeditor-dialog-transclusion-add-template',
'visualeditor-dialog-transclusion-content',
+
'visualeditor-dialog-transclusion-contextitem-description',
'visualeditor-dialog-transclusion-deprecated-parameter',
'visualeditor-dialog-transclusion-deprecated-parameter-description',
'visualeditor-dialog-transclusion-loading',
diff --git a/lib/ve b/lib/ve
index f81b990..3ad5591 160000
--- a/lib/ve
+++ b/lib/ve
-Subproject commit f81b99026c59ba62b0764a402c4fffdc10379223
+Subproject commit 3ad5591a4d68fbcf0bf5f38ef694646f12021370
diff --git a/modules/ve-mw/i18n/en.json b/modules/ve-mw/i18n/en.json
index 399ecfe..7ecbdcc 100644
--- a/modules/ve-mw/i18n/en.json
+++ b/modules/ve-mw/i18n/en.json
@@ -186,12 +186,15 @@
"visualeditor-dialog-reference-title": "Reference",
"visualeditor-dialog-reference-useexisting-label": "Use an existing
reference",
"visualeditor-dialog-reference-useexisting-tool": "Re-use",
+ "visualeditor-dialog-referenceslist-contextitem-description-general":
"List of general references",
+ "visualeditor-dialog-referenceslist-contextitem-description-named":
"List of references for group \"$1\"",
"visualeditor-dialog-referenceslist-title": "References list",
"visualeditor-dialog-template-title": "Template",
"visualeditor-dialog-transclusion-add-content": "Add content",
"visualeditor-dialog-transclusion-add-param": "Add more information",
"visualeditor-dialog-transclusion-add-template": "Add template",
"visualeditor-dialog-transclusion-content": "Content",
+ "visualeditor-dialog-transclusion-contextitem-description": "Generated
from: $1",
"visualeditor-dialog-transclusion-deprecated-parameter": "Deprecated
field",
"visualeditor-dialog-transclusion-deprecated-parameter-description":
"Field is deprecated. $1",
"visualeditor-dialog-transclusion-loading": "Loading...",
diff --git a/modules/ve-mw/init/ve.init.mw.Target.js
b/modules/ve-mw/init/ve.init.mw.Target.js
index c96cea9..cfbfd67 100644
--- a/modules/ve-mw/init/ve.init.mw.Target.js
+++ b/modules/ve-mw/init/ve.init.mw.Target.js
@@ -785,7 +785,7 @@
*
*/
ve.init.mw.Target.prototype.generateCitationFeatures = function () {
- var i, len, item, name, data, tool, tools, dialog,
+ var i, len, item, name, data, tool, tools, dialog, contextItem,
limit = this.constructor.static.citationToolsLimit;
if ( !ve.ui.MWCitationDialog ) {
@@ -846,6 +846,30 @@
{ args: [name, data],
supportedSelections: ['linear'] }
)
);
+ // Generate transclusion context item
+ name = 'cite-transclusion-' + item.name;
+ contextItem = function
GeneratedMWTransclusionContextItem( toolbar, config ) {
+ ve.ui.MWTransclusionContextItem.call( this,
toolbar, config );
+ };
+ OO.inheritClass( contextItem,
ve.ui.MWTransclusionContextItem );
+ contextItem.static.name = name;
+ contextItem.static.icon = item.icon;
+ contextItem.static.label = item.title;
+ contextItem.static.commandName = name;
+ contextItem.static.template = item.template;
+ ve.ui.contextItemFactory.register( contextItem );
+ // Generate citation context item
+ name = 'cite-' + item.name;
+ contextItem = function GeneratedMWCitationContextItem(
toolbar, config ) {
+ ve.ui.MWCitationContextItem.call( this,
toolbar, config );
+ };
+ OO.inheritClass( contextItem,
ve.ui.MWCitationContextItem );
+ contextItem.static.name = name;
+ contextItem.static.icon = item.icon;
+ contextItem.static.label = item.title;
+ contextItem.static.commandName = name;
+ contextItem.static.template = item.template;
+ ve.ui.contextItemFactory.register( contextItem );
// Generate dialog
dialog = function GeneratedMWCitationDialog( config ) {
ve.ui.MWCitationDialog.call( this, config );
diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWCitationContextItem.js
b/modules/ve-mw/ui/contextitems/ve.ui.MWCitationContextItem.js
new file mode 100644
index 0000000..d39da00
--- /dev/null
+++ b/modules/ve-mw/ui/contextitems/ve.ui.MWCitationContextItem.js
@@ -0,0 +1,45 @@
+/*!
+ * VisualEditor MWCitationContextItem class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see
http://ve.mit-license.org
+ */
+
+/**
+ * Context item for a MWCitation.
+ *
+ * @extends ve.ui.MWReferenceContextItem
+ *
+ * @param {ve.ui.Context} context Context item is in
+ * @param {ve.dm.Model} model Model item is related to
+ * @param {Object} config Configuration options
+ */
+ve.ui.MWCitationContextItem = function VeMWCitationContextItem( context,
model, config ) {
+ // Parent constructor
+ ve.ui.MWCitationContextItem.super.call( this, context, model, config );
+
+ // Initialization
+ this.$element.addClass( 've-ui-MWCitationContextItem' );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ui.MWCitationContextItem, ve.ui.MWReferenceContextItem );
+
+/* Static Properties */
+
+/**
+ * Only display item for single-template transclusions of these templates.
+ *
+ * @property {string|string[]|null}
+ * @static
+ * @inheritable
+ */
+ve.ui.MWCitationDialogTool.static.template = null;
+
+/* Static Methods */
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWCitationContextItem.static.isCompatibleWith =
+ ve.ui.MWCitationDialogTool.static.isCompatibleWith;
diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js
b/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js
new file mode 100644
index 0000000..ba0df1d
--- /dev/null
+++ b/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js
@@ -0,0 +1,61 @@
+/*!
+ * VisualEditor MWInternalLinkContextItem class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see
http://ve.mit-license.org
+ */
+
+/**
+ * Context item for a MWInternalLink.
+ *
+ * @extends ve.ui.LinkContextItem
+ *
+ * @param {ve.ui.Context} context Context item is in
+ * @param {ve.dm.Model} model Model item is related to
+ * @param {Object} config Configuration options
+ */
+ve.ui.MWInternalLinkContextItem = function VeMWInternalLinkContextItem(
context, model, config ) {
+ // Parent constructor
+ ve.ui.MWInternalLinkContextItem.super.call( this, context, model,
config );
+
+ // Initialization
+ this.$element.addClass( 've-ui-mwInternalLinkContextItem' );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ui.MWInternalLinkContextItem, ve.ui.LinkContextItem );
+
+/* Static Properties */
+
+ve.ui.MWInternalLinkContextItem.static.name = 'link/internal';
+
+ve.ui.MWInternalLinkContextItem.static.modelClasses = [
ve.dm.MWInternalLinkAnnotation ];
+
+/* Methods */
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWInternalLinkContextItem.prototype.getDescription = function () {
+ return this.model.getAttribute( 'normalizedTitle' );
+};
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWInternalLinkContextItem.prototype.renderBody = function () {
+ var $link = $( '<a>' )
+ .text( this.getDescription() )
+ .attr( {
+ href: this.model.getHref(),
+ target: '_blank'
+ } );
+ this.$body.empty().append( $link );
+
+ // Style based on link cache information
+ ve.init.platform.linkCache.styleElement( this.model.getAttribute(
'lookupTitle' ), $link );
+};
+
+/* Registration */
+
+ve.ui.contextItemFactory.register( ve.ui.MWInternalLinkContextItem );
diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js
b/modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js
new file mode 100644
index 0000000..444b647
--- /dev/null
+++ b/modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js
@@ -0,0 +1,79 @@
+/*!
+ * VisualEditor MWReferenceContextItem class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see
http://ve.mit-license.org
+ */
+
+/**
+ * Context item for a MWReference.
+ *
+ * @extends ve.ui.ContextItem
+ *
+ * @param {ve.ui.Context} context Context item is in
+ * @param {ve.dm.Model} model Model item is related to
+ * @param {Object} config Configuration options
+ */
+ve.ui.MWReferenceContextItem = function VeMWReferenceContextItem( context,
model, config ) {
+ // Parent constructor
+ ve.ui.MWReferenceContextItem.super.call( this, context, model, config );
+
+ // Initialization
+ this.$element.addClass( 've-ui-mwReferenceContextItem' );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ui.MWReferenceContextItem, ve.ui.ContextItem );
+
+/* Static Properties */
+
+ve.ui.MWReferenceContextItem.static.name = 'reference';
+
+ve.ui.MWReferenceContextItem.static.icon = 'reference';
+
+ve.ui.MWReferenceContextItem.static.label = OO.ui.deferMsg(
'visualeditor-dialogbutton-reference-tooltip' );
+
+ve.ui.MWReferenceContextItem.static.modelClasses = [ ve.dm.MWReferenceNode ];
+
+ve.ui.MWReferenceContextItem.static.commandName = 'reference';
+
+/* Methods */
+
+/**
+ * Get a DOM rendering of the reference.
+ *
+ * @private
+ * @return {jQuery} DOM rendering of reference
+ */
+ve.ui.MWReferenceContextItem.prototype.getRendering = function () {
+ var ref = ve.dm.MWReferenceModel.static.newFromReferenceNode(
this.model ),
+ view = new ve.ce.InternalItemNode(
+ this.model.getDocument().getInternalList().getItemNode(
ref.getListIndex() )
+ );
+
+ // HACK: PHP parser doesn't wrap single lines in a paragraph
+ if ( view.$element.children().length === 1 && view.$element.children(
'p' ).length === 1 ) {
+ // unwrap inner
+ view.$element.children().replaceWith(
view.$element.children().contents() );
+ }
+
+ return view.$element;
+};
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWReferenceContextItem.prototype.getDescription = function () {
+ return this.getRendering().text();
+};
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWReferenceContextItem.prototype.renderBody = function () {
+ this.$body.empty().append( this.getRendering() );
+};
+
+/* Registration */
+
+ve.ui.contextItemFactory.register( ve.ui.MWReferenceContextItem );
diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWReferencesListContextItem.js
b/modules/ve-mw/ui/contextitems/ve.ui.MWReferencesListContextItem.js
new file mode 100644
index 0000000..db64284
--- /dev/null
+++ b/modules/ve-mw/ui/contextitems/ve.ui.MWReferencesListContextItem.js
@@ -0,0 +1,56 @@
+/*!
+ * VisualEditor MWReferencesListContextItem class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see
http://ve.mit-license.org
+ */
+
+/**
+ * Context item for a MWReferencesList.
+ *
+ * @extends ve.ui.ContextItem
+ *
+ * @param {ve.ui.Context} context Context item is in
+ * @param {ve.dm.Model} model Model item is related to
+ * @param {Object} config Configuration options
+ */
+ve.ui.MWReferencesListContextItem = function VeMWReferencesListContextItem(
context, model, config ) {
+ // Parent constructor
+ ve.ui.MWReferencesListContextItem.super.call( this, context, model,
config );
+
+ // Initialization
+ this.$element.addClass( 've-ui-mwReferencesListContextItem' );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ui.MWReferencesListContextItem, ve.ui.ContextItem );
+
+/* Static Properties */
+
+ve.ui.MWReferencesListContextItem.static.name = 'referencesList';
+
+ve.ui.MWReferencesListContextItem.static.icon = 'references';
+
+ve.ui.MWReferencesListContextItem.static.label =
+ OO.ui.deferMsg( 'visualeditor-dialogbutton-referenceslist-tooltip' );
+
+ve.ui.MWReferencesListContextItem.static.modelClasses = [
ve.dm.MWReferencesListNode ];
+
+ve.ui.MWReferencesListContextItem.static.commandName = 'referencesList';
+
+/* Methods */
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWReferencesListContextItem.prototype.getDescription = function () {
+ var group = this.model.getAttribute( 'refGroup' );
+
+ return group ?
+ ve.msg(
'visualeditor-dialog-referenceslist-contextitem-description-named', group ) :
+ ve.msg(
'visualeditor-dialog-referenceslist-contextitem-description-general' );
+};
+
+/* Registration */
+
+ve.ui.contextItemFactory.register( ve.ui.MWReferencesListContextItem );
diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWTransclusionContextItem.js
b/modules/ve-mw/ui/contextitems/ve.ui.MWTransclusionContextItem.js
new file mode 100644
index 0000000..fc66f98
--- /dev/null
+++ b/modules/ve-mw/ui/contextitems/ve.ui.MWTransclusionContextItem.js
@@ -0,0 +1,75 @@
+/*!
+ * VisualEditor MWTransclusionContextItem class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see
http://ve.mit-license.org
+ */
+
+/**
+ * Context item for a MWTransclusion.
+ *
+ * @extends ve.ui.ContextItem
+ *
+ * @param {ve.ui.Context} context Context item is in
+ * @param {ve.dm.Model} model Model item is related to
+ * @param {Object} config Configuration options
+ */
+ve.ui.MWTransclusionContextItem = function VeMWTransclusionContextItem(
context, model, config ) {
+ // Parent constructor
+ ve.ui.MWTransclusionContextItem.super.call( this, context, model,
config );
+
+ // Initialization
+ this.$element.addClass( 've-ui-mwTransclusionContextItem' );
+ if ( !this.model.isSingleTemplate() ) {
+ this.setLabel( ve.msg(
'visualeditor-dialogbutton-transclusion-tooltip' ) );
+ }
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ui.MWTransclusionContextItem, ve.ui.ContextItem );
+
+/* Static Properties */
+
+ve.ui.MWTransclusionContextItem.static.name = 'transclusion';
+
+ve.ui.MWTransclusionContextItem.static.icon = 'template';
+
+ve.ui.MWTransclusionContextItem.static.label =
+ OO.ui.deferMsg( 'visualeditor-dialogbutton-template-tooltip' );
+
+ve.ui.MWTransclusionContextItem.static.modelClasses = [
ve.dm.MWTransclusionNode ];
+
+ve.ui.MWTransclusionContextItem.static.commandName = 'transclusion';
+
+/**
+ * Only display item for single-template transclusions of these templates.
+ *
+ * @property {string|string[]|null}
+ * @static
+ * @inheritable
+ */
+ve.ui.MWTransclusionContextItem.static.template = null;
+
+/* Static Methods */
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWTransclusionContextItem.static.isCompatibleWith =
+ ve.ui.MWTransclusionDialogTool.static.isCompatibleWith;
+
+/* Methods */
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWTransclusionContextItem.prototype.getDescription = function () {
+ return ve.msg(
+ 'visualeditor-dialog-transclusion-contextitem-description',
+ ve.ce.MWTransclusionNode.static.getDescription( this.model )
+ );
+};
+
+/* Registration */
+
+ve.ui.contextItemFactory.register( ve.ui.MWTransclusionContextItem );
diff --git a/modules/ve-mw/ui/tools/ve.ui.MWCitationDialogTool.js
b/modules/ve-mw/ui/tools/ve.ui.MWCitationDialogTool.js
index 6df415c..144dcae 100644
--- a/modules/ve-mw/ui/tools/ve.ui.MWCitationDialogTool.js
+++ b/modules/ve-mw/ui/tools/ve.ui.MWCitationDialogTool.js
@@ -28,8 +28,6 @@
ve.ui.MWCitationDialogTool.static.group = 'cite';
-ve.ui.MWCitationDialogTool.static.modelClasses = [ ve.dm.MWReferenceNode ];
-
/**
* Only display tool for single-template transclusions of these templates.
*
@@ -39,7 +37,7 @@
*/
ve.ui.MWCitationDialogTool.static.template = null;
-/* Methods */
+/* Static Methods */
/**
* @inheritdoc
diff --git a/modules/ve-mw/ui/ve.ui.MWMobileContext.js
b/modules/ve-mw/ui/ve.ui.MWMobileContext.js
index b8e654f..8dece58 100644
--- a/modules/ve-mw/ui/ve.ui.MWMobileContext.js
+++ b/modules/ve-mw/ui/ve.ui.MWMobileContext.js
@@ -31,19 +31,26 @@
/**
* @inheritdoc
*/
-ve.ui.MWMobileContext.prototype.getAvailableTools = function () {
- var tools = ve.ui.MobileContext.super.prototype.getAvailableTools.call(
this );
+ve.ui.MWMobileContext.prototype.getAvailableSources = function () {
+ var sources;
- // Filter out tools not supported in mobile mode
- // FIXME: This is a temporary hack. Ideally, we don't want to load any
code
- // that is not supported on a given platform. However, present
implementation
- // of citation dialog forces us to load tools that we don't want on
mobile.
- this.availableTools = tools.filter( function ( tool ) {
- return (
- tool.model instanceof ve.dm.LinkAnnotation ||
- ( tool.model instanceof ve.dm.MWReferenceNode &&
tool.tool !== ve.ui.MWReferenceDialogTool )
- );
- } );
+ if ( !this.relatedSources ) {
+ sources =
ve.ui.MobileContext.super.prototype.getAvailableSources.call( this );
- return this.availableTools;
+ // Filter out sources not supported in mobile mode
+ // FIXME: This is a temporary hack. Ideally, we don't want to
load any code
+ // that is not supported on a given platform. However, present
implementation
+ // of citation dialog forces us to load sources that we don't
want on mobile.
+ this.availableSources = sources.filter( function ( source ) {
+ return (
+ source.model instanceof ve.dm.LinkAnnotation ||
+ (
+ source.model instanceof
ve.dm.MWReferenceNode &&
+ source.tool !==
ve.ui.MWReferenceDialogTool
+ )
+ );
+ } );
+ }
+
+ return this.availableSources;
};
--
To view, visit https://gerrit.wikimedia.org/r/192972
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5d488ecbf9768dc63de6e545505dbfd5eb84cc61
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Trevor Parscal <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits