User:Ou0430/Friendly/friendlyrpp.min.js

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
if(typeof(FriendlyConfig)=='undefined'){FriendlyConfig=function(){};}
if(typeof(FriendlyConfig.summaryAd)=='undefined'){FriendlyConfig.summaryAd=" using [[WP:FRIENDLY|Friendly]]";}
if(typeof(FriendlyConfig.protectionSummaryAd)=='undefined'){FriendlyConfig.protectionSummaryAd=" using [[WP:FRIENDLY|Friendly]]";}
function friendlyrpp(){if(wgNamespaceNumber<0){return;}
if(userIsInGroup('sysop')){twAddPortletLink("javascript:friendlyrpp.callback()",wgULS("保護","保護"),"friendly-rpp",wgULS("保護頁面","保護頁面"),"");}else if(userIsInGroup('autoconfirmed')){twAddPortletLink("javascript:friendlyrpp.callback()",wgULS("保護","保護"),"friendly-rpp",wgULS("請求保護頁面","請求保護頁面"),"");}
else
{twAddPortletLink('javascript:alert("您必須達到自動確認");',wgULS("保護","保護"),"friendly-rpp",wgULS("請求保護頁面","請求保護頁面"),'');}}
addOnloadHook(friendlyrpp);friendlyrpp.callback=function friendlyrppCallback(){var Window=new SimpleWindow(600,400);Window.setTitle(wgULS("保護頁面","保護頁面"));var form=new QuickForm(friendlyrpp.callback.evaluate);if(userIsInGroup('sysop')){form.append({type:'checkbox',name:'request_only',event:friendlyrpp.callback.disabledefaults,list:[{label:wgULS("僅請求保護","僅請求保護"),value:'request_only',}]});}
form.append({type:'select',name:'category',label:wgULS("保護類型","保護類型"),event:friendlyrpp.callback.disabledefaults,list:[{label:wgULS("全保護","全保護"),list:[{label:wgULS("常規","常規"),value:'pp-protected'},{label:wgULS("爭議","爭議"),selected:wgCurRevisionId!=false,value:'pp-dispute'},{label:wgULS("破壞","破壞"),value:'pp-vandalism'},{label:wgULS("高風險模板","高風險模板"),value:'pp-template'},{label:wgULS("已封禁用戶討論頁","已封禁用戶討論頁"),value:'pp-usertalk'}]},{label:wgULS("半保護","半保護"),list:[{label:wgULS("常規","常規"),value:'pp-semi-protected'},{label:wgULS("破壞","破壞"),value:'pp-semi-vandalism'},{label:wgULS("高風險模板","高風險模板"),value:'pp-semi-template'},{label:wgULS("已封禁用戶討論頁","已封禁用戶討論頁"),value:'pp-semi-usertalk'}]},{label:'其他',list:[{label:wgULS("移動保護","移動保護"),value:'pp-move'},{label:wgULS("白紙保護","白紙保護"),selected:wgCurRevisionId==false,value:'pp-create'},{label:wgULS("解除保護","解除保護"),value:'unprotect'}]}]});var flags=form.append({type:'field',label:wgULS("選項","選項")});flags.append({type:'checkbox',list:[{name:'noinclude',label:'使用<noinclude>',checked:(wgNamespaceNumber==10),adminonly:true},{name:'small',label:wgULS("使用圖標","使用圖標"),adminonly:true},{name:'cascade',label:wgULS("連鎖保護","連鎖保護"),}]});if(userIsInGroup('sysop')){form.append({type:'select',name:'expiry',label:wgULS("期限","期限"),event:function(event){var value=event.target.value;event.target.form.small.disabled=value!='indefinite';},list:[{label:wgULS("12 小時","12 小時"),value:'12 hours'},{label:'1 天',value:'1 day'},{label:'3 天',value:'3 days'},{label:wgULS("1 周","1 週"),value:'1 week'},{label:wgULS("2 周","2 週"),value:'2 weeks'},{label:'1 月',value:'1 month'},{label:'3 月',value:'3 months'},{label:'6 月',value:'6 months'},{label:'1 年',value:'1 year'},{label:wgULS("無限期","永久"),selected:true,value:'indefinite'}]});}else{form.append({type:'select',name:'expiry',label:'期限',event:function(event){var value=event.target.value;event.target.form.small.disabled=value!='indefinite';},list:[{label:wgULS("臨時","臨時"),value:'temporary'},{label:wgULS("無限期","無限期"),value:'indefinite'},{label:'',selected:true,value:''}]});}
form.append({type:'textarea',name:'reason',label:'原因'});form.append({type:'submit'});var result=form.render();Window.setContent(result);Window.display();}
friendlyrpp.callback.disabledefaults=function friendlyrppCallbackDisableDefaults(e){var root=e.target.form;if(e.target.value=='unprotect'){root.noinclude.disabled=true;root.cascade.disabled=true;root.expiry.disabled=true;root.small.disabled=true;}else{root.noinclude.disabled=false;root.cascade.disabled=false;root.expiry.disabled=false;root.small.disabled=(root.expiry.value=='indefinite'?false:true);if(userIsInGroup('sysop')&&root.request_only.checked){root.small.disabled=true;root.noinclude.disabled=true;}}
if(/template/.test(e.target.value)){root.noinclude.checked=true;root.expiry.disabled=true;}else{root.noinclude.checked=false;}}
friendlyrpp.callback.evaluate=function friendlyrppCallbackEvaluate(e){var form=e.target;var params={noinclude:form.noinclude.checked,cascade:form.cascade.checked,small:form.small.checked,reason:form.reason.value,expiry:form.expiry.value,type:form.category.value}
if(userIsInGroup('sysop')){var request_only=form.request_only.checked;if(request_only&&params.expiry!='indefinite'){params.expiry='temporary';}}
Status.init(form);if(userIsInGroup('sysop')&&!request_only){var edit,move,tag=params.type,reason,create='';switch(tag){case'pp-dispute':edit='sysop';move='sysop';reason='全保護: 爭議';break;case'pp-vandalism':edit='sysop';move='sysop';reason='全保護: 破壞';break;case'pp-template':edit='sysop';move='sysop';reason='全保護: 高風險模板';break;case'pp-usertalk':edit='sysop';move='sysop';reason='全保護: 已封禁用戶討論頁';break;case'pp-protected':edit='sysop';move='sysop';if(params.reason){tag+='|reason='+params.reason;params.reason=undefined;}
reason='全保護';break;case'pp-semi-vandalism':edit='autoconfirmed';move='autoconfirmed';reason='半保護: 破壞';break;case'pp-semi-usertalk':edit='autoconfirmed';move='autoconfirmed';reason='半保護: 已封禁用戶討論頁';break;case'pp-semi-template':edit='autoconfirmed';move='autoconfirmed';reason='半保護: 高風險模板';break;case'pp-semi-protected':edit='autoconfirmed';move='autoconfirmed';if(params.reason){tag+='|reason='+params.reason;params.reason=undefined;}
reason='半保護';break;case'pp-move':edit='';move='sysop';reason='移動保護';break;case'pp-create':edit='';move='';create='sysop';reason='白紙保護';break;case'unprotect':default:edit='';move='';reason='解除保護';break;}
if(params.reason){reason+=','+params.reason;}
params.reason=reason;params.tag=tag;params.edit=edit;params.move=move;params.create=create;var query={'title':wgPageName,'action':'protect'};Wikipedia.actionCompleted.redirect=query['title'];Wikipedia.actionCompleted.notice="完成";var wikipedia_wiki=new Wikipedia.wiki('保護頁面',query,friendlyrpp.callbacks.sysop.protectingPage);wikipedia_wiki.params=params;wikipedia_wiki.get();}else{var typename,reason;switch(params.type){case'pp-dispute':case'pp-vandalism':case'pp-template':case'pp-usertalk':case'pp-protected':typename='全保護';break;case'pp-semi-vandalism':case'pp-semi-usertalk':case'pp-semi-template':case'pp-semi-spambot':case'pp-semi-protected':typename='半保護';break;case'pp-move':typename='移動保護';break;case'pp-create':typename='白紙保護';break;case'unprotect':default:typename='解除保護';break;}
switch(params.type){case'pp-dispute':reason=':爭議';break;case'pp-vandalism':case'pp-semi-vandalism':reason=':破壞';break;case'pp-template':case'pp-semi-template':reason=':高風險模板';break;case'pp-usertalk':case'pp-semi-usertalk':reason=':已封禁用戶討論頁';break;case'pp-protected':case'pp-semi-protected':case'pp-move':case'pp-create':case'unprotect':default:reason='';break;}
if(params.reason){reason+=',原因:'+params.reason;}
params.reason=reason;params.typename=typename;var query={'title':'Wikipedia:請求保護頁面','action':'submit'};Wikipedia.actionCompleted.redirect=query['title'];Wikipedia.actionCompleted.notice="請求完成,重定向到請求頁";var wikipedia_wiki=new Wikipedia.wiki('請求保護頁面',query,friendlyrpp.callbacks.user);wikipedia_wiki.params=params;wikipedia_wiki.get();}}
friendlyrpp.callbacks={sysop:{taggingPage:function(self){var form=self.responseXML.getElementById('editform');var oldtag_re=/\s*(?:<noinclude>)?\s*\{\{\s*(pp-[^{}]*?|protected|(?:t|v|s|p-|usertalk-v|usertalk-s|sb|move)protected(?:2)?|protected template|privacy protection)\s*?\}\}\s*(?:<\/noinclude>)?\s*/gi;var text=form.wpTextbox1.value;text=text.replace(oldtag_re,'');if(self.params.type!='unprotect'&&self.params.expiry!='indefinite'){self.params.tag+='|expiry={{'+'subst:#time:c|+'+self.params.expiry+'}}';}
if(self.params.type!='unprotect'&&self.params.small){self.params.tag+='|small=yes';}
var summary;if(self.params.type=='unprotect'){summary='移除保護模板'+FriendlyConfig.summaryAd;}else{if(self.params.noinclude){text="<noinclude>\{\{"+self.params.tag+"\}\}</noinclude>"+text;}else{text="\{\{"+self.params.tag+"\}\}\n"+text;}
summary="加入\{\{"+self.params.tag+"\}\}"+FriendlyConfig.summaryAd;}
var postData={'wpMinoredit':form.wpMinoredit.checked?'':undefined,'wpWatchthis':form.wpWatchthis.checked?'':undefined,'wpStarttime':form.wpStarttime.value,'wpEdittime':form.wpEdittime.value,'wpAutoSummary':form.wpAutoSummary.value,'wpEditToken':form.wpEditToken.value,'wpSummary':summary,'wpTextbox1':text};self.post(postData);},protectingPage:function(self){var form=self.responseXML.getElementById('mw-Protect-Form');var postData;if(self.params.type=='pp-move'){postData={'wpEditToken':form.wpEditToken.value,'mwProtect-level-move':self.params.move,'wpProtectExpirySelection-move':self.params.expiry!='indefinite'?'othertime':'indefinite','mwProtect-expiry-move':self.params.expiry!='indefinite'?self.params.expiry:undefined,'mwProtect-cascade':self.params.cascade?'':undefined,'mwProtectWatch':form.mwProtectWatch.checked?'':undefined,'wpProtectReasonSelection':'other','mwProtect-reason':self.params.reason+FriendlyConfig.protectionSummaryAd};}else if(self.params.type=='pp-create'){postData={'wpEditToken':form.wpEditToken.value,'mwProtect-level-create':self.params.create,'wpProtectExpirySelection-create':self.params.expiry!='indefinite'?'othertime':'indefinite','mwProtect-expiry-create':self.params.expiry!='indefinite'?self.params.expiry:undefined,'mwProtect-cascade':self.params.cascade?'':undefined,'mwProtectWatch':form.mwProtectWatch.checked?'':undefined,'wpProtectReasonSelection':'other','mwProtect-reason':self.params.reason+FriendlyConfig.protectionSummaryAd};}else if(self.params.type=='unprotect'){postData={'wpEditToken':form.wpEditToken.value,'mwProtect-level-edit':self.params.edit,'wpProtectExpirySelection-edit':'indefinite','mwProtect-level-move':self.params.move,'wpProtectExpirySelection-move':'indefinite','mwProtect-level-create':self.params.create,'wpProtectExpirySelection-create':'indefinite','mwProtect-cascade':self.params.cascade?'':undefined,'mwProtectWatch':form.mwProtectWatch.checked?'':undefined,'wpProtectReasonSelection':'other','mwProtect-reason':self.params.reason+FriendlyConfig.protectionSummaryAd};}else{postData={'wpEditToken':form.wpEditToken.value,'mwProtect-level-edit':self.params.edit,'wpProtectExpirySelection-edit':self.params.expiry!='indefinite'?'othertime':'indefinite','mwProtect-expiry-edit':self.params.expiry!='indefinite'?self.params.expiry:undefined,'mwProtect-level-move':self.params.move,'wpProtectExpirySelection-move':self.params.expiry!='indefinite'?'othertime':'indefinite','mwProtect-expiry-move':self.params.expiry!='indefinite'?self.params.expiry:undefined,'mwProtect-cascade':self.params.cascade?'':undefined,'mwProtectWatch':form.mwProtectWatch.checked?'':undefined,'wpProtectReasonSelection':'other','mwProtect-reason':self.params.reason+FriendlyConfig.protectionSummaryAd};}
self.post(postData);var query={'title':wgPageName,'action':'submit'};if(self.params.create==''){var wikipedia_wiki=new Wikipedia.wiki('標記頁面',query,friendlyrpp.callbacks.sysop.taggingPage);wikipedia_wiki.params=self.params;wikipedia_wiki.get();}}},user:function(self){var form=self.responseXML.getElementById('editform');var text=form.wpTextbox1.value;var rppRe=new RegExp('===\\s*'+RegExp.escape(wgPageName,true)+'\\s*===','m');var tag=rppRe.exec(text);if(tag){self.statelem.warn([htmlNode('strong',tag[0]),"已經存在"])
return false;}
var newtag='=== [['+wgPageName+']] ==='+"\n";if((new RegExp('^'+RegExp.escape(newtag).replace(/\s+/g,'\\s*'),'m')).test(text)){self.statelem.error('已有請求保護項目,取消');return;}
newtag+='* ';var words=[];switch(self.params.expiry){case'temporary':words.push("臨時");break;case'indefinite':words.push("永久");break;}
if(self.params.cascade){words.push("連鎖");}
words.push(self.params.typename);newtag+=words.join('')+(self.params.reason!=''?self.params.reason:'')+"--\~\~\~\~";if(self.params.type=='unprotect'){var str='<span id="friendly-rpp-u" />';}else{var str='<span id="friendly-rpp" />';}
var originalTextLength=text.length;text=text.replace(str,str+"\n"+newtag);if(text.length==originalTextLength)
{self.statelem.error('無法找到位點標識符,取消');return;}
var postData={'wpMinoredit':undefined,'wpWatchthis':form.wpWatchthis.checked?'':undefined,'wpStarttime':form.wpStarttime.value,'wpEdittime':form.wpEdittime.value,'wpAutoSummary':form.wpAutoSummary.value,'wpEditToken':form.wpEditToken.value,'wpSection':'','wpSummary':"請求"+self.params.typename+',[['+wgPageName.replace(/_/g,' ')+']]'+FriendlyConfig.summaryAd,'wpTextbox1':text};self.post(postData);}}