මාධ්‍යවිකි:Gadget-rightsfilter.js

විකිපීඩියා වෙතින්

සටහන: සුරැකීමෙන් පසුව, වෙනස් කම් දැකගැනුමට ඔබගේ බ්‍රවුසරයෙහි කෑෂය මගහැරයෑමට ඔබට සිදුවිය හැක. ගූගල් ක්‍රෝම්, ෆයර්ෆොක්ස්, මයික්‍රොසොෆ්ට් එජ් සහ සෆාරි: Reload ඔබන අතරතුර ⇧ Shift ඔබන්න. සවිස්තරාත්ම උපදෙස් සහ වෙනත් බ්‍රව්සර වලට අදාළ තොරතුරු සඳහා, විකිපීඩියා:කෑෂය මගහැරයෑම වෙතට යොමු වන්න.

 // Log filter script
 // Created by [[w:User:Splarka|Splarka]] & amended [[b:User:Mike.lifeguard]]

var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if (mw.config.get('wgPageName')=="Special:CheckUser" || mw.config.get('wgPageName')=="Special:Contributions" || mw.config.get('wgPageName')=="Special:Log"){
 $.when($.ready,mw.loader.using('mediawiki.util')).then(filterLogsButton)
}
function filterLogsButton() {
  mw.util.addPortletLink('p-cactions','javascript:filterLogsForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
  if(window.AutoLoadLogsFilter) filterLogsForm();
}
function filterLogsForm() {
  var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of these log entries.'
  //generate the form
  document.getElementById('ca-rxfilter').style.display = 'none';
  var frm = document.getElementsByTagName('form')[0];
  var rf = document.createElement('form');
   rf.setAttribute('action','javascript:void(0)');
   rf.setAttribute('id','rfform');
   var fs = document.createElement('fieldset');
    var is = document.createElement('p');
     is.appendChild(document.createTextNode(instructions));
    fs.appendChild(is);
    var lg = document.createElement('legend');
     lg.appendChild(document.createTextNode('Filter logs (javascript)'));
    fs.appendChild(lg);
    if(rightsLogOnly) {
      var sel = document.createElement('select');
       sel.setAttribute('id','rfselect');
       var op1 = document.createElement('option');
        op1.appendChild(document.createTextNode('added rights'));
       sel.appendChild(op1);
       var op2 = document.createElement('option');
        op2.appendChild(document.createTextNode('removed rights'));
       sel.appendChild(op2);
       var op3 = document.createElement('option');
        op3.appendChild(document.createTextNode('added OR removed'));
       sel.appendChild(op3);
       var op4 = document.createElement('option');
        op4.appendChild(document.createTextNode('added/removed/static'));
       sel.appendChild(op4);
      fs.appendChild(sel);
    }
    var lab1 = document.createElement('label');
     lab1.appendChild(document.createTextNode(' Regex string: '));
     lab1.setAttribute('for','rfinput1');
    fs.appendChild(lab1);
    fs.appendChild(document.createTextNode(' '));
    var inp1 = document.createElement('input');
     inp1.setAttribute('id','rfinput1');
     inp1.setAttribute('name','rfinput1');
     inp1.setAttribute('type','text');
    fs.appendChild(inp1);
    var chk1 = document.createElement('input');
     chk1.setAttribute('id','rfinput2');
     chk1.setAttribute('name','rfinput2');
     chk1.setAttribute('type','checkbox');
    fs.appendChild(chk1);
    var lab2 = document.createElement('label');
     lab2.appendChild(document.createTextNode('Invert '));
     lab2.setAttribute('for','rfinput2');
    fs.appendChild(lab2);
    var sub1 = document.createElement('input');
     sub1.setAttribute('type','button');
     sub1.setAttribute('value','filter');
     sub1.setAttribute('onclick','filterLogs(false)');
    fs.appendChild(sub1)
    fs.appendChild(document.createTextNode(' '));
    var sub2 = document.createElement('input');
     sub2.setAttribute('type','button');
     sub2.setAttribute('value','hilight');
     sub2.setAttribute('onclick','filterLogs(true)');
    fs.appendChild(sub2)
   rf.appendChild(fs);
  frm.parentNode.insertBefore(rf,frm);
}

function filterLogs(hilight) {
  //grab options from form
  if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
  var invert = document.getElementById('rfinput2').checked;
  var srch = document.getElementById('rfinput1').value;
  var rx = new RegExp(srch,'ig');

  //grab the list of <li>
  var uls = document.getElementById('bodyContent').getElementsByTagName('ul');
  if(uls.length == 0) return
  var lis = uls[0].getElementsByTagName('li');

  //iterate
  var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i   //the regex used to grab the Special:Log/rights changes
  for(var i=0;i<lis.length;i++) {
    if(rightsLogOnly) {
      //Special:Log/rights
      var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
      var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
      var oldrl = oldr.split(' '); var newrl = newr.split(' ');
      for (var j=0;j<oldrl.length;j++) {
        for (var k=0;k<newrl.length;k++) {
          if(oldrl[j]==newrl[k]) {
            oldrl[j] = ''; newrl[k] = '';
          }
        }
      }
      var remr = oldrl.join(' '); var addr = newrl.join(' ');
      switch(type) {
        case 0: var look = addr; break;
        case 1: var look = remr; break;
        case 2: var look = remr + ' ' + addr; break;
        case 3: var look = oldr + ' ' + newr; break;
      }
    } else {
      //Any other Special:Log
      var look = gettext(lis[i]);
    }
    lis[i].style.display = '';
    lis[i].style.backgroundColor = '';
    if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
      if(hilight) lis[i].style.backgroundColor = '#ffff99';
    } else {
      if(!hilight) lis[i].style.display = 'none';
    }
  }
}

function gettext(object) {
  if (object.nodeType == 3) return object.nodeValue;
  var txt = [];
  var i=0;
  while(object.childNodes[i]) {
    txt[txt.length] = gettext(object.childNodes[i]);
    i++;
  }
  return txt.join('');
}
"https://si.wikipedia.org/w/index.php?title=මාධ්‍යවිකි:Gadget-rightsfilter.js&oldid=474331" වෙතින් සම්ප්‍රවේශනය කෙරිණි