MediaWiki:Common.js

Revision as of 20:53, 22 December 2024 by Nikolas (talk | contribs)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */

var currentPageTitle = $("h1").text();
var currentPageID = [];
var parentCategory = [];
var parentCategorySubpages = [];
var currentPageIndexOfParentCategory = [];
var nextPagePageID = [];
var nextPageURL = [];
var nextPageTitle = [];
var previousPagePageID = [];
var previousPageURL = [];
var previousPageTitle = []

/* TODO:
- Find the index (currentPageCategoryIndex) of parentCategorySubpages whose pageid corresponds to currentPageID
- Create a variable (nextPagePageID) containing the pageID of currentPageCategoryIndex + 1 (and -1)
- Get the URL (nextPageURL) of nextPagePageID
- Create a hyperlink to nextPageURL at the bottom of the page
*/

/* Receives the pageID of the current page */
$.ajax({
        url: mw.util.wikiScript( 'api' ),
        data:
            {
                'action': 'query',
                'format': 'json',
                'prop': 'pageprops',
                'titles': currentPageTitle,
                 'formatversion': '2'
            },
        async: false,
        datatype: 'json',
        success: function (json) {
            currentPageID = json.query.pages[0].pageid;
        }
});

/* Receives a variable "parentCategory" from JSON */
$.ajax({
        url: mw.util.wikiScript( 'api' ),
        data:
            {
                'action': 'query',
                'format': 'json',
                'prop': 'categories',
                'titles': currentPageTitle,
                 'formatversion': '2'
            },
        async: false,
        datatype: 'json',
        success: function (json) {
            parentCategory = json.query.pages[0].categories[0].title;
        }
});

/* Gets a JSON containing the subpages of the category of the current page */
$.ajax({
        url: mw.util.wikiScript( 'api' ),
        data:
            {
                'action': 'query',
                'format': 'json',
                "list": "categorymembers",
                "cmtitle": parentCategory,
                'formatversion': '2',
                "cmlimit": "max"
            },
        async: false,
        datatype: 'json',
        success: function (json) {
            parentCategorySubpages = json.query.categorymembers;
        }
});

var currentPageIndexOfParentCategory = parentCategorySubpages.findIndex(function(page3) {
    return page3.pageid == currentPageID;
});

nextPagePageID = parentCategorySubpages[currentPageIndexOfParentCategory + 1].pageid;

/* Gets a JSON containing the url of the next page in the category */
$.ajax({
        url: mw.util.wikiScript( 'api' ),
        data:
            {
                'action': 'query',
                'format': 'json',
                "prop": "info",
                "iwurl": 1,
                "pageids": nextPagePageID,
                'formatversion': '2',
                "inprop": "url"
            },
        async: false,
        datatype: 'json',
        success: function (json) {
            nextPageURL = json.query.pages[0].fullurl;
            nextPageTitle = json.query.pages[0].title;
        }
});

previousPagePageID = parentCategorySubpages[currentPageIndexOfParentCategory - 1].pageid;

/* Gets a JSON containing the url of the previous page in the category */
$.ajax({
        url: mw.util.wikiScript( 'api' ),
        data:
            {
                'action': 'query',
                'format': 'json',
                "prop": "info",
                "iwurl": 1,
                "pageids": previousPagePageID,
                'formatversion': '2',
                "inprop": "url"
            },
        async: false,
        datatype: 'json',
        success: function (json) {
            previousPageURL = json.query.pages[0].fullurl;
            previousPageTitle = json.query.pages[0].title;
        }
});

$(".vector-body").append( ' <br />' );
$(".vector-body").append($('<p style="text-align: left"><a href="'+previousPageURL+'">'+'Previous page: '+previousPageTitle+'</a><span style="float:right;"><a href="'+nextPageURL+'">'+'Next page: ' + nextPageTitle+'</a></span></p>'));

console.log("common.js");