From: Yaroslav Melnychuk Date: Tue, 2 Dec 2014 15:58:43 +0000 (+0200) Subject: Convert mediawiki.toc and mediawiki.user to using mw.cookie X-Git-Tag: 1.31.0-rc.0~11130^2 X-Git-Url: http://git.cyclocoop.org/%24action?a=commitdiff_plain;h=837cd3bed593af9c84617954af8136d14ed422c5;p=lhc%2Fweb%2Fwiklou.git Convert mediawiki.toc and mediawiki.user to using mw.cookie * Remove redundant 'path' parameter (handled by mw.cookie) * Remove redundant 'expires' parameter (handled by mw.cookie) * Return value for absent cookie is now reliably 'null'. This changes the cookie name due to mw.cookie adding the standard cookie prefix. This will cause existing values to be lost. Make use of this oppertunity to rename some cookie names. * mw_hidetoc -> {wikiprefix} hidetoc * mediaWiki.user.sessionId -> {wikiprefix} mwuser-sessionId * mediaWiki.user.bucket -> {wikiprefix} mwuser-bucket This is a re-submission of a4d3d3b427713, which was reverted due to T101857. Commit amended to use "sessionId" instead of "session". Bug: T67384 Change-Id: Ibe88778cf3b6db90b3875c89305ffba53ac84104 --- diff --git a/resources/Resources.php b/resources/Resources.php index 644ff9ca50..43a75a2df9 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -218,7 +218,6 @@ return array( 'styles' => 'resources/src/jquery/jquery.confirmable.css', 'dependencies' => 'mediawiki.jqueryMsg', ), - // Use mediawiki.cookie in new code, rather than jquery.cookie. 'jquery.cookie' => array( 'scripts' => 'resources/lib/jquery/jquery.cookie.js', 'targets' => array( 'desktop', 'mobile' ), @@ -1058,7 +1057,7 @@ return array( ), 'mediawiki.toc' => array( 'scripts' => 'resources/src/mediawiki/mediawiki.toc.js', - 'dependencies' => 'jquery.cookie', + 'dependencies' => 'mediawiki.cookie', 'messages' => array( 'showtoc', 'hidetoc' ), 'targets' => array( 'desktop', 'mobile' ), ), @@ -1070,7 +1069,7 @@ return array( 'mediawiki.user' => array( 'scripts' => 'resources/src/mediawiki/mediawiki.user.js', 'dependencies' => array( - 'jquery.cookie', + 'mediawiki.cookie', 'mediawiki.api', 'user.options', 'user.tokens', diff --git a/resources/src/mediawiki/mediawiki.cookie.js b/resources/src/mediawiki/mediawiki.cookie.js index 8f091e4dd0..d260fca64e 100644 --- a/resources/src/mediawiki/mediawiki.cookie.js +++ b/resources/src/mediawiki/mediawiki.cookie.js @@ -16,7 +16,7 @@ mw.cookie = { /** - * Sets or deletes a cookie. + * Set or delete a cookie. * * While this is natural in JavaScript, contrary to `WebResponse#setcookie` in PHP, the * default values for the `options` properties only apply if that property isn't set @@ -101,13 +101,13 @@ }, /** - * Gets the value of a cookie. + * Get the value of a cookie. * * @param {string} key * @param {string} [prefix=wgCookiePrefix] The prefix of the key. If `prefix` is * `undefined` or `null`, then `wgCookiePrefix` is used * @param {Mixed} [defaultValue=null] - * @return {string} If the cookie exists, then the value of the + * @return {string|null|Mixed} If the cookie exists, then the value of the * cookie, otherwise `defaultValue` */ get: function ( key, prefix, defaultValue ) { diff --git a/resources/src/mediawiki/mediawiki.toc.js b/resources/src/mediawiki/mediawiki.toc.js index 45338ea744..78627fcae0 100644 --- a/resources/src/mediawiki/mediawiki.toc.js +++ b/resources/src/mediawiki/mediawiki.toc.js @@ -15,25 +15,19 @@ $tocList.slideDown( 'fast' ); $tocToggleLink.text( mw.msg( 'hidetoc' ) ); $toc.removeClass( 'tochidden' ); - $.cookie( 'mw_hidetoc', null, { - expires: 30, - path: '/' - } ); + mw.cookie.set( 'hidetoc', null ); } else { $tocList.slideUp( 'fast' ); $tocToggleLink.text( mw.msg( 'showtoc' ) ); $toc.addClass( 'tochidden' ); - $.cookie( 'mw_hidetoc', '1', { - expires: 30, - path: '/' - } ); + mw.cookie.set( 'hidetoc', '1' ); } } // Only add it if there is a complete TOC and it doesn't // have a toggle added already if ( $toc.length && $tocTitle.length && $tocList.length && !$tocToggleLink.length ) { - hideToc = $.cookie( 'mw_hidetoc' ) === '1'; + hideToc = mw.cookie.get( 'hidetoc' ) === '1'; $tocToggleLink = $( '' ) .text( hideToc ? mw.msg( 'showtoc' ) : mw.msg( 'hidetoc' ) ) diff --git a/resources/src/mediawiki/mediawiki.user.js b/resources/src/mediawiki/mediawiki.user.js index 817c856c62..ec34ce6cca 100644 --- a/resources/src/mediawiki/mediawiki.user.js +++ b/resources/src/mediawiki/mediawiki.user.js @@ -159,10 +159,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,7 +208,7 @@ 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 ) { @@ -245,10 +245,10 @@ } } - $.cookie( - 'mediaWiki.user.bucket:' + key, + mw.cookie.set( + 'mwuser-bucket:' + key, version + ':' + bucket, - { path: '/', expires: Number( options.expires ) } + { expires: Number( options.expires ) * 86400 } ); } diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js index e43516b0f2..89eb45f2d3 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js @@ -1,7 +1,7 @@ ( function ( mw, $ ) { QUnit.module( 'mediawiki.toc', QUnit.newMwEnvironment( { setup: function () { - // Prevent live cookies like mw_hidetoc=1 from interferring with the test + // Prevent live cookies from interferring with the test this.stub( $, 'cookie' ).returns( null ); } } ) );