User:NQ/WatchlistResetConfirm.js

/*Adds a confirmation dialogue to the Watchlist Reset button https://en.wikipedia.org/w/index.php?title=Wikipedia:Village_pump_(technical)&oldid=746997333#Watchlist:_.22Are_you_sure_you_want_to_mark_all_pages_as_visited.3F.22

/* ############################################################################ $(function {   $watchlistReset = $('#mw-watchlist-resetbutton');    $watchlistReset.css('display', 'inline'); //already hidden in css    $watchlistReset.on('click', function(event) { if (!confirm('Are you sure you want to mark all pages as visited?' )) { event.preventDefault; }   }); }); ############################################################################ */
 * Licensed under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version. See the
 * GNU General Public License for more details.
 * A copy of the GPL is available at https://www.gnu.org/licenses/gpl-2.0.txt

/* Using mw:OOjs_UI/Windows/Message_Dialogs */

mw.loader.using(['mediawiki.api', 'oojs-ui'], function {

$watchlistReset = $('#mw-watchlist-resetbutton'); $watchlistReset.css('display', 'inline'); //if already hidden in css; recommended

var messageDialog = new OO.ui.MessageDialog; var windowManager = new OO.ui.WindowManager; $('body').append(windowManager.$element); windowManager.addWindows([messageDialog]);

$watchlistReset.submit(function(event) {   event.preventDefault;

windowManager.openWindow(messageDialog, {     title: 'Confirm',      message: 'Mark all pages as visited?',      actions: [{ action: 'reject', label: 'Cancel', flags: ['safe', 'destructive'] },               { action: 'reset', label: 'Confirm', flags: ['primary', 'progressive']}]    }).then(function(opened) {      opened.then(function(closing, data) { if (data && data.action === 'reset') { /* Uses mw:API:SetNotificationTimestamp to reset the watchlist without refreshing the page */ // Code adapted from User:HueSatLum/common.js new mw.Api.post({           action: 'setnotificationtimestamp',            entirewatchlist: '',            token: mw.user.tokens.get('editToken')          }).done(function {            $('.mw-changeslist-line-watched').removeClass('mw-changeslist-line-watched').addClass('mw-changeslist-line-not-watched');          }); }      });    });  }); });