User:PerfektesChaos/js/remindErrorMessages/r.js

/// User:PerfektesChaos/js/remindErrorMessages/r.js /// 2022-07-01 PerfektesChaos@de.wikipedia /// Fingerprint:#0#31E7A307# /// @license:CC-by-sa/4.0 GPLv3 /// (function(mw,$){ "use strict"; var Version=2.6,Sign="remindErrorMessages",Shop="w:en:User:PerfektesChaos/js/",Selectors=[".mw-error",".mw-warning",".error",".warning",".errorbox",".warningbox",".cm-error","div[role=\"alert\"]"],Submit=".errorbox",Category={state:".mw-hidden-catlinks",submit:".hiddencats",track:["duplicate-args-category","expensive-parserfunction-category","graph-broken-category","kartographer-broken-category","math-tracking-category-error","math-tracking-category-render-error","node-count-exceeded-category","post-expand-template-argument-category","post-expand-template-inclusion-category","restricted-displaytitle-ignored","score-error-category","syntaxhighlight-error-category","templatestyles-page-error-category"],$hidden:false},CodeMirr={live:false},Content={$contentSub:false},Repo={minutes:1440},This={complaints:false,config:false,css:{bark:{"background-color":"#FFFF00", "color":"#FF0000", "font-size":"120%", "font-weight":"bold"}, box:{"border-color":"#FF0000", "border-style":"solid", "border-width":"3px", "font-size":"1rem", "font-style":"normal", "font-weight":"normal", "line-height":"1.3rem", "margin-top":"0.5rem", "margin-bottom":"0.5rem", "padding":"5px"}, preview:{"background-color":"#FFDDDD", "border-color":"#FF0000", "border-style":"dashed", "border-width":"2px", "font-size":"0.8rem", "line-height":"1.5rem", "margin-top":"1rem", "margin-bottom":"1.5rem", "padding-top":"0.3rem", "padding-bottom":"0.3rem", "padding-left":"1rem", "padding-right":"1rem"}, warn:{"background-color":"#FF0000", "color":"#FFFF00", "font-size":"150%", "font-weight":"1000", "margin-left":"0.5em", "margin-right":"0.5em", "padding-left":"0.5em", "padding-right":"0.5em", "padding-top":"4px", "padding-bottom":"4px"} },options:{categories:"object",hiddencats:"boolean",maintCats:"number"},opt:false,shrink:"-invisible",suppress:"-noContent",unselect:["#editpage-copywarn-declaration","#mw-anon-preview-warning"],warnDrop:[".mw-warning-with-logexcerpt"] }; Category.factory=function{ if(typeof Category.track==="object"&&Category.track&&typeof Category.track.length==="number"){ if(typeof Category.Api==="undefined"){ Category.Api=new mw.Api;} Category.Api.loadMessagesIfMissing(Category.track).done(Category.feed).fail(Category.fault); }else{ Category.feed;} }; Category.fault=function(jqXHR,textStatus,errorThrown){ var scream; if(textStatus){ switch(typeof textStatus){ case "object": if(typeof textStatus.textStatus==="string"){ scream=textStatus.textStatus; }else{ scream="";} if(typeof textStatus.exception==="string"&&textStatus.exception){ scream=scream+" ("+textStatus.exception+")";} break; case "string": scream=textStatus; break;}} if(errorThrown){ if(scream){ scream=scream+" -- Error: ";} scream=scream+errorThrown;} if(!scream){ scream="???";} if(typeof window.console==="object"&&typeof window.console.log==="function"){ window.console.log(Sign+" * "+scream); if(typeof textStatus==="object"&&textStatus&&typeof window.console.dir==="function"){ window.console.dir(textStatus);}} }; Category.feed=function(answer){ var i,s; Category.tracking=false; Category.parsing=false; if(answer){ for(i=0;i<Category.track.length;i++){ s=Category.track[i]; if(mw.messages.exists(s)){ s=mw.message(s).plain; if(s.indexOf("\n")<0&&s.indexOf("} if(!Category.$hidden){ Category.fire; Content.follow;} Repo.flush; }; Category.fetch=function{ var repo=Repo.first,load; if(!repo||typeof repo.titles==="undefined"||typeof repo.parsing==="undefined"){ load=true; }else{ Category.titles=repo.titles; Category.parsing=repo.parsing; Category.fire; Content.follow; load=!Repo.fresh;} if(load){ mw.loader.using(["mediawiki.api"],Category.factory);} }; Category.filter=function($a){ var c,i,re,r,seek=$a.text; if(typeof Category.titles==="object"&&Category.titles&&typeof Category.titles[seek]==="boolean"){ r=true; }else if(typeof Category.parsing==="object"&&Category.parsing&&typeof Category.parsing.length==="number"){ re=new RegExp("\\b"+seek+"\\b"); for(i=0;i<Category.parsing.length;i++){ if(re.test(Category.parsing[i])){ r=true; break;}}} if(!r&&Category.user){ for(i=0;i<Category.user.length;i++){ c=Category.user[i]; switch(typeof c){ case "string": r=(c===seek); break; case "object": case "function": r=c.test(seek); break;} if(r){ break;}}} return(r?$a.clone:false); }; Category.fire=function{ var $wrap=$(Category.state),i,k,less,s,$div,$e,$li,$list,$ul; if($wrap.length){ $e=$wrap.find("ul"); if($e.length){ $list=$e; $e=$wrap.contents; if($e.get(0).nodeType===3){ $div=$(" "); $div.text($e.eq(0).text.trim);}} }else{ $wrap=$(Category.submit); if($wrap.length){ $e=$wrap.find("p"); if($e.length){ $div=$(" "); $div.text($e.text.trim);} $list=$wrap.find("ul"); less=true;}} if($div){ $list=$list.children; for(i=0;i<$list.length;i++){ $e=$list.eq(i).find("a"); if($e.length){ if(Category.limit){ $e=Category.filter($e); }else{ $e=$e.clone;} if($e){ $e.attr({target:"maintCats"}); if(less){ s=$e.text.trim; k=s.indexOf(":"); if(k>0){ s=s.substr(k+1); $e.text(s);}} $li=$(""); $li.append($e); $ul=$ul||$(""); $ul.append($li);}}} if($ul){ Category.$hidden=$(" "); Category.$hidden.append($div); Category.$hidden.append($ul);}} }; CodeMirr.fiat=function{ var i,learnt,$e,$errors,$li; if(CodeMirr.cm){ $errors=CodeMirr.$wrapper.find(".cm-error"); if($errors.length){ if(!CodeMirr.complaints){ CodeMirr.complaints=[]; CodeMirr.many=0;} for(i=0;i<$errors.length;i++){ $e=$errors.eq(i); if(!$e.attr("id")){ learnt=true; CodeMirr.many++; $e.attr("id","cm-error-"+CodeMirr.many);}} if(learnt||$errors.length!==CodeMirr.complaints.length){ CodeMirr.complaints=[]; for(i=0;i<$errors.length;i++){ $e=$errors.eq(i); $li=$(""); $li.attr("id",$e.attr("id")); CodeMirr.complaints.push($li);}}}} }; CodeMirr.finish=function{ CodeMirr.cm=null; }; CodeMirr.fire=function(application){ CodeMirr.cm=application; if(!CodeMirr.live){ CodeMirr.live=true; mw.hook("CodeMirr.disabled").add(CodeMirr.finish); CodeMirr.complaints=false;} CodeMirr.$wrapper=$(CodeMirr.cm.getWrapperElement); CodeMirr.cm.on("change",CodeMirr.fiat); }; CodeMirr.first=function{ var r,uo; if(!CodeMirr.cm&&typeof window.CodeMirror==="function"&&typeof window.CodeMirr.doc==="object"){ CodeMirr.cm=window.CodeMirror;} if(CodeMirr.cm){ uo=mw.user.options.get("usecodemirror"); if(typeof uo==="number"&&uo>0){ r=CodeMirr.cm;}} return r; }; Content.fine=function{ if(This.lapsus){ This.$box.hide; if(typeof This.$barWarn==="object"){ This.$barWarn.hide;} This.lapsus=false;} }; Content.flip=function(as,alert){ var $e=$(alert),show,sign,$a; if(!$e.hasClass(This.signed)&&!$e.hasClass(This.suppress)){ sign=$e.attr("id"); if(!sign){ sign=Sign+"_"+as; $e.attr({id:sign});} $e.addClass(This.signed).css(This.css.bark); show=$e.text.replace(/^(\s|\xA0|&#160;)+/,"") .replace(/(\s|\xA0|&#160;)+$/,""); if(!show){ show="["+as+"]"; $e.text("ERROR"+show);} $e.find("a").css({"text-decoration":"underline"}); $a=$("").attr({href:"#"+sign}).text(show); This.complaints.push($("").append($a)); $e.parent.show; $e.find(Content.selector).addClass(This.signed);} return true; }; Content.flop=function($alerts){ var sign=Sign+"_box",swift="#"+sign,view={"display":null, "visibility":"visible"}, $box=$(swift),i,$next; if($alerts||Category.$hidden||$box.length){ if($box.length){ This.$ul.empty; This.$box=$box; This.$box.show; }else{ This.$box=$(" "); This.$box.attr("id",sign); if(This.opts){ if(typeof This.opts.barkCSS==="object"){ $.extend(This.css.bark,This.opts.barkCSS);} if(typeof This.opts.boxCSS==="object"){ $.extend(This.css.box,This.opts.boxCSS);}} This.$box.css(This.css.box); This.$ul=$(""); This.$box.append(This.$ul); Content.$content.prepend(This.$box);} }else{ $(Submit).eq(0).attr({id:sign});} if(This.action==="submit"){ if(typeof This.$barWarn==="object"){ This.$barWarn.show; }else{ $next=$("#wpPreview"); if($next.length){ This.$barWarn=$(""); This.$barWarn.attr({href:swift,id:Sign+"_attention"}); if(This.opts&&typeof This.opts.barCSS==="object"){ $.extend(This.css.warn,This.opts.barCSS);} This.$barWarn.css(This.css.warn); This.$barWarn.text("!"); $next.before(This.$barWarn);}}} if($alerts){ This.complaints=[]; $alerts.each(Content.flip); for(i=0;i<Selectors.length;i++){ view.display="block"; $("div"+Selectors[i]).css(view); view.display="inline"; $("span"+Selectors[i]).css(view);} $(This.shrink).empty;} if(Category.$hidden){ This.complaints=This.complaints||[]; This.complaints.push(Category.$hidden);} This.lapsus=(This.complaints.length); if(This.lapsus){ for(i=0;i<This.complaints.length;i++){ This.$ul.append(This.complaints[i]);}} }; Content.follow=function{ mw.hook("wikipage.content").add(Content.fresh); mw.hook("error.message").add(Content.fresh); mw.hook(Sign+".refresh").add(Content.fresh); }; Content.fresh=function($area){ var $warnings=$(Content.selector).not(Content.unselect),i,suppress,$old,$paras,$preview,$warningbox; if(!Content.$contentSub){ if(Content.$contentSub===false){ Content.$contentSub=$("#contentSub"); if(Content.$contentSub.length){ Content.$content=Content.$contentSub; }else{ Content.$contentSub=null;}} if(!Content.$contentSub){ if($area){ Content.$content=$area; }else{ Content.$content=$("#mw-content-text");}}} if($warnings.length){ $warningbox=$(".warningbox"); if($warningbox.length){ $preview=$(".previewnote .warningbox"); if($preview.length){ if(This.opts&&typeof This.opts.previewCSS==="object"){ $.extend(This.css.preview,This.opts.previewCSS);} $preview.removeClass("warningbox "+This.signed).css(This.css.preview); $warnings=$warnings.not($preview.get(0)); $paras=$preview.find("p"); if($paras.length>1){ $preview=$paras.eq(0); $paras=$paras.not($preview); $paras.each(function{ var $p=$(this); $warnings=$warnings.add($p); $p.detach; });}} $old=$warningbox.filter(".mw-revision"); if($old.length){ $old.addClass(This.suppress); $warnings=$warnings.not($old); $old=$area.children.eq(0).filter(".warningbox"); if($old.length){ $old.addClass(This.suppress); $warnings=$warnings.not($old);}} if(This.warnDrop.length){ for(i=0;i<This.warnDrop.length;i++){ if(i){ suppress=suppress+","; }else{ suppress="";} suppress=suppress+This.warnDrop[i];} $old=$warningbox.filter(suppress); if($old.length){ $old.addClass(This.suppress); $warnings=$warnings.not($old);}}}} if($warnings.length){ Content.flop($warnings); }else if($(Submit).length||Category.$hidden){ Content.flop; }else{ Content.fine;} }; Repo.first=function{ var stored=mw.storage.get(Sign); if(stored){ try{ Repo.repo=JSON.parse(stored); }catch(ex){ Repo.repo=false;}} return Repo.repo; }; Repo.flush=function{ var date=new Date,ms=date.getTime,luck; Repo.repo={minutes:Math.floor(ms*0.0000166666667)}; if(typeof Category.titles==="object"){ Repo.repo.titles=Category.titles; }else{ Repo.repo.titles=false;} if(typeof Category.parsing==="object"){ Repo.repo.parsing=Category.parsing; }else{ Repo.repo.parsing=false;} luck=mw.storage.set(Sign,JSON.stringify(Repo.repo)); if(!luck){ Category.fault(false,"local storage dump");} }; Repo.fresh=function{ var date,m,r; if(typeof Repo.repo==="object"&&Repo.repo&&typeof Repo.repo.minutes==="number"&&typeof Repo.minutes==="number"){ date=new Date; m=date.getTime*0.0000166666667; r=(m<Repo.repo.minutes+Repo.minutes);} return r; }; function feature(all,apply,about){ if(typeof all[apply]===about&&(all[apply]||all[apply]===false)){ This.opts[apply]=all[apply];}} function features(assign){ var s; if(typeof assign==="object"&&assign){ This.opts=This.opts||{}; for(s in This.css){ This.options[s+"CSS"]="object";} for(s in assign){ feature(assign,s,This.options[s]);}}} function fiat{ var i,v; if(This.namespaceNumber!==14){ This.opts=This.opts||{}; if(typeof This.opts.maintCats!=="number"&&typeof This.opts.hiddencats==="boolean"){ if(This.opts.hiddencats){ This.opts.maintCats=2; }else{ This.opts.maintCats=0;}} if(typeof This.opts.categories==="object"&&typeof This.opts.categories.length==="number"&&This.opts.categories.length>=1){ Category.user=[]; for(i=0;i=1){ Category.limit=(This.opts.maintCats<2);} if(Category.limit){ mw.loader.using(["mediawiki.storage"],Category.fetch); }else{ if(This.opts.maintCats>=2){ Category.fire;} Content.follow;} }else{ Content.follow;}} function fire{ var card={type:Sign,vsn:Version,doc:""+Shop+Sign+""}; This.lapsus=false; if(typeof mw.libs[Sign]==="object"&&mw.libs[Sign]){ This.config=mw.libs[Sign]; if(This.config){ This.config.vsn=card.vsn; This.config.doc=card.doc; if(typeof This.config.options==="object"&&This.config.options){ features(This.config.options);}}} This.complaints=[]; $(fiat); mw.hook(Sign).fire(card);} function first{ var signature="ext.gadget."+Sign,env,i,launch,rls; if(mw.loader.getState(signature)!=="ready"){ rls={}; rls[signature]="ready"; mw.loader.state(rls); mw.hook(Sign+"-options").add(features); env=mw.config.get(["wgAction","wgNamespaceNumber"]); switch(env.wgAction){ case "view": launch=(env.wgNamespaceNumber>=0); break; case "submit": case "parsermigration-edit": launch=true; break;} if(launch){ This.action=env.wgAction; This.namespaceNumber=env.wgNamespaceNumber; for(i=0;i<Selectors.length;i++){ if(i){ Content.selector=Content.selector+","; }else{ Content.selector="";} Content.selector=Content.selector+Selectors[i];} for(i=0;i<This.unselect.length;i++){ if(i){ Content.unselect=Content.unselect+","; }else{ Content.unselect="";} Content.unselect=Content.unselect+This.unselect[i];} This.signed=Sign+"_msg"; This.shrink="."+Sign+This.shrink; This.suppress=Sign+This.suppress; mw.loader.using(["user"],fire);}}} first; }(window.mediaWiki,window.jQuery)); /// EOF remindErrorMessages/r.js