Petar.petkovic has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/372846 )
Change subject: Support langlinkscount API
......................................................................
Support langlinkscount API
Add support for new langlinkscount API to mw.widgets
langlinkscount API was introduced in I8fffe5b2
Enable TitleOptionWidget to display number of languages article exists in
Enable TitleOptionWidget to display if article is missing in target language
Bug: T111094
Change-Id: I0c806d104ae43044104279a788abbd7231f76d8c
---
M languages/i18n/en.json
M languages/i18n/qqq.json
M resources/Resources.php
M resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js
M resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
M resources/src/mediawiki.widgets/mw.widgets.TitleWidget.less
6 files changed, 61 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core
refs/changes/46/372846/1
diff --git a/languages/i18n/en.json b/languages/i18n/en.json
index 6126bbd..7d6dd0ff 100644
--- a/languages/i18n/en.json
+++ b/languages/i18n/en.json
@@ -4218,6 +4218,7 @@
"mw-widgets-mediasearch-noresults": "No results found.",
"mw-widgets-titleinput-description-new-page": "page does not exist yet",
"mw-widgets-titleinput-description-redirect": "redirect to $1",
+ "mw-widgets-titleinput-missing-in-target-language": "Missing in $1",
"mw-widgets-categoryselector-add-category-placeholder": "Add a
category...",
"mw-widgets-usersmultiselect-placeholder": "Add more...",
"date-range-from": "From date:",
diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json
index bc0fe2c..464f889 100644
--- a/languages/i18n/qqq.json
+++ b/languages/i18n/qqq.json
@@ -4408,6 +4408,7 @@
"mw-widgets-mediasearch-noresults": "Label notifying the user no
results were found for the media search.",
"mw-widgets-titleinput-description-new-page": "Description label for a
new page in the title input widget.",
"mw-widgets-titleinput-description-redirect": "Description label for a
redirect in the title input widget.",
+ "mw-widgets-titleinput-missing-in-target-language": "Label appended to
search result in the title input widget, indicating that matching article is
missing in target language.",
"mw-widgets-categoryselector-add-category-placeholder": "Placeholder
displayed in the category selector widget after the capsules of already added
categories.",
"mw-widgets-usersmultiselect-placeholder": "Placeholder displayed in
the input field, where new usernames are entered",
"date-range-from": "Label for an input field that specifies the start
date of a date range filter.",
diff --git a/resources/Resources.php b/resources/Resources.php
index c0c5d9e..074463d 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -2381,6 +2381,7 @@
// TitleInputWidget
'mw-widgets-titleinput-description-new-page',
'mw-widgets-titleinput-description-redirect',
+ 'mw-widgets-titleinput-missing-in-target-language'
],
'targets' => [ 'desktop', 'mobile' ],
],
diff --git a/resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js
b/resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js
index 51508ab..d5aed1b 100644
--- a/resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js
+++ b/resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js
@@ -24,7 +24,7 @@
* @cfg {string} [query] Matching query string
*/
mw.widgets.TitleOptionWidget = function MwWidgetsTitleOptionWidget(
config ) {
- var icon;
+ var icon, languageIcon, languageLabel;
if ( config.missing ) {
icon = 'page-not-found';
@@ -91,6 +91,34 @@
.attr( 'title', config.description )
);
}
+
+ if ( config.numOfLanguages ) {
+ languageIcon = new OO.ui.IconWidget( {
+ icon: 'language',
+ iconTitle: 'Number of languages'
+ } );
+ languageLabel = new OO.ui.LabelWidget( {
+ label: config.numOfLanguages
+ } );
+ this.$element.append(
+ $( '<span>' )
+ .addClass(
'mw-widget-titleOptionWidget-numOfLanguages' )
+ .append(
+ languageIcon.$element,
+ languageLabel.$element
+ )
+ );
+ }
+
+ if ( config.missingInTargetLanguage ) {
+ this.$element.append(
+ $( '<span>' )
+ .addClass(
'mw-widget-titleOptionWidget-missing' )
+ .text( mw.msg(
'mw-widgets-titleinput-missing-in-target-language',
+ $.uls.data.getAutonym(
config.targetLanguage ) )
+ )
+ );
+ }
};
/* Setup */
diff --git a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
index 9703eea..909549b 100644
--- a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
+++ b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
@@ -44,6 +44,8 @@
this.showRedirectTargets = config.showRedirectTargets !== false;
this.showImages = !!config.showImages;
this.showDescriptions = !!config.showDescriptions;
+ this.showMissingInTargetLanguage =
!!config.showMissingInTargetLanguage;
+ this.showLanguageCount = !!config.showLanguageCount;
this.excludeCurrentPage = !!config.excludeCurrentPage;
this.validateTitle = config.validateTitle !== undefined ?
config.validateTitle : true;
this.cache = config.cache;
@@ -162,6 +164,14 @@
params.prop.push( 'pageterms' );
params.wbptterms =
'description';
}
+ if ( widget.showMissingInTargetLanguage
) {
+ params.prop.push( 'langlinks' );
+ // lllang is used to check if
article exists in target language
+ params.lllang =
widget.targetLanguage;
+ }
+ if ( widget.showLanguageCount ) {
+ params.prop.push(
'langlinkscount' );
+ }
req = api.get( params );
promiseAbortObject.abort =
req.abort.bind( req ); // TODO ew
return req.then( function ( ret ) {
@@ -225,6 +235,8 @@
disambiguation: OO.getProp( suggestionPage,
'pageprops', 'disambiguation' ) !== undefined,
imageUrl: OO.getProp( suggestionPage,
'thumbnail', 'source' ),
description: OO.getProp( suggestionPage,
'terms', 'description' ),
+ langlinks: suggestionPage.langlinks,
+ langlinkscount: suggestionPage.langlinkscount,
// Sort index
index: suggestionPage.index
};
@@ -243,6 +255,8 @@
redirect: true,
disambiguation: false,
description: mw.msg(
'mw-widgets-titleinput-description-redirect', suggestionPage.title ),
+ langlinks: suggestionPage.langlinks,
+ langlinkscount:
suggestionPage.langlinkscount,
// Sort index, just below its target
index: suggestionPage.index + 0.5
};
@@ -280,6 +294,10 @@
// Offer the exact text as a suggestion if the page exists
if ( pageExists && !pageExistsExact ) {
titles.unshift( this.getQueryValue() );
+ // Fix lowercase page titles (exact user input) to have
same data as the
+ // corresponding non-lowercase page returned as search
result
+ // Now both 'einstein' and 'Einstein' have the same
'Missing in [target-language]' info
+ pageData[ this.getQueryValue() ] = pageData[
titleObj.getPrefixedText() ];
}
for ( i = 0, len = titles.length; i < len; i++ ) {
diff --git a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.less
b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.less
index bbffe28..730b0da 100644
--- a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.less
+++ b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.less
@@ -12,6 +12,15 @@
&-description {
color: #888;
}
+
+ &-numOfLanguages {
+ padding-right: 1em;
+ }
+
+ &-missing {
+ color: #00af89;
+ font-weight: 500;
+ }
}
&-withImages {
@@ -36,6 +45,8 @@
width: 3.75em;
height: 3.75em;
left: 0;
+ top: 50%;
+ margin-top: -1.875em;
&:not(
.mw-widget-titleOptionWidget-hasImage ) {
background-color: #ccc;
opacity: 0.4;
--
To view, visit https://gerrit.wikimedia.org/r/372846
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0c806d104ae43044104279a788abbd7231f76d8c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Petar.petkovic <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits