Menú alternativo
Menú alternativo personal
No has accedido
Tu dirección IP será visible si haces alguna edición

Diferencia entre revisiones de «MediaWiki:Citizen.js»

Página de la interfaz de MediaWiki
(JS específico para tema Citizen)
 
mSin resumen de edición
 
(No se muestran 3 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
/* All JavaScript here will be loaded for users of the Citizen skin */
/* All JavaScript here will be loaded for users of the Citizen skin */
"use strict";
/**
/**
  * Recent changes sidebar gadget for the Citizen skin
  * Adds icons for the Citizen skin toggle menu
  * Originally created by @author JaydenKieran from RunescapeWiki
  *
**/
**/
"use strict";
/* obsolete while menu icons are loaded by CSS.
 
 
(function($, mw) {
(function($, mw) {
    var $prependTo;
var $ul = $('#p-Navigation').children()[1]; // This selects the <ul> list of elements
    var $rcContainer;
for (var i=0;i<$ul.children.length;i++) {
    var recentChanges;
var $a = $ul.children[i].children[0];
    var $recentChangesDOM;
var $span = $('<span>').text("")
    var $final;
.addClass('citizen-ui-icon')
 
switch ($a.text) {
    function init() {
case " Main page":
        $prependTo = $('#p-Navigation');
if (mw.config.get('wgIsMainPage')) {
        var api = new mw.Api();
$ul.children[i].remove();
        $final = $('<ul>').after($rcContainer);
}
 
break;
        // Build our container
case "Library":
        var $rcLabelSpan = $('<span>').text('Recent changes')
$span.addClass('prolewiki-ui-icon-library')
        .addClass('citizen-menu__heading-label');
$a.prepend($span[0]);
        var $rcLabel = $('<label>')
break;
.addClass('citizen-menu__heading')
case "Wanted pages":
.attr('id', 'p-RecentChanges-label')
$span.addClass('prolewiki-ui-icon-wanted')
.append($rcLabelSpan);
$a.prepend($span[0]);
        $rcContainer = $('<nav>')
break;
.addClass('mw-portlet mw-portlet-RecentChanges')
case "Recruitment":
.attr('id', 'p-RecentChanges')
$span.addClass('prolewiki-ui-icon-recruitment');
.append($rcLabel)
$a.prepend($span[0]);
.append($final);
break;
 
case "Special pages":
        // Add the container to the sidebar
$span.addClass('prolewiki-ui-icon-special')
        $prependTo.after($rcContainer)
$a.prepend($span[0]);
 
break;
        api.get({
case "Upload file":
                action: "query",
$span.addClass('prolewiki-ui-icon-upload')
                list: "recentchanges",
$a.prepend($span[0]);
                rcprop: "title|timestamp|sizes|user",
break;
                rcnamespace: "0|3000",
                rclimit: "5",
}
                rctype: "edit|new",
}
                rcshow: "!bot|!redirect",
}(jQuery, mediaWiki)); */
                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 – ';
}
 
                        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 {
                    $recentChangesDOM = $('<p>').text('No recent changes.')
                }


                $final.append($recentChangesDOM)
/* Adds Sandbox icon for the Citizen skin preferences menu */
                var $showMore
// (function($, mw) {
$showMore = $('<div>')
// var $a = $('#pt-sandbox').children()[0];
                .addClass('rc-sidebar-item rc-sidebar-more')
// var $span = $('<span>')
                .append(
// .addClass('citizen-ui-icon')
                $('<a>')
// .addClass('prolewiki-ui-icon-sandbox');
                .addClass('rc-sidebar-page')
// $a.prepend($span[0]);
                .text('See more...')
// }(jQuery, mediaWiki));
                .attr('href', '/wiki/Special:RecentChanges')
                )
                $final.append($showMore)
            })
            .fail(function(_, data) {
                alert(data.error.info)
            });
    }


    mw.loader.using(['mediawiki.util', 'mediawiki.api'], function() {
//New homepage search bar
        $(init)
mw.loader.using( [ 'mediawiki.util' ] ).done( function() {
    })
console.log("loaded utils");
}(jQuery, mediaWiki));
/* Trigger search box when click on the fake search button on main page */
//if ( mw.config.get( 'wgIsMainPage' ) === true ) {
document.getElementById( 'homepage-search' ).addEventListener( 'click', function() {
var search = document.getElementById( 'citizen-search-details' );
search.open = true;
} );
//}
} );

Revisión actual - 07:54 9 oct 2024

/* All JavaScript here will be loaded for users of the Citizen skin */
"use strict";

/**
 *		Adds icons for the Citizen skin toggle menu
 *	
**/
/* obsolete while menu icons are loaded by CSS.
(function($, mw) {
	var $ul = $('#p-Navigation').children()[1]; // This selects the <ul> list of elements
	for (var i=0;i<$ul.children.length;i++) {
		var $a = $ul.children[i].children[0];
		var $span = $('<span>').text("")
		.addClass('citizen-ui-icon')
		switch ($a.text) {
			case " Main page":
				if (mw.config.get('wgIsMainPage')) {
					$ul.children[i].remove();
				}
				break;
			case "Library":
				$span.addClass('prolewiki-ui-icon-library')
				$a.prepend($span[0]);
				break;
			case "Wanted pages":
				$span.addClass('prolewiki-ui-icon-wanted')
				$a.prepend($span[0]);
				break;
			case "Recruitment":
				$span.addClass('prolewiki-ui-icon-recruitment');
				$a.prepend($span[0]);
				break;
			case "Special pages":
				$span.addClass('prolewiki-ui-icon-special')
				$a.prepend($span[0]);
				break;
			case "Upload file":
				$span.addClass('prolewiki-ui-icon-upload')
				$a.prepend($span[0]);
				break;
				
		}
	}
}(jQuery, mediaWiki)); */

/* Adds Sandbox icon for the Citizen skin preferences menu */
// (function($, mw) {
// 	var $a = $('#pt-sandbox').children()[0];
// 	var $span = $('<span>')
// 		.addClass('citizen-ui-icon')
// 		.addClass('prolewiki-ui-icon-sandbox');
// 	$a.prepend($span[0]);
// }(jQuery, mediaWiki));

//New homepage search bar
mw.loader.using( [ 'mediawiki.util' ] ).done( function() {
	console.log("loaded utils");
	/* Trigger search box when click on the fake search button on main page */
	//if ( mw.config.get( 'wgIsMainPage' ) === true ) {
		document.getElementById( 'homepage-search' ).addEventListener( 'click', function() {
			var search = document.getElementById( 'citizen-search-details' );
			search.open = true;
		} );
	//}
} );