Uit Hack42
Ga naar: navigatie, zoeken

Let op! Nadat u de wijzigingen hebt opgeslagen is het wellicht nodig uw browsercache te legen.

  • Firefox / Safari: houd Shift ingedrukt terwijl u op Vernieuwen klikt of druk op Ctrl-F5 of Ctrl-R (⌘-Shift-R op een Mac)
  • Google Chrome: druk op Ctrl-Shift-R (⌘-Shift-R op een Mac)
  • Internet Explorer: houd Ctrl ingedrukt terwijl u op Vernieuwen klikt of druk op Ctrl-F5
  • Opera: leeg uw cache in Extra → Voorkeuren
/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers */
jQuery().ready(function() {
    getEditToken();
    user = wgUserName;
    if (user) {
        var titles = jQuery('#Ik_kom_wel,#Ik_kom_niet,#Ik_kom_misschien,#Animo,#Aanwezig,#Afwezig,#Wie,#Wie_niet,#Wie_misschien');
        titles.each(function() {
            var $title = jQuery(this).parent();
            var $siblings = $title.nextUntil('h1,h2,h3,h4,h5,h6');
            var $ul = $siblings.filter('ul:first');
            console.log($siblings, $ul);
            var alreadyInList = $ul.find('li a:contains("'+user+'")').length > 0;
            if ( ! alreadyInList) {
                if ($ul.length === 0) {
                    $ul = jQuery('<ul>').insertAfter($title);
                }
                addAddUserButton($title, $ul);
            }
        });
    }
});

function getEditToken() {
    jQuery.getJSON(
        wgScriptPath + '/api.php?',
        {
            action: 'query',
            prop: 'info',
            intoken: 'edit',
            titles: 'Main Page',
            indexpageids: '',
            format: 'json'
        },
        function( data ) {
            if ( data.query.pages && data.query.pageids ) {
                var pageid = data.query.pageids[0];
                wgEditToken = data.query.pages[pageid].edittoken;
            }
        }
    )
}

function addAddUserButton($title, $ul) {
    var button = jQuery('<input type="button" value="'+user+'"/>');
    var textField = jQuery('<input type="text" value="+soep, oid" />');
    $ul.append('<li>').append(button, textField);

    button.click(function() {
        var comment = textField.attr('value');
        if (comment == '+soep, oid')
            comment = '';
        ajaxSubmitUserAndComment($title, comment);
    });

    textField
        .css({color: 'lightgray'}) // TODO: use CSS class instead?
        .focus(function() {
            if (this.value == '+soep, oid')
                jQuery(this).val('').css({color: 'black'});
        })
        .blur(function() {
            if (this.value == '')
                jQuery(this).val('+soep, oid').css({color: 'lightgray'});
        });
}

function ajaxSubmitUserAndComment($title, comment) {
    var section_id = $title.children('span a').attr('href').match(/section=([0-9]+)/)[1];
    jQuery.ajax({
        url: wgScriptPath + '/api.php',
        data: {
            format: 'json',
            action: 'edit',
            title: wgPageName,
            minor: true,
            summary: 'Naam toegevoegd via button',
            section: section_id,
            appendtext: '\n* {{Mentioneduserbutton|' + wgUserName + '}}'  + comment,
            token: wgEditToken
        },
        dataType: 'json',
        type: 'POST',
        success: function(data) {
            window.location.href = window.location.href + '?' + new Date().getTime();
            window.location.reload(true);
        },
        error: function(xhr) {
            alert('Error: iets is mis gegaan, herlaad pagina en probeer opnieuw.');
        }
    });
}