User:Whym/lockrollback.js
Jump to navigation
Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
Documentation for this user script can be added at User:Whym/lockrollback. |
//
// LockRollback ver 0.1
// https://commons.wikimedia.org/wiki/User:Whym/lockrollback.js
//
// Warning: this script is nowhere close to finished. Use it at your own risk.
//
// How to use:
//
// Add below to [[Special:MyPage/common.js]].
// importScript("User:Whym/lockrollback.js");
//
// This script disables rollback links.
// They can be reactivated when you click a portlet link "unlock rollback" in the side bar.
//
(function ($, mw, undefined) {
"use strict";
var lrb = mw.libs.LockRollback = {
targets: $('.mw-rollback-link a'),
init: function (lang) {
// exit if there is no rollback links
if (!lrb.targets.length) return;
// set up messages
mw.messages.set({
'lrb-portlettext-unlock': 'Unlock rollbacks',
'lrb-portlettext-lock': 'Lock rollbacks'
});
// set up CSS classes
mw.util.addCSS('.lockrollback-locked, .lockrollback-locked:hover { text-decoration: line-through; }');
mw.util.addCSS('.lockrollback-unlocked, .lockrollback-unlocked:hover { text-decoration: underline; }');
// set the default state to locked
lrb.lock();
// set up a portlet link to toggle locked/unlocked
$(mw.util.addPortletLink('p-tb', '#', mw.msg('lrb-portlettext-unlock'), 't-lockrollback-trigger')).on('click', function (e) {
e.preventDefault();
if (lrb.locked()) {
lrb.unlock();
} else {
lrb.lock();
}
});
},
locked: function () {
return lrb.targets.hasClass('lockrollback-locked');
},
unlock: function () {
$('#t-lockrollback-trigger a').html(mw.msg('lrb-portlettext-lock'));
lrb.targets.removeClass('lockrollback-locked').addClass('lockrollback-unlocked');
lrb.targets.off('click').on('click', function (e) {
e.preventDefault();
document.location.replace($(e.target).attr('href'));
});
},
lock: function () {
$('#t-lockrollback-trigger a').html(mw.msg('lrb-portlettext-unlock'));
lrb.targets.addClass('lockrollback-locked').removeClass('lockrollback-unlocked');
lrb.targets.off('click').on('click', function (e) {
e.preventDefault();
});
},
}; // LockRollback
// executed from here when loaded
mw.loader.using(['mediawiki.util'], function () {
lrb.init();
});
})(jQuery, mediaWiki);