MediaWiki:Modifiche alla pagina principale.js

Da Wikinotizie, le notizie a contenuto aperto

Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
  • Opera: premi Ctrl-F5.
/*
 *  Esegue modifiche dell'HTML
 *  della Pagina principale
 *
 *  - aggiunge un pulsante che raggruppa/separa per data
 *    la lista degli ultimi articoli pubblicati
 *
 */

$( function() {
	
	// load test version
	if (
		mw.Uri
		&& mw.Uri().query.test
		)
		{
			importScript( 'MediaWiki:Modifiche alla pagina principale.js/test.js' );
			return;
		}
		
	// altrimenti non si può vedere la versione non modificata della lista
	if ( mw.config.get( 'wgPageName' ) === 'Template:Pagina_principale/Ultimi_articoli_pubblicati' ) {
		return;
	}
	

    var
        lastDate = '',
        $dateGroup = null,
        groupLabel = '[raggruppa per data]',
        ungroupLabel = '[date ai titoli]',
        $divUltimiArticoli = $( '#ultimi-articoli-pubblicati' );

    if ( $divUltimiArticoli.length === 0 )
        return;

    $divUltimiArticoli
        .clone( true )
        .attr( 'id', 'ultimi-articoli-per-data' )
        .hide()
        .insertAfter( '#ultimi-articoli-pubblicati' )
        .find( 'ul > li' )
        .unwrap()
        .each(
            function( pos, li ) {

                function getDateElement( shortDateText ) {

                    function longDate( date ) {

                        var
                            monthName = ["","gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],
                            weekDayName = [
                                'domenica',
                                'lunedì',
                                'martedì',
                                'mercoledì',
                                'giovedì',
                                'venerdì',
                                'sabato'
                            ];

                        return(
                            weekDayName[ date.getDay() ]
                            + ' '
                            + date.getDate()
                            + ' '
                            + monthName[ 1 + date.getMonth() ]
                            + ' '
                            + date.getFullYear()
                            );

                    }

                    var
                        months = ["","gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],
                        split = shortDateText.split( /[ :]/ ),
                        date = new Date(
                            split[ 2 ],
                            months.indexOf(
                                split[ 1 ]
                                ) - 1,
                            split[ 0 ]
                            );

                    return (
                        $( '<p>' )
                        .text(
                            longDate( date )
                            )
                        );

                }

                var
                    $date = (
                        $( li )
                        .contents()
                        .eq( 0 )
                        ),
                    date = (
                        $date
                        .text()
                        );

                $date.remove();

                if ( date !== lastDate ) {

                    $dateGroup = $( '<ul>' );

                    $( '<div style="margin: .5em 0 1em;">' )
                        .append(
                            getDateElement( date )
                            )
                        .append( $dateGroup )
                        .insertBefore( li );

                }

                $dateGroup
                    .append( li );

                lastDate = date;

            }
        );

    $( '<div>' )
        .css( {
            'font-size': '85%',
            'text-align': 'right'
        } )
        .append(
            $( '<a href="javascript:void(0);"></a>' )
            .text( groupLabel )
            .attr( 'id', 'toggle-ultimi-articoli' )
            .click( function() {

                var grouping = this.textContent === groupLabel;

                $( '#ultimi-articoli-per-data' )
                    [ grouping ? 'show' : 'hide' ]();

                $( '#ultimi-articoli-pubblicati' )
                    [ grouping ? 'hide' : 'show' ]();

                this.textContent =
                    ( grouping ? ungroupLabel : groupLabel );

            } )
            )
        .insertBefore( $divUltimiArticoli );
        
    $( '#toggle-ultimi-articoli' )
        .click();

} );