User:Euphoria/common.js: Difference between revisions

From Test Wiki
Jump to navigation Jump to search
Content deleted Content added
extract the username specifically from user contributions pages
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
/**
mw.loader.using(['mediawiki.util'])
* PageCreatorInfo.js
.then(function () {
* Developer: Saroj
// Extract the username from the current page title
* Date: 2023-12-26
var pageTitle = mw.config.get('wgTitle');
*
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.
*/


$(document).ready(function() {
// Check if the current page is a user contributions page
// Only execute in view mode
if (mw.config.get('wgCanonicalSpecialPageName') === 'Contributions') {
if (mw.config.get('wgAction') === "view") {
// Extract username from the contributions page
var apiURL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php';
var match = pageTitle.match(/Special:Contributions\/(.+)/);
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
function fetchPageCreator() {
username = pageTitle.split('/')[0];
$.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);
}
});
}
}


// Check if the current page is a user page, user talk page, or user contributions page
// Fetches the edit count of the creator
function fetchUserEditCount(username) {
var isUserPage = mw.config.get('wgNamespaceNumber') === 2; // User namespace
$.ajax({
var isTalkPage = mw.config.get('wgNamespaceNumber') === 3; // User talk namespace
url: apiURL,
var isContributionsPage = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
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
// If the current page is a user page, user talk page, or user contributions page, add the "SUL" link
function displayCreator(creator, editCount) {
if (isUserPage || isTalkPage || isContributionsPage) {
var sulLink = mw.util.addPortletLink(
var creatorInfo = $('<div>')
'p-cactions',
.append('Page created by: ')
.append($('<a>').attr('href', wikiURL + 'User:' + encodeURIComponent(creator)).text(creator).css({'color': '#0645ad'}))
mw.util.getUrl('Special:CentralAuth/' + username),
'SUL',
.append(' (')
.append($('<a>').attr('href', wikiURL + 'Special:Contributions/' + encodeURIComponent(creator)).text(editCount + ' edits').css({'color': '#0645ad'}))
'ca-sul',
'SUL',
.append(')')
null,
.css({'font-size': '84%', 'color': '#666', 'margin-top': '5px'});

'#ca-sul'
);
$('#bodyContent').prepend(creatorInfo);
}
}

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

Latest revision as of 06:54, 15 August 2024

/**
 * 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]]
importScript('User:Euphoria/batchCategoryAssignment.js'); // Backlink: [[User:Euphoria/batchCategoryAssignment.js]]