(bug 41763) Add a hook for support uls-preferences

Change-Id: I8fdc1a0527c9a99b6e5eb95c183955a162233b1d
This commit is contained in:
Amir E. Aharoni
2012-12-06 00:30:01 +02:00
parent 3b16b20695
commit 027776c85f
3 changed files with 22 additions and 8 deletions

View File

@@ -240,4 +240,12 @@ class UniversalLanguageSelectorHooks {
return true;
}
public static function onGetPreferences( $user, &$preferences ) {
$preferences['uls-preferences'] = array(
'type' => 'api',
);
return true;
}
}

View File

@@ -101,6 +101,9 @@ $wgHooks['MakeGlobalVariablesScript'][] = 'UniversalLanguageSelectorHooks::addVa
$wgAPIModules['languagesearch'] = 'ApiLanguageSearch';
$wgHooks['UserGetLanguageObject'][] = 'UniversalLanguageSelectorHooks::getLanguage';
$wgDefaultUserOptions['uls-preferences'] = '';
$wgHooks['GetPreferences'][] = 'UniversalLanguageSelectorHooks::onGetPreferences';
$wgResourceModules['ext.uls.init'] = array(
'scripts' => 'resources/js/ext.uls.init.js',
'styles' => 'resources/css/ext.uls.css',

View File

@@ -68,7 +68,9 @@
* @param callback
*/
save: function ( callback ) {
var that = this, api;
var ulsPreferences = this,
api;
callback = callback || $.noop;
if ( this.isAnon ) {
// Anonymous user- Save preferences in local storage
@@ -77,20 +79,21 @@
} else {
// Logged in user. Use MW apis to change preferences
api = new mw.Api();
api.post( {
action: 'tokens',
type: 'options'
} ).done( function ( tokenresult ) {
var token = tokenresult.tokens.optionstoken;
api.post( {
action: 'options',
change: 'hideminor=1',
optionname: that.preferenceName,
optionvalue: $.toJSON( that.preferences ),
optionname: ulsPreferences.preferenceName,
optionvalue: $.toJSON( ulsPreferences.preferences ),
token: token
} ).done( function () {
} ).done( function ( data ) {
callback.call( this, true );
} ).fail( function () {
} ).fail( function ( data ) {
callback.call( this, false );
} );
} ).fail( function () {