User:PerfektesChaos/js/loadResourceFile/r.js

From Wikipedia, the free encyclopedia
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/loadResourceFile/r.js
/// 2018-09-03 PerfektesChaos@de.wikipedia
/// Fingerprint:#0#B32DF193#
/// @license GPL [//www.mediawiki.org/w/COPYING](+GFDL,LGPL,CC-BY-SA)
///<nowiki>
(function(mw,$){
"use strict";
var VSN=1.6,LRF="loadResourceFile",basics,config,gui,lang,prego;
if(typeof mw.libs[LRF]!=="object"||!mw.libs[LRF]){
mw.libs[LRF]={};}
mw.libs[LRF].type=LRF;
LRF=mw.libs[LRF];
if(LRF.loaded){
return;}
basics={};
config={support:"User:PerfektesChaos/js/"+LRF.type};
gui={};
lang={};
LRF.doc="[[w:en:"+config.support+"]]";
LRF.vsn=VSN;
lang.texts={
"show":{"en":"Load CSS/JS file",
"de":"Lade CSS/JS-Datei"},
"sucks":{"en":"Local folder not yet defined",
"de":"Lokales Verzeichnis noch nicht definiert"},
"^show":{"en":"Load-Resource-File",
"de":"Load-Resource-File"},
"^suffix":{"en":"&#8211; Load local resource (CSS, JavaScript) files into current page.",
"de":"&#8211; Lade lokale Dateien mit CSS oder JavaScript in die aktuelle Seite"},
"^^charset":{"en":"Character encoding",
"de":"Zeichenkodierung"},
"^^charset+":{"en":"utf-8 (default), iso-8859-1",
"de":"utf-8 (Vorgabe), iso-8859-1"},
"^^path":{"en":"Local directory path",
"de":"Lokales Verzeichnis"},
"^^path+":{"en":"<div>Store on Wiki server<br />"+" (invisible for other users)</div>",
"de":"<div>Speichern auf dem Wiki-Server<br /> (unsichtbar für andere Benutzer)</div>"},
"^^portlet":{"en":"Create portlet link",
"de":"Portlet-Link einfügen"},
"^^portlet+":{"en":"<div style='margin-left:3em'>"+"Space sparated list"+" of canonical specialpage names<br />"+"Empty list:"+" all supported pages<br />"+"<code>0</code> &#8211;"+" Do not create portlet link.</>",
"de":"<div style='margin-left:3em'>Leerzeichen-getrennte Liste von kanonischen Namen<br />Leere Liste: Immer Portlet-Link<br /><code>0</code> &#8211; keine Portlet-Links</div>"}
};
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"
};
function bbLoadFile(app,doc,$){
var later=false;
function file(absolute,accept,asyncInhibit){
var o,s=absolute.toLowerCase();
if($){
if(s.slice(-3)===".js"){
o={"src":"file:/"+absolute,
"type":"text/javascript"
};
if(accept){
o.charset=accept;}
if(!(later||asyncInhibit)){
o.async="async";}
s=(later?"body":"head");
$(s).append($("<script />",o));
}else if(s.slice(-4)===".css"){
o={"href":"file:/"+absolute,
"rel":"stylesheet",
"type":"text/css"
};
if(accept){
o.charset=accept;}
$("head").append($("<link />",o));}
}else if(doc){
}}
app.files=function(apply,access,accept){
var i,s=typeof apply,set,start;
if(typeof access==="string"){
start=access;
}else if(this.storage){
start=this.storage;
}else{
start="/";}
if(start.search(/\/$/)<0){
start=start+"/";}
if(typeof accept==="string"){
set=accept;
}else if(this.set){
set=this.set;
}else{
set=false;}
if(s==="string"){
file(start+apply,set);
}else if(s==="object"){
if($.isArray(apply)){
for(i=0;i<apply.length;i++){
s=apply[i];
if(typeof s==="string"){
file(start+s,set);}}}}
};
function finished(){
later=true;}
app.folder=function(access){
if(typeof access==="string"){
this.storage=access;}
};
app.font=function(accept){
if(typeof accept==="string"){
this.set=accept;}
};
$(finished);
app.low=true;}
function fire(){
var rls;
if(!basics.low){
bbLoadFile(basics,null,$);}
if(typeof LRF.set==="string"){
config.foreign(LRF.set);}
config.fetch();
gui.portlet=LRF.portlet;
if(gui.portlet===undefined||gui.portlet===true){
gui.portlet={};}
if(typeof config.lazy==="boolean"&&!config.lazy){
gui.portlet=false;}
if(gui.portlet&&typeof gui.portlet==="object"){
$(gui.factory);}
if(mw.config.get("wgCanonicalSpecialPageName")==="Gadgets"&&prego){
config.form();}
rls={};
rls["ext.gadget."+LRF.type]="ready";
mw.loader.state(rls);
if(typeof LRF.afterLoad==="function"){
LRF.afterLoad();}}
config.favorite=function(){
var r;
lang.favorite();
switch(lang.slang){
case "de":
r="de.wikipedia.org";
break;
default:
r="en.wikipedia.org";}
return "//"+r+"/wiki/"+this.support;
};
config.fetch=function(){
var vals;
prego=mw.libs[this.supply];
if(prego){
vals=prego.fetch(LRF.type);
if(vals&&typeof vals==="object"){
if(typeof vals.charset==="string"){
vals.charset=$.trim(vals.charset);
if(vals.charset!==""){
config.foreign(vals.charset);}}
if(typeof vals.path==="string"){
this.stored=$.trim(vals.path);
if(this.stored===""){
this.stored=false;}}
if(typeof vals.portlet==="boolean"){
config.lazy=vals.portlet;}}}
};
config.filled=function(assigned){
if(typeof assigned==="object"&&assigned){
if(typeof assigned.path==="string"){
config.folder(assigned.path);}}
};
config.filter=function(access){
var r=false;
if(typeof access==="string"){
r=$.trim(access).replace(/\\/g,"/");
if(r===""){
r=false;}}
if(!r){
r=this.folder();}
return r;
};
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=604805&ctype=text/javascript","text/javascript");}
};
config.firing=function(){
mw.hook(config.supply+".ready").add(fire);
};
config.folder=function(assign){
var s,sign=LRF.type+".store",r="";
if(typeof assign==="string"){
r=$.trim(assign).replace(/\\/g,"/");
if(typeof window.localStorage==="object"){
if(r===""){
window.localStorage.removeItem(sign);
this.stored=false;
}else{
window.localStorage.setItem(sign,r);
this.stored=r;}}
}else{
if(typeof LRF.store==="string"){
r=LRF.store;}
if(typeof this.stored==="string"){
r=this.stored;}
r=r.replace(/\\/g,"/");
if(typeof window.localStorage==="object"){
s=window.localStorage.getItem(sign);
if(typeof s==="string"){
r=$.trim(s).replace(/\\/g,"/");}
window.localStorage.setItem(sign,r);}}
this.storage=r;
return r;
};
config.foreign=function(assign){
var r=config.set;
if(typeof assign==="string"){
config.set=$.trim(assign);}
return(r?r:false);
};
config.form=function(){
var dialog,sl,text=lang.texts;
lang.favorite();
sl=lang.slang;
this.fetch();
dialog={script:LRF.type,show:text["^show"][sl],support:this.favorite(),suffix:text["^suffix"][sl],filled:this.filled,opts:[{signature:"path",type:"text",show:text["^^path"][sl],suffix:text["^^path+"][sl],val:this.folder()},{signature:"charset",type:"text",show:text["^^charset"][sl],suffix:text["^^charset+"][sl],val:(this.set?this.set:"")},{signature:"portlet",type:"checkbox",show:text["^^portlet"][sl],suffix:text["^^portlet+"][sl],val:(gui.portlet?true:false)}
]};
prego.form(dialog);
};
gui.factory=function(){
var dom,$link,s,show,signal,scope="p-tb",shortcut=null,stick=null;
lang.favorite();
show=lang.texts.show[lang.slang];
s=gui.portlet.scope;
if(typeof s==="string"){
s=$.trim(s);
if(s.length){
scope=s;}}
s=gui.portlet.shortcut;
if(typeof s==="string"){
s=$.trim(s);
if(s.length){
shortcut=s;}}
s=gui.portlet.show;
if(typeof s==="string"){
s=$.trim(s);
if(s.length){
show=s;}}
s=gui.portlet.stick;
if(typeof s==="string"){
s=$.trim(s);
if(s.length){
stick=s;}}
s=config.foreign();
signal=show+"\n"+config.folder()+"\n"+(s?s+"\n":"")+LRF.type+" "+LRF.vsn;
dom=mw.util.addPortletLink(scope,"#",show,"t-"+LRF.type,signal,shortcut,stick);
$link=$(dom).find("a");
$link.click(LRF.find);
};
gui.file=function(access){
if(!this.$input){
this.$input=$("<input />",{type:"file",id:LRF.type,accept:".css,.js",multiple:true
});
this.$input.hide();}
$("#"+LRF.type).remove();
this.$file=this.$input.clone();
this.$file.change(this.found);
$("body").append(this.$file);
this.storage=access;
this.$file=this.$file[0];
this.$file.click();
};
gui.found=function(){
var collection,entry,s,bag=gui.$file.files;
if(bag){
collection=[];
for(s in bag){
entry=bag[s];
if(typeof entry.name==="string"){
collection.push(entry.name);}}
basics.files(collection,gui.storage,config.set);}
gui.$file.remove();
};
lang.favorite=function(){
var s;
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");}
};
LRF.find=function(access){
var storage=config.filter(access);
if(storage){
gui.file(storage);
}else{
lang.favorite();
window.alert(lang.texts.sucks[lang.slang]);}
};
LRF.folder=function(access){
return config.folder(access);
};
LRF.loadFiles=function(apply,access,accept){
var set,storage=config.filter(access);
if(storage){
switch(typeof accept){
case "boolean":
case "string":
set=accept;
break;
default:
set=config.foreign();}
basics.files(apply,storage,set);
}else{
lang.favorite();
window.alert(lang.texts.sucks[lang.slang]);}
};
LRF.setCharset=function(accept){
config.foreign((accept?accept:""));
};
LRF.loaded=true;
config.fire();
mw.loader.using(["user","user.options","mediawiki.util"],config.firing);
}(window.mediaWiki,window.jQuery));
/// EOF</nowiki>loadResourceFile/r.js