Basculer le menu
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« MediaWiki:Gadget-recentChanges.js » : différence entre les versions

Page de l’interface de MediaWiki
Autres langues
m (1 version importée)
Aucun résumé des modifications
 
(5 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 17 : Ligne 17 :


     function init() {
     function init() {
         $prependTo = $('#p-Navigation');
         $prependTo = $('#p-navigation');
         var api = new mw.Api();
         var api = new mw.Api();
          
          
Ligne 24 : Ligne 24 :
         $final = $('<ul>').after($rcContainer);
         $final = $('<ul>').after($rcContainer);
        var $rcLabelSpan = $('<span>').text('Recent changes')
        var $rcLabelSpan = $('<span>').text('Modifications récentes')
        .addClass('citizen-menu__heading-label');
        .addClass('citizen-menu__heading-label');
        var $rcLabel = $('<label>')
        var $rcLabel = $('<label>')
Ligne 40 : Ligne 40 :
             .attr('id', 'p-RecentChanges')
             .attr('id', 'p-RecentChanges')
             .append(
             .append(
                 $('<label>').text('Recent changes')
                 $('<label>').text("Modifications récentes")
                 .addClass('vector-menu-heading')
                 .addClass('vector-menu-heading')
                 .attr('id', 'p-RecentChanges-label')
                 .attr('id', 'p-RecentChanges-label')
Ligne 138 : Ligne 138 :
                     })
                     })
                 } else {
                 } else {
                     $recentChangesDOM = $('<p>').text('No recent changes.')
                     $recentChangesDOM = $('<p>').text('Aucune modification récente')
                 }
                 }
                 if (vector) {
                 if (vector) {
Ligne 150 : Ligne 150 :
                 $('<a>')
                 $('<a>')
                 .addClass('rc-sidebar-page')
                 .addClass('rc-sidebar-page')
                 .text('See more...')
                 .text('Voir plus...')
                 .attr('href', '/wiki/Special:RecentChanges')
                 .attr('href', '/wiki/Spécial:Modifications_récentes')
                 )
                 )
                 $final.append($showMore)
                 $final.append($showMore)

Dernière version du 28 juin 2023 à 17:03

/**
 *		Recent changes sidebar gadget for both Vector and Citizen skin
 *		Originally created by @author JaydenKieran from RunescapeWiki
**/
"use strict";


