MediaWiki:NewImages.js

!function( $, mw ) { if ( !$( '.WikiaRail, .PhotoModule' ).length ) return; importStylesheetPage( 'NewImages/NewImages.css', 'dev' );

var f = { amount: 0, // amount of all images on wiki current: 3, // current active image in carousel all: 0, // amount of new images on wiki (max: 10) img: [], i18n: { en: { t: 'New images', i: 'images on wiki', u: 'Upload new image', m: 'See all images...' },           ru: { t: 'Новые изображения', i: 'изображений на вики', u: 'Загрузить', m: 'Все изображения...' }       }    },    lng = mw.config.get( 'wgUserLanguage' );

f.lng = ( typeof f.i18n[ lng ] === 'undefined' ) ? f.i18n.en : f.i18n[ lng ];

f.getList = function { $.get( '/api.php', {           action: 'query',            list: 'logevents',            letype: 'upload',            leaction: 'upload/upload',            meta: 'siteinfo',            siprop: 'statistics',            format: 'json'        }, function( d ) {            var r = d.query.logevents,                a = [];            f.amount = d.query.statistics.images;

if ( r.length === 0 ) { f.createBody( false ); return; }

for ( var i = 0; i < 10; i++ ) { var id = r[ i ].pageid;

if ( typeof( id ) === 'undefined' ) break; if ( id === 0 ) continue;

a.push( id ); }

f.getThumbnails( a ); });   };

f.getThumbnails = function( arr ) { $.get( '/api/v1/Articles/Details/', {           ids: arr.join( ',' ),            abstract: 0,            width: 50,            height: 50        }, function( d ) {            Object.keys( d.items ).reverse.forEach( function( k ) { var v = d.items[ k ];

if ( /window-(width|height)\/[1-3]\//.test( v.thumbnail ) ) return true; f.img.push( [ v.thumbnail, v.url ] ); });

f.createBody( true ); });   };

f.createBody = function( t ) { var s = ( $( '.PhotoModule' ).length ) ? '.PhotoModule' : '.WikiaRail'; f.all = f.img.length - 1;

$( '' +               '' +                     '' +                        '' +                            ' ' +                            ' ' +                        '' +                    ' ' +                    f.lng.t +                 ' ' +                ' ' +                    ' ' +                        ' ' + f.amount + ' ' +                        ' ' + f.lng.i + ' ' +                    ' ' +                    '' + f.lng.u + '' + ' ' +               '' + f.lng.m + '' + ' '       ).appendTo( s );

if ( !t ) return;

$( ' ' +               ' < ' +                ' '+                ' > ' +           ' '        ).insertAfter( '.photo-stats' );

if ( f.all < 5 ) $( '.carousel-right' ).toggleClass( 'wds-is-disabled' );

$.each( f.img, function( i, v ) {           $( '.photo-module .carousel' ).append( '' + '' + '' + '' + '' );       });

$( '.carousel-control' ).click( function {           if ( $( this ).hasClass( 'wds-is-disabled' ) ) return;

var c = f.current, to_hide, to_show;

// c - variable for current LAST image in carousel if ( $( this ).hasClass( 'carousel-left' ) ) { to_hide = c;               to_show = c - 4; c--;

if ( c === 3 ) $( this ).addClass( 'wds-is-disabled' ); if ( c !== f.all ) $( '.carousel-right' ).removeClass( 'wds-is-disabled' ); } else { to_hide = c - 3; to_show = c + 1; c++;

if ( c === f.all ) $( this ).addClass( 'wds-is-disabled' ); if ( c !== 3 ) $( '.carousel-left' ).removeClass( 'wds-is-disabled' ); }

$( '.carousel-item-' + to_hide ).css( 'display', 'none' ); $( '.carousel-item-' + to_show ).css( 'display', 'inline' );

f.current = c;       });    };

$( f.getList ); }( jQuery, mediaWiki );