Merge "Remove unused settingspanel.js"
This commit is contained in:
@@ -1,313 +0,0 @@
|
||||
/**
|
||||
* -- DRAFT --
|
||||
*
|
||||
* ULS-based generic settings panel. Common code for IME settings,
|
||||
* fonts settings, and possible other setings.
|
||||
*
|
||||
* Copyright (C) 2012 Alolita Sharma, Amir Aharoni, Arun Ganesh, Brandon Harris,
|
||||
* Niklas Laxström, Pau Giner, Santhosh Thottingal, Siebrand Mazeland and other
|
||||
* contributors. See CREDITS for a list.
|
||||
*
|
||||
* UniversalLanguageSelector is dual licensed GPLv2 or later and MIT. You don't
|
||||
* have to do anything special to choose one license or the other and you don't
|
||||
* have to notify anyone which license you are using. You are free to use
|
||||
* UniversalLanguageSelector in commercial projects as long as the copyright
|
||||
* header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
|
||||
*
|
||||
* @file
|
||||
* @ingroup Extensions
|
||||
* @licence GNU General Public Licence 2.0 or later
|
||||
* @licence MIT License
|
||||
*/
|
||||
|
||||
( function ( $, mw, undefined ) {
|
||||
'use strict';
|
||||
|
||||
function templateTopTitle( msg ) {
|
||||
// XXX Niklas: escape msg
|
||||
return '<div class="row">'
|
||||
+ '<div class="twelve columns">'
|
||||
+ '<h3 data-i18n="' + msg + '"></h3>'
|
||||
+ '</div>'
|
||||
+ '</div>';
|
||||
}
|
||||
|
||||
function templateButtonsTitle( msg ) {
|
||||
return '<div class="row">'
|
||||
+ '<div class="eleven columns">'
|
||||
+ '<h4 data-i18n="' + msg + '"></h4>'
|
||||
+ '</div>'
|
||||
+ '</div>';
|
||||
}
|
||||
|
||||
var templateButtonsRow = '<div class="row">'
|
||||
+ '<div class="uls-ui-languages eleven columns"></div>'
|
||||
+ '</div>',
|
||||
templateSeparator = '<div class="row"></div>';
|
||||
|
||||
var templateApplyCancel( id ) {
|
||||
return '<div class="row language-settings-buttons">'
|
||||
+ '<div class="eleven columns">'
|
||||
+ '<button class="button uls-settings-close" data-i18n="ext-uls-language-settings-cancel"></button>'
|
||||
+ '<button id="' + id + '" class="active blue button" data-i18n="ext-uls-language-settings-apply"></button>'
|
||||
+ '</div>'
|
||||
+ '</div>';
|
||||
}
|
||||
|
||||
function SettingsPanel( $parent, options ) {
|
||||
var template = templateTopTitle( options.topTitleMsg )
|
||||
+ templateButtonsTitle( options.buttonsTitleMsg )
|
||||
+ templateButtonsRow
|
||||
+ templateSeparator
|
||||
+ options.customTemplate
|
||||
+ templateApplyCancel( options.applyCancelId );
|
||||
|
||||
this.name = $.i18n( options.nameMsg );
|
||||
this.description = $.i18n( options.descMsg );
|
||||
this.$template = $( '<div class="uls-settings-panel>' )
|
||||
.html( template );
|
||||
|
||||
this.uiLanguage = this.getUILanguage();
|
||||
this.contentLanguage = this.getContentLanguage();
|
||||
this.$parent = $parent;
|
||||
}
|
||||
|
||||
InputSettings.prototype = {
|
||||
|
||||
Constructor: SettingsPanel,
|
||||
|
||||
/**
|
||||
* Render the module into a given target
|
||||
*/
|
||||
render: function () {
|
||||
this.$parent.$settingsPanel.empty();
|
||||
|
||||
this.$parent.$settingsPanel.append( this.$template );
|
||||
this.prepareLanguages();
|
||||
this.prepareCustomPanel();
|
||||
this.listen();
|
||||
},
|
||||
|
||||
/**
|
||||
* To be overriden
|
||||
*/
|
||||
prepareCustomPanel: function () {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the UI language selector
|
||||
*/
|
||||
prepareLanguages: function () {
|
||||
var SUGGESTED_LANGUAGES_NUMBER = 3,
|
||||
languagesForButtons, $languages, suggestedLanguages,
|
||||
SUGGESTED_LANGUAGES_NUMBER, lang, i, language, $button;
|
||||
|
||||
$languages = this.$template.find( 'div.uls-ui-languages' );
|
||||
suggestedLanguages = this.frequentLanguageList()
|
||||
// Common world languages, for the case that there are
|
||||
// too few suggested languages
|
||||
.concat( [ 'en', 'zh', 'fr' ] );
|
||||
|
||||
// Content language is always on the first button
|
||||
languagesForButtons = [ this.contentLanguage ];
|
||||
|
||||
// This is needed when drawing the panel for the second time
|
||||
// after selecting a different language
|
||||
$languages.empty();
|
||||
|
||||
// UI language must always be present
|
||||
if ( this.uiLanguage !== this.contentLanguage ) {
|
||||
languagesForButtons.push( this.uiLanguage );
|
||||
}
|
||||
|
||||
for ( lang in suggestedLanguages ) {
|
||||
// Skip already found languages
|
||||
if ( $.inArray( suggestedLanguages[lang], languagesForButtons ) > -1 ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
languagesForButtons.push( suggestedLanguages[lang] );
|
||||
|
||||
// No need to add more languages than buttons
|
||||
if ( languagesForButtons.length === SUGGESTED_LANGUAGES_NUMBER ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Add the buttons for the most likely languages
|
||||
for ( i = 0; i < SUGGESTED_LANGUAGES_NUMBER; i++ ) {
|
||||
language = languagesForButtons[i];
|
||||
$button = $( '<button>' )
|
||||
.addClass( 'button uls-language-button' )
|
||||
.text( $.uls.data.getAutonym( language ) )
|
||||
.prop({
|
||||
lang: language,
|
||||
dir: $.uls.data.getDir( language )
|
||||
});
|
||||
|
||||
if ( language === this.uiLanguage ) {
|
||||
$button.addClass( 'down' );
|
||||
}
|
||||
|
||||
$button.data( 'language', language );
|
||||
$languages.append( $button );
|
||||
$button.on( 'click', this.buttonHandler( $button ) );
|
||||
}
|
||||
|
||||
this.prepareMoreLanguages();
|
||||
},
|
||||
|
||||
languageButtonHandler: function( button ) {
|
||||
var selectedLanguage = button.data( 'language' ) || this.uiLanguage;
|
||||
$( 'div.uls-ui-languages button.button' ).removeClass( 'down' );
|
||||
button.addClass( 'down' );
|
||||
this.customLanguageButton( selectedLanguage );
|
||||
},
|
||||
|
||||
/**
|
||||
* To be overriden
|
||||
*/
|
||||
customLanguageButton: function( selectedLanguage ) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the more languages button. It is a ULS trigger
|
||||
*/
|
||||
prepareMoreLanguages: function () {
|
||||
var settingsPanel, $languages, $moreLanguagesButton;
|
||||
|
||||
settingsPanel = this;
|
||||
$languages = this.$template.find( 'div.uls-ui-languages' );
|
||||
$moreLanguagesButton = $( '<button>' )
|
||||
.prop( 'id', 'uls-more-languages' )
|
||||
.addClass( 'button' ).text( '...' );
|
||||
|
||||
$languages.append( $moreLanguagesButton );
|
||||
// Show the long language list to select a language for the settings
|
||||
$moreLanguagesButton.uls( {
|
||||
left: settingsPanel.$parent.left,
|
||||
top: settingsPanel.$parent.top,
|
||||
onReady: function ( ) {
|
||||
var uls = this,
|
||||
$back = $( '<a>' ).prop( 'href', '#' )
|
||||
.data( 'i18n', settingsPanel.options.backFromMoreLanguagesMsg )
|
||||
.i18n();
|
||||
|
||||
$back.click( function () {
|
||||
uls.hide();
|
||||
settingsPanel.$parent.show();
|
||||
} );
|
||||
|
||||
uls.$menu.find( 'div.uls-title' ).append( $back );
|
||||
uls.$menu.find( 'div.uls-title h1' )
|
||||
.data( 'i18n', settingsPanel.options.moreLanguagesTitleMsg )
|
||||
.i18n();
|
||||
},
|
||||
onSelect: function ( langCode ) {
|
||||
settingsPanel.uiLanguage = langCode;
|
||||
settingsPanel.$parent.show();
|
||||
settingsPanel.moreLanguagesSelectHandler( langCode );
|
||||
},
|
||||
quickList: function () {
|
||||
return mw.uls.getFrequentLanguageList();
|
||||
}
|
||||
} );
|
||||
|
||||
$moreLanguagesButton.on( 'click', function () {
|
||||
that.$parent.hide();
|
||||
} );
|
||||
},
|
||||
|
||||
/**
|
||||
* To be overriden
|
||||
*/
|
||||
moreLanguagesSelectHandler: function ( langCode ) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get previous languages
|
||||
* @returns {Array}
|
||||
*/
|
||||
frequentLanguageList: function () {
|
||||
return mw.uls.getFrequentLanguageList();
|
||||
},
|
||||
|
||||
/**
|
||||
* Get the current user interface language.
|
||||
* @returns String Current UI language
|
||||
*/
|
||||
getUILanguage: function () {
|
||||
return mw.config.get( 'wgUserLanguage' );
|
||||
},
|
||||
|
||||
/**
|
||||
* Get the current content language.
|
||||
* @returns String Current content language
|
||||
*/
|
||||
getContentLanguage: function () {
|
||||
return mw.config.get( 'wgContentLanguage' );
|
||||
},
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
listen: function () {
|
||||
return;
|
||||
},
|
||||
|
||||
/**
|
||||
* Hide this window.
|
||||
* Used while navigating to language selector and need coming back
|
||||
*/
|
||||
hide: function () {
|
||||
this.$parent.hide();
|
||||
},
|
||||
|
||||
/**
|
||||
* Close the language settings window.
|
||||
* Depending on the context, actions vary.
|
||||
*/
|
||||
close: function () {
|
||||
this.$parent.close();
|
||||
},
|
||||
|
||||
/**
|
||||
* Callback for save preferences
|
||||
*/
|
||||
onSave: function ( success ) {
|
||||
if ( success ) {
|
||||
// Live feature update
|
||||
this[this.options.feature].refresh();
|
||||
this.$parent.hide();
|
||||
// we delay change UI language to here, because it causes a page refresh
|
||||
if ( this.uiLanguage !== this.getUILanguage() ) {
|
||||
mw.uls.changeLanguage( this.uiLanguage );
|
||||
}
|
||||
} else {
|
||||
// FIXME failure. what to do?!
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Handle the apply button press
|
||||
*/
|
||||
apply: function () {
|
||||
var settingsPanel = this;
|
||||
|
||||
// Save the preferences
|
||||
this[this.options.preferences].save( function ( result ) {
|
||||
// closure for not losing the scope
|
||||
settingsPanel.onSave( result );
|
||||
} );
|
||||
}
|
||||
};
|
||||
|
||||
// Register this module to language settings modules
|
||||
$.fn.languagesettings.modules = $.extend( $.fn.languagesettings.modules, {
|
||||
input: InputSettings
|
||||
} );
|
||||
} ) ( jQuery, mediaWiki );
|
||||
|
||||
Reference in New Issue
Block a user