NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name JVSplit
// @namespace Cedas
// @description Il suffit de cliquer sur le topic de votre choix pour que votre message se poste. Pratique en cas de split.
// @include http://www.jeuxvideo.com/forums/0-*-0-1-0-1-0-*.htm
// @copyright Naptu
// ==/UserScript==
function JVSplit() {
if(!localStorage.message_jvsplit) localStorage.setItem('message_jvsplit', 'Entrez votre message ici.');
// On met le textarea à la place du bloc vidéo à la une, dont l'utilité avoisine la valeur 0, et on lui met la dernière valeur rentrée
document.querySelector('#bloc_forums_img').innerHTML = 'JV Split';
document.querySelectorAll('#col2 .bloc_inner')[0].innerHTML = '<div id="attention" style="padding: 3px 0;font: 12px arial;text-align: justify;">\
<strong> Attention, JV Split est actif. Cliquer sur un topic revient donc à y poster le message contenu dans le champ de texte ci-dessous.</strong>\
</div>\
<textarea id="jvsplit" style="width:98%!important;max-width:98%;height:141px;font:12px Arial;">'+ localStorage.message_jvsplit +'</textarea>\
<div id="reception"></div>';
// On crée la série de paramètres nécessaires à l'envoi du message
function obtenir_donnees() {
var input = document.querySelectorAll('#post input'),
donnees = '';
for(var i = 0; input.length>i; i++) {
donnees += input[i].name + '=' + input[i].value + '&';
}
return donnees.replace(/mode=2/, 'mode=5').replace(/&newsujet=.+/, '');
}
// Pour mettre à jour la valeur des inputs session2, Dargor, 544d4f44df44d4cd55machin, et 45d1f1d5445s4d54e887ebidule, afin d'être en capacité de reposter un message
function maj_donnees() {
var form = document.querySelector('#post'),
xhr = new XMLHttpRequest();
with(xhr) {
open('GET', location);
onreadystatechange = function() {
if(this.status == 200 && this.readyState == 4) form.innerHTML = this.responseText.split('(this,\'1\')">')[1].split('</form>')[0];
}
send(null);
}
}
// On stocke dans le localStorage la valeur de #jvsplit (blur car keypress/down/up ne retient pas le dernier caractère apparemment)
document.querySelector('#jvsplit').addEventListener('blur', function() {
localStorage.setItem('message_jvsplit', this.value);
}, false);
// On récupére l'id du topic au clic sur celui-ci et on laisse AJAX faire son travail, tout en mettant à jour #reception en fonction de la réponse
for(var i = 0, topics = document.querySelectorAll('.ltopic'); topics.length>i; i++) {
topics[i].addEventListener('click', function(e) {
e.preventDefault();
var id_topic = parseInt(this.name.replace(/topic_/, '')),
nom_topic = this.textContent,
jvsplit = document.querySelector('#jvsplit').value,
reception = document.querySelector('#reception'),
xhr = new XMLHttpRequest();
with(xhr) {
open('POST', 'http://www.jeuxvideo.com/cgi-bin/jvforums/forums.cgi');
setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
onreadystatechange = function() {
if(this.status == 200 && this.readyState == 4) {
if(this.responseText.indexOf('form_err') == -1) {
reception.innerHTML = 'Le message : <br><br> <b>« '+ jvsplit +' »</b> <br><br>... a été correctement envoyé au topic : <br><br> <b>« '+ nom_topic +' »</b>.';
reception.setAttribute('style', 'border: 1px solid #069E00;padding: 10px;background: #9EFF86;color: #046300;margin-top: 5px');
reception.previousSibling.previousSibling.value = '';
} else {
reception.innerHTML = 'Erreur ! <br><br>Vous avez peut-être besoin d\'un code de confirmation, ou il s'agit d'une erreur dans le mot de passe de votre pseudonyme'. Veuillez réessayer.';
reception.setAttribute('style', 'border: 1px solid #FF5F5F;padding: 10px;background: #FFCBCB;color: #F22;margin-top: 5px');
}
}
}
send('yournewmessage='+ encodeURIComponent(jvsplit) +'&'+ obtenir_donnees().replace(/topic=0/, 'topic='+ id_topic));
}
maj_donnees();
}, false);
}
}
JVSplit();