Henning Snater has uploaded a new change for review.
https://gerrit.wikimedia.org/r/76735
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(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/35/76735/1
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 ed8d9bc..bfcae56 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'
}
}
},
@@ -71,8 +89,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..97ffb8d 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="English (enwiki)"
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: newchange
Gerrit-Change-Id: I911b4a8e9871f426580be1100b004740ec9b9916
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits