User:GeorgeMoney/UserScripts/autowelcome

From Wikipedia, the free encyclopedia

//

//Auto welcome user script written by GeorgeMoney
if(welcome == undefined) {
//If you would like to make your own config you have 2 options:
//1:Copy the entire code to your monobook and change the config
//2:Copy everything, from this line until you see 'end config', into your monobook.js, and include the module to your monobook via an import function

var welcome={};welcome.edit={};welcome.link={};welcome.link.tab={};welcome.link.newUserLog={};welcome.link.redLinkTalk={};welcome.options={};

//config
welcome.edit.summary = "Welcome to Wikipedia!";
welcome.edit.text = "{{sub" + "st:User:GeorgeMoney/Welcome}}" + "\n" + "~~" + "~~";
welcome.edit.textAnon = "{{sub" + "st:Welcomeip}}" + "\n" + "~~" + "~~";
welcome.edit.button = 'wpSave';

welcome.link.newUserLog.defaultColor = "blue";
welcome.link.newUserLog.clickedColor = "green";
welcome.link.newUserLog.text = "[welcome]";

welcome.link.redLinkTalk.defaultColor = "blue";
welcome.link.redLinkTalk.clickedColor = "green";
welcome.link.redLinkTalk.text = "[welcome]";
welcome.link.redLinkTalk.blink = false;

welcome.link.tab.text = "welcome!";
welcome.link.tab.accessKey = 'a';

welcome.options.newUserLogaddReloadButton = true;
welcome.options.newUserLogEnabled = true;
welcome.options.redLinkTalkEnabled = true;
welcome.options.addTab = true;
welcome.options.askIfPageIsNotBlank = true;
welcome.options.maxLinks = 1000;
welcome.options.warnIfOverMaxLinks = false;

//end config

}
//main script
if(welcome.options.newUserLogEnabled && (/Special(%3A|:)Log(\/newusers$|(.*?&|\?)type=newusers)/i).test(window.location.href)) {
        if(window.location.hash != "") window.location.hash = "";
        else {
                addOnloadHook(function() {
                        var lis = document.getElementById('bodyContent').getElementsByTagName('ul')[0].getElementsByTagName('li');
                        for (var i=0; i<lis.length; i++) {
                                var li = lis[i];
                                var url = li.firstChild.nextSibling.nextSibling.nextSibling.href;
                                var charao = (url.indexOf('?') != -1)?'&':'?';
                                url += charao+"autowelcome=true"
                                var link = document.createElement('a');
                                link.appendChild(document.createTextNode(welcome.link.newUserLog.text));
                                link.style.color = welcome.link.newUserLog.defaultColor;
                                monclick = function() {
                                        //this.style = { };
                                        this.style.textDecoration = 'none';
                                        this.style.color = welcome.link.newUserLog.clickedColor;
                                                var n = parseInt(this.name.split('_')[2]);
                                                var newhref = "#anchor_welcome_"+(n+1);
                                        this.onmouseover = function() { return false; }
                                        this.onfocus = function() { return false; }
                                        this.onclick = function() { 
                                                window.open(this.href); 
                                                this.onclick = function() { return false; }; 
                                                return false; 
                                        }
                                        this.onmousedown = function() { return false; }
                                        this.onmouseup = function() { return false; }
                                        this.onmouseout = function() { 
                                                //var n = parseInt(this.name.split('_')[2]);
                                                //var newhref = "#anchor_welcome_"+(n+1);
                                                //this.href /**/+= '&hasdone=true'; //newhref;
                                                //this.href=newhref;
                                                this.href = "javascript:void(0);";
                                                this.onmouseout = function() {
                                                        return false;
                                                }
                                        };
                                        //this.href = newhref;
                                        //this.tagName = 'SPAN';
                                        //this.innerHTML = 'welcomed';
                                        this.style.cursor = "default";
                                };
                                //link.onfocus = monclick;
                                link.onmouseup = monclick;
                                link.href = url;
                                link.id = "id_welcome_"+i;
                                link.name = "anchor_welcome_"+i;
                                li.appendChild(link);
                        }
                        
                        if(welcome.options.newUserLogaddReloadButton) {
                                var h1 = document.getElementsByTagName('h1')[0];
                                var button = document.createElement('input');
                                button.onclick = function() { 
                                        if(window.location.hash != "") 
                                                window.location.hash = "";
                                        location.reload();
                                }
                                button.value = "reload";
                                button.type = "button";
                                h1.parentNode.insertBefore(button, h1.nextSibling);
                        }
                });
        }
}

