Uit Hack42
Ga naar: navigatie, zoeken
(Nieuwe pagina aangemaakt met '→‎JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers: $().ready(function() { user = mw.user.name(); if (user) { ...')
 
k (Onderstaande wijzigingen in oktober 2022: wgUserName en meer wgVariabelen moeten expliciet opgehaald worden met mw.config.get, zitten niet meer in top scope)
 
(75 tussenliggende versies door 5 gebruikers niet weergegeven)
Regel 1: Regel 1:
/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers */
+
/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers! */
$().ready(function() {
+
jQuery().ready(function() {
     user = mw.user.name();
+
    euros();
 +
    createiFrameMap();
 +
    getEditToken();
 +
     user = mw.config.get( 'wgUserName' );
 +
    pagename = mw.config.get( 'wgPageName' );
 
     if (user) {
 
     if (user) {
         titels = '#Ik_kom_wel,#Ik_kom_niet,#Animo,#Aanwezig,#Afwezig';
+
         var titles = jQuery('#Ik_kom_wel,#Ik_kom_niet,#Ik_kom_misschien,#Animo,#Aanwezig,#Afwezig,#Wie,#Wie_niet,#Wie_misschien');
         var user_is_al_in_lijst = $(titels).parent().next().find('li a:contains("' + user + '")');
+
         titles.each(function() {
 +
            var $title = jQuery(this).parent();
 +
            var $siblings = $title.nextUntil('h1,h2,h3,h4,h5,h6');
 +
            var $ul = $siblings.filter('ul:first');
 +
            var alreadyInList = $ul.find('li a:contains("'+user+'")').length > 0;
 +
            if ( ! alreadyInList) {
 +
                if ( ! $ul.length) {
 +
                    $ul = jQuery('<ul>').insertAfter($title);
 +
                }
 +
                addAddUserButton($title, $ul);
 +
            }
 +
        });
 +
    }
 +
});
 +
 
 +
function createiFrameMap(){
 +
  my_div = document.getElementById("iframe_example");
 +
  if (my_div === undefined || my_div === null)
 +
    return;
 +
  var ifrm = document.createElement("iframe");
 +
  ifrm.setAttribute("src", "https://hack42.nl/");
 +
  ifrm.style.width = "640px";
 +
  ifrm.style.height = "480px";
 +
  my_div.appendChild(ifrm);
 +
}
 +
 
 +
function euros(){
 +
    var body = document.body;
 +
    var textContent = body.textContent || body.innerText;
  
        if (user_is_al_in_lijst.length) {
+
    var myRegex = /()[0-9]{0,4}(,?\.?[0-9]{0,2})?/g;
            // user_is_al_in_lijst.parent().append('<input type="button" value="-"/>');
+
    var myAmount = textContent.match(myRegex);
        } else {
 
            $(titels).each(function(index, val) {
 
                var ul = $(val).parent().next()
 
                var section_id = $(val).parent().children('span').children('a').attr('href').match(/section=([0-9]+)/)[1]
 
                var li = ul.append('<li><input type="button" value="' + user + '"/><input type="text" /></li>');
 
  
                $(li).find('input[type="button"]').click(function() {
+
    if (myAmount){
                    var comment = " " + $(this).next().attr('value')
+
   
                    if (!comment) comment = ''
+
    var myValue = 0.00;
                    $.ajax({
+
    for(var i=0; i<myAmount.length; i++){
                        url: mw.util.wikiScript('api'),
+
        myValue += parseFloat(myAmount[i].replace(",",".").replace("€",""));
                        data: {
+
    }
                            format: 'json',
+
 
                            action: 'edit',
+
    if (document.getElementById("euros")){
                            title: mw.config.get('wgPageName'),
+
        document.getElementById("euros").innerHTML = "" + (Math.round(myValue * 100) / 100);
                            summary: 'naam toegevoegd via button',
+
    }
                            section: section_id,
+
    }
                            appendtext: '\n* [[Gebruiker:Aequitas|Aequitas]]' + comment,
+
};
                            token: mw.user.tokens.get('editToken')
+
 
                        },
+
function getEditToken() {
                        dataType: 'json',
+
    jQuery.getJSON(
                        type: 'POST',
+
        '/mediawiki/api.php?',
                        success: function(data) {
+
        {
                            location.reload()
+
            action: 'query',
                        },
+
            prop: 'info',
                        error: function(xhr) {
+
            intoken: 'edit',
                            alert('Error: iets is mis gegaan, herlaad pagina en probeer opnieuw.');
+
            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(jQuery('<li>').append(button, textField));
 +
 +
    button.click(function() {
 +
        var comment = textField.val();
 +
        if (comment == '+soep, oid')
 +
            comment = '';
 +
        ajaxSubmitUserAndComment($title, comment);
 +
    });
 +
    textField.keypress(function (e) {
 +
      if (e.which == 13) {
 +
        var comment = textField.val();
 +
        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 $editButton = $title.find('span a');
 +
    if ($editButton.length) {
 +
        var section_id = $editButton.attr('href').match(/section=([0-9]+)/)[1];
 +
        jQuery.ajax({
 +
            url: '/mediawiki/api.php',
 +
            data: {
 +
                format: 'json',
 +
                action: 'edit',
 +
                title: pagename,
 +
                minor: true,
 +
                summary: 'Naam toegevoegd via button',
 +
                section: section_id,
 +
                appendtext: '\n* {{Mentioneduserbutton|' + user + '}}'  + ' ' + 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.');
 +
            }
 +
        });
 +
    } else {
 +
        alert('Error: iets is mis gegaan, herlaad pagina en probeer opnieuw.');
 
     }
 
     }
})
+
}

Huidige versie van 12 okt 2022 om 19:53

/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers! */
jQuery().ready(function() {
    euros();
    createiFrameMap();
    getEditToken();
    user = mw.config.get( 'wgUserName' );
    pagename = mw.config.get( 'wgPageName' );
    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');
            var alreadyInList = $ul.find('li a:contains("'+user+'")').length > 0;
            if ( ! alreadyInList) {
                if ( ! $ul.length) {
                    $ul = jQuery('<ul>').insertAfter($title);
                }
                addAddUserButton($title, $ul);
            }
        });
    }
});

function createiFrameMap(){
  my_div = document.getElementById("iframe_example");
  if (my_div === undefined || my_div === null)
    return;
  var ifrm = document.createElement("iframe");
  ifrm.setAttribute("src", "https://hack42.nl/");
  ifrm.style.width = "640px";
  ifrm.style.height = "480px";
  my_div.appendChild(ifrm);
}

function euros(){
    var body = document.body;
    var textContent = body.textContent || body.innerText;

    var myRegex = /(€)[0-9]{0,4}(,?\.?[0-9]{0,2})?/g;
    var myAmount = textContent.match(myRegex);

    if (myAmount){
    
    var myValue = 0.00;
    for(var i=0; i<myAmount.length; i++){
         myValue += parseFloat(myAmount[i].replace(",",".").replace("€",""));
    }

    if (document.getElementById("euros")){
        document.getElementById("euros").innerHTML = "€" + (Math.round(myValue * 100) / 100);
    }
    }
};

function getEditToken() {
    jQuery.getJSON(
        '/mediawiki/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(jQuery('<li>').append(button, textField));

    button.click(function() {
        var comment = textField.val();
        if (comment == '+soep, oid')
            comment = '';
        ajaxSubmitUserAndComment($title, comment);
    });
    textField.keypress(function (e) {
      if (e.which == 13) {
        var comment = textField.val();
        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 $editButton = $title.find('span a');
    if ($editButton.length) {
        var section_id = $editButton.attr('href').match(/section=([0-9]+)/)[1];
        jQuery.ajax({
            url: '/mediawiki/api.php',
            data: {
                format: 'json',
                action: 'edit',
                title: pagename,
                minor: true,
                summary: 'Naam toegevoegd via button',
                section: section_id,
                appendtext: '\n* {{Mentioneduserbutton|' + user + '}}'  + ' ' + 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.');
            }
        });
    } else {
        alert('Error: iets is mis gegaan, herlaad pagina en probeer opnieuw.');
    }
}