User:Manishearth/orphantabs.js
Appearance
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:Manishearth/orphantabs. |
// <nowiki>
/*
===================================================================================================
Go to [[User:Manishearth/OrphanTabs]] to see how this script is used.
[[User:Manishearth]]
===================================================================================================
*/
//Support for config template
var undefined; //to check for undefined config template
var OrphanTabsConfig
if(OrphanTabsConfig === undefined){
OrphanTabsConfig = {
auto : false,
autoChoice : 3,
showCompleteTab : true,
completeTabText : "de-orphan",
showWikifyTab : true,
wikifyTabText : "Wikify",
showWLHTab : false,
wLHTabText : "WhatLinksHere",
showSearchItTab : false,
searchItTabText : "Search It!",
showGoogleItTab : false,
googleItTabText : "Google It!"
}
}else{
if(OrphanTabsConfig.auto === undefined){
OrphanTabsConfig.auto = new Boolean(true)
}
if(OrphanTabsConfig.autoChoice === undefined){
OrphanTabsConfig.autoChoice = new Number(3)
}
if(OrphanTabsConfig.showCompleteTab === undefined){
OrphanTabsConfig.showCompleteTab = new Boolean(true)
}
if(OrphanTabsConfig.completeTabText === undefined){
OrphanTabsConfig.completeTabText = new String("de-orphan")
}
if(OrphanTabsConfig.showWikifyTab === undefined){
OrphanTabsConfig.showCompleteTab = new Boolean(true)
}
if(OrphanTabsConfig.wikifyTabText === undefined){
OrphanTabsConfig.completeTabText = new String("de-orphan-wikify")
}
if(OrphanTabsConfig.showWLHTab === undefined){
OrphanTabsConfig.showCompleteTab = new Boolean(false)
}
if(OrphanTabsConfig.wLHTabText === undefined){
OrphanTabsConfig.completeTabText = new String("WhatLinksHere")
}
if(OrphanTabsConfig.showSearchItTab === undefined){
OrphanTabsConfig.showCompleteTab = new Boolean(false)
}
if(OrphanTabsConfig.searchItTabText === undefined){
OrphanTabsConfig.completeTabText = new String("Search It!")
}
if(OrphanTabsConfig.showGoogleItTab === undefined){
OrphanTabsConfig.showCompleteTab = new Boolean(false)
}
if(OrphanTabsConfig.googleItTabText === undefined){
OrphanTabsConfig.completeTabText = new String("Google It!")
}
}
var currentLinkWin
var otherOrphanTabs = true
var deOrphanDocumentLinkArray = new Array()
var linkACounter=0
var howManyActuallyDeOrphaned = 0
var linkAlreadyThere = 0
var deOrphaning = false
var deOrphanPgName = ""
var deOrphanProcessFirstCall=false
$(function () {
var gServerPre;
var gServerPost;
gServerPre = "http://www.google.com/search?hl=en&rlz=1G1GGLQ_ENUS255&as_q="
gServerPost="&as_epq=&as_oq=&as_eq=&num=100&lr=&as_filetype=&ft=i&as_sitesearch=" + mw.config.get('wgServer') + "&as_qdr=all&as_rights=&as_occt=any&cr=&as_nlo=&as_nhi=&safe=images"
var pgname = encodeURIComponent( mw.config.get('wgTitle') );
if(otherOrphanTabs){
if(OrphanTabsConfig.showWLHTab){
mw.util.addPortletLink("p-cactions", mw.config.get('wgServer') + "/wiki/Special:WhatLinksHere/" + pgname, OrphanTabsConfig.wLHTabText, "ca-whatlinks" , "What links here");
}
if(OrphanTabsConfig.showSearchItTab){
mw.util.addPortletLink("p-cactions", mw.config.get('wgServer') + "/wiki/Special:WhatLinksHere/" + pgname, OrphanTabsConfig.searchItTabText, "ca-searchit" , "What links here");
}
if(OrphanTabsConfig.showGoogleItTab){
mw.util.addPortletLink("p-cactions", gServerPre + pgname + gServerPost, OrphanTabsConfig.googleItTabText, "ca-googleit", "Find all Wikipedia pages with this page name in them");
}
}
if (document.editform && OrphanTabsConfig.showWikify){
mw.util.addPortletLink("p-cactions","javascript:deOrphanWikify(prompt(\"What page are you de-orphaning?\",\"\"))", OrphanTabsConfig.wikifyTabText, "ca-de-orphan-wikify", "Wikify to deorphan another page");
}
if(OrphanTabsConfig.showCompleteTab){
mw.util.addPortletLink("p-cactions", "javascript:initDeOrphan(prompt(\"What page\?\"\,\""+ ((mw.config.get('wgCanonicalNamespace')=="")?mw.config.get('wgPageName'):"")+"\"));", OrphanTabsConfig.completeTabText, "ca-de-orphan", "Find all Wikipedia pages with this page name in them");}
});
var intID;
var sWin;
var allLinks = new Array()
function deOrphanWikify(pgName){
if (!document.editform){
alert("Only available on the edit page \(currently\)")
}else{
document.editform.wpTextbox1.value = orphanRawWikify(pgName,document.editform.wpTextbox1.value)
document.editform.wpSummary.value = "Adding link to orphaned [[" + pgName+ "|article]], Wikiproject Orphanage: [[WP:ORPHAN|You can help!]]"
}
}
function orphanRawWikify(pgName,text){
rXP = new RegExp("([ '\"()<>,.])(" + pgName + ")([ '\"()<>,.])", "gi")
var t = text.replace(rXP, "$1[[" + pgName + " |$2]]$3")
return t;
}
function initDeOrphan(pgName){
sWin = window.open(mw.config.get('wgServer') + "/w/index.php?title=Special:Search&ns0=1&redirs=1&search=%22" + pgName + "%22&limit=100&offset=0","","")
deOrphanPgName = pgName
deOrphanProcessFirstCall=true
intID = setInterval('checkWin()', 3000)
}
function checkWin(){
if(sWin.document.readyState == "complete"){
clearInterval(intID)
//alert("passes clear")
CreateArray()
}
}
function CreateArray(){
//alert("creating")
var sLinkArray = new Array()
var allLinksArray = new Array()
var allLists = sWin.document.getElementsByTagName("ul")
//alert(allLists.length)
for (i=0;i<allLists.length;i++){
if (allLists[i].className == "mw-search-results"){
//alert(allLists[i].innerHTML)
allLinksArray = returnArray(allLists[i].innerHTML)
}
}
deOrphanDocumentLinkArray = allLinksArray
//alert("final a:\n" + deOrphanDocumentLinkArray)
openALinkWin()
};
function returnArray(text){
var orphanCompleteRegxp = new RegExp("<a[^<]*<\/a>","gi")
//alert(orphanCompleteRegxp)
anchTags = new Array()
//alert(text.match(orphanCompleteRegxp).toString())
//alert(text.match(orphanCompleteRegxp).length)
anchTags = text.match(orphanCompleteRegxp)
allImpLinks = new Array()
var orphanAnchRegxp = new RegExp("href=\"([^<>=\"]*)\"","i")
for (i=0;i<anchTags.length;i++){
allImpLinks[i] = anchTags[i].match(orphanAnchRegxp)[0].split("=")[1].replace(/\"/g,"")
}
var colorRectifier = "\""
//Just to return syntax highlighting to normal
sWin.close()
return allImpLinks;
}
function openALinkWin(){
currentLinkWin = window.open("about:blank","","")
currentLinkWin.location.replace(mw.config.get('wgServer')+"/w/index.php?title=" + deOrphanDocumentLinkArray[linkACounter].replace(/\/wiki\//,"") + "&action=edit")
if(!currentLinkWin.$){
currentLinkWin.onload=function(){
currentLinkWin.$(function () {
openALInnerFunct()
});
}
}else{
if(!currentLinkWin.document.loaded){
currentLinkWin.$(function () {
openALInnerFunct()
});
}else{
openALInnerFunct()
}
}
}
function closeTheWindow(){
//alert("closing")
if(!currentLinkWin.$){
currentLinkWin.onload=function(){
currentLinkWin.$(function () {
closeTWInnerFunct()
});
}
}else{
if(!currentLinkWin.document.loaded){
currentLinkWin.$(function () {
closeTWInnerFunct()
});
}else{
closeTWInnerFunct()
}
}
}
function endOfLinkWins(){
if(OrphanTabsConfig.auto){
var choice = ((linkAlreadyThere + howManyActuallyDeOrphaned)>OrphanTabsConfig.autoChoice)?true:false;
}else{
var choice = confirm(linkAlreadyThere + " pages linked to " + deOrphanPgName + " before de-orphaning.\n" + howManyActuallyDeOrphaned + " pages were linked to " + deOrphanPgName + "\n" + (linkAlreadyThere + howManyActuallyDeOrphaned) + " pages link to " + deOrphanPgName + " now\n De-orphan? (Press cancel to tag the page with \'do-attempt\'.")
currentLinkWin = window.open("about:blank","","")
}
currentLinkWin.location.replace(mw.config.get('wgServer')+"/w/index.php?title=" + deOrphanPgName + "&action=edit")
if(!currentLinkWin.$){
currentLinkWin.onload=function(){
currentLinkWin.$(function () {
addOrphanTag(choice)
});
};
}else{
if(!currentLinkWin.document.loaded){
currentLinkWin.$(function () {
addOrphanTag(choice)
});
}else{
addOrphanTag(choice)
}
}
}
function addOrphanTag(choice){
//alert("adding")
currentLinkWin.document.editform.wpTextbox1.value = addOrphanTagRaw(choice, currentLinkWin.document.editform.wpTextbox1.value)
var editSum = ""
if(choice){
editSum = "Successfully de-orphaned! Wikiproject Orphanage: [[WP:ORPHAN|You can help!]]"
}else{
editSum = "Unsuccesful de-orphan attempt, Wikiproject Orphanage: [[WP:ORPHAN|You can help!]]"
}
currentLinkWin.document.editform.wpSummary.value=editSum
currentLinkWin.document.editform.submit()
alert("De-orphaning over!!!")
}
function openALInnerFunct(){
if(currentLinkWin.wgCanonicalNamespace == ""){
if(orphanRawWikify(deOrphanPgName, currentLinkWin.document.editform.wpTextbox1.value) == currentLinkWin.document.editform.wpTextbox1.value){
linkAlreadyThere++
}else{
howManyActuallyDeOrphaned++
currentLinkWin.deOrphanWikify(deOrphanPgName)
currentLinkWin.document.editform.submit()
//alert("submitting")
}
}
setTimeout("closeTheWindow()",500)
}
function closeTWInnerFunct(){
currentLinkWin.close()
linkACounter++
if(linkACounter!=deOrphanDocumentLinkArray.length){
openALinkWin()
}else{
endOfLinkWins()
}
}
function addOrphanTagRaw(choice, val){
var rVal
if(choice){
if(val.replace(new RegExp("{{orphan}}", "i"), "") != val){
rVal = val.replace(new RegExp("{{orphan}}", "i"), "")
// alert(11)
}else if(/{{orphan\|\wdate=[^\}]*}}/i.test(val)){
rVal = val.replace(/{{orphan\|\wdate=[^\}]*}}/i, "")
// alert(12)
}else if(val.indexOf("{{multiple issues") !=-1){
rVal=val.replace(/\|\w?orphan=[^\|\}]*/i,"")
rVal=rVal.replace(/\|\w?do-attempt=[^\|\}]*/i,"")
// alert(14)
}else{
rVal=val
// alert(15)
}
}else{
if(val.replace(new RegExp("{{orphan}}", "i"), "") != val){
rVal = val.replace("{{orphan}}", "{{do-attempt|att=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}}}")
// alert(21)
}else if(new RegExp("{{orphan|date=[^\}]}}","i").test(val)){
rVal = val.replace(/{{orphan\|date=([^\}]*)}}/i, "{{do-attempt|date=$1|att=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}}}")
// alert(22)
}else if(new RegExp("{{do-attempt|date=[^\|\}]*\|att=[^\|\}]*}}","i").test(val)){
rVal = val.replace(/({{do-attempt|date=[^\|\}]*\|att=)[^\|\}]*}}/i, "$1\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}}}")
}else if(val.indexOf("{{multiple issues") !=-1){
rVal=rVal.replace(/\|\w?do-attempt=[^\|\}]*/i,"\|do-attempt=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}")
// alert(23)
}else{
rVal= "{{do-attempt|att=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}}}" + val
}
}
return rVal
}
// </nowiki>