X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki%2Fmediawiki.user.js;h=d2f2abd60a2574d33c5dbec8ee5f455fed53e60a;hb=89c55dc655ae38e77f54c53fe58d621e2c1d1cb0;hp=817c856c6209c45b0a37a425636e4a5722f217b9;hpb=4e90d55fdc9d31d93e24cf05687eb7d180806f44;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/mediawiki/mediawiki.user.js b/resources/src/mediawiki/mediawiki.user.js index 817c856c62..d2f2abd60a 100644 --- a/resources/src/mediawiki/mediawiki.user.js +++ b/resources/src/mediawiki/mediawiki.user.js @@ -4,47 +4,26 @@ */ ( function ( mw, $ ) { var i, - deferreds = {}, + userInfoPromise, byteToHex = []; /** * Get the current user's groups or rights * * @private - * @param {string} info One of 'groups' or 'rights' * @return {jQuery.Promise} */ - function getUserInfo( info ) { - var api; - if ( !deferreds[info] ) { - - deferreds.rights = $.Deferred(); - deferreds.groups = $.Deferred(); - - api = new mw.Api(); - api.get( { - action: 'query', - meta: 'userinfo', - uiprop: 'rights|groups' - } ).always( function ( data ) { - var rights, groups; - if ( data.query && data.query.userinfo ) { - rights = data.query.userinfo.rights; - groups = data.query.userinfo.groups; - } - deferreds.rights.resolve( rights || [] ); - deferreds.groups.resolve( groups || [] ); - } ); - + function getUserInfo() { + if ( !userInfoPromise ) { + userInfoPromise = new mw.Api().getUserInfo(); } - - return deferreds[info].promise(); + return userInfoPromise; } // Map from numbers 0-255 to a hex string (with padding) for ( i = 0; i < 256; i++ ) { // Padding: Add a full byte (0x100, 256) and strip the extra character - byteToHex[i] = ( i + 256 ).toString( 16 ).slice( 1 ); + byteToHex[ i ] = ( i + 256 ).toString( 16 ).slice( 1 ); } // mw.user with the properties options and tokens gets defined in mediawiki.js. @@ -89,12 +68,12 @@ if ( ( i & 3 ) === 0 ) { r = Math.random() * 0x100000000; } - rnds[i] = r >>> ( ( i & 3 ) << 3 ) & 255; + rnds[ i ] = r >>> ( ( i & 3 ) << 3 ) & 255; } } // Convert from number to hex for ( i = 0; i < 8; i++ ) { - hexRnds[i] = byteToHex[rnds[i]]; + hexRnds[ i ] = byteToHex[ rnds[ i ] ]; } // Concatenation of two random integers with entrophy n and m @@ -159,10 +138,10 @@ * @return {string} Random session ID */ sessionId: function () { - var sessionId = $.cookie( 'mediaWiki.user.sessionId' ); - if ( sessionId === undefined || sessionId === null ) { + var sessionId = mw.cookie.get( 'mwuser-sessionId' ); + if ( sessionId === null ) { sessionId = mw.user.generateRandomSessionId(); - $.cookie( 'mediaWiki.user.sessionId', sessionId, { expires: null, path: '/' } ); + mw.cookie.set( 'mwuser-sessionId', sessionId, { expires: null } ); } return sessionId; }, @@ -208,14 +187,14 @@ expires: 30 }, options || {} ); - cookie = $.cookie( 'mediaWiki.user.bucket:' + key ); + cookie = mw.cookie.get( 'mwuser-bucket:' + key ); // Bucket information is stored as 2 integers, together as version:bucket like: "1:2" if ( typeof cookie === 'string' && cookie.length > 2 && cookie.indexOf( ':' ) !== -1 ) { parts = cookie.split( ':' ); - if ( parts.length > 1 && Number( parts[0] ) === options.version ) { - version = Number( parts[0] ); - bucket = String( parts[1] ); + if ( parts.length > 1 && Number( parts[ 0 ] ) === options.version ) { + version = Number( parts[ 0 ] ); + bucket = String( parts[ 1 ] ); } } @@ -229,7 +208,7 @@ // Find range range = 0; for ( k in options.buckets ) { - range += options.buckets[k]; + range += options.buckets[ k ]; } // Select random value within range @@ -239,16 +218,16 @@ total = 0; for ( k in options.buckets ) { bucket = k; - total += options.buckets[k]; + total += options.buckets[ k ]; if ( total >= rand ) { break; } } - $.cookie( - 'mediaWiki.user.bucket:' + key, + mw.cookie.set( + 'mwuser-bucket:' + key, version + ':' + bucket, - { path: '/', expires: Number( options.expires ) } + { expires: Number( options.expires ) * 86400 } ); } @@ -262,7 +241,10 @@ * @return {jQuery.Promise} */ getGroups: function ( callback ) { - return getUserInfo( 'groups' ).done( callback ); + return getUserInfo().then( + function ( userInfo ) { return userInfo.groups; }, + function () { return []; } + ).done( callback ); }, /** @@ -272,7 +254,10 @@ * @return {jQuery.Promise} */ getRights: function ( callback ) { - return getUserInfo( 'rights' ).done( callback ); + return getUserInfo().then( + function ( userInfo ) { return userInfo.rights; }, + function () { return []; } + ).done( callback ); } } );