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 <henning.sna...@wikimedia.de>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to