From e36d9b1cc330ca504694a1b345dc771b8791bcec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Laxstr=C3=B6m?= Date: Wed, 4 Sep 2013 06:53:35 +0000 Subject: [PATCH] Regression: Using [...] to change language does not activate apply button Bug: 53736 Change-Id: If52beb73f9f3f74cde63bd846974540682066ab6 --- resources/js/ext.uls.displaysettings.js | 19 +++++++++++-------- .../features/step_definitions/common_steps.rb | 9 +++++++++ .../features/uls_settings_panel.feature | 10 ++++++++++ 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/resources/js/ext.uls.displaysettings.js b/resources/js/ext.uls.displaysettings.js index cfcbe45e..808beb63 100644 --- a/resources/js/ext.uls.displaysettings.js +++ b/resources/js/ext.uls.displaysettings.js @@ -107,8 +107,13 @@ this.prepareLanguages(); this.prepareUIFonts(); this.prepareContentFonts(); + + // Usually this is already loaded, but when changing language it + // might not be. $.i18n().locale = this.uiLanguage; - this.i18n(); + mw.uls.loadLocalization( this.uiLanguage ) + .done( $.proxy( this.i18n, this ) ); + this.$webfonts.refresh(); this.listen(); this.dirty = false; @@ -316,15 +321,13 @@ } }, onSelect: function ( langCode ) { - displaySettings.markDirty(); displaySettings.uiLanguage = langCode; - displaySettings.$parent.show(); - displaySettings.prepareUIFonts(); - displaySettings.prepareLanguages(); - // set the language for the settings panel so that webfonts - // are correctly applied. displaySettings.$template.attr( 'lang', langCode ); - displaySettings.preview( langCode ); + // This re-renders the whole thing + displaySettings.$parent.show(); + // And the only thing we need to take care of is to enable + // the apply button + displaySettings.markDirty(); }, quickList: function () { return mw.uls.getFrequentLanguageList(); diff --git a/tests/browser/features/step_definitions/common_steps.rb b/tests/browser/features/step_definitions/common_steps.rb index 1f9a992f..57b7e1f9 100644 --- a/tests/browser/features/step_definitions/common_steps.rb +++ b/tests/browser/features/step_definitions/common_steps.rb @@ -31,6 +31,15 @@ Given(/^the content language is "(.*?)"$/) do |language| actual.should == code end +Given(/^the interface language is "(.*?)"$/) do |language| + # phantomjs needs little bit time because it executes the script before + # the page is fully loaded + sleep 0.5; + code = language_to_code(language) + actual = @browser.execute_script( "return mw.config.get( 'wgUserLanguage' )" ) + actual.should == code +end + def language_to_code(language) case language when 'German' diff --git a/tests/browser/features/uls_settings_panel.feature b/tests/browser/features/uls_settings_panel.feature index dc53b74d..c6abd875 100644 --- a/tests/browser/features/uls_settings_panel.feature +++ b/tests/browser/features/uls_settings_panel.feature @@ -63,3 +63,13 @@ Feature: ULS settings panel Given I temporarily use "Finnish" as the interface language When I open "Language" panel of language settings Then I see "English (sama kuin sisällön)" as the name of the content language + + @login @reset-preferences-after + Scenario: Selecting language via [...] button + + Given I am logged in + When I open "Language" panel of language settings + And I click the button with the ellipsis + And I use the panel to change my interface language to "German" + And I apply the changes + Then the interface language is "German"