User:SD0001/easy-merge.js
Appearance
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 code will be executed when previewing this page.
This user script seems to have a documentation page at User:SD0001/easy-merge.
/* jshint maxerr: 999 */ /* <nowiki> */ $.when( mw.loader.using(['mediawiki.Title','ext.gadget.morebits']), $.ready ).then(function(){ // hide on special pages and talk pages if(mw.config.get('wgNamespaceNumber')<0||mw.config.get('wgNamespaceNumber')%2===1||!mw.config.get('wgRevisionId')){ return; } varadvert=' ([[User:SD0001/easy-merge|easy-merge]])'; varmenu=mw.util.addPortletLink('p-cactions','#','easy-merge','p-easy-merge','Redirect to another article and add merge templates to talk pages'); menu.addEventListener('click',callback); functioncallback(e){ if(e)e.preventDefault(); varWindow=newMorebits.simpleWindow(600,500); Window.setScriptName('easy-merge'); Window.setTitle("Redirect and add merge templates to talk pages"); Window.addFooterLink('Merging articles','Wikipedia:Merging'); varform=newMorebits.quickForm(evaluate); form.append({ type:'input', label:'Target page: ', name:'target', value:(mw.config.get('wgIsRedirect')&&$('div.redirectMsg a').length)?$('div.redirectMsg a').text():'' }); form.append({ type:'input',// changed to 'date' after render name:'date', label:'Date of merger: ', value:newDate().toISOString().slice(0,10), tooltip:'This date is used in the {{merged-from}} and {{merged-to}} templates' }); form.append({ type:'checkbox', name:'actions', list:[ { label:'Redirect this page to the target page', name:'redirect', checked:!mw.config.get('wgIsRedirect'), tooltip:'Replace contents with redirect to target page. {{R from merge}} will be applied to the redirect. '+ '{{R to section}} will also be applied if applicable', subgroup:{ type:'input', label:'Edit summary: ', value:'Merged content to [[###]], redirecting', name:'summary', tooltip:'### will be automatically replaced by name of target page', size:'60px' } }, { label:'Remove merge tag from target page (if it exists)', name:'removemerge', checked:true }, { label:'Add {{merged-from}} to talk page of target page', name:'addmergedfrom', checked:true }, { label:'Add {{merged-to}} to talk page of this page', name:'addmergedto', checked:true }, { label:'Adjust WikiProject banners and templates', tooltip:'Class and importance are removed from WikiProject banners. Any media needed templates are also removed', name:'adjusttalktemplates', checked:true }, { label:'Retain categories on redirect', tooltip:'Do not remove the categories on the page while redirecting', name:'retaincats', checked:false } ] }); form.append({type:'submit',label:'Submit'}); varresult=form.render(); result.date.type='date'; result.date.required=true; Window.setContent(result); Window.display(); } functionevaluate(e){ varform=e.target; varparams={}; params.target=form.target.value; if(!params.target.trim()){ alert('Please enter the target page of merge'); return; } params.current=Morebits.pageNameNorm; params.redirect=form.redirect.checked; params.summary=form['redirect.summary']&&form['redirect.summary'].value.replace('###',params.target); params.removemerge=form.removemerge.checked; params.addmergedfrom=form.addmergedfrom.checked; params.addmergedto=form.addmergedto.checked; params.adjusttalktemplates=form.adjusttalktemplates.checked; params.retaincats=form.retaincats.checked; vardateobj=newMorebits.date(form.date.value); if(isNaN(dateobj.getTime())){ alert('Invalid date. Please enter in YYYY-MM-DD format');// should arise only for browsers w/o datepicker return; } params.date=dateobj.getUTCDate()+' '+dateobj.getUTCMonthName()+' '+dateobj.getUTCFullYear(); Morebits.simpleWindow.setButtonsEnabled(false); Morebits.status.init(form); Morebits.wiki.api.setApiUserAgent('[[w:User:SD0001/easy-merge.js]]'); if(params.redirect){ varpage=newMorebits.wiki.page(params.current,'Redirecting'); page.load(function(page){ varpageText='#REDIRECT [['+params.target+']]\n\n{{R from merge}}'; if(params.target.indexOf('#')!==-1){ pageText+='\n{{R to section}}'; } if(params.retaincats){ varcats=page.getPageText().match(/\[\[[Cc]ategory:.*?\]\]/g); if(cats){ pageText+='\n\n'+cats.join('\n'); } } page.setPageText(pageText); page.setEditSummary(params.summary+advert); page.setCreateOption('nocreate'); page.save(); }); } if(params.removemerge){ vartargetpage=newMorebits.wiki.page(params.target,'Removing {{merge from}} from target page'); targetpage.load(function(e){ vartext=e.getPageText(); varrgx1=newRegExp('\\{\\{[mM]erge[- ]?[fF]rom\\s*\\|'+Morebits.pageNameRegex(params.current)+'\\s*\\|[^}]*\\}\\}\\n?'); varrgx2=newRegExp('\\{\\{[bB]eing merged\\s*\\|'+Morebits.pageNameRegex(params.current)+'\\s*\\|[^}]*\\}\\}\\n?'); varnewtext=text.replace(rgx1,'').replace(rgx2,''); if(text!==newtext){ targetpage.setPageText(newtext); targetpage.setEditSummary('Removing merge template after merging'+advert); targetpage.setCreateOption('nocreate'); targetpage.save(); }else{ targetpage.getStatusElement().info('Not found'); } }); } if(params.addmergedfrom){ vartargettalkpage=newmw.Title(params.target).getTalkPage().toText(); vartargettalk=newMorebits.wiki.page(targettalkpage,'Adding {{merged-from}} to target talk page'); targettalk.setPrependText('{{merged-from|'+params.current+'|'+params.date+'}}\n'); targettalk.setEditSummary('Adding {{merged-from|'+params.current+'}}'+advert); targettalk.prepend(); } if(params.addmergedto||params.adjusttalktemplates){ varcurentalkpage=newmw.Title(params.current).getTalkPage().toText(); varsttext; if(params.addmergedto){ sttext='Adding {{merged-to}} to talk page'; }else{ sttext='Adjusting WikiProject banners'; } varcurentalk=newMorebits.wiki.page(curentalkpage,sttext); curentalk.setPageSection(0); curentalk.load(function(e){ vartext=e.getPageText(); if(params.addmergedto){ varmergedto='{{merged-to|'+params.target+'|'+params.date+'}}\n'; text=mergedto+text; } if(params.adjusttalktemplates){ text=text .replace(/\|\s*class\s*=[^}|]*/g,'')// remove class param .replace(/\|[^|}]*?importance\s*=[^}|]*/g,'')// remove importance param .replace(/\|(?:[^|}]*-needed|needs-[^|}]*)\s*=[^|}]*/g,'')// remove any media-needed or needs-media params .replace(/\{\{[^|}]* (?:requested|needed)[^}]*\}\}\n?/g,'');// remove any {{media requeseted}} templates } if(text===''&&e.getPageText()===''){ return;// otherwise in this case, page is created as empty. Morebits bug. } curentalk.setPageText(text); varsummary; if(params.addmergedto&¶ms.adjusttalktemplates){ summary='Adding {{merged-to|'+params.target+'}} and adjusting WikiProject banners'; }elseif(params.addmergedto){ summary='Adding {{merged-to|'+params.target+'}}'; }elseif(params.adjusttalktemplates){ summary='Adjusting WikiProject banners'; } curentalk.setEditSummary(summary+advert); curentalk.save(); }); } } }); /* </nowiki> */