Mooeypoo has uploaded a new change for review.
https://gerrit.wikimedia.org/r/203459
Change subject: Show template description in the template search
......................................................................
Show template description in the template search
For each template result, ask for the templatedata description. If
that description exists, show it under the template result.
Bug: T53436
Change-Id: If28d1eb082edca6f50c6c15c933a0b7d014eaeaf
---
M VisualEditor.php
M extension.json
M modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js
A modules/ve-mw/ui/styles/widgets/ve.ui.MWTemplateMenuOptionWidget.css
A modules/ve-mw/ui/widgets/ve.ui.MWTemplateMenuOptionWidget.js
A modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
6 files changed, 175 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/59/203459/1
diff --git a/VisualEditor.php b/VisualEditor.php
index 86a536c..249c5af 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -1379,6 +1379,8 @@
'modules/ve-mw/ui/widgets/ve.ui.MWParameterResultWidget.js',
'modules/ve-mw/ui/widgets/ve.ui.MWMoreParametersResultWidget.js',
'modules/ve-mw/ui/widgets/ve.ui.MWNoParametersResultWidget.js',
+
'modules/ve-mw/ui/widgets/ve.ui.MWTemplateMenuOptionWidget.js',
+
'modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js',
'modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js',
'modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js',
@@ -1399,6 +1401,7 @@
'modules/ve-mw/ui/styles/widgets/ve.ui.MWMoreParametersResultWidget.css',
'modules/ve-mw/ui/styles/widgets/ve.ui.MWNoParametersResultWidget.css',
'modules/ve-mw/ui/styles/widgets/ve.ui.MWParameterSearchWidget.css',
+
'modules/ve-mw/ui/styles/widgets/ve.ui.MWTemplateMenuOptionWidget.css',
'modules/ve-mw/ui/styles/pages/ve.ui.MWTransclusionContentPage.css',
'modules/ve-mw/ui/styles/dialogs/ve.ui.MWTransclusionDialog.css',
),
diff --git a/extension.json b/extension.json
index 531a1b7..6ba0321 100644
--- a/extension.json
+++ b/extension.json
@@ -1399,6 +1399,8 @@
"modules/ve-mw/ui/widgets/ve.ui.MWParameterResultWidget.js",
"modules/ve-mw/ui/widgets/ve.ui.MWMoreParametersResultWidget.js",
"modules/ve-mw/ui/widgets/ve.ui.MWNoParametersResultWidget.js",
+
"modules/ve-mw/ui/widgets/ve.ui.MWTemplateMenuOptionWidget",
+
"modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js",
"modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js",
"modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js",
"modules/ve-mw/ui/pages/ve.ui.MWParameterPlaceholderPage.js",
@@ -1415,6 +1417,7 @@
"modules/ve-mw/ui/styles/widgets/ve.ui.MWMoreParametersResultWidget.css",
"modules/ve-mw/ui/styles/widgets/ve.ui.MWNoParametersResultWidget.css",
"modules/ve-mw/ui/styles/widgets/ve.ui.MWParameterSearchWidget.css",
+
"modules/ve-mw/ui/styles/widgets/ve.ui.MWTemplateMenuOptionWidget.css",
"modules/ve-mw/ui/styles/pages/ve.ui.MWTransclusionContentPage.css",
"modules/ve-mw/ui/styles/dialogs/ve.ui.MWTransclusionDialog.css"
],
diff --git a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js
b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js
index 4b843f0..4519a23 100644
--- a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js
+++ b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js
@@ -30,7 +30,7 @@
// Properties
this.placeholder = placeholder;
- this.addTemplateInput = new ve.ui.MWTitleInputWidget( {
+ this.addTemplateInput = new ve.ui.MWTemplateTitleInputWidget( {
$: this.$, $overlay: config.$overlay, namespace: 10
} )
.connect( this, {
diff --git
a/modules/ve-mw/ui/styles/widgets/ve.ui.MWTemplateMenuOptionWidget.css
b/modules/ve-mw/ui/styles/widgets/ve.ui.MWTemplateMenuOptionWidget.css
new file mode 100644
index 0000000..ae8120b
--- /dev/null
+++ b/modules/ve-mw/ui/styles/widgets/ve.ui.MWTemplateMenuOptionWidget.css
@@ -0,0 +1,13 @@
+/*!
+ * VisualEditor MediaWiki UserInterface MWTemplateMenuOptionWidget styles.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+.ve-ui-mwTemplateMenuOptionWidget-description {
+ font-size: 0.8em;
+ color: #666;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWTemplateMenuOptionWidget.js
b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateMenuOptionWidget.js
new file mode 100644
index 0000000..7b7dc76
--- /dev/null
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateMenuOptionWidget.js
@@ -0,0 +1,34 @@
+/*!
+ * VisualEditor UserInterface MWTemplateMenuOptionWidget class
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see
http://ve.mit-license.org
+ */
+
+/**
+ * Creates a ve.ui.MWTemplateMenuOptionWidget object.
+ *
+ * @class
+ * @extends OO.ui.MenuOptionWidget
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {string} [href] href to point to pages from link suggestions
+ */
+ve.ui.MWTemplateMenuOptionWidget = function VeUiMWTemplateMenuOptionWidget(
config ) {
+ // Configuration initialization
+ config = $.extend( { icon: 'check' }, config );
+
+ // Parent constructor
+ ve.ui.MWTemplateMenuOptionWidget.super.call( this, $.extend( { data:
config.templateName }, config ) );
+
+ if ( config.templateDescription ) {
+ this.$description = $( '<span>' )
+ .addClass(
've-ui-mwTemplateMenuOptionWidget-description' )
+ .text( config.templateDescription );
+ this.$element.append( this.$description );
+ }
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ui.MWTemplateMenuOptionWidget, OO.ui.MenuOptionWidget );
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
new file mode 100644
index 0000000..6999dbd
--- /dev/null
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
@@ -0,0 +1,121 @@
+/*!
+ * VisualEditor UserInterface MWTemplateTitleInputWidget class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * Creates an ve.ui.MWTemplateTitleInputWidget object.
+ *
+ * @class
+ * @extends OO.ui.MWTitleInputWidget
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {number} [namespace] Namespace to prepend to queries
+ */
+ve.ui.MWTemplateTitleInputWidget = function VeUiMWTemplateTitleInputWidget(
config ) {
+ // Parent constructor
+ ve.ui.MWTitleInputWidget.call( this, config );
+
+ // Properties
+ this.namespace = config.namespace || 10;
+ this.descriptions = {};
+
+ // Initialization
+ this.$element.addClass( 've-ui-mwTemplateTitleInputWidget' );
+};
+/* Inheritance */
+
+OO.inheritClass( ve.ui.MWTemplateTitleInputWidget, ve.ui.MWTitleInputWidget );
+
+/* Methods */
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWTemplateTitleInputWidget.prototype.getLookupRequest = function () {
+ var xhr, pageId,
+ value = this.value;
+
+ // Prefix with default namespace name
+ if ( this.namespace !== null && mw.Title.newFromText( value,
this.namespace ) ) {
+ value = mw.Title.newFromText( value, this.namespace
).getPrefixedText();
+ }
+
+ // Dont send leading ':' to open search
+ if ( value.charAt( 0 ) === ':' ) {
+ value = value.slice( 1 );
+ }
+
+ xhr = new mw.Api().get( {
+ action: 'opensearch',
+ search: value,
+ suggest: ''
+ } );
+
+ return xhr
+ // Also get descriptions
+ .then( $.proxy( function ( response ) {
+ var templates = response[1];
+
+ this.originalResponse = response;
+
+ if ( templates.length > 0 ) {
+ return new mw.Api().get( {
+ action: 'templatedata',
+ titles: templates.join( '|' ),
+ lang: mw.config.get( 'wgUserLanguage' ),
+ redirects: '1'
+ } );
+ } else {
+ return $.Deferred().resolved();
+ }
+ }, this ) )
+ .then( $.proxy( function ( templateDataResponse ) {
+ // Look for descriptions and cache them
+ for ( pageId in templateDataResponse.pages ) {
+ if ( templateDataResponse.pages[pageId].title
&& !this.descriptions[templateDataResponse.pages[pageId].title] ) {
+ // Cache descriptions
+
this.descriptions[templateDataResponse.pages[pageId].title] =
templateDataResponse.pages[pageId].description;
+ }
+ }
+ // Return the original response
+ return this.originalResponse;
+ }, this ) )
+ .promise( { abort: xhr.abort } );
+};
+
+/**
+ * @inheritdoc
+ */
+ve.ui.MWTemplateTitleInputWidget.prototype.getLookupMenuOptionsFromData =
function ( data ) {
+ var i, len, title, value,
+ menu$ = this.lookupMenu.$,
+ items = [],
+ matchingPages = data,
+ linkCacheUpdate = {};
+
+ // Matching pages
+ if ( matchingPages && matchingPages.length ) {
+ for ( i = 0, len = matchingPages.length; i < len; i++ ) {
+ title = new mw.Title( matchingPages[i] );
+ linkCacheUpdate[matchingPages[i]] = { missing: false };
+ if ( this.namespace !== null ) {
+ value = title.getRelativeText( this.namespace );
+ } else {
+ value = title.getPrefixedText();
+ }
+ items.push( new ve.ui.MWTemplateMenuOptionWidget( {
+ $: menu$,
+ templateName: value,
+ templateDescription:
this.descriptions[matchingPages[i]],
+ label: value
+ } ) );
+ }
+ ve.init.platform.linkCache.set( linkCacheUpdate );
+ }
+
+ return items;
+};
--
To view, visit https://gerrit.wikimedia.org/r/203459
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If28d1eb082edca6f50c6c15c933a0b7d014eaeaf
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits