Florianschmidtwelzow has submitted this change and it was merged.

Change subject: Allow non-JS users to dismiss the CookieWarning bar
......................................................................


Allow non-JS users to dismiss the CookieWarning bar

This commit change sthe "OK"-link to dismiss the cookiewarning bar
from a link to a POST-based form, so that non-JS users are able to
click it, too. If clicked, the dismiss is saved int he user prefs
(if the user is logged in) or in a cookie.

The JS version still works without reloading the page.

Bug: T145647
Change-Id: I711413abcbc131aaba34e8b285630ef1a1c9bda1
---
M extension.json
M includes/CookieWarning.hooks.php
M resources/ext.CookieWarning/ext.CookieWarning.less
3 files changed, 72 insertions(+), 26 deletions(-)

Approvals:
  Florianschmidtwelzow: Verified; Looks good to me, approved



diff --git a/extension.json b/extension.json
index 722db7f..3e4f2d6 100644
--- a/extension.json
+++ b/extension.json
@@ -22,6 +22,9 @@
                ],
                "GetPreferences": [
                        "CookieWarningHooks::onGetPreferences"
+               ],
+               "BeforeInitialize": [
+                       "CookieWarningHooks::onBeforeInitialize"
                ]
        },
        "config": {
diff --git a/includes/CookieWarning.hooks.php b/includes/CookieWarning.hooks.php
index feef6ef..8e4758c 100644
--- a/includes/CookieWarning.hooks.php
+++ b/includes/CookieWarning.hooks.php
@@ -1,6 +1,36 @@
 <?php
 
 class CookieWarningHooks {
+
+       /**
+        * BeforeInitialize hook handler.
+        *
+        * If the disablecookiewarning POST data is send, disables the 
cookiewarning bar with a
+        * cookie or a user preference, if the user is logged in.
+        *
+        * @param Title $title
+        * @param null $unused
+        * @param OutputPage $output
+        * @param User $user
+        * @param WebRequest $request
+        * @param MediaWiki $mediawiki
+        */
+       public static function onBeforeInitialize( Title &$title, &$unused, 
OutputPage &$output,
+               User &$user, WebRequest $request, MediaWiki $mediawiki
+       ) {
+               if ( !$request->wasPosted() || !$request->getVal( 
'disablecookiewarning' ) ) {
+                       return;
+               }
+
+               if ( $user->isLoggedIn() ) {
+                       $user->setOption( 'cookiewarning_dismissed', 1 );
+                       $user->saveSettings();
+               } else {
+                       $request->response()->setCookie( 
'cookiewarning_dismissed', true );
+               }
+               $output->redirect( $request->getRequestURL() );
+       }
+
        /**
         * SkinTemplateOutputPageBeforeExec hook handler.
         *
@@ -12,6 +42,10 @@
        public static function onSkinTemplateOutputPageBeforeExec(
                SkinTemplate &$sk, QuickTemplate &$tpl
        ) {
+               // if the cookiewarning should not be visible to the user, exit.
+               if ( !self::showWarning( $sk->getContext() ) ) {
+                       return;
+               }
                $moreLink = self::getMoreLink();
                // if a "more information" URL was configured, add a link to it 
in the cookiewarning
                // information bar
@@ -22,31 +56,32 @@
                                $sk->msg( 'cookiewarning-moreinfo-label' 
)->text()
                        );
                }
-               // if the cookiewarning should be visible to the user, append 
the element to
-               // the head data.
-               if ( self::showWarning( $sk->getContext() ) ) {
-                       $tpl->data['headelement'] .= Html::openElement(
-                                       'div',
-                                       array( 'class' => 
'mw-cookiewarning-container' )
-                               ) .
-                               Html::openElement(
-                                       'div',
-                                       array( 'class' => 
'mw-cookiewarning-text' )
-                               ) .
-                               Html::element(
-                                       'span',
-                                       array(),
-                                       $sk->msg( 'cookiewarning-info' )->text()
-                               ) .
-                               $moreLink .
-                               Html::element(
-                                       'a',
-                                       array( 'class' => 
'mw-cookiewarning-dismiss' ),
-                                       'OK'
-                               ) .
-                               Html::closeElement( 'div' ) .
-                               Html::closeElement( 'div' );
-               }
+
+               $tpl->data['headelement'] .= Html::openElement(
+                               'div',
+                               array( 'class' => 'mw-cookiewarning-container' )
+                       ) .
+                       Html::openElement(
+                               'div',
+                               array( 'class' => 'mw-cookiewarning-text' )
+                       ) .
+                       Html::element(
+                               'span',
+                               array(),
+                               $sk->msg( 'cookiewarning-info' )->text()
+                       ) .
+                       $moreLink .
+                       Html::openElement( 'form', array( 'method' => 'POST' ) 
) .
+                       Html::submitButton(
+                               'OK',
+                               array(
+                                       'name' => 'disablecookiewarning',
+                                       'class' => 'mw-cookiewarning-dismiss'
+                               )
+                       ) .
+                       Html::closeElement( 'form' ) .
+                       Html::closeElement( 'div' ) .
+                       Html::closeElement( 'div' );
        }
 
        /**
diff --git a/resources/ext.CookieWarning/ext.CookieWarning.less 
b/resources/ext.CookieWarning/ext.CookieWarning.less
index 1330b38..40bbe80 100644
--- a/resources/ext.CookieWarning/ext.CookieWarning.less
+++ b/resources/ext.CookieWarning/ext.CookieWarning.less
@@ -19,16 +19,24 @@
                margin-right: 1em;
        }
 
-       a {
+       form {
+               display: inline;
+       }
+
+       .mw-cookiewarning-dismiss, a {
                background-color: #3C3C3C;
                height: 100%;
                padding: 3px 10px;
                border-radius: 2px;
+               border: none;
                cursor: pointer;
                text-decoration: none !important;
                color: white !important;
                margin-right: 0.5em;
                white-space: nowrap;
+               font-weight: bold;
+               font-family: arial;
+               font-size: 13px;
        }
 }
 

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I711413abcbc131aaba34e8b285630ef1a1c9bda1
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/CookieWarning
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com>
Gerrit-Reviewer: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com>
Gerrit-Reviewer: Jack Phoenix <j...@countervandalism.net>
Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to