Järjestelmäviesti:Gadget-ViikonKilpailu.js

Huomautus: Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.

  • Firefox ja Safari: Napsauta Shift-näppäin pohjassa Päivitä, tai paina Ctrl-F5 tai Ctrl-R (⌘-R Macilla)
  • Google Chrome: Paina Ctrl-Shift-R (⌘-Shift-R Macilla)
  • Internet Explorer ja Edge: Napsauta Ctrl-näppäin pohjassa Päivitä tai paina Ctrl-F5
  • Opera: Paina Ctrl-F5.
/** * Maintainer: [[user:Gálaniitoluodda]] 
 Viikon kilpailun apuohjelma 

 *  Maintainer: [[User:Gálaniitoluodda]]
 *  Alkuperäinen skripti: https://no.wikipedia.org/wiki/MediaWiki:Ukens_konkurranse.js
 *  Scriptin toimintaa voi testata sivulla: [[:no:Wikipedia:Ukens konkurranse]]
 *  Skripti lisää viikon kilpailun sivuille painikkeen ”Ilmoittaudu osallistujaksi”.
 *
 * if (/^Wikipedia:Ukens_konkurranse\/Ukens_konkurranse/.test(mw.config.get('wgPageName'))) {
 *     mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') + '?title= MediaWiki:Ukens_konkurranse.js&action=raw&ctype=text/javascript');
 * }

**/ 

