Remove unused settingspanel.js
This was added in the assumption that there will be common code between input settings and font settings. After development of both, it turns out that there is not much common code Change-Id: Id424122e515e9fa1f74030b0077c35835e6f15fa
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