Don't let anonymous users change interface language

Language selector is still opened by default

Change-Id: Iee7d83179e71b4546d8f3cd4f6fb053262ce05e2
This commit is contained in:
Amir E. Aharoni
2013-04-28 23:29:50 +03:00
committed by Niklas Laxström
parent b1aed294c0
commit 422371f688
5 changed files with 50 additions and 2 deletions

View File

@@ -22,6 +22,7 @@ $wgResourceModules['ext.uls.displaysettings'] = array(
'ext.uls.languagesettings',
'ext.uls.webfonts',
'jquery.i18n',
'mediawiki.api.parse',
),
) + $resourcePaths;

View File

@@ -19,6 +19,9 @@
"ext-uls-language-buttons-help": "Change the language of menus. Content language will not be affected.",
"ext-uls-display-settings-font-settings": "Font settings",
"ext-uls-display-settings-ui-language": "Display language",
"ext-uls-display-settings-anon-label": "Display language:",
"ext-uls-display-settings-anon-same-as-content": "English (same as content)",
"ext-uls-display-settings-anon-log-in-cta": "[[Special:UserLogin|Log in]] to select a different language for menus.",
"ext-uls-webfonts-settings-title": "Download font when needed",
"ext-uls-webfonts-settings-info": "Webfonts will be downloaded for displaying text in special scripts.",
"ext-uls-webfonts-settings-info-link": "More information",

View File

@@ -21,6 +21,10 @@
"ext-uls-language-buttons-help": "Help text that appears above the language selection buttons in the Display settings panel.",
"ext-uls-display-settings-font-settings": "Subsection title for font settings",
"ext-uls-display-settings-ui-language": "Sub section title for selecting UI language.\n{{Identical|Display language}}",
"ext-uls-display-settings-anon-label": "A label that appears to anonymous users before the message {{msg-mw|ext-uls-display-settings-anon-same-as-content}}.",
"ext-uls-display-settings-anon-same-as-content": "Text that appears to anonymous users after the label {{msg-mw|ext-uls-display-settings-anon-label}}.
Replace \"English\" with the name of your language.",
"ext-uls-display-settings-anon-log-in-cta": "A call to action for an anonymous user to log in.",
"ext-uls-webfonts-settings-title": "Short title for enabling webfonts",
"ext-uls-webfonts-settings-info": "Webfonts will be downloaded for displaying text in special scripts.",
"ext-uls-webfonts-settings-info-link": "More information link text for webfonts",
@@ -45,4 +49,4 @@
"ext-uls-input-enable": "Label for enable input tools button",
"ext-uls-input-disable-info": "Info text for the disable input tools button",
"ext-uls-input-settings-noime": "Text to be shown when no input methods are available for a selected language"
}
}

View File

@@ -100,3 +100,11 @@ div.display-settings-block {
color: #555555;
font-size: 10pt;
}
.uls-display-settings-anon-label {
font-weight: bold;
}
#uls-display-settings-anon-log-in-cta {
font-size: 10pt;
}

View File

@@ -160,11 +160,43 @@
* Prepare the UI language selector
*/
prepareLanguages: function () {
var displaySettings = this,
var loginUri, $loginCta,
displaySettings = this,
SUGGESTED_LANGUAGES_NUMBER = 3,
anonsAllowed = mw.config.get( 'wgULSAnonCanChangeLanguage' ),
languagesForButtons, $languages, suggestedLanguages,
lang, i, language, $button;
// Don't let anonymous users change interface language
if ( !anonsAllowed && mw.user.isAnon() ) {
loginUri = new mw.Uri();
loginUri.query = {
title: 'Special:UserLogin'
};
$loginCta = $( '<p>' )
.attr( 'id', 'uls-display-settings-anon-log-in-cta' );
this.$template.find( '.uls-display-settings-language-tab' )
.empty()
.append(
$( '<p>' ).append(
$( '<span>' )
.addClass( 'uls-display-settings-anon-label' )
.html( $.i18n( 'ext-uls-display-settings-anon-label' ) + '&#160;' ),
$( '<span>' )
.text( $.i18n( 'ext-uls-display-settings-anon-same-as-content' ) )
),
$loginCta
);
new mw.Api().parse( $.i18n( 'ext-uls-display-settings-anon-log-in-cta' ) )
.done( function ( parsedCta ) {
$loginCta.html( parsedCta );
} );
return;
}
$languages = this.$template.find( 'div.uls-ui-languages' );
suggestedLanguages = this.frequentLanguageList()
// Common world languages, for the case that there are