From 2f8f2a08aca050556b7f93c7a6d8401b1c39183f Mon Sep 17 00:00:00 2001 From: MaxSem Date: Thu, 28 May 2015 00:45:35 +0000 Subject: [PATCH] Revert "Convert mediawiki.toc and mediawiki.user to using mw.cookie" Caused a meltdown in production. DO NOT MERGE COOKIE CHANGES WITHOUT AN OK FROM OPS This reverts commit a4d3d3b4277137b765ceab8752f5562dd27928d3. Change-Id: I40f0c2141e25ad37af0babfa95421915adce496b --- resources/Resources.php | 5 +++-- resources/src/mediawiki/mediawiki.cookie.js | 6 +++--- resources/src/mediawiki/mediawiki.toc.js | 12 +++++++++--- resources/src/mediawiki/mediawiki.user.js | 14 +++++++------- .../resources/mediawiki/mediawiki.toc.test.js | 2 +- 5 files changed, 23 insertions(+), 16 deletions(-) diff --git a/resources/Resources.php b/resources/Resources.php index 30ab7392af..ae5b3f90d1 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -209,6 +209,7 @@ 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' ), @@ -1029,7 +1030,7 @@ return array( ), 'mediawiki.toc' => array( 'scripts' => 'resources/src/mediawiki/mediawiki.toc.js', - 'dependencies' => 'mediawiki.cookie', + 'dependencies' => 'jquery.cookie', 'messages' => array( 'showtoc', 'hidetoc' ), 'targets' => array( 'desktop', 'mobile' ), ), @@ -1041,7 +1042,7 @@ return array( 'mediawiki.user' => array( 'scripts' => 'resources/src/mediawiki/mediawiki.user.js', 'dependencies' => array( - 'mediawiki.cookie', + 'jquery.cookie', 'mediawiki.api', 'user.options', 'user.tokens', diff --git a/resources/src/mediawiki/mediawiki.cookie.js b/resources/src/mediawiki/mediawiki.cookie.js index 0c0095cb30..8f091e4dd0 100644 --- a/resources/src/mediawiki/mediawiki.cookie.js +++ b/resources/src/mediawiki/mediawiki.cookie.js @@ -16,7 +16,7 @@ mw.cookie = { /** - * Set or deletes a cookie. + * Sets or deletes 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 @@ }, /** - * Get the value of a cookie. + * Gets 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|null|Mixed} If the cookie exists, then the value of the + * @return {string} 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 78627fcae0..45338ea744 100644 --- a/resources/src/mediawiki/mediawiki.toc.js +++ b/resources/src/mediawiki/mediawiki.toc.js @@ -15,19 +15,25 @@ $tocList.slideDown( 'fast' ); $tocToggleLink.text( mw.msg( 'hidetoc' ) ); $toc.removeClass( 'tochidden' ); - mw.cookie.set( 'hidetoc', null ); + $.cookie( 'mw_hidetoc', null, { + expires: 30, + path: '/' + } ); } else { $tocList.slideUp( 'fast' ); $tocToggleLink.text( mw.msg( 'showtoc' ) ); $toc.addClass( 'tochidden' ); - mw.cookie.set( 'hidetoc', '1' ); + $.cookie( 'mw_hidetoc', '1', { + expires: 30, + path: '/' + } ); } } // 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 = mw.cookie.get( 'hidetoc' ) === '1'; + hideToc = $.cookie( 'mw_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 c42eb9af00..817c856c62 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 = mw.cookie.get( 'mwuser-session' ); - if ( sessionId === null ) { + var sessionId = $.cookie( 'mediaWiki.user.sessionId' ); + if ( sessionId === undefined || sessionId === null ) { sessionId = mw.user.generateRandomSessionId(); - mw.cookie.set( 'mwuser-session', sessionId, { expires: null } ); + $.cookie( 'mediaWiki.user.sessionId', sessionId, { expires: null, path: '/' } ); } return sessionId; }, @@ -208,7 +208,7 @@ expires: 30 }, options || {} ); - cookie = mw.cookie.get( 'mwuser-bucket:' + key ); + cookie = $.cookie( 'mediaWiki.user.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 @@ } } - mw.cookie.set( - 'mwuser-bucket:' + key, + $.cookie( + 'mediaWiki.user.bucket:' + key, version + ':' + bucket, - { expires: Number( options.expires ) * 86400 } + { path: '/', expires: Number( options.expires ) } ); } diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js index 89eb45f2d3..e43516b0f2 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 from interferring with the test + // Prevent live cookies like mw_hidetoc=1 from interferring with the test this.stub( $, 'cookie' ).returns( null ); } } ) ); -- 2.20.1