2015-07-27 17:18:44 +00:00
|
|
|
( function ( mw, $ ) {
|
2016-01-10 17:58:21 +00:00
|
|
|
/**
|
|
|
|
* Sets the cookie, that the cookiewarning is dismissed. Called,
|
|
|
|
* when the api query to save this information in the user preferences,
|
2017-12-24 15:43:38 +00:00
|
|
|
* failed for any reason, or the user is not logged-in.
|
2016-01-10 17:58:21 +00:00
|
|
|
*/
|
2015-08-16 09:49:05 +00:00
|
|
|
function setCookie() {
|
2015-07-27 17:18:44 +00:00
|
|
|
mw.cookie.set( 'cookiewarning_dismissed', true );
|
2015-08-16 09:49:05 +00:00
|
|
|
}
|
|
|
|
|
2017-12-24 15:43:38 +00:00
|
|
|
$( function () {
|
|
|
|
if ( mw.cookie.get( 'cookiewarning_dismissed' ) ) {
|
|
|
|
$( '.mw-cookiewarning-container' ).detach();
|
2015-08-16 09:49:05 +00:00
|
|
|
} else {
|
2017-12-24 15:43:38 +00:00
|
|
|
// Click handler for the "Ok" element in the cookiewarning information bar
|
Move the warning outside sitenotice, tidy up code
There's a lot of things going on here, so a quick summary:
* Moved the warning outside sitenotice to avoid reflows and all
kinds of other issues, including those with dismissable notices.
* Placed the warning on the bottom of the page, on all skins, for
consistency and to avoid obstructing vital UI elements such as
site name, user tools, search box.
* Changed the UI to use OOUI for, again, consistency and to avoid
reinventing the wheel with button styling.
* Removed the cookie emoji as it was only taking up valuable space
on mobile and making designing a sensible layout much harder.
* Merged the mobile and desktop RL modules into a single, responsive
one. The warning will work correctly for any skin and screen width.
* The integration tests are truly horrible, I tried to at least
make them work. They deserve a proper rewrite, but that should be
done after the extension switches to the new hook system.
I will post screenshots of this in action in the first of the linked
tasks.
Bug: T271047
Bug: T173335
Change-Id: I6e2a3d7aeccc0d4df1b3238e52c67e72099d27d8
2021-02-01 09:54:49 +00:00
|
|
|
$( '.mw-cookiewarning-container button' ).on( 'click', function ( ev ) {
|
2017-12-24 15:43:38 +00:00
|
|
|
// an anonymous user doesn't have preferences, so don't try to save this in
|
|
|
|
// the user preferences.
|
|
|
|
if ( !mw.user.isAnon() ) {
|
|
|
|
// try to save, that the cookiewarning was disabled, in the user preferences
|
|
|
|
new mw.Api().saveOption( 'cookiewarning_dismissed', '1' )
|
|
|
|
.fail( function ( code, result ) {
|
|
|
|
// if it fails, fall back to the cookie
|
|
|
|
mw.log.warn( 'Failed to save dismissed CookieWarning: ' + code + '\n' + result.error + '. Using cookie now.' );
|
|
|
|
setCookie();
|
|
|
|
} );
|
|
|
|
} else {
|
|
|
|
// use cookies for anonymous users
|
|
|
|
setCookie();
|
|
|
|
}
|
|
|
|
// always remove the cookiewarning element
|
|
|
|
$( '.mw-cookiewarning-container' ).detach();
|
2016-01-10 17:58:21 +00:00
|
|
|
|
2017-12-24 15:43:38 +00:00
|
|
|
ev.preventDefault();
|
|
|
|
} );
|
|
|
|
}
|
2015-07-27 17:18:44 +00:00
|
|
|
} );
|
2018-03-22 20:20:28 +00:00
|
|
|
}( mediaWiki, jQuery ) );
|