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();