User:PerfektesChaos/js/listPageOptions/r.js

/// User:PerfektesChaos/js/listPageOptions/r.js

/// 2019-02-04 PerfektesChaos@de.wikipedia

/// Documentation:w:en:User:PerfektesChaos/js/listPageOptions

/// Fingerprint:#0#9CEA6DF5#

/// @license GPL [//www.mediawiki.org/w/COPYING](+GFDL,LGPL,CC-BY-SA)

///

(function(mw,$){

"use strict";

var Version=6.2,POpt="listPageOptions";

if(typeof mw.libs[POpt]!=="object"||!mw.libs[POpt]){

mw.libs[POpt]={};}

mw.libs[POpt].type=POpt;

POpt=mw.libs[POpt];

if(typeof POpt.loaded!=="boolean"){

POpt.loaded=true;

POpt.config={"wikidata.bgc":"AFEEEE"};

POpt.disguise={};

POpt.edit={};

POpt.group={"sign":POpt.type+"_groupPg",

"show":"groupie",

"soft":"enhanced"};

POpt.increm={more:30};

POpt.multi={"sign":POpt.type+"_multiPg",

"show":"multiple",

"soft":"extended"};

POpt.notice={};

POpt.picked={"sign":POpt.type+"_visitedPg",

"show":"visited",

"soft":"visited"};

POpt.reduce={};

POpt.storage={};

POpt.unwatch={};

POpt.values={};

POpt.config.texts={

"edit":{"en":"edit",

"de":"Bearbeiten"},

"groupie":{"en":"Group by pages",

"de":"Seitenbezogene\xA0Gruppierung"},

"hide":{"en":"Hide",

"de":"ausblenden"},

"multiple":{"en":"Multiple entries",

"de":"Mehrere\xA0Einträge"},

"notice":{"en":"+\xA0Visited",

"de":"+\xA0Gesehen"},

"notice?":{"en":"Add link for [visited] to every entry",

"de":"Link zu 'Gesehen' bei jedem Eintrag"},

"notice!":{"en":"Mark as visited",

"de":"Markiere als 'Gesehen'"},

"options":{"en":"Options and notices",

"de":"Anzeigeoptionen"},

"show":{"en":"Show",

"de":"einblenden"},

"toggleOff":{"en":"off",

"de":"aus"},

"toggleOn":{"en":"on",

"de":"ein"},

"update":{"en":"meanwhile",

"de":"Zwischenzeitlich"},

"unwatch":{"en":"+\xA0[Unwatch]",

"de":"+\xA0Nicht-Beobachten"},

"unwatch?":{"en":"Add link for [unwatch] to every entry",

"de":"Link zu 'Nicht beobachten' bei jedem Eintrag"},

"visited":{"en":"Visited\xA0Pages",

"de":"Besuchte\xA0Seiten:"},

"watchPgRE":{"en":"^\\s*([1-9][0-9,]*[^.\n]+[.\n])(.|\n)*$",

"de":"^\\s*([1-9][0-9.]*[^.\n]+[.\n])(.|\n)*$"},

"wlnoteRE":{"en":"as of(.+,.+)\\.",

"de":"Stand:(.+,.+)Uhr\\."},

"^show":{"en":"List-Page-Options",

"de":"List-Page-Options"},

"^suffix":{"en":"– equip watchlist and recent changes with Options",

"de":"– Beobachtungsliste und Letzte Änderungen mit Optionen ausstatten"},

"^support":{"en":"/wiki/User:PerfektesChaos/js/listPageOptions",

"de":"/wiki/User:PerfektesChaos/js/listPageOptions"},"^^lean-show":

{"en":"Compress option block",

"de":"Komprimierter Optionsblock"},

"^^learnt-show":

{"en":"Enable hiding of visited changes on watchlist",

"de":"Möglichkeit zum Verbergen besuchter Änderungen auf der Beobachtungsliste"},

"^^learnt-null":

{"en":"not enabled",

"de":"keine Möglichkeit"},

"^^learnt-false":

{"en":"additional button; preset: show all",

"de":"Zusatz-Button; Vorgabe: alle anzeigen"},

"^^learnt-true":

{"en":"additional button; preset: hide visited",

"de":"Zusatz-Button; Vorgabe: besuchte ausblenden"},

"^^leyo-show":

{"en":"Enable hiding of last-edit-your-own on watchlist",

"de":"Möglichkeit zum Verbergen eigener letzter Beiträge auf der Beobachtungsliste"},

"^^link-show":

{"en":"Button to access this option page",

"de":"Schaltknopf, um auf diese Optionsseite zu kommen"},

"^^looked-show":

{"en":"Enable entries to be marked as 'visited' on watchlist",

"de":"Möglichkeit zum Markieren einzelner Änderungen als 'Gesehen' auf der Beobachtungsliste"},

"^^looked-null":

{"en":"not enabled",

"de":"keine Möglichkeit"},

"^^looked-false":

{"en":"on demand",

"de":"auf Anforderung"},

"^^looked-true":

{"en":"always",

"de":"immer"},

"^^lower-show":

{"en":"Additional buttons: hide and show option block",

"de":"Zusätzliche Knöpfe: Ein- und Ausblenden des Optionsblocks"},

"^^lower-null":

{"en":"no additional button",

"de":"kein zusätzlicher Knopf"},

"^^lower-false":

{"en":"button for hiding",

"de":"Knopf zum Ausblenden"},

"^^lower-true":

{"en":"hide: button for showing",

"de":"Ausblenden; Knopf zum Einblenden"},

"^^luxury-show":

{"en":"Additional checkboxes for hide and show",

"de":"Zusätzliche Checkboxen zum Ein- und Ausblenden"},

"^^more-show":

{"en":"Overlap seconds for incremental watchlist",

"de":"Zeitüberschneidung für inkrementelle Beobachtungsliste in Sekunden"},

"^^self":{"en":"Mark own edit",

"de":"Eigene Bearbeitung markieren"}

};

POpt.spooling="https://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif";}

function fullstop(activity){

if(typeof activity==="object"&&activity){

if(typeof activity.preventDefault==="function"){

activity.preventDefault();}

if(typeof activity.stopPropagation==="function"){

activity.stopPropagation();}}}

POpt.config.feature=function(apply){

var e,r;

if(typeof this.language!=="boolean"){

if(typeof POpt.prego!=="object"){

if(typeof mw.libs[this.supply]==="object"){

POpt.prego=mw.libs[this.supply];}}

if(typeof POpt.prego==="object"){

if(typeof POpt.prego.translation==="function"){

this.language=(typeof POpt.prego.translation==="function");}

}else{

this.language=false;}}

e=this.texts[apply];

if(e){

if(this.language){

r=POpt.prego.translation(e);

}else{

r=e.en;}

}else{

r="***"+apply+"***";}

return r;

};

POpt.config.fetch=function(){

var scope=" lean learnt leyo link looked lower luxury more self ",vals=POpt.prego.fetch(POpt.type),s;

for(s in vals){

if(scope.indexOf(" "+s+" ")>0){

POpt[s]=vals[s];}}

};

POpt.config.fire=function(){

var rls,signature;

this.supply="preferencesGadgetOptions";

signature="ext.gadget."+this.supply;

if(!mw.loader.getState(signature)){

rls={};

rls[signature]="loading";

mw.loader.state(rls);

mw.loader.load("https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/"+this.supply+"/r.js&action=raw&bcache=1&maxage=604802&ctype=text/javascript","text/javascript");}

};

POpt.config.$flow=function(){

var $r=$("");

$r.attr({src:POpt.spooling,height:"16",alt:"Ajax"});

return $r;

};

POpt.config.form=function(){

var txt=this.texts,dialog={script:POpt.type,show:txt["^show"],support:txt["^support"],suffix:txt["^suffix"],opts:[{signature:"lean",type:"checkbox",show:txt["^^lean-show"],val:false

},{signature:"learnt",type:"radio",show:txt["^^learnt-show"],poly:[{val:null,show:txt["^^learnt-null"]},{val:false,show:txt["^^learnt-false"]},{val:true,show:txt["^^learnt-true"]}

]},{signature:"looked",type:"radio",show:txt["^^looked-show"],poly:[{val:null,show:txt["^^looked-null"]},{val:false,show:txt["^^looked-false"]},{val:true,show:txt["^^looked-true"]}

]},{signature:"leyo",type:"checkbox",show:txt["^^leyo-show"],val:false

},{signature:"lower",type:"radio",show:txt["^^lower-show"],val:null,poly:[{val:null,show:txt["^^lower-null"]},{val:false,show:txt["^^lower-false"]},{val:true,show:txt["^^lower-true"]}

]},{signature:"luxury",type:"checkbox",show:txt["^^luxury-show"],val:false

},{signature:"self",type:"text",show:txt["^^self"],val:false

},{signature:"more",type:"text",show:txt["^^more-show"],minimum:4,maxlength:4,val:POpt.increm.more

},{signature:"link",type:"checkbox",show:txt["^^link-show"],val:false

}

]};

POpt.prego.form(dialog);

};

POpt.disguise.fetch=function(){

var leap=false,learn=false,$list=mw.util.$content.find("table.mw-enhanced-rc"),n=$list.length,seen="mw-changeslist-line-not-watched",e,i,low,staff,story,stuff,$e,$li,$trs,$user;

POpt.picked.leap=false;

this.got=[];

this.list=(n===0);

if(this.list){

$e=mw.util.$content.find("#resultListSort");

if($e.length){

$e=$e.find("ol");

}else{

$e=mw.util.$content.find("UL.special");}

if($e.length){

$list=$e.children("li");

n=$list.length;

for(i=0;i

$li=$list.eq(i);

if(POpt.picked.learn){

learn=$li.hasClass(seen);

if(learn){

POpt.picked.leap=true;

}else{

leap=true;}}

$e=$li.children("a").eq(0);

stuff=$e.attr("href");

stuff=$li.find("A.mw-changeslist-title").attr("href");

$user=$li.find("A.mw-userlink");

if($user.length){

staff=$user.attr("href");

}else{

staff=false;}

low=($li.children(".minoredit").length>0);

if(POpt.letal){

story=false;}

this.got.push([$li,stuff,staff,low,learn,story]);}

if(POpt.mode===1&&POpt.self){

story=".mw-changeslist-separator";

$e=$("");

$e.css({"font-weight":"bold"});

$e.text(POpt.self);

for(i=0;i

e=this.got[i];

staff=e[2];

if(staff){

if(this.reLeyo.test(staff)){

e[0].find(story).after($e.clone());}}}}}

}else{

staff=false;

for(i=0;i

$li=$list.eq(i);

if(POpt.picked.learn){

learn=$li.hasClass(seen);

if(learn){

POpt.picked.leap=true;

}else{

leap=true;}}

$trs=$li.children("tbody").children("tr");

stuff=$trs.find("SPAN.mw-title").children("a").attr("href");

$e=$trs.find("A.mw-userlink");

staff=false;

switch($e.length){

case 0:

break;

case 1:

staff=$e.attr("href");

break;

default:

$e=$trs.find(".changedby").children("A.mw-userlink");

if($e.length===1){

staff=$e.attr("href");

}else if(this.reLeyo){

$e=$trs.eq(1).find("A.mw-userlink");

staff=$e.attr("href");}}

if(this.reLeyo&&staff){

if(this.reLeyo.test(staff)){

$li.hide();}}

if($li){

low=($trs.children(".minoredit").length>0);

this.got.push([$li,stuff,staff,low,learn,story]);}}}

POpt.picked.leap=(POpt.picked.leap&&leap);

};

POpt.disguise.fiat=function(array,abolish){

var i,k,m,n,q,q3,q4;

if($.isArray(array)){

n=array.length;

for(i=0;i

q=array[i];

if($.isArray(q)){

m=q.length;

if(m>1){

k=q[2];

if(m<4){

q4=false;

if(m<3){

q3=false;

}else{

q3=q[3];}

}else{

q3=q[3];

q4=q[4];}

if(!k||k===POpt.mode){

if(this.filter(q[0],q[1],q3,q4,abolish)){

break;}}}}}}

};

POpt.disguise.filter=function(alter,abandon,account,ant,abolish){

var r=false,i,l,n,q,rep,reu,s;

if(alter||abandon||account||(POpt.picked.learn&&POpt.picked.leap)){

n=this.got.length;

if(n){

if(alter||!this.list){

rep="/wiki/";

if(alter){

if(!this.special){

q=mw.config.get("wgFormattedNamespaces");

if(q){

rep=q[-1];}

this.special=rep+":";}

rep=this.special;}

}else{

rep="/w(iki/|/index\\.php\\?title=)";}

if(abandon){

s=POpt.format(abandon);

}else{

s="";}

rep=new RegExp(rep+s);

reu=this.format(account);

r=true;

for(i=0;i

q=this.got[i];

if(q){

l=false;

if(rep.test(q[1])){

l=alter;

if(reu){

l=reu.test(q[2]);}

if(l&&ant){

l=q[3];}}

if(l){

if(abolish){

q[0].hide();

}else{

q[0].show();}

this.got[i]=false;

}else{

r=false;}}}}}

return r;

};

POpt.disguise.fire=function(){

if(POpt.leyo||POpt.self){

this.fresh();

}else if(POpt.picked.learn||this.hide||this.show){

this.fetch();}

if(this.hide){

this.fiat(POpt.hide,true);}

if(this.show){

this.fiat(POpt.show,false);}

};

POpt.disguise.format=function(account){

var r;

if(account){

r=new RegExp("/w(iki/|/index.php?title=)[^:]+:"+POpt.format(account));

}else{

r=false;}

return r;

};

POpt.disguise.fresh=function(){

this.reLeyo=this.format(mw.config.get("wgUserName"));

this.fetch();

};

POpt.edit.fire=function(){

var $entries=$(".mw-htmlform-flatlist-item,.oo-ui-fieldLayout-header");

$entries.each(POpt.edit.furnish);

};

POpt.edit.furnish=function(address,achieve){

var $entry=$(achieve),$links=$entry.find("a"),$a=$links.eq(2),swift=$a.attr("href"),$end,$span;

$links.attr({target:"_blank"});

if(swift){

$end=$links.last();

swift=swift.replace(/&action=history/,"&action=edit");

$a=$("");

$a.attr({href:swift,target:"_blank"});

$a.text(POpt.config.feature("edit"));

$end.after($a);

$span=$("");

$span.text(" | ");

$end.after($span);}

};

POpt.group.find=function(assigned){

var less=false,$grab;

if(assigned){

less=(assigned==="1");

}else{

$grab=mw.util.$content.find(".mw-enhanced-rc");

if($grab.length){

less=true;

}else if(!this.leaves){

if(mw.user.options.get("usenewrc")){

less=true;}}}

POpt.values.ctl2url[this.sign].val=(less?"1":"0");

};

POpt.increm.fire=function(){

var date=new Date(),incr=(date-POpt.increm.retrieved)/ 1000,more=POpt.increm.more,site=mw.config.get("wgServer");

if(typeof POpt.more==="string"&&POpt.more){

POpt.more=parseInt(POpt.more,10);}

if(typeof POpt.more==="number"&&POpt.more>more){

more=POpt.more;}

incr+=more;

POpt.values.ctl2url.days=false;

if(site.indexOf("://")<0){

site=window.location.protocol+site;}

window.location=site+POpt.values.script+"?title=Special:"+POpt.special+POpt.values.factory()+"&days="+(incr / 86400);

};

POpt.increm.furnish=function($around){

var $r=false,$box,$e;

if($around){

$box=$around;

}else{

$box=mw.util.$content.find("#mw-watchlist-options");}

if($box.length){

POpt.increm.retrieved=new Date();

$e=$box.find("br").eq(0);

if($e.length){

$r=$("