Jump to content
Wikipedia The Free Encyclopedia

User:PerfektesChaos/js/browserStorageManager/r.js

From Wikipedia, the free encyclopedia
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump.
This code will be executed when previewing this page.
This user script seems to have a documentation page at User:PerfektesChaos/js/browserStorageManager/r.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
 /// User:PerfektesChaos/js/browserStorageManager/r.js
 /// 2020年12月10日 PerfektesChaos@de.wikipedia
 /// Fingerprint:#0#349BF2EE#
 /// @license GPL [//www.mediawiki.org/w/COPYING](+GFDL,LGPL,CC-BY-SA)
 ///<nowiki>
 (function(mw,$){
 "use strict";
 varvsn=2.3,BSM="browserStorageManager",Max=100,Bag=["localStorage","sessionStorage","cookies"];
 functionbb_mw(){
 varconfig,domfuns,gui,lang,mod,prego,Key=80;
 if(typeofmw.libs[BSM]!=="object"||!mw.libs[BSM]){
 mw.libs[BSM]={};}
 mw.libs[BSM].type=BSM;
 BSM=mw.libs[BSM];
 if(BSM.vsn){
 return;}
 BSM.vsn=vsn;
 config={support:"User:PerfektesChaos/js/"+BSM.type};
 gui={};
 lang={};
 mod={};
 BSM.doc="[[w:en:"+config.support+"]]";
 domfuns=["key","length","clear","getItem","setItem","removeItem"];
 lang.texts={
 "#bytes":{"en":"bytes",
 "de":"Bytes"},
 "#chars":{"en":"chars",
 "de":"Zeichen"},
 "#content":{"en":"content...",
 "de":"Inhalt..."},
 "#id":{"en":"ID",
 "de":"ID"},
 "!abort":{"en":"abort",
 "de":"Abbruch"},
 "!delete":{"en":"delete entry",
 "de":"Eintrag löschen"},
 "!edit":{"en":"Modify text",
 "de":"Text bearbeiten"},
 "!fresh":{"en":"refresh table",
 "de":"Tabelle aktualisieren"},
 "!new":{"en":"new entry",
 "de":"Neuer Eintrag"},
 "!save":{"en":"save new text",
 "de":"Text speichern"},
 "^show":{"en":"Browser-Storage-Manager",
 "de":"Browser-Storage-Manager"},
 "^suffix":{"en":"&#8211; Show and manipulate web/DOM storage and cookies.",
 "de":"&#8211; Zeige und bearbeite Web/DOM Storage und Cookies."},
 "^^key":{"en":"Text height (default: "+Key+" %)",
 "de":"Schriftgröße (Vorgabe: "+Key+" %)"},
 "^^max":{"en":"Text length limit (default: "+Max+")",
 "de":"Maximale Textlänge (Vorgabe: "+Max+")"},
 "^^portlet":{"en":"Create portlet link",
 "de":"Portlet-Link einfügen"}
 };
 lang.user={
 "de":"de",
 "als":"de",
 "bar":"de",
 "dsb":"de",
 "frr":"de",
 "gsw":"de",
 "hsb":"de",
 "ksh":"de",
 "lb":"de",
 "nds":"de",
 "pdc":"de",
 "pdt":"de",
 "pfl":"de",
 "sli":"de",
 "stq":"de",
 "vmf":"de"
 };
 functionfire(){
 config.fetch();
 if(mw.config.get("wgCanonicalSpecialPageName")==="Blankpage"){
 if(prego){
 config.form();}
 }else{
 config.link=true;}
 gui.ltr=($("html").attr("dir")!=="rtl");
 if(typeofconfig.rLoader!=="object"||!config.rLoader){
 config.rLoader={};}
 config.rLoader[config.signature]="ready";
 mw.loader.state(config.rLoader);}
 functionfirst(){
 varkey=false;
 if(typeofBSM.key==="number"){
 key=BSM.key;}
 config.fence();
 config.font(key);
 config.fire();
 mw.loader.using(["user","user.options","mediawiki.user","mediawiki.util"],config.firing);}
 config.favorite=function(){
 varr;
 lang.favorite();
 switch(lang.slang){
 case"de":
 r="de.wikipedia.org";
 break;
 default:
 r="en.wikipedia.org";}
 return"//"+r+"/wiki/"+this.support;
 };
 config.fence=function(apply){
 varn;
 if(typeofconfig.max!=="number"){
 if(typeofBSM.max==="number"){
 if(BSM.max>=10&&BSM.max<=1024){
 config.max=BSM.max;}}
 if(typeofconfig.max!=="number"){
 config.max=Max;}}
 if(apply){
 switch(typeofapply){
 case"number":
 n=apply;
 break;
 case"string":
 n=parseInt(apply,10);
 break;
 default:
 n=false;}
 if(n){
 if(n>=10&&n<=1024){
 config.max=n;}}}
 returnconfig.max;
 };
 config.fetch=function(){
 varlink,vals;
 if(typeofBSM.portlet==="boolean"){
 link=BSM.portlet;
 }else{
 link=true;}
 if(mw.user.isAnon()){
 prego=false;
 }else{
 prego=mw.libs[this.supply];}
 if(prego){
 vals=prego.fetch(BSM.type);
 if(vals&&typeofvals==="object"){
 config.fence(vals.max);
 config.font(vals.key);
 if(typeofvals.portlet==="boolean"){
 link=vals.portlet;}}}
 if(link){
 gui.$link=true;
 gui.facility(true);}
 };
 config.filled=function(assigned){
 if(typeofassigned==="object"&&assigned){
 config.fence(assigned.max);
 gui.facility(assigned.portlet);}
 };
 config.fire=function(){
 config.supply="preferencesGadgetOptions";
 config.signature="ext.gadget."+config.supply;
 if(!mw.loader.getState(config.signature)){
 config.rLoader={};
 config.rLoader[config.signature]="loading";
 mw.loader.state(config.rLoader);
 mw.loader.load("https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/"+config.supply+"/r.js&action=raw&bcache=1&maxage=604806&ctype=text/javascript","text/javascript");}
 };
 config.firing=function(){
 mw.hook(config.supply+".ready").add(fire);
 };
 config.font=function(apply){
 varn;
 if(typeofconfig.key!=="number"){
 config.key=Key;}
 if(apply){
 switch(typeofapply){
 case"number":
 n=apply;
 break;
 case"string":
 n=parseInt(apply,10);
 break;
 default:
 n=false;}
 if(n){
 if(n>=65&&n<=100){
 config.key=n;}}}
 returnconfig.key;
 };
 config.form=function(){
 vardialog,sl,text=lang.texts;
 lang.favorite();
 sl=lang.slang;
 dialog={script:BSM.type,show:text["^show"][sl],support:this.favorite(),suffix:text["^suffix"][sl],filled:this.filled,opts:[{signature:"max",type:"text",show:text["^^max"][sl],val:config.fence()},{signature:"portlet",type:"checkbox",show:text["^^portlet"][sl],val:(gui.$link?true:false)},{signature:"key",type:"text",show:text["^^key"][sl],val:config.font()}
 ]};
 prego.form(dialog);
 };
 gui.facility=function(add){
 if(typeofthis.$link==="object"){
 this.$link.hide();
 this.$link=false;}
 if(add){
 $(this.factory);}
 };
 gui.factory=function(){
 vardom,s,show,signal,scope="p-tb",shortcut=null,stick=null;
 lang.favorite();
 show=lang.texts["^show"][lang.slang];
 if(typeofBSM.portlet==="object"&&BSM.portlet){
 s=BSM.portlet.scope;
 if(typeofs==="string"){
 s=$.trim(s);
 if(s.length){
 scope=s;}}
 s=BSM.portlet.shortcut;
 if(typeofs==="string"){
 s=$.trim(s);
 if(s.length){
 shortcut=s;}}
 s=BSM.portlet.show;
 if(typeofs==="string"){
 s=$.trim(s);
 if(s.length){
 show=s;}}
 s=BSM.portlet.stick;
 if(typeofs==="string"){
 s=$.trim(s);
 if(s.length){
 stick=s;}}}
 signal=show+"\n"+BSM.type+" "+BSM.vsn;
 dom=mw.util.addPortletLink(scope,"#",show,"t-"+BSM.type,signal,shortcut,stick);
 gui.$link=$(dom).find("a");
 gui.$link.click(gui.fiat);
 };
 gui.fiat=function(){
 vari,$btn,selector;
 if(gui.$wrapper){
 for(i=0;i<3;i++){
 gui.fresh(Bag[i]);}
 }else{
 selector="#"+BSM.type;
 lang.favorite();
 gui.$wrapper=$("<div />");
 gui.$wrapper.attr("id",selector);
 gui.$wrapper.css({"border":"solid 2px #006400",
 "font-size":config.key+"%",
 "margin-bottom":"2em",
 "padding":"1em"
 });
 if(config.link&&prego){
 $btn=prego.$button(BSM.type);
 $btn.css({"float":"right",
 "vertical-align":"top"});
 gui.$wrapper.prepend($btn);}
 gui.$table={};
 mod.makes={};
 for(i=0;i<3;i++){
 gui.folder(Bag[i]);}
 $("#firstHeading").before(gui.$wrapper);
 mw.loader.using(["jquery.tablesorter"],function(){
 for(i=0;i<3;i++){
 gui.$table[Bag[i]].tablesorter();}
 });
 gui.facility(false);}
 };
 gui.folder=function(about){
 vars=(about==="cookies"?"#bytes":"#chars"),$btn,$caption=$("<caption />"),$span=$("<span />"),$table=$("<table />"),$tbody=$("<tbody />"),$td=$("<td />"),$tfoot=$("<tfoot />"),$th=$("<th />"),$thead=$("<thead />"),$tr=$("<tr />"),$tf1=$td.clone(),$tf2=$th.clone(),$tf3=$td.clone(),$th1=$th.clone(),$th2=$th.clone(),$th3=$th.clone(),$trf=$tr.clone(),$trh=$tr.clone();
 $table.attr("class","wikitable sortable");
 $caption.text(about);
 $table.append($caption);
 $th1.text(lang.texts["#id"][lang.slang]);
 $th2.text(lang.texts[s][lang.slang]);
 $th3.append($span.clone());
 $trh.append($th1);
 $trh.append($th2);
 $trh.append($th3);
 $thead.append($trh);
 $table.append($thead);
 $table.append($tbody);
 $btn=gui.furnish("$btnNew");
 $btn.click(function(){mod.flip(about,-1,true);});
 $tf1.append($btn);
 $tf2.css({"font-family":"monospace",
 "text-align":"right"});
 $tf2.append($span);
 $btn=gui.furnish("$btnRefresh");
 $btn.click(function(){gui.fresh(about);});
 $tf3.append($btn);
 $trf.append($tf1);
 $trf.append($tf2);
 $trf.append($tf3);
 $tfoot.append($trf);
 $table.append($tfoot);
 gui.$wrapper.append($table);
 gui.$table[about]=$table;
 gui.fresh(about);
 };
 gui.fresh=function(about){
 varel,i,m,n,$btn,$td1d,$td2d,$td3d,$trd,$txt,light=(about==="cookies"),r=fresh(about,config.max),s=lang.texts["#content"][lang.slang]+" ("+config.max+")",$span=$("<span />"),$table=gui.$table[about],$tbody=$table.children("tbody"),$tfoot=$table.children("tfoot"),$thead=$table.children("thead"),$td=$("<td />"),$tr=$("<tr />"),$td1=$td.clone(),$td2=$td.clone(),$td3=$td.clone();
 $tbody.empty();
 $td1.css({"font-family":"monospace"});
 $td2.css({"font-family":"monospace",
 "text-align":"right"});
 if(r){
 m=0;
 n=r.length;
 for(i=0;i<n;i++){
 el=r[i];
 if(light||$.inArray(el.id,domfuns)<0){
 $td1d=$td1.clone();
 $td2d=$td2.clone();
 $td3d=$td3.clone();
 $td1d.text(el.id);
 $btn=gui.furnish("$btnDelete");
 $btn.on("click",{about:about,id:el.id},gui.fresh_1);
 $td1d.append($btn);
 $td2d.text(el.n);
 if(el.n<=config.max){
 $txt=$span.clone();
 $txt.text(el.v);
 $td3d.append($txt);
 $btn=gui.furnish("$btnEdit");
 $btn.on("click",{about:about,item:i,id:el.id,val:el.v},gui.fresh_2);
 $td3d.append($btn);
 }else{
 $td3d.text(el.v);}
 $trd=$tr.clone();
 $trd.append($td1d);
 $trd.append($td2d);
 $trd.append($td3d);
 $tbody.append($trd);
 m+=el.n;}}
 }else{
 m="";}
 $tr=$thead.children("tr");
 $txt=$tr.children("th").eq(2).children("span");
 $txt.text(s);
 $tr=$tfoot.children("tr");
 $tr.children("td").children("*").toggle(true);
 $txt=$tr.children("th").children("span");
 $txt.text(m);
 mod.makes[about]=0;
 returnr;
 };
 gui.fresh_1=function(event){
 mod.flush(event.data.about,event.data.id);
 };
 gui.fresh_2=function(event){
 mod.flip(event.data.about,event.data.item,true,event.data.id,event.data.val);
 };
 gui.furnish=function(acquire){
 varshow,$e,$v;
 if(!this[acquire]){
 lang.favorite();
 $e=$("<button>");
 $e.attr("type","button");
 switch(acquire){
 case"$btnAbort":
 $e.css({"color":"#FF0000",
 "font-weight":"bolder",
 "float":(this.ltr?"right":"left")});
 $e.attr("class",BSM.type+"-tmp");
 $v=$("<span />");
 $v.text("X");
 show="!abort";
 break;
 case"$btnDelete":
 $e.css({"color":"#FF0000",
 "font-family":"sans-serif",
 "font-weight":"bolder",
 "float":(this.ltr?"right":"left")});
 $e.css((this.ltr?"margin-left":"margin-right"),"1em");
 $v=$("<span />");
 $v.text("−");
 show="!delete";
 break;
 case"$btnEdit":
 $e.css({"color":"#00A000",
 "font-weight":"bolder",
 "float":(this.ltr?"right":"left")});
 $e.css((this.ltr?"margin-left":"margin-right"),"1em");
 $v=$("<span />");
 $v.text("⇔");
 show="!edit";
 break;
 case"$btnNew":
 $e.css({"color":"#00A000",
 "font-size":"150%",
 "font-weight":"bolder"
 });
 $v=$("<span />");
 $v.text("+");
 show="!new";
 break;
 case"$btnRefresh":
 $e.css({"color":"#00A000",
 "font-size":"150%",
 "font-weight":"bolder",
 "float":(this.ltr?"left":"right")});
 $v=$("<span />");
 $v.text("*");
 show="!fresh";
 break;
 case"$btnSave":
 $e.css({"color":"#00A000",
 "font-weight":"bolder",
 "float":(this.ltr?"right":"left")});
 $e.attr("class",BSM.type+"-tmp");
 $v=$("<span />");
 $v.text("+");
 show="!save";
 break;}
 $e.attr("title",lang.texts[show][lang.slang]);
 $e.append($v);
 this[acquire]=$e;}
 returnthis[acquire].clone();
 };
 lang.favorite=function(){
 vars;
 if(!this.slang){
 s=mw.config.get("wgUserLanguage").toLowerCase();
 if(s.length>4){
 if(s.charCodeAt(2)===45){
 s=s.substr(0,2);}}
 s=this.user[s];
 this.slang=(s?s:"en");}
 };
 mod.flip=function(about,access,active,assign,alter){
 varstart,$btnAbort,$btnSave,$eternity,$input,$lbl,$tbody,$td,$table=gui.$table[about],$tfoot=$table.children("tfoot"),$tr=$tfoot.children("tr").children("td"),$new=$tr.eq(0).children("button"),learn=(access<0),light=(about==="cookies"),slip=BSM.type+"-tmp";
 if(learn){
 $td=$tr.eq(1);
 $td.children("button").toggle(!active);
 $td=$tr.eq(0);
 start="";
 }else{
 $tbody=$table.children("tbody");
 $tr=$tbody.children("tr").eq(access);
 $td=$tr.children("td").eq(2);
 $td.children("*").toggle(!active);
 start=$td.children("span").text();}
 if(active){
 mod.makes[about]=mod.makes[about]+1;
 $input=$("<input />");
 $input.attr({size:Math.ceil(config.max/2),type:"text"});
 $input.val(start);
 $td.append($input);
 $btnAbort=gui.furnish("$btnAbort");
 $btnAbort.click(function(){
 mod.flip(about,access,false);
 });
 $td.append($btnAbort);
 $btnSave=gui.furnish("$btnSave");
 $btnSave.click(function(){varlife;
 if(learn&&light){
 life=$eternity.val();
 }else{
 life=false;}
 mod.forward(about,assign,$input.val(),access,life);
 });
 $td.append($btnSave);
 if(learn&&light){
 $eternity=$("<input />");
 $eternity.attr({"class":slip,
 "float":"right",
 "id":slip+"-eternity",
 "type":"checkbox"});
 $lbl=$("<label />");
 $lbl.attr({"class":slip,
 "float":"right",
 "for":slip+"-eternity"});
 $lbl.text("∞");
 $td.append($lbl);
 $td.append($eternity);}
 }else{
 mod.makes[about]=mod.makes[about]-1;
 $td.children("input").remove();
 $td.children("."+slip).remove();
 if(typeofalter==="string"){
 $td.children("span").text(alter);
 $td=$tr.children("td").eq(1);
 $td.text(alter.length);}}
 $new.toggle(!(active||mod.makes[about]));
 };
 mod.flush=function(about,assign){
 switch(about){
 case"localStorage":
 case"sessionStorage":
 window[about].removeItem(assign);
 break;
 case"cookies":
 $.removeCookie(assign,{path:"/",expires:0});
 break;}
 gui.fresh(about);
 };
 mod.forward=function(about,assign,alter,access,ages){
 varopts,story,subject=assign,learn=(access<0),storage=about;
 if(learn){
 story="";
 subject=$.trim(alter);
 if(subject===""){
 storage="";
 }else{
 switch(storage){
 case"localStorage":
 case"sessionStorage":
 if(window[storage].getItem(subject)||$.inArray(assign,domfuns)>=0){
 storage="";}
 break;
 case"cookies":
 if(mw.cookie.get(subject)){
 storage="";}
 break;}}
 }else{
 story=alter;}
 if(storage!==""){
 switch(storage){
 case"localStorage":
 case"sessionStorage":
 window[storage].setItem(subject,story);
 break;
 case"cookies":
 opts={path:"/"};
 if(ages){
 opts.expires=1000;}
 mw.cookie.set(subject,story,opts);
 break;}
 mod.flip(storage,access,false,false,story);
 if(learn){
 gui.fresh(storage);}}
 };
 BSM.fiat=function(){
 mw.loader.using(["mediawiki.cookie"],function(){
 $(gui.fiat);
 });
 };
 BSM.fresh=function(about){
 varr;
 if(gui.$wrapper){
 r=gui.fresh(about);
 }else{
 BSM.fiat();
 r=fresh(about,config.max);}
 returnr;
 };
 first();}
 functionbb_nowiki(){
 functionfailure(all){
 vark,s,story=BSM+": No console";
 for(k=0;k<2;k++){
 s=Bag[k];
 story=story+"\r\n"+s+": "+figure(all[s]);}
 window.alert(story);}
 functionfancy(all){
 vark,o,s;
 window.console.info("== "+BSM+" ==");
 if(window.opera){
 throwwindow.opera;}
 if(typeofwindow.console.table==="object"){
 for(k=0;k<3;k++){
 s=Bag[k];
 o=all[s];
 window.console.info(s+" "+figure(o));
 if(o){
 window.console.table.call(window.console,o);}}
 }else{
 throw{};}}
 functionfigure(assembly){
 vari,m,n,r;
 if(assembly){
 n=assembly.length;
 m=0;
 for(i=0;i<n;i++){
 m+=assembly[i].n;}
 r="#"+n+" -> "+m;
 }else{
 r="./.";}
 returnr;}
 functionfire(){
 vari,s,env={};
 for(i=0;i<3;i++){
 s=Bag[i];
 env[s]=fresh(s,Max);}
 if(window.console){
 try{
 fancy(env);
 }catch(e){
 try{
 window.console.log(env);
 }catch(ex){
 flat(env);}}
 }else{
 failure(env);}}
 functionflat(all){
 vare,i,k,n,o,s;
 for(k=0;k<3;k++){
 s=Bag[k];
 o=all[s];
 n=o.length;
 window.console.info("=== "+s+" ===");
 for(i=0;i<n;i++){
 e=o[i];
 window.console.info(e.id+" = "+e.v);}}}
 fire();}
 functionfetch(){
 varg,i,m,n,p,r,s,v;
 if(typeofwindow.document.cookie==="string"){
 r=[];
 g=window.document.cookie.split("; ");
 n=g.length;
 for(i=0;i<n;i++){
 p=g[i].split("=");
 s=decodeURIComponent(p[0]);
 v=p[1];
 if(v){
 m=v.length;
 v=decodeURIComponent(v);
 }else{
 m=0;
 v="";}
 r.push({id:s,n:m,v:v});}
 }else{
 r=false;}
 returnr;}
 functionfind(access,allow){
 varn,r,s,store,o=window[access];
 if(typeofo==="object"){
 r=[];
 for(sino){
 store=o.getItem(s);
 if(typeofstore==="string"){
 n=store.length;
 if(n>allow){
 store=store.substr(0,allow);}
 }else{
 n=0;
 store="";}
 r.push({id:s,n:n,v:store});}
 }else{
 r=false;}
 returnr;}
 functionfresh(about,allow){
 varr,f=function(a,b){return(a.id.toLowerCase()<b.id.toLowerCase()?-1:+1);
 };
 switch(about){
 case"cookies":
 r=fetch();
 break;
 case"localStorage":
 case"sessionStorage":
 r=find(about,allow);
 break;
 default:
 r=false;}
 if(r){
 r.sort(f);}
 returnr;}
 if(typeofmw==="object"&&$){
 bb_mw();
 }else{
 bb_nowiki();}
 }(window.mediaWiki,window.jQuery));
 /// EOF</nowiki>browserStorageManager/r.js

AltStyle によって変換されたページ (->オリジナル) /