(function($, mw) {
    var $prependTo;
    var $rcContainer;
    var recentChanges;
    var $recentChangesDOM;
    var $final;
    
    var citizen = mw.config.get('skin') == 'citizen';
    var vector = mw.config.get('skin') == 'vector';

    function init() {
        $prependTo = $('#p-navigation');
        var api = new mw.Api();
        
        //Adopting different structures for different skins
        if (citizen) {
        	$final = $('<ul>').after($rcContainer);
	
	        var $rcLabelSpan = $('<span>').text('Modifications récentes')
	        	.addClass('citizen-menu__heading-label');
	        var $rcLabel = $('<label>')
				.addClass('citizen-menu__heading')
				.attr('id', 'p-RecentChanges-label')
				.append($rcLabelSpan);
	        $rcContainer = $('<nav>')
				.addClass('mw-portlet mw-portlet-RecentChanges')
				.attr('id', 'p-RecentChanges')
				.append($rcLabel)
				.append($final);
        } else if (vector) {
        	$rcContainer = $('<nav>')
            .addClass('vector-menu vector-menu-portal portal')
            .attr('id', 'p-RecentChanges')
            .append(
                $('<label>').text("Modifications récentes")
                	.addClass('vector-menu-heading')
                	.attr('id', 'p-RecentChanges-label')
            )
        }

        // Add the container to the sidebar
        $prependTo.after($rcContainer)

        api.get({
                action: "query",
                list: "recentchanges",
                rcprop: "title|timestamp|sizes|user",
                rcnamespace: "0|3000",
                rclimit: "5",
                rctype: "edit|new",
                rcshow: "!bot|!redirect",
                rctoponly: 1,
                format: "json"
            })
            .done(function(data) {
                if (data.query && data.query.recentchanges) {
                    recentChanges = data.query.recentchanges
                }

                if (recentChanges.length > 0) {
                    var Time = 1;
                    $recentChangesDOM = recentChanges.map(function(rc) {
                        const timeMatch = rc.timestamp.match(/([0-9]+)-([0-9]+)-([0-9]+)T([0-9]+):([0-9]+):([0-9]+)Z/);
                    	var editYear = timeMatch[1];
                    	var editMonth = timeMatch[2];
                    	var editDay = timeMatch[3];
                    	var editHour = timeMatch[4];
                    	var editMinute = timeMatch[5];
                    	var editSecond = timeMatch[6];
                    	
                    	var editDate = new Date(editYear, (editMonth-1), editDay, editHour, editMinute, editSecond);
						var currentDate = new Date();
						currentDate = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000)
						var diffDate = currentDate - editDate;
						var diffDays = Math.floor(diffDate/(1000*60*60*24));
						var diffHours = Math.floor(diffDate/(1000*60*60));
						var diffMinutes = Math.floor(diffDate/(1000*60));
						var diffSeconds = Math.floor(diffDate/(1000));
						
						if (diffDays > 0) {
							Time = diffDays + 'd ago – ';
						} else if (diffHours > 0) {
							Time = diffHours + 'h ago – ';
						} else if (diffMinutes > 0) {
							Time = diffMinutes + 'm ago – ';
						} else if (diffSeconds > 0) {
							Time = diffSeconds + 's ago – ';
						} else {
							Time = 1 + Math.floor(Math.random() * 10) + 'm ago – ';
						}
						if (citizen) {
	                        return $('<li>').addClass('mw-list-item').append(
	                            $('<a>')
	                            .css('white-space', 'normal')
	                            .addClass('rc-sidebar-page')
	                            .text(' ' + rc.title)
	                            .attr('href', new mw.Title(rc.title).getUrl()),
	                            $('<p>')
	                            .css({
	                            	'text-align': 'right',
	                            	'margin-right': '2.5em'
	                            	})
	                            .addClass('rc-sidebar-user')
	                            .text(Time)
	                            .append(
	                                $('<a>')
	                                .css({
	                            	'display' : '-webkit-inline-box',
	                            	'padding' : '0px'
	                                })
	                                .text(rc.user)
	                                .attr('href', new mw.Title(rc.user, 2).getUrl())
	                            )
	                        )
                        } else if (vector) {
                        	return $('<div>').addClass('rc-sidebar-item').append(
                            	$('<a>')
                            		.addClass('rc-sidebar-page')
                            		.text(' ' + rc.title)
                            		.attr('href', new mw.Title(rc.title).getUrl()),
                            	$('<p>')
                            		.addClass('rc-sidebar-user')
                            		.text(Time)
                            		.append(
                            			$('<a>')
                                			.text(rc.user)
                                			.attr('href', new mw.Title(rc.user, 2).getUrl())
                            		)
                            )
                        }
                    })
                } else {
                    $recentChangesDOM = $('<p>').text('Aucune modification récente')
                }
                if (vector) {
                	$final = $rcContainer;
                }
                $final.append($recentChangesDOM)
                var $showMore
				$showMore = $('<div>')
                	.addClass('rc-sidebar-item rc-sidebar-more')
                	.append(
                		$('<a>')
                		.addClass('rc-sidebar-page')
                		.text('Voir plus...')
                		.attr('href', '/wiki/Spécial:Modifications_récentes')
                )
                $final.append($showMore)
            })
            .fail(function(_, data) {
                alert(data.error.info)
            });
    }

    mw.loader.using(['mediawiki.util', 'mediawiki.api'], function() {
        $(init)
    })
}(jQuery, mediaWiki));