/*jslint browser: true */
/*global mediaWiki, OO */
function load_viikonkilpailu()
{
	var userName = mw.user.getName();
	if ( userName=="Gálaniitoluodda" 
	       || userName=="Arla" 
	       || userName=="Lentokonefani" 
	       || userName=="Lakritsa" 
	       || userName=="MAQuire"
	       || userName=="Veli Himmeä"
	       || userName=="Geohakkeri" 
	       || userName=="Pxos"
	       || userName=="Zache" 
	       || userName=="Danmichaelo" 
	       || userName=="UKBot"
		)
		{
	  		$(".vk_administrators_info").show();
		}
	
	// Ladataan ainoastaan jos ollaan viikon kilpailu -sivulla.
	var pageName=mw.config.get('wgPageName');
	if (/Wikipedia:Viikon_kilpailu\/Viikon_kilpailu/.test(pageName) 
		|| /Wikipedia:Heinäkuun_lähdetalkoot/.test(pageName) 
		|| /Wikiprojekti:Suomi_100\/International_Challenge/.test(pageName) 
		|| /Wikiprojekti:Punaisten_linkkien_naiset/.test(pageName)
		|| /Wikiprojekti:Tiede_Wikipediaan_2023/.test(pageName) 
		|| /Wikipedia:Elokuun_kuvitustalkoot\/201[0-9]/.test(pageName)
		|| /Wikipedia:Elokuun_kuvitustalkoot\/2013_b/.test(pageName) 
		|| /Wikiprojekti:Historian_jännät_naiset_Wikipediaan/.test(pageName) 
		|| /Wikipedia:Muokkaustapahtuma/.test(pageName) ) 
	{

	
	    // Mikäli käyttäjä on kilpailun organisaattori niin näytetään organisaattori elementit
	    var e=document.getElementById("vk_organizers");
	   
	    if (e && e.innerHTML.search(userName)!=-1)
	    {
	    	$(".vk_organizers_info").show();
	    }

    mw.loader.using(['mediawiki.util', 'oojs-ui'], function () {

        var visible = false;
        var timer;

        var popup = new OO.ui.PopupWidget( {
            $content: $('<small id="uk-popup"></small>'),
            // $container: $('.uk-ap:first'),
            padded: true,
            width: 400,
            align: 'forwards',
        } );
        $( 'body' ).append( popup.$element );

        function leave() {
            timer = setTimeout( function () {
                popup.toggle( false );
                visible = false;
            }, 200 );
        }

        function enter() {
            var $this = $( this );
            if (visible) {
                clearTimeout( timer );
            } else {
                visible = true;
            }
            if ($this.hasClass('uk-ap')) {
                popup.setFloatableContainer( $this );
                $( '#uk-popup' ).html( $this.next( '.uk-ap-title' ).html() );
                popup.toggle( true );
            }
        }

        $( '.uk-ap' ).on( 'mouseenter', enter).on( 'mouseleave', leave);
        popup.$element.on( 'mouseenter', enter).on( 'mouseleave', leave);

        $( '.uk-ap-title' ).hide();
    });

    mw.loader.using(['mediawiki.ui.button', 'oojs-ui', 'jquery.spinner'], function () {

        mw.messages.set('ukens-konkurranse-login', 'Kirjaudu sisään ilmoittautuaksesi osallistujaksi');
        mw.messages.set('ukens-konkurranse-join', 'Ilmoittaudu osallistujaksi');
        mw.messages.set('ukens-konkurranse-joined', 'Olet ilmoittautunut!');
        mw.messages.set('ukens-konkurranse-closed', 'Tämä kilpailu on päättynyt.<br />Kiitos kaikille osallistujille!');
        mw.messages.set('ukens-konkurranse-summary', 'Ilmoittautumassa...');

        var paameldt = false,
            h2 =  $('#Osallistujat').closest("h2").parent(),
            sectionId = -1,
            userName = mw.user.getName(),
            api = new mw.Api(),
            endtime = parseInt($('.UK-end-ts').text(), 10),
            now = new Date() / 1000;

        function visPaameldt() {
            h2.after('<div style="float:right; margin:.3em 1em; font-weight:bold"><span class="oo-ui-widget oo-ui-iconElement oo-ui-iconElement-icon oo-ui-icon-check oo-ui-iconWidget oo-ui-image-progressive" aria-disabled="true" title="Picture icon"></span> ' + mw.messages.get('ukens-konkurranse-joined') + '</div>');
        }

        if (h2.length === 1) {
            sectionId = sectionId = h2.prevAll('.mw-heading').length + 1;

            if (now > endtime) {
                h2.after('<div style="float:right; border:3px solid #DD5555; padding:15px 30px 15px 20px; margin:0 0 0.5em 0.5em; border-radius:10px; font-weight:bold; background: #F8F8F8;"><div style="background: url(//upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Emblem-diamond.svg/16px-Emblem-diamond.svg.png) left no-repeat; padding-left:20px;">' + mw.messages.get('ukens-konkurranse-closed') + '</div></div>');
                return;
            }

            if (userName === null) {
                h2.after('<div style="float:right; border:3px solid #008800; padding:15px 30px 15px 20px; margin:0 0 0.5em 0.5em; border-radius:10px; font-weight:bold; background: #BFFF00;">' + mw.messages.get('ukens-konkurranse-login') + '</div>');
                return;
            }

	            // Onko joku ilmoittaunut?
	            if (h2.nextUntil('h2', 'ul').length !== 0) {
                h2.nextUntil('.mw-heading').find('a').each(function () {
                    if ($(this).attr('title').split(':')[1] === userName) {
                        paameldt = true;
                    }
                });
            }

            if (paameldt) {
                visPaameldt();
            } else {
                h2.after('<div id="joindiv" style="float:right;"><span id="uk-status"></span><button id="joinbtn" class="mw-ui-button mw-ui-progressive mw-ui-big">' + mw.messages.get('ukens-konkurranse-join') + '</button></div>');
                $(function () {
                    $('#joinbtn').click(function () {
                        $('#joinbtn').prop('disabled', true);
                        $('#uk-status').injectSpinner('uk-status-spinner');

                        api.post({
                            'action': 'edit',
                            'title': mw.config.get('wgPageName'),
                            'section': sectionId,
                            'appendtext': '\n* [[User:' + userName + '|' + userName + ']]',
                            'token': mw.user.tokens.get('csrfToken'),
                            'summary': mw.messages.get('ukens-konkurranse-summary')
                        }).done(function() {
                            var li = '<ul><li><a href="/wiki/User:' + userName + '" title="User:' + userName + '">' + userName + '</a></li></ul>\n';
                            $.removeSpinner('uk-status-spinner');
                            paameldt = true;
                            $('#joindiv').nextAll('div.mw-heading2:first').before(li);
                            $('#joindiv').remove();
                            visPaameldt();
                        }).fail(function() {
                            $.removeSpinner('uk-status-spinner');
                            $('#uk-status').append('Det oppstod en feil.');
                        });

                    });
                });
            }
        }
    });
    }
}


$(load_viikonkilpailu);