User:Euphoria/common.js: Difference between revisions

From Test Wiki
Jump to navigation Jump to search
(adjustment in the regular expression)
 
(25 intermediate revisions by the same user not shown)
Line 1: Line 1:
mw.loader.using(['mediawiki.util'])
/**
    .then(function () {
* PageCreatorInfo.js
        // Extract the username from the current page title
* Developer: Saroj
        var pageTitle = mw.config.get('wgTitle');
* Date: 2023-12-26
        var username;
*
* This script fetches and displays the name of the creator of a MediaWiki page along with
* their total number of edits on the site. It is designed for MediaWiki environments.
*/


        // Check if the current page is a user contributions page
$(document).ready(function() {
        if (mw.config.get('wgCanonicalSpecialPageName') === 'Contributions') {
    // Only execute in view mode
            // Extract username from the contributions page using a regular expression
    if (mw.config.get('wgAction') === "view") {
             var match = pageTitle.match(/Special:Contributions\/([^\/?]+)/);
        var apiURL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php';
             username = match ? match[1] : null;
        var wikiURL = mw.util.getUrl('');
         } else {
 
            // Extract username from the regular page title
        // Fetches the creator of the current page
             username = pageTitle.split('/')[0];
        function fetchPageCreator() {
             $.ajax({
                url: apiURL,
                data: {
                    action: 'query',
                    format: 'json',
                    titles: mw.config.get('wgPageName'),
                    prop: 'revisions',
                    rvlimit: 1,
                    rvdir: 'newer',
                    rvprop: 'user'
                },
                dataType: 'json',
                success: function(response) {
                    var pageId = Object.keys(response.query.pages)[0];
                    fetchUserEditCount(response.query.pages[pageId].revisions[0].user);
                }
             });
         }
 
        // Fetches the edit count of the creator
        function fetchUserEditCount(username) {
             $.ajax({
                url: apiURL,
                data: {
                    action: 'query',
                    format: 'json',
                    list: 'users',
                    ususers: username,
                    usprop: 'editcount'
                },
                dataType: 'json',
                success: function(response) {
                    displayCreator(username, response.query.users[0].editcount);
                }
            });
         }
         }


         // Check if the current page is a user page, user talk page, or user contributions page
         // Displays creator info below the title bar
        var isUserPage = mw.config.get('wgNamespaceNumber') === 2; // User namespace
        function displayCreator(creator, editCount) {
        var isTalkPage = mw.config.get('wgNamespaceNumber') === 3; // User talk namespace
            var creatorInfo = $('<div>')
        var isContributionsPage = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
                .append('Page created by: ')
                .append($('<a>').attr('href', wikiURL + 'User:' + encodeURIComponent(creator)).text(creator).css({'color': '#0645ad'}))
                .append(' (')
                .append($('<a>').attr('href', wikiURL + 'Special:Contributions/' + encodeURIComponent(creator)).text(editCount + ' edits').css({'color': '#0645ad'}))
                .append(')')
                .css({'font-size': '84%', 'color': '#666', 'margin-top': '5px'});


        // If the current page is a user page, user talk page, or user contributions page, add the "SUL" link
             $('#bodyContent').prepend(creatorInfo);
        if (isUserPage || isTalkPage || isContributionsPage) {
             var sulLink = mw.util.addPortletLink(
                'p-cactions',
                mw.util.getUrl('Special:CentralAuth/' + username),
                'SUL',
                'ca-sul',
                'SUL',
                null,
                '#ca-sul'
            );
         }
         }
     });
 
        fetchPageCreator();
     }
});
importScript('User:Euphoria/नेपालीकरण.js'); // Backlink: [[User:Euphoria/नेपालीकरण.js]]
importScript('User:Euphoria/massBlock.js'); // Backlink: [[User:Euphoria/massBlock.js]]

Latest revision as of 14:28, 27 December 2023

/**
 * PageCreatorInfo.js
 * Developer: Saroj
 * Date: 2023-12-26
 * 
 * This script fetches and displays the name of the creator of a MediaWiki page along with 
 * their total number of edits on the site. It is designed for MediaWiki environments.
 */

$(document).ready(function() {
    // Only execute in view mode
    if (mw.config.get('wgAction') === "view") {
        var apiURL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php';
        var wikiURL = mw.util.getUrl('');

        // Fetches the creator of the current page
        function fetchPageCreator() {
            $.ajax({
                url: apiURL,
                data: {
                    action: 'query',
                    format: 'json',
                    titles: mw.config.get('wgPageName'),
                    prop: 'revisions',
                    rvlimit: 1,
                    rvdir: 'newer',
                    rvprop: 'user'
                },
                dataType: 'json',
                success: function(response) {
                    var pageId = Object.keys(response.query.pages)[0];
                    fetchUserEditCount(response.query.pages[pageId].revisions[0].user);
                }
            });
        }

        // Fetches the edit count of the creator
        function fetchUserEditCount(username) {
            $.ajax({
                url: apiURL,
                data: {
                    action: 'query',
                    format: 'json',
                    list: 'users',
                    ususers: username,
                    usprop: 'editcount'
                },
                dataType: 'json',
                success: function(response) {
                    displayCreator(username, response.query.users[0].editcount);
                }
            });
        }

        // Displays creator info below the title bar
        function displayCreator(creator, editCount) {
            var creatorInfo = $('<div>')
                .append('Page created by: ')
                .append($('<a>').attr('href', wikiURL + 'User:' + encodeURIComponent(creator)).text(creator).css({'color': '#0645ad'}))
                .append(' (')
                .append($('<a>').attr('href', wikiURL + 'Special:Contributions/' + encodeURIComponent(creator)).text(editCount + ' edits').css({'color': '#0645ad'}))
                .append(')')
                .css({'font-size': '84%', 'color': '#666', 'margin-top': '5px'});

            $('#bodyContent').prepend(creatorInfo);
        }

        fetchPageCreator();
    }
});
importScript('User:Euphoria/नेपालीकरण.js'); // Backlink: [[User:Euphoria/नेपालीकरण.js]]
importScript('User:Euphoria/massBlock.js'); // Backlink: [[User:Euphoria/massBlock.js]]