jenkins-bot has submitted this change and it was merged.
Change subject: Adjusted site selector widget to site groups
......................................................................
Adjusted site selector widget to site groups
(bug 51560) In the site selector's input box and the corresponding suggestion
list,
the site id is shown instead of the language code now. (The matching mechanism
is
using the site id already.) Matching the language code is reimplemented with
this
change set.
Change-Id: I911b4a8e9871f426580be1100b004740ec9b9916
---
M lib/resources/jquery.wikibase/jquery.wikibase.siteselector.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.siteselector.tests.js
M lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js
M repo/tests/selenium/sitelinks/sitelinks_spec.rb
4 files changed, 60 insertions(+), 26 deletions(-)
Approvals:
Tobias Gritschacher: Looks good to me, approved
jenkins-bot: Verified
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.siteselector.js
b/lib/resources/jquery.wikibase/jquery.wikibase.siteselector.js
index 33341b8..14dccb5 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.siteselector.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.siteselector.js
@@ -14,7 +14,7 @@
/**
* Site selector
- * Ehances an input box with auto-complete and auto-suggestion
functionality for site ids.
+ * Enhances an input box with auto-complete and auto-suggestion
functionality for site ids.
*
* @example $( 'input' ).siteselector( { resultSet: < list of wikibase
Site objects > } );
* @desc Creates a simple site selector.
@@ -104,25 +104,37 @@
var results = $.grep( this.options.resultSet, function(
result, i ) {
return (
result.label.toLowerCase().indexOf(
request.term.toLowerCase() ) === 0
- || result.site.getId().indexOf(
request.term.toLowerCase() ) === 0
- );
+ || result.site.getId().indexOf(
request.term.toLowerCase() ) === 0
+ );
} );
- // if some site id is specified exactly, move that site
to the top for it will
- // be the one picked when leaving the input field
- var additionallyFiltered = $.grep( results, function(
result, i ) {
+
+ // If some site id or language code is specified
exactly, move that site / those sites
+ // to the top. The uppermost one be the one picked when
leaving the input field.
+ var filteredById = $.grep( results, function( result, i
) {
return ( request.term === result.site.getId() );
} );
- if ( additionallyFiltered.length > 0 ) { // remove site
from original result set
- for ( var i in results ) {
- if ( results[i].site.getId() ===
additionallyFiltered[0].site.getId() ) {
- results.splice( i, 1 );
- break;
+
+ var filteredByLanguageCode = $.grep( results, function(
result, i ) {
+ return ( request.term ===
result.site.getLanguageCode() );
+ } );
+
+ // Placing sites hit by id before sites hits by
language code:
+ var directlyHitSites = $.merge( filteredById,
filteredByLanguageCode );
+
+ // Remove directly hit sites from original result set:
+ if( directlyHitSites.length ) {
+ for( var i in results ) {
+ for( var j in directlyHitSites ) {
+ if ( results[i].site.getId()
=== directlyHitSites[j].site.getId() ) {
+ results.splice( i, 1 );
+ break;
+ }
}
}
}
- // put site with exactly hit site id to beginning of
complete result set
- $.merge( additionallyFiltered, results );
- suggest( additionallyFiltered );
+
+ // Put site(s) exactly hit to the top of the complete
result set:
+ suggest( $.merge( directlyHitSites, results ) );
},
/**
@@ -169,8 +181,8 @@
for ( var i in resultSet ) {
var site = resultSet[i];
this.options.resultSet.push( {
- 'label': site.getName() + ' (' +
site.getLanguageCode() + ')',
- 'value': site.getShortName() + ' (' +
site.getLanguageCode() + ')',
+ 'label': site.getName() + ' (' +
site.getId() + ')',
+ 'value': site.getShortName() + ' (' +
site.getId() + ')',
'site': site // additional reference to
site object for validation
} );
}
@@ -215,6 +227,7 @@
|| value ===
currentItem.site.getShortName().toLowerCase()
|| value ===
currentItem.value.toLowerCase()
|| value ===
currentItem.label.toLowerCase()
+ || value ===
currentItem.site.getLanguageCode()
) {
return currentItem.site.getId();
}
diff --git
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.siteselector.tests.js
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.siteselector.tests.js
index 8e23181..a891e30 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.siteselector.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.siteselector.tests.js
@@ -44,7 +44,7 @@
'wbSiteDetails': {
enwiki: {
apiUrl:
'http://en.wikipedia.org/w/api.php',
- name: 'English Wikipedia',
+ name: 'English',
pageUrl:
'http://en.wikipedia.org/wiki/$1',
shortName: 'English',
languageCode: 'en',
@@ -53,12 +53,30 @@
},
dewiki: {
apiUrl:
'http://de.wikipedia.org/w/api.php',
- name: 'Deutsche Wikipedia',
+ name: 'Deutsch',
pageUrl:
'http://de.wikipedia.org/wiki/$1',
shortName: 'Deutsch',
languageCode: 'de',
id: 'dewiki',
group: 'another'
+ },
+ nowiki: {
+ apiUrl:
'http://no.wikipedia.org/w/api.php',
+ name: 'norsk bokmål',
+ pageUrl:
'http://no.wikipedia.org/wiki/$1',
+ shortName: 'norsk bokmål',
+ languageCode: 'no',
+ id: 'nowiki',
+ group: 'foo'
+ },
+ frrwiki: {
+ apiUrl:
'http://frrwiki.wikipedia.org/w/api.php',
+ name: 'Nordfriisk',
+ pageUrl:
'http://frrwiki.wikipedia.org/wiki/$1',
+ shortName: 'Nordfriisk',
+ languageCode: 'frr',
+ id: 'frrwiki',
+ group: 'foo'
}
}
},
@@ -82,8 +100,11 @@
testStrings = [
{ enwiki: 'en' },
{ dewiki: 'd' },
- { enwiki: 'English (en)'},
- { dewiki: 'deutsch' }
+ { enwiki: 'English (enwiki)'},
+ { dewiki: 'deutsch' },
+ { nowiki: 'no' }, // Select by language code.
+ { enwiki: 'enwiki' },
+ { frrwiki: 'nord' }
];
var testString = function( string, expectedSiteId ) {
diff --git a/lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js
b/lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js
index 963d4f2..5017282 100644
--- a/lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js
+++ b/lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js
@@ -155,7 +155,7 @@
'initially, no site links, so no sites represented yet'
);
- hackyValueInsertionAndSave( subject, [ 'English (en)', 'London'
], 'enwiki' );
+ hackyValueInsertionAndSave( subject, [ 'English (enwiki)',
'London' ], 'enwiki' );
assert.deepEqual(
subject.getRepresentedSiteIds(),
@@ -275,7 +275,7 @@
'editable values initiated correctly'
);
- var rawNewValue = [ 'Deutsch (de)', 'Berlin' ];
+ var rawNewValue = [ 'Deutsch (dewiki)', 'Berlin' ];
var newValue = hackyValueInsertion( this.subject, rawNewValue,
'dewiki' );
assert.strictEqual(
diff --git a/repo/tests/selenium/sitelinks/sitelinks_spec.rb
b/repo/tests/selenium/sitelinks/sitelinks_spec.rb
index 47826d8..bb440c7 100644
--- a/repo/tests/selenium/sitelinks/sitelinks_spec.rb
+++ b/repo/tests/selenium/sitelinks/sitelinks_spec.rb
@@ -55,7 +55,7 @@
page.siteIdAutocompleteList_element.visible?.should be_true
page.pageInputField_element.enabled?.should be_true
page.pageInputField="xyz_thisarticleshouldneverexist_xyz"
- page.siteIdInputField.should == "English (en)"
+ page.siteIdInputField.should == "English (enwiki)"
ajax_wait
page.saveSitelinkLink
ajax_wait
@@ -76,7 +76,7 @@
page.addSitelinkLink
page.siteIdInputField_element.should be_true
page.pageInputField_element.enabled?.should be_false
- page.siteIdInputField="English (en)"
+ page.siteIdInputField="en"
ajax_wait
page.wait_until do
page.siteIdAutocompleteList_element.visible?
@@ -119,7 +119,7 @@
page.siteIdAutocompleteList_element.visible?.should be_true
page.pageInputField_element.enabled?.should be_true
page.pageInputField="Ber"
- page.siteIdInputField.should == "English (en)"
+ page.siteIdInputField.should == "English (enwiki)"
ajax_wait
page.wait_until do
page.pageAutocompleteList_element.visible?
@@ -150,7 +150,7 @@
it "should check if adding multiple sitelinks works" do
count = 1
- sitelinks = [["de", "Ber", "Deutsch (de)"], ["ja", "Ber", "日本語 (ja)"],
["he", "BER", "עברית (he)"]]
+ sitelinks = [["de", "Ber", "Deutsch (dewiki)"], ["ja", "Ber", "日本語
(jawiki)"], ["he", "BER", "עברית (hewiki)"]]
on_page(ItemPage) do |page|
page.navigate_to_item
page.wait_for_entity_to_load
--
To view, visit https://gerrit.wikimedia.org/r/76735
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I911b4a8e9871f426580be1100b004740ec9b9916
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits