Jump to content

User:Opencooper/talkCount.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Opencooper (talk | contribs) at 14:36, 17 May 2019 (newlines instead). 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.
// Shows the number of discussions on the talk page
// Quick and dirty; doesn't bother with stuff like namespace numbers
// Limitation: Doesn't work when title contains special URL characters:
// * https://en.wikipedia.org/wiki/%2BAnima
// * https://en.wikipedia.org/wiki/Procter_%26_Gamble

function setup() {
    // If we're not reading an article, do nothing
    if (!(mw.config.get('wgAction') === 'view'
          && mw.config.get('wgIsArticle')
          && !location.search.split('oldid=')[1]
          && mw.config.get('wgPageName') !== 'Main_Page')) {
        return;
    }

    // Check if we're on a talk page
    var namespace = mw.config.get( 'wgCanonicalNamespace' );
    if (/talk/i.test(namespace)) {
    	return;
    }

    // Check if talk page is a redlink
    if ($("#ca-talk.new").length !== 0) {
        return;
    }

    var talkUrl = $("#ca-talk a").attr("href");
    var talkTitle = talkUrl.split("/wiki/")[1];
    talkTitle = decodeURI(talkTitle);

    // Get parsed talk page section info
    // API docs: https://en.wikipedia.org/w/api.php?action=help&modules=parse
    $.ajax({
        url: "https://en.wikipedia.org/w/api.php",
        data: {
            action: "parse",
            format: "json",
            page: talkTitle,
            prop: "sections"
        },
        success: countSections
    });
}

function countSections(response) {
    var sectionsCount = response.parse.sections.length;

    var sectionTitles = "";
    for (var i = 0; i < sectionsCount; i++) {
        sectionHeader = response.parse.sections[i].line;
        sectionTitles += sectionHeader + "\n";
    }

    var countHTML = " <small id='talkCount' title='"+ sectionTitles + "'>("
                    + sectionsCount + ")</small>";
    $("#ca-talk a").append(countHTML);
}

setup();