jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/388459 )

Change subject: Use mw.cookie instead of $.cookie
......................................................................


Use mw.cookie instead of $.cookie

Change-Id: Ic45f5b5aae3385f3fba9f6b7e3c0d3917bf074da
---
M repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
M repo/includes/ParserOutput/EntityViewPlaceholderExpander.php
M repo/resources/Resources.php
M repo/resources/wikibase.ui.entityViewInit.js
M repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php
M repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
M tests/browser/features/support/modules/entity_module.rb
M view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
M view/resources/jquery/wikibase/resources.php
M view/resources/wikibase/view/ControllerViewFactory.js
M view/resources/wikibase/view/resources.php
11 files changed, 118 insertions(+), 33 deletions(-)

Approvals:
  Ladsgroup: Looks good to me, approved
  jenkins-bot: Verified
  Thiemo Kreuz (WMDE): Looks good to me, but someone else must approve



diff --git a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php 
b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
index 9a3b192..49a99e6 100644
--- a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
+++ b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
@@ -63,6 +63,11 @@
         */
        private $entityFactory;
 
+       /**
+        * @var string
+        */
+       private $cookiePrefix;
+
        public function __construct(
                TemplateFactory $templateFactory,
                UserLanguageLookup $userLanguageLookup,
@@ -70,7 +75,8 @@
                EntityRevisionLookup $entityRevisionLookup,
                LanguageNameLookup $languageNameLookup,
                OutputPageEntityIdReader $outputPageEntityIdReader,
-               EntityFactory $entityFactory
+               EntityFactory $entityFactory,
+               $cookiePrefix
        ) {
                $this->templateFactory = $templateFactory;
                $this->userLanguageLookup = $userLanguageLookup;
@@ -79,13 +85,14 @@
                $this->languageNameLookup = $languageNameLookup;
                $this->outputPageEntityIdReader = $outputPageEntityIdReader;
                $this->entityFactory = $entityFactory;
+               $this->cookiePrefix = $cookiePrefix;
        }
 
        /**
         * @return self
         */
        public static function newFromGlobalState() {
-               global $wgLang;
+               global $wgLang, $wgCookiePrefix;
 
                $wikibaseRepo = WikibaseRepo::getDefaultInstance();
 
@@ -99,7 +106,8 @@
                                $wikibaseRepo->getEntityContentFactory(),
                                $wikibaseRepo->getEntityIdParser()
                        ),
-                       $wikibaseRepo->getEntityFactory()
+                       $wikibaseRepo->getEntityFactory(),
+                       $wgCookiePrefix
                );
        }
 
@@ -233,6 +241,7 @@
                        new MediaWikiLanguageDirectionalityLookup(),
                        $this->languageNameLookup,
                        new MediaWikiLocalizedTextProvider( $languageCode ),
+                       $this->cookiePrefix,
                        $termsListItemsHtml ?: []
                );
        }
diff --git a/repo/includes/ParserOutput/EntityViewPlaceholderExpander.php 
b/repo/includes/ParserOutput/EntityViewPlaceholderExpander.php
index a6b5c6a..4bd0054 100644
--- a/repo/includes/ParserOutput/EntityViewPlaceholderExpander.php
+++ b/repo/includes/ParserOutput/EntityViewPlaceholderExpander.php
@@ -65,6 +65,11 @@
        private $textProvider;
 
        /**
+        * @var string
+        */
+       private $cookiePrefix;
+
+       /**
         * @var string[]
         */
        private $termsListItems;
@@ -77,6 +82,7 @@
         * @param LanguageDirectionalityLookup $languageDirectionalityLookup
         * @param LanguageNameLookup $languageNameLookup
         * @param LocalizedTextProvider $textProvider
+        * @param string $cookiePrefix
         * @param string[] $termsListItems
         */
        public function __construct(
@@ -87,6 +93,7 @@
                LanguageDirectionalityLookup $languageDirectionalityLookup,
                LanguageNameLookup $languageNameLookup,
                LocalizedTextProvider $textProvider,
+               $cookiePrefix,
                array $termsListItems = []
        ) {
                $this->user = $user;
@@ -96,6 +103,7 @@
                $this->languageDirectionalityLookup = 
$languageDirectionalityLookup;
                $this->languageNameLookup = $languageNameLookup;
                $this->textProvider = $textProvider;
+               $this->cookiePrefix = $cookiePrefix;
                $this->termsListItems = $termsListItems;
        }
 
@@ -151,6 +159,12 @@
                $name = 'wikibase-entitytermsview-showEntitytermslistview';
 
                if ( $this->user->isAnon() ) {
+                       $cookieName = $this->cookiePrefix . $name;
+                       if ( isset( $_COOKIE[$cookieName] ) ) {
+                               return $_COOKIE[$cookieName] === 'false';
+                       }
+                       // B/C: cookie set before 2017-11-06 are not prefixed. 
B/C code to be removed after 2018-11-14
+                       // once all old cookies have expired.
                        return isset( $_COOKIE[$name] ) && $_COOKIE[$name] === 
'false';
                } else {
                        return !$this->user->getOption( $name, true );
diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php
index ea2d155..d18f371 100644
--- a/repo/resources/Resources.php
+++ b/repo/resources/Resources.php
@@ -121,13 +121,13 @@
                        ],
                        'dependencies' => [
                                'mediawiki.api.options',
+                               'mediawiki.cookie',
                                'mediawiki.page.watch.ajax',
                                'mediawiki.user',
                                'mw.config.values.wbEntityTypes',
                                'mw.config.values.wbRepo',
                                'mw.config.values.wbGeoShapeStorageApiEndpoint',
                                'jquery.wikibase.wbtooltip',
-                               'jquery.cookie',
                                'wikibase',
                                'wikibase.api.getLocationAgnosticMwApi',
                                'wikibase.datamodel.Entity',
diff --git a/repo/resources/wikibase.ui.entityViewInit.js 
b/repo/resources/wikibase.ui.entityViewInit.js
index b6c1382..d0ebda3 100644
--- a/repo/resources/wikibase.ui.entityViewInit.js
+++ b/repo/resources/wikibase.ui.entityViewInit.js
@@ -152,7 +152,7 @@
 
                $entityview.on( viewName + 'afterstartediting', function () {
                        if ( !$.find( '.mw-notification-content' ).length
-                               && !$.cookie( 
'wikibase-no-anonymouseditwarning' )
+                               && !mw.cookie.get( 
'wikibase-no-anonymouseditwarning' )
                        ) {
                                var message = mw.msg(
                                        'wikibase-anonymouseditwarning',
@@ -230,7 +230,7 @@
                        cookieKey = 'wikibase.acknowledgedcopyrightversion',
                        optionsKey = 'wb-acknowledgedcopyrightversion';
 
-               if ( $.cookie( cookieKey ) === copyRightVersion
+               if ( mw.cookie.get( cookieKey ) === copyRightVersion
                        || mw.user.options.get( optionsKey ) === 
copyRightVersion
                ) {
                        return;
@@ -254,7 +254,7 @@
                                event.preventDefault();
                                editableTemplatedWidget.notification();
                                if ( mw.user.isAnon() ) {
-                                       $.cookie( cookieKey, copyRightVersion, 
{ expires: 365 * 3, path: '/' } );
+                                       mw.cookie.set( cookieKey, 
copyRightVersion, { expires: 3 * 365 * 24 * 60 * 60, path: '/' } );
                                } else {
                                        var api = new mw.Api();
                                        api.saveOption( optionsKey, 
copyRightVersion );
@@ -288,7 +288,7 @@
                        $messageAnchor.data( 'wbtooltip' ).degrade( true );
                        $( window ).off( '.wbCopyrightTooltip' );
                        if ( mw.user.isAnon() ) {
-                               $.cookie( cookieKey, copyRightVersion, { 
expires: 365 * 3, path: '/' } );
+                               mw.cookie.set( cookieKey, copyRightVersion, { 
expires: 3 * 365 * 24 * 60 * 60, path: '/' } );
                        } else {
                                var api = new mw.Api();
                                api.saveOption( optionsKey, copyRightVersion );
diff --git 
a/repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php 
b/repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php
index b113ff5..d6b5267 100644
--- a/repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php
+++ b/repo/tests/phpunit/includes/Hooks/OutputPageBeforeHTMLHookHandlerTest.php
@@ -75,7 +75,8 @@
                        $entityRevisionLookup,
                        $languageNameLookup,
                        $outputPageEntityIdReader,
-                       new EntityFactory( [] )
+                       new EntityFactory( [] ),
+                       ''
                );
 
                return $outputPageBeforeHTMLHookHandler;
@@ -127,7 +128,8 @@
                        $this->getMock( EntityRevisionLookup::class ),
                        $this->getMock( LanguageNameLookup::class ),
                        $outputPageEntityIdReader,
-                       new EntityFactory( [] )
+                       new EntityFactory( [] ),
+                       ''
                );
 
                $out = $this->newOutputPage();
diff --git 
a/repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
 
b/repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
index 6625c74..ad32bdb 100644
--- 
a/repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
+++ 
b/repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
@@ -27,13 +27,16 @@
  */
 class EntityViewPlaceholderExpanderTest extends PHPUnit_Framework_TestCase {
 
+       const COOKIE_NAME = 'wikibase-entitytermsview-showEntitytermslistview';
+
        /**
         * @param User $user
         * @param Item $item
+        * @param string $cookiePrefix
         *
         * @return EntityViewPlaceholderExpander
         */
-       private function newExpander( User $user, Item $item ) {
+       private function newExpander( User $user, Item $item, $cookiePrefix = 
'' ) {
                $templateFactory = TemplateFactory::getDefaultInstance();
 
                $termsLanguages = [ 'de', 'en', 'ru' ];
@@ -47,19 +50,18 @@
                        $termsLanguages,
                        $this->getMock( LanguageDirectionalityLookup::class ),
                        $languageNameLookup,
-                       new DummyLocalizedTextProvider()
+                       new DummyLocalizedTextProvider(),
+                       $cookiePrefix
                );
        }
 
-       public function provideEntity() {
+       private function newItem() {
                $item = new Item( new ItemId( 'Q23' ) );
                $item->setLabel( 'en', 'Moskow' );
                $item->setLabel( 'de', 'Moskau' );
                $item->setDescription( 'de', 'Hauptstadt Russlands' );
 
-               return [
-                       [ $item ],
-               ];
+               return $item;
        }
 
        /**
@@ -81,21 +83,15 @@
                return $user;
        }
 
-       /**
-        * @dataProvider provideEntity
-        */
-       public function testGetHtmlForPlaceholder( Item $item ) {
-               $expander = $this->newExpander( $this->newUser(), $item );
+       public function testGetHtmlForPlaceholder() {
+               $expander = $this->newExpander( $this->newUser(), 
$this->newItem() );
 
                $html = $expander->getHtmlForPlaceholder( 'termbox' );
                $this->assertInternalType( 'string', $html );
        }
 
-       /**
-        * @dataProvider provideEntity
-        */
-       public function testRenderTermBox( Item $item ) {
-               $expander = $this->newExpander( $this->newUser(), $item );
+       public function testRenderTermBox() {
+               $expander = $this->newExpander( $this->newUser(), 
$this->newItem() );
 
                // According to the mock objects, this should generate a term 
box for
                // 'de' and 'ru', since 'en' is already covered by the 
interface language.
@@ -111,4 +107,68 @@
                $this->assertContains( 
'wikibase-entitytermsforlanguageview-ru', $html );
        }
 
+       public function 
testGivenCookieSetToTrue_placeholderIsInitiallyExpanded() {
+               $expander = $this->newExpander( $this->newUser( true ), 
$this->newItem(), 'testwiki-' );
+
+               $_COOKIE['testwiki-' . self::COOKIE_NAME] = 'true';
+
+               $html = $expander->getHtmlForPlaceholder( 
'entityViewPlaceholder-entitytermsview-entitytermsforlanguagelistview-class' );
+
+               $this->assertEquals( '', $html );
+       }
+
+       public function 
testGivenCookieSetToFalse_placeholderIsInitiallyCollapsed() {
+               $expander = $this->newExpander( $this->newUser( true ), 
$this->newItem(), 'testwiki-' );
+
+               $_COOKIE['testwiki-' . self::COOKIE_NAME] = 'false';
+
+               $html = $expander->getHtmlForPlaceholder( 
'entityViewPlaceholder-entitytermsview-entitytermsforlanguagelistview-class' );
+
+               $this->assertEquals( 'wikibase-initially-collapsed', $html );
+       }
+
+       public function 
testGivenOldCookieSetToTrue_placeholderIsInitiallyExpanded() {
+               $expander = $this->newExpander( $this->newUser( true ), 
$this->newItem(), 'testwiki-' );
+
+               unset( $_COOKIE['testwiki-' . self::COOKIE_NAME] );
+               $_COOKIE[self::COOKIE_NAME] = 'true';
+
+               $html = $expander->getHtmlForPlaceholder( 
'entityViewPlaceholder-entitytermsview-entitytermsforlanguagelistview-class' );
+
+               $this->assertEquals( '', $html );
+       }
+
+       public function 
testGivenOldCookieSetToFalse_placeholderIsInitiallyCollapsed() {
+               $expander = $this->newExpander( $this->newUser( true ), 
$this->newItem(), 'testwiki-' );
+
+               unset( $_COOKIE['testwiki-' . self::COOKIE_NAME] );
+               $_COOKIE[self::COOKIE_NAME] = 'false';
+
+               $html = $expander->getHtmlForPlaceholder( 
'entityViewPlaceholder-entitytermsview-entitytermsforlanguagelistview-class' );
+
+               $this->assertEquals( 'wikibase-initially-collapsed', $html );
+       }
+
+       public function testPrefixedCookieHasPrecedenceOverOldCookie() {
+               $expander = $this->newExpander( $this->newUser( true ), 
$this->newItem(), 'testwiki-' );
+
+               $_COOKIE['testwiki-' . self::COOKIE_NAME] = 'true';
+               $_COOKIE[self::COOKIE_NAME] = 'false';
+
+               $html = $expander->getHtmlForPlaceholder( 
'entityViewPlaceholder-entitytermsview-entitytermsforlanguagelistview-class' );
+
+               $this->assertEquals( '', $html );
+       }
+
+       public function testGivenNoCookie_placeholderIsInitiallyExpanded() {
+               $expander = $this->newExpander( $this->newUser( true ), 
$this->newItem(), 'testwiki-' );
+
+               unset( $_COOKIE['testwiki-' . self::COOKIE_NAME] );
+               unset( $_COOKIE[self::COOKIE_NAME] );
+
+               $html = $expander->getHtmlForPlaceholder( 
'entityViewPlaceholder-entitytermsview-entitytermsforlanguagelistview-class' );
+
+               $this->assertEquals( '', $html );
+       }
+
 }
diff --git a/tests/browser/features/support/modules/entity_module.rb 
b/tests/browser/features/support/modules/entity_module.rb
index 0efa3ca..eb56bb6 100644
--- a/tests/browser/features/support/modules/entity_module.rb
+++ b/tests/browser/features/support/modules/entity_module.rb
@@ -140,13 +140,13 @@
 
   def set_copyright_ack_cookie
     wait_until_cookie_loaded
-    cookie = "$.cookie( 'wikibase.acknowledgedcopyrightversion', 'wikibase-1', 
{ 'expires': null, 'path': '/' } );"
+    cookie = "mw.cookie.set( 'wikibase.acknowledgedcopyrightversion', 
'wikibase-1', { 'expires': null, 'path': '/' } );"
     execute_script(cookie)
   end
 
   def set_noanonymouseditwarning_cookie
     wait_until_cookie_loaded
-    cookie = "$.cookie( 'wikibase-no-anonymouseditwarning', '1', { 'expires': 
null, 'path': '/' } );"
+    cookie = "mw.cookie.set( 'wikibase-no-anonymouseditwarning', '1', { 
'expires': null, 'path': '/' } );"
     execute_script(cookie)
   end
 
diff --git a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
index 1b8e93d..fb62778 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
@@ -220,10 +220,10 @@
                                } )
                                .on( 'toggleranimation.' + this.widgetName, 
function ( event, params ) {
                                        if ( mw.user.isAnon() ) {
-                                               $.cookie(
+                                               mw.cookie.set(
                                                        
'wikibase-entitytermsview-showEntitytermslistview',
                                                        params.visible,
-                                                       { expires: 365, path: 
'/' }
+                                                       { expires: 365 * 24 * 
60 * 60, path: '/' }
                                                );
                                        } else {
                                                api.saveOption(
diff --git a/view/resources/jquery/wikibase/resources.php 
b/view/resources/jquery/wikibase/resources.php
index 05a3893..cbb7caf 100644
--- a/view/resources/jquery/wikibase/resources.php
+++ b/view/resources/jquery/wikibase/resources.php
@@ -167,13 +167,13 @@
                                
'themes/default/jquery.wikibase.entitytermsview.css',
                        ],
                        'dependencies' => [
-                               'jquery.cookie',
                                'jquery.ui.closeable',
                                'jquery.ui.EditableTemplatedWidget',
                                'jquery.ui.toggler',
                                
'jquery.wikibase.entitytermsforlanguagelistview',
                                'mediawiki.api',
                                'mediawiki.api.options',
+                               'mediawiki.cookie',
                                'mediawiki.user',
                        ],
                        'messages' => [
diff --git a/view/resources/wikibase/view/ControllerViewFactory.js 
b/view/resources/wikibase/view/ControllerViewFactory.js
index b32ffd7..2d32261 100644
--- a/view/resources/wikibase/view/ControllerViewFactory.js
+++ b/view/resources/wikibase/view/ControllerViewFactory.js
@@ -85,7 +85,7 @@
 
                view.element.on( 'entitytermsviewafterstopediting', function () 
{
                        var showEntitytermslistviewValue = mw.user.isAnon()
-                               ? $.cookie( 
'wikibase-entitytermsview-showEntitytermslistview' )
+                               ? mw.cookie.get( 
'wikibase-entitytermsview-showEntitytermslistview' )
                                : mw.user.options.get( 
'wikibase-entitytermsview-showEntitytermslistview' );
                        var showEntitytermslistview = ( 
showEntitytermslistviewValue === 'true'
                                || showEntitytermslistviewValue === '1'
diff --git a/view/resources/wikibase/view/resources.php 
b/view/resources/wikibase/view/resources.php
index 6c76c1e..c2dbf07 100644
--- a/view/resources/wikibase/view/resources.php
+++ b/view/resources/wikibase/view/resources.php
@@ -64,7 +64,7 @@
                'wikibase.view.ControllerViewFactory' => $moduleTemplate + [
                        'scripts' => 'ControllerViewFactory.js',
                        'dependencies' => [
-                               'jquery.cookie',
+                               'mediawiki.cookie',
                                'mediawiki.user',
                                'wikibase.view.__namespace',
                                'wikibase.view.ToolbarViewController',

-- 
To view, visit https://gerrit.wikimedia.org/r/388459
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic45f5b5aae3385f3fba9f6b7e3c0d3917bf074da
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <[email protected]>
Gerrit-Reviewer: Fomafix <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Lydia Pintscher (WMDE) <[email protected]>
Gerrit-Reviewer: Thiemo Kreuz (WMDE) <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to