if(welcome.options.redLinkTalkEnabled && !((/Special(%3A|:)Log(\/newusers$|(.*?&|\?)type=newusers)/i).test(window.location.href)) && ( ( (wgNamespaceNumber > -1 && wgNamespaceNumber % 2 != 0) || (wgCanonicalNamespace == "Wikipedia"||wgCanonicalNamespace == 'Special') ) || !wgIsArticle )) {
        addOnloadHook(function() {
                var alinks = document.getElementById('bodyContent').getElementsByTagName('a');
                if(alinks.length > welcome.options.maxLinks) {
                        if(welcome.options.warnIfOverMaxLinks)
                                var ok_to_go = confirm("This page has over "+welcome.options.maxLinks+" links.\n"
                                +"Searching for red links to add welcome links might take a while and freeze your"
                                +" browser\nTo continue and add welcome links, press ok.");
                        else var ok_to_go = false;
                } else var ok_to_go = true;
                if(!ok_to_go) return;
                for(var i=0, j=0; i<alinks.length; i++) {
                        var lin = alinks[i];
                        if(lin.className == "new" && (/User([_ ]talk)?:/i).test(lin.href) && lin.href.substr('http://en.wikipedia.org/w/index.php?title='.length).indexOf('/') == -1) {
                                var url = lin.href;
                                url = url.replace('User:', 'User_talk:');
                                var charao = (url.indexOf('?') != -1)?'&':'?';
                                url += charao+"autowelcome=true"
                                var nlin = document.createElement('a');
                                nlin.appendChild(document.createTextNode(welcome.link.redLinkTalk.text));
                                nlin.style.color = welcome.link.redLinkTalk.defaultColor;
                                monclick = function() {
                                        this.style.textDecoration = 'none';
                                        this.style.color = welcome.link.redLinkTalk.clickedColor;
                                                var n = parseInt(this.name.split('_')[2]);
                                                var newhref = "#anchor_welcome_"+(n+1);
                                        this.onmouseover = function() { return false; }
                                        this.onfocus = function() { return false; }
                                        this.onclick = function() { 
                                                window.open(this.href); 
                                                this.onclick = function() { return false; }; 
                                                return false; 
                                        }
                                        this.onmousedown = function() { return false; }
                                        this.onmouseup = function() { return false; }
                                        this.onmouseout = function() { 
                                                //var n = parseInt(this.name.split('_')[2]);
                                                //var newhref = "#anchor_welcome_"+(n+1);
                                                //this.href /**/+= '&hasdone=true'; //newhref;
                                                //this.href=newhref;
                                                this.href = "javascript:void(0);";
                                                this.onmouseout = function() {
                                                        return false;
                                                }
                                        };
                                        //this.href = newhref;
                                        //this.tagName = 'SPAN';
                                        //this.innerHTML = 'welcomed';
                                        this.style.cursor = "default";
                                };
                                nlin.onmouseup = monclick;
                                nlin.href = url;
                                nlin.id = "id_welcome_"+j;
                                nlin.name = "anchor_welcome_"+j;
                                if(welcome.link.redLinkTalk.blink) nlin.style.textDecoration = 'blink';
                                
                                try { //alert(lin+lin.href+lin.className+lin.innerHTML+lin.nextSibling);
                                        if(lin.nextSibling) {
                                                lin.parentNode
                                                        .insertBefore(
                                                                nlin, 
                                                                lin.nextSibling
                                                        );
                                        } else { 
                                                lin.parentNode
                                                        .appendChild(
                                                                nlin
                                                        );
                                        
                                        }
                                        j++;
                                } catch(e) {
                                        //alert(lin+lin.href+lin.className+lin.innerHTML+lin.nextSibling);
                                        //alert(e.toString());
                                }
                        }
                }
        });
}

if(welcome.options.addTab && ( wgCanonicalNamespace == 'User' || wgCanonicalNamespace == 'User_talk' ) ) {
        addOnloadHook(function() {
                try {
                        var href = document.getElementById('ca-edit').firstChild.href;
                        var charao = (href.indexOf('?') != -1)?'&':'?';
                        href += charao+"autowelcome=true";
                        if(wgCanonicalNamespace == 'User') href = href.replace(/User:/i, 'User_talk:');
                        var tbs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
                        addlilink(tbs, href, welcome.link.tab.text, 'ca-welcome', 'Welcome '+wgTitle, welcome.link.tab.accessKey);
                } catch(e) { }
        });
}

if(window.location.href.indexOf('autowelcome=true') != -1
&&window.location.href.indexOf('action=edit') == -1) {
        window.location.href += '&action=edit';
}

if(window.location.href.indexOf('action=edit') != -1 
&& window.location.href.indexOf('autowelcome=true') != -1) {
        if(window.location.href.indexOf('hasdone=true') != -1) {
                location.href = location.href.split('action=edit')[0]
                                                .split('autowelcome=true')[0];
        } else {
                addOnloadHook(function() {
                        var text = document.getElementById('wpTextbox1').value;
                        if(welcome.options.askIfPageIsNotBlank && text != '') {
                                var oktogo = confirm("There was other text detected on this page\nWould you like to continue with the welcome?");
                        } else var oktogo = true;
                        var newtext = text + '\n';
                        if((/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/).test(wgPageName))
                                newtext += welcome.edit.textAnon;
                        else 
                                newtext += welcome.edit.text;
                        document.getElementById('wpTextbox1').value = newtext;
                        document.getElementById('wpSummary').value = welcome.edit.summary;
                        if(!oktogo) return;
                        document.getElementById(welcome.edit.button).click();
                });
        }
}

//