Jump to content

User:Quibik/EightRequestsHelper.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Quibik (talk | contribs) at 23:52, 23 February 2012. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
function eightImagesHelper() {

if (/ei_helper=init/.test(location.href)) {
    window.open("/w/index.php?title=Wikipedia:Graphic_Lab/Photography_workshop/Eight_Requests/Users_log&action=edit", "EI User Log");
    window.open("/w/index.php?title=Wikipedia:Graphic_Lab/Photography_workshop/Eight_Requests/Archive/" + (new Date()).getFullYear() + "&action=edit", "EI Archive");
}

if (/\/Eight_Requests/i.test(location.href) && mw.config.get( 'wgAction' ) === 'edit') {
    if (!/\/Eight_Requests\//i.test(location.href)) {
        // Replace the completed requests with empty fields
        var m = /<!--COPY.+\s*(<gallery[\s\S]+<\/gallery>)/i.exec(jQuery("#wpTextbox1").val());
        if (!m) {
            return;
        }
        var cleanGallery = m[1];
        jQuery("#wpTextbox1").val(jQuery("#wpTextbox1").val()
            .replace(/<center>\s*(<gallery[\s\S]+<\/gallery>)\s*<\/center>/i, "<center>\n" + cleanGallery + "\n</center>"));
    }
    else {
        jQuery.get("http://en.wikipedia.org/w/index.php?title=Wikipedia:Graphic_Lab/Photography_workshop/Eight_Requests&action=raw", "", function(data) {
            var m = /<center>\s*(<gallery[\s\S]+<\/gallery>)\s*<\/center>/i.exec(data);
            if (!m) {
                return;
            }
            var gal = m[1];
            
            var re = /^\s*(?:File|Image):.+taken by\s*=\s*([^|]+)\s*\|.+$/mig;
            var requests = "";
            var counts = new Object();
            while (true) {
                m = re.exec(gal);
                if (!m)
                    break;
                requests += m[0] + "\n";
                m[1] = jQuery.trim(m[1]);
                counts[m[1]] = (counts.hasOwnProperty(m[1]) ? counts[m[1]] : 0) + 1;
            }
            
            if (/\/Eight_Requests\/Archive/i.test(location.href)) {
                var monthcounts = [ "January", "February", "March", "April", "May", "June",
                    "July", "August", "September", "October", "November", "December" ];
                var d = new Date();
                jQuery("#wpTextbox1").val(jQuery("#wpTextbox1").val() + 
                    "\n;" + d.getDate() + " " + monthcounts[d.getMonth()] + "\n" +
                    "<gallery widths=\"160px\" perrow=\"4\">\n" +
                    requests +
                    "</gallery>"
                );
                jQuery("#wpSummary").val("Archived the most recent set. (with the aid of a [[.js|script]])");
                jQuery("#wpDiff").click();
            }
            else if (/\/Eight_Requests\/Users_log/i.test(location.href)) {
                var re = /^\|\s*{{User\|\s*([^}]+)\s*}}\s*\|\|\s*(\d+)\s*$/mig;
                var m;
                while (true) {
                    m = re.exec(jQuery("#wpTextbox1").val());
                    if (!m)
                        break;
                    m[1] = jQuery.trim(m[1]);
                    counts[m[1]] = (counts.hasOwnProperty(m[1]) ? counts[m[1]] : 0) + parseInt(m[2]);
                }
                var names = [];
                for(var name in counts){
                    names.push(name);
                }
                names.sort();
                
                userList = ""
                for (x in names) {
                    name = names[x];
                    userList += "|-\n| {{User|" + name + "}} || " + counts[name] + "\n";
                }
                jQuery("#wpTextbox1").val(jQuery("#wpTextbox1").val()
                    .replace(/\|-[\s\S]+\|}\n\n==/i, userList + "|}\n\n==")
                    .replace(/as of \d.+/im, "as of ~~~~~. Updated by ~~~"));
                jQuery("#wpSummary").val("Updated. (with the aid of a [[.js|script]])");
                jQuery("#wpDiff").click();
            }
        });
    }
}

}

$( document ).ready( function () {
    if (/\/Eight_Requests/i.test(location.href))
        mw.util.addPortletLink ( "p-cactions", "javascript:eightImagesHelper()", "Eight Images helper", "ca-eightImagesHelper");
} );