From Wikipedia, the free encyclopedia
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.

$.when( mw.loader.using(['mediawiki.util','mediawiki.api']), $.ready).done( function () {

    if (mw.config.get("wgNamespaceNumber") % 2 == 0 && mw.config.get("wgNamespaceNumber") != 4)

        // not a talk page and not project namespace

        return;

    if (mw.config.get("wgNamespaceNumber") == -1)

        // is a special page

        return;

    $("head").append("<style>a.arkylink { font-weight:bold } .arkyhighlight { background-color:#D9E9FF }</style>");

    var validSections = new Object();

    var fromTos = new Object();

    var wikiText = "";

    var revStamp;

    var startArchiveButton = mw.util.addPortletLink("p-cactions", "#", "ØCA", "pt-oeca", "Enter/exit the archival process", null, null);

    var overlay = $(document.createElement("button"));

    $(startArchiveButton).click(function(e) {

        $(".arkylink").click();

        $(".arky").toggle();

        $("#archivebutton").toggle();

    });

    overlay.html("archive all the selected threads")

        .attr("id", 'archivebutton')

        .css("position", 'sticky')

        .css("bottom", 0)

        .css("width", '100%')

        .css("font-size", '200%');

    $(document.body).append(overlay);

    overlay.toggle();

    overlay.click(function(e) {

        var numOfThreads, archiveTarget;

        var sections, archiveThis;

        var cutOffset, revisedPage;

        function cut(s, start, end) {

            return s.substr(0, start) + s.substring(end);

        }

        cutOffset = numOfThreads = 0;

        revisedPage = wikiText;

        sections = $("a.arkylink").map(function() {

            return $(this).attr("data-section");

        });

        if (!(numOfThreads = sections.length))

            return alert("No threads selected, aborting");

        archiveTarget = prompt("Archiving " + numOfThreads + " threads: where should we move them to? (e.g. Wikipedia:Sandbox/Archive 1)", mw.config.get("wgPageName"));

        if (!archiveTarget || archiveTarget == mw.config.get("wgPageName"))

            return alert("No archive target selected, aborting");

        sections.each(function(i, n) {

            revisedPage = cut(

                    revisedPage,

                    fromTosn][0 - cutOffset,

                    fromTosn][1 - cutOffset

            );

            cutOffset += fromTosn][1 - fromTosn][0];

        });

        archiveThis = sections.map(function() {

            return wikiText.substring(fromTosthis][0], fromTosthis][1]);

        }).toArray().join("");

        console.log("archive this:" + archiveThis);

        console.log("revised page:" + revisedPage);

        if (1) new mw.Api().postWithToken("csrf", {action: 'edit', title: mw.config.get("wgPageName"), text: revisedPage, summary: "Removed " + numOfThreads + " threads to [[" + archiveTarget + "]]", basetimestamp: revStamp, starttimestamp: revStamp})

            .done(function(res1) {

                alert("Successfully removed threads from talk page");

                console.log(res1);

                new mw.Api().postWithToken("csrf", {action: 'edit', title: archiveTarget, appendtext: "\n" + archiveThis, summary: "Added threads from [[" + mw.config.get("wgPageName") + "]]"})

                    .done(function(res2) {

                        alert("Successfully added threads to archive page");

                    })

                    .fail(function(res2) {

                        alert("failed to add threads to archive page. manual inspection needed.");

                    })

                    .always(function(res2) {

                        console.log(res2);

                        window.location.reload();

                    });

            })

            .fail(function(res1) {

                alert("failed to remove threads from talk page. aborting archive process.");

                console.log(res1);

                window.location.reload();

            });

    });

    new mw.Api().get({action: 'parse', page: mw.config.get("wgPageName")}).done(function(dataShit) {

        new mw.Api().get({action: 'query', pageids: mw.config.get("wgArticleId"), prop: 'revisions'], rvprop: 'content', 'timestamp']}).done(function(shit) {

            var rv;

            rv = shit.query.pagesmw.config.get("wgArticleId")].revisions0];

            wikiText = rv"*"];

            revStamp = rv'timestamp'];

        });

        $(dataShit.parse.sections)

            .filter(function(i, s) { return s.index == parseInt(s.index) })

            .each(function(i, s) { validSectionss.index = s });

        for (var i in validSections) {

            i = parseInt(i);

            fromTosi = 

                validSectionsi].byteoffset,

                validSections.hasOwnProperty(i+1)?validSectionsi+1].byteoffset:Infinity

            ];

        }

        $("#mw-content-text").find(":header").find("span.mw-headline").each(function(i, title) {

            var header, headerNum, editSection, sectionNumber;

            header = $(this).parent();

            headerNum = header.prop("tagName").substr(1, 1) * 1; // wtf javascript

            editSection = header.find(".mw-editsection"); // 1st child

            sectionNumber = header.find(".mw-editsection a:last");

            if (sectionNumber0]) {

               // Note: href may not be set.

                sectionNumber = sectionNumber.attr("href") && sectionNumber.attr("href").match(/&section=(\d+)/);

                if (sectionNumber)

                    sectionNumber = sectionNumber1];

            } else // eg <h2>not a real section</h2>

                sectionNumber = undefined;

            if (validSections.hasOwnProperty(sectionNumber))

                editSection0].innerHTML += "&nbsp;<span class=arky style=display:none><span class=mw-editsection-bracket>[</span><a data-header=" + headerNum + " " + "data-section=" + sectionNumber + " " + "onclick='$(this).closest(\":header\").toggleClass(\"arkyhighlight\");$(this).toggleClass(\"arkylink\");var archivable = $(\".arky a\"); for(var i=archivable.index(this); i<archivable.length; ++i) { if (archivable[i] == this) { continue; } if ($(archivable[i]).attr(\"data-header\") > " + headerNum + " && $(archivable[i]).hasClass(\"arkylink\") != $(this).hasClass(\"arkylink\")) { $(archivable[i]).click(); } else { break; } }'>archive</a><span class=mw-editsection-bracket>]</span></span>";

        });

    });

});
From Wikipedia, the free encyclopedia
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.

$.when( mw.loader.using(['mediawiki.util','mediawiki.api']), $.ready).done( function () {

    if (mw.config.get("wgNamespaceNumber") % 2 == 0 && mw.config.get("wgNamespaceNumber") != 4)

        // not a talk page and not project namespace

        return;

    if (mw.config.get("wgNamespaceNumber") == -1)

        // is a special page

        return;

    $("head").append("<style>a.arkylink { font-weight:bold } .arkyhighlight { background-color:#D9E9FF }</style>");

    var validSections = new Object();

    var fromTos = new Object();

    var wikiText = "";

    var revStamp;

    var startArchiveButton = mw.util.addPortletLink("p-cactions", "#", "ØCA", "pt-oeca", "Enter/exit the archival process", null, null);

    var overlay = $(document.createElement("button"));

    $(startArchiveButton).click(function(e) {

        $(".arkylink").click();

        $(".arky").toggle();

        $("#archivebutton").toggle();

    });

    overlay.html("archive all the selected threads")

        .attr("id", 'archivebutton')

        .css("position", 'sticky')

        .css("bottom", 0)

        .css("width", '100%')

        .css("font-size", '200%');

    $(document.body).append(overlay);

    overlay.toggle();

    overlay.click(function(e) {

        var numOfThreads, archiveTarget;

        var sections, archiveThis;

        var cutOffset, revisedPage;

        function cut(s, start, end) {

            return s.substr(0, start) + s.substring(end);

        }

        cutOffset = numOfThreads = 0;

        revisedPage = wikiText;

        sections = $("a.arkylink").map(function() {

            return $(this).attr("data-section");

        });

        if (!(numOfThreads = sections.length))

            return alert("No threads selected, aborting");

        archiveTarget = prompt("Archiving " + numOfThreads + " threads: where should we move them to? (e.g. Wikipedia:Sandbox/Archive 1)", mw.config.get("wgPageName"));

        if (!archiveTarget || archiveTarget == mw.config.get("wgPageName"))

            return alert("No archive target selected, aborting");

        sections.each(function(i, n) {

            revisedPage = cut(

                    revisedPage,

                    fromTosn][0 - cutOffset,

                    fromTosn][1 - cutOffset

            );

            cutOffset += fromTosn][1 - fromTosn][0];

        });

        archiveThis = sections.map(function() {

            return wikiText.substring(fromTosthis][0], fromTosthis][1]);

        }).toArray().join("");

        console.log("archive this:" + archiveThis);

        console.log("revised page:" + revisedPage);

        if (1) new mw.Api().postWithToken("csrf", {action: 'edit', title: mw.config.get("wgPageName"), text: revisedPage, summary: "Removed " + numOfThreads + " threads to [[" + archiveTarget + "]]", basetimestamp: revStamp, starttimestamp: revStamp})

            .done(function(res1) {

                alert("Successfully removed threads from talk page");

                console.log(res1);

                new mw.Api().postWithToken("csrf", {action: 'edit', title: archiveTarget, appendtext: "\n" + archiveThis, summary: "Added threads from [[" + mw.config.get("wgPageName") + "]]"})

                    .done(function(res2) {

                        alert("Successfully added threads to archive page");

                    })

                    .fail(function(res2) {

                        alert("failed to add threads to archive page. manual inspection needed.");

                    })

                    .always(function(res2) {

                        console.log(res2);

                        window.location.reload();

                    });

            })

            .fail(function(res1) {

                alert("failed to remove threads from talk page. aborting archive process.");

                console.log(res1);

                window.location.reload();

            });

    });

    new mw.Api().get({action: 'parse', page: mw.config.get("wgPageName")}).done(function(dataShit) {

        new mw.Api().get({action: 'query', pageids: mw.config.get("wgArticleId"), prop: 'revisions'], rvprop: 'content', 'timestamp']}).done(function(shit) {

            var rv;

            rv = shit.query.pagesmw.config.get("wgArticleId")].revisions0];

            wikiText = rv"*"];

            revStamp = rv'timestamp'];

        });

        $(dataShit.parse.sections)

            .filter(function(i, s) { return s.index == parseInt(s.index) })

            .each(function(i, s) { validSectionss.index = s });

        for (var i in validSections) {

            i = parseInt(i);

            fromTosi = 

                validSectionsi].byteoffset,

                validSections.hasOwnProperty(i+1)?validSectionsi+1].byteoffset:Infinity

            ];

        }

        $("#mw-content-text").find(":header").find("span.mw-headline").each(function(i, title) {

            var header, headerNum, editSection, sectionNumber;

            header = $(this).parent();

            headerNum = header.prop("tagName").substr(1, 1) * 1; // wtf javascript

            editSection = header.find(".mw-editsection"); // 1st child

            sectionNumber = header.find(".mw-editsection a:last");

            if (sectionNumber0]) {

               // Note: href may not be set.

                sectionNumber = sectionNumber.attr("href") && sectionNumber.attr("href").match(/&section=(\d+)/);

                if (sectionNumber)

                    sectionNumber = sectionNumber1];

            } else // eg <h2>not a real section</h2>

                sectionNumber = undefined;

            if (validSections.hasOwnProperty(sectionNumber))

                editSection0].innerHTML += "&nbsp;<span class=arky style=display:none><span class=mw-editsection-bracket>[</span><a data-header=" + headerNum + " " + "data-section=" + sectionNumber + " " + "onclick='$(this).closest(\":header\").toggleClass(\"arkyhighlight\");$(this).toggleClass(\"arkylink\");var archivable = $(\".arky a\"); for(var i=archivable.index(this); i<archivable.length; ++i) { if (archivable[i] == this) { continue; } if ($(archivable[i]).attr(\"data-header\") > " + headerNum + " && $(archivable[i]).hasClass(\"arkylink\") != $(this).hasClass(\"arkylink\")) { $(archivable[i]).click(); } else { break; } }'>archive</a><span class=mw-editsection-bracket>]</span></span>";

        });

    });

});

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook