MediaWiki:Gadget-0xBlockMessage.js
Apparence
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*
<nowiki>
*/
var bm_texts = {
"default-header" : "Bloquer l’utilisateur",
"success-header" : "Blocage réussi",
"form-legend": "Avertir \'$1\' de son blocage",
"template-label": "Modèle",
"subst-label": "Subster le modèle",
"clean-label": "Effacer la PdD avant de mettre le modèle",
"submit-label": "Avertir",
"message-summary": "Blocage",
"section-title": "Blocage",
"successnotif": "La pose du message a réussi",
"time-label": "Durée",
"unit-label": "Unité",
};
var items = [
{
"separator": "Durée limitée",
}, {
"name": "Bloqué",
"template": "Bloqué|$1|$2",
}, {
"name": "Bloqué sans avertissement",
"template": "Bloqué sans avertissement|$1|$2",
}, {
"name": "Insultes",
"template": "Insultes|$1|$2",
}, {
"name": "IP partagée bloquée",
"template": "IP partagée bloquée|$1|$2",
}, {
"name": "Vandale scolaire bloqué",
"template": "Vandale scolaire bloqué",
"autoselect-time": "15 july 2016",
}, {
"name": "Proxy",
"template": "Proxy",
"default-subst": false,
"autoselect-reason": "[[Wikipédia:Proxy ouvert|Proxy ouvert]]",
}, {
"separator": "Durée indéfini",
}, {
"name": "Vandale banni",
"template": "Vandale banni",
"default-clean": true,
}, {
"name": "Vandale banni sans avertissement",
"template": "Vandale banni sans avertissement",
"default-clean": true,
"autoselect-time": "infinite",
}, {
"name": "Bot banni",
"template": "Bot banni",
},
];
var bm_vars = {
"user": null,
"reason": null,
"duree": null,
};
$(function() {
if (window.location.pathname.indexOf(encodeURI("Spécial:Bloquer/")) == 6) {
if ($("#firstHeading").html() == bm_texts['default-header']) {
$(".visualClear .mw-htmlform-submit").click(function(event) {
$.cookie("blockmessages-user", $("#mw-bi-target").val());
$.cookie("blockmessages-duree", $("#mw-input-wpExpiry").val());
$.cookie("blockmessages-reason", $("#mw-input-wpReason").val());
});
} else if ($("#firstHeading").html() == bm_texts['success-header'] && $.cookie("blockmessages-user") !== null) {
bm_vars = {
"user": $.cookie("blockmessages-user"),
"reason": $.cookie("blockmessages-reason"),
"duree": $.cookie("blockmessages-duree"),
};
bm_add_form();
bm_parse_time();
$("#blockmessage-submit").click(function(event) {
event.preventDefault();
bm_send_message();
});
$("#blockmessage-select").change(function (event) {
var id = $("#blockmessage-select option:selected").attr("bm-id");
if(items[id].hasOwnProperty("default-subst")) {
if(items[id]["default-subst"])
$("#blockmessage-subst").attr("checked", "checked");
else
$("#blockmessage-subst").removeAttr("checked");
}
if(items[id].hasOwnProperty("default-clean")) {
if(items[id]["default-clean"])
$("#blockmessage-clean").attr("checked", "checked");
else
$("#blockmessage-clean").removeAttr("checked");
}
});
bm_populate_select();
}
}
});
function bm_add_form() {
$('#bodyContent').append('\
<form class="visualClear">\
<fieldset>\
<legend>' + bm_texts['form-legend'].replace("$1", bm_vars["user"]) + '</legend>\
<table>\
<tbody>\
<tr class="mw-htmlform-field-HTMLSelectOrOtherField">\
<td class="mw-label">\
<label for="blockmessage-select">' + bm_texts['template-label'] + ' :</label>\
</td>\
<td class="mw-input">\
<select id="blockmessage-select" class="mw-htmlform-select-or-other">\
</select>\
</td>\
</tr>\
<tr class="mw-htmlform-field-HTMLSelectOrOtherField blockmessage-hidden" style="display:none;">\
<td class="mw-label">\
<label for="blockmessage-time">' + bm_texts['time-label'] + ' :</label>\
</td>\
<td class="mw-input">\
<input id="blockmessage-time" size="45" />\
</td>\
</tr>\
<tr class="mw-htmlform-field-HTMLSelectOrOtherField blockmessage-hidden" style="display:none;">\
<td class="mw-label">\
<label for="blockmessage-unit">' + bm_texts['unit-label'] + ' :</label>\
</td>\
<td class="mw-input">\
<input id="blockmessage-unit" size="45" />\
</td>\
</tr>\
<tr class="mw-htmlform-field-HTMLCheckField">\
<td class="mw-label">\
<label> </label>\
</td>\
<td class="mw-input">\
<input name="blockmessage-subst" checked="checked" id="blockmessage-subst" type="checkbox"> <label for="blockmessage-subst">' + bm_texts['subst-label'] + '</label>\
</td>\
</tr>\
<tr class="mw-htmlform-field-HTMLCheckField">\
<td class="mw-label">\
<label> </label>\
</td>\
<td class="mw-input">\
<input name="blockmessage-clean" id="blockmessage-clean" type="checkbox"> <label for="blockmessage-clean">' + bm_texts['clean-label'] + '</label>\
</td>\
</tr>\
</tbody>\
</table>\
<input id="blockmessage-submit" class="mw-htmlform-submit" value="' + bm_texts['submit-label'] + '" type="submit">\
</fieldset>\
</form>\
');
}
function bm_populate_select() {
var root = $("#blockmessage-select");
var current_node = root;
var optgroup_open = null;
$(items).each(function(key) {
if (this.hasOwnProperty("separator")) {
current_node = $('<optgroup label="' + this.separator + '">');
root.append(current_node);
} else {
var option = $("<option>").attr('value', this.template).attr('bm-id', key).text(this.name);
if(this.hasOwnProperty('autoselect-time') && bm_vars["duree"] !== null) {
if(bm_vars["duree"].indexOf(this['autoselect-time']) > -1) {
option.prop('selected', true);
}
}
if(this.hasOwnProperty('autoselect-reason') && bm_vars["user"] !== null) {
if(bm_vars["user"].indexOf(this['autoselect-reason']) > -1) {
option.prop('selected', true);
}
}
current_node.append(option);
}
});
}
function bm_parse_time() {
time_set = true;
if (bm_vars["duree"] !== null) {
var tmp = bm_vars["duree"].split(" ");
if (tmp.length == 2 && !isNaN(tmp[0])) {
switch (tmp[1]) {
case "hour":
$("#blockmessage-unit").attr("value", "heure");
break;
case "hours":
$("#blockmessage-unit").attr("value", "heures");
break;
case "day":
$("#blockmessage-unit").attr("value", "jour");
break;
case "days":
$("#blockmessage-unit").attr("value", "jours");
break;
case "week":
$("#blockmessage-unit").attr("value", "semaine");
break;
case "weeks":
$("#blockmessage-unit").attr("value", "semaines");
break;
case "month":
$("#blockmessage-unit").attr("value", "mois");
break;
case "months":
$("#blockmessage-unit").attr("value", "mois");
break;
case "year":
$("#blockmessage-unit").attr("value", "année");
break;
case "years":
$("#blockmessage-unit").attr("value", "années");
break;
default:
time_set = false;
}
if (time_set) {
$("#blockmessage-time").attr("value", tmp[0]);
}
} else {
time_set = false;
}
} else {
time_set = false;
}
if (!time_set) {
$(".blockmessage-hidden").show();
}
}
function bm_send_message() {
var subst = '';
if ($("#blockmessage-subst").is(":checked")) {
subst = 'subst:';
}
$.ajax({
url: mw.util.wikiScript('api'),
data: {
action: 'query',
meta: 'tokens',
format: 'json',
type: 'csrf',
},
dataType: 'json'
}).then(function(data) {
var d = {
action: 'edit',
title: 'User talk:' + bm_vars["user"],
summary: bm_texts['message-summary'],
format: 'json',
token: data.query.tokens.csrftoken,
text: "{{" + subst + $("#blockmessage-select").val().replace("$1", $("#blockmessage-time").val()).replace("$2", $("#blockmessage-unit").val()) + "}} ~~~~",
};
if (!$("#blockmessage-clean").is(":checked")) {
d.section = "new";
d.sectiontitle = bm_texts['section-title'];
}
$.ajax({
url: mw.util.wikiScript('api'),
method: 'POST',
data: d,
dataType: 'json',
success: function(data) {
mw.notify(bm_texts['successnotif']);
$.removeCookie("blockmessages-user");
$.removeCookie("blockmessages-duree");
$.removeCookie("blockmessages-reason");
setTimeout(function() {
document.location.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace("$1", "User talk:"+bm_vars["user"]+"#footer");
}, 750);
}
});
});
}
/*
</nowiki>
*/