利用者:Whym/lockrollback.js

出典: フリー多機能辞典『ウィクショナリー日本語版(Wiktionary)』
ナビゲーションに移動 検索に移動

注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。

  • Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
  • Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
  • Internet Explorer / Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
  • Opera: Ctrl-F5を押してください
// 
// 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.LockRollback = {

targets: $('.mw-rollback-link a'),

init: function(lang) {
  // exit if there is no rollback links
  if (lrb.targets.length == 0) 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') ).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.unbind('click').click(function(x){
    x.preventDefault();
    document.location.replace($(x.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.unbind('click').click(function(x){
    x.preventDefault();
  });
},

}; // LockRollback

// executed from here when loaded
mw.loader.using(['mediawiki.util'], function() {
  lrb.init();
});

})(jQuery, mediaWiki);