NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name PostAt Respawn // @version 2.0.4 // @description Postez à un instant précis sur les forums JVC // @author VenomGT // @grant none // @match http://www.jeuxvideo.com/forums/* // @import https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js // @updateURL https://openuserjs.org/scripts/VenomGT/PostAt_(respawn) // ==/UserScript== /* NOTE : Le script d'origine (celui d'avant Respawn) n'est pas de moi : je m'en suis pas mal inspiré pour la structure du script mais je l'ai adapté à Respawn et j'ai modifié quelques trucs pour le rendre plus compact */ //On récupère la div contenant le bouton 'post' var a = $('#bloc-formulaire-forum > form > div.row > div')[2]; if(!a) a = $('#bloc-formulaire-forum > form > div.row > div')[1]; //Insertion des boutons et champs de texte a.innerHTML += "<input id = \"minu\" style = \"width:30px;margin-left:7px;margin-right:7px;margin-bottom:3px;\" placeholder = \"min.\" maxlength = \"2\"></input>"; a.innerHTML += "<input id = \"seco\" style = \"width:30px;margin-left:7px;margin-right:12px;margin-bottom:3px;\" placeholder = \"sec.\" maxlength = \"2\"></input>"; a.innerHTML += "<button id = \"diff\" type = \"button\" style = \"border:1px solid rgba(0,0,0,0);border-radius:2px;cursor:pointer;display:inline-block;margin-bottom:0;padding:0 40px;text-align:center;vertical-align:bottom;white-space:nowrap;background:#7ba1d3;color:#fff;font-weight:700;height:32px;text-transform:uppercase;font-size:13px;margin-right:7px;margin-left:7px;\" onmouseover = \"this.style.backgroundColor='#185fcf';\" onmouseout = \"this.style.backgroundColor='#7ba1d3';\">Différer</button>"; a.innerHTML += "<input id = \"deco\" type = \"text\" readonly style = \"width:30px;margin-left:7px;margin-right:12px;margin-bottom:3px;\"></input>"; a.innerHTML += "<button id = \"annu\" type = \"button\" style = \"border:1px solid rgba(0,0,0,0);border-radius:2px;cursor:pointer;display:inline-block;margin-bottom:0;padding:0 40px;text-align:center;vertical-align:bottom;white-space:nowrap;background:#7ba1d3;color:#fff;font-weight:700;height:32px;text-transform:uppercase;font-size:13px;margin-left:9px;\" onmouseover = \"this.style.backgroundColor='#185fcf';\" onmouseout = \"this.style.backgroundColor='#7ba1d3';\">Annuler</button>"; //Sélection des différents éléments affichés var differer = $('#diff'); var minutes = $('#minu'); var secondes = $('#seco'); var annuler = $('#annu'); var decompte = $('#deco'); //On masque le bouton annuler et le décompte annuler.toggle(); decompte.toggle(); //On détecte le click sur un bouton pour lancer la fonction correspondante $(differer).click(function(){ Differer(); }); $(annuler).click(function(){ reinit(); }); var decompte2; var differer2; function reinit(){ //On remet les boutons, input à leur etat initial minutes.fadeIn(); secondes.fadeIn(); annuler.hide(); decompte.hide(); differer.fadeIn(); if(differer2 !== null) clearTimeout(differer2); if(decompte2 !== null) clearInterval(decompte2); minutes.val(null); secondes.val(null); decompte.val(null); } function poster(){ if($('#message_topic').val().length > 0){ $(".btn-poster-msg").trigger("click"); //Déclenchement du post } reinit(); } function Differer(){ var delai; var date; var minServ; var secServ; var minEntr = parseInt(minutes.val()); var secEntr = parseInt(secondes.val()); if(isNaN(minEntr) || isNaN(secEntr) || minEntr>59 || secEntr>59 || minEntr<0 || secEntr<0){ //Vérifie que l'on entre des minutes et secondes valides alert("Entrée invalide"); reinit(); } else { $.ajax({ success: function(output, status, xhr) { //Si la requête aboutit date = xhr.getResponseHeader("Date"); //On récupère la date du serveur var dateServ = new Date(date); //On récupère l'heure du serveur minServ = parseInt(dateServ.getMinutes()); secServ = parseInt(dateServ.getSeconds()); if((minServ - minEntr) < 5 && (minServ - minEntr) > 0 || (minEntr == minServ && secEntr < secServ)) { alert("Heure dépassée"); } //Si on entre involontairement une heure dépassée (moins de 5 min d'écart) else if((minServ - minEntr) > 5) { minEntr += 60; } //Plus de 5 min d'écart : on souhaite probablement poster à l'heure suivante //Calcul du délai avant le post delai = (((minEntr*60+secEntr) - (minServ*60+secServ)) * 1000); if(delai > 0){ differer2 = setTimeout(function(){ poster(); }, delai); //On lance la fonction 'post' une fois le délai écoulé decompte.val(parseInt(delai/1000)); //On donne une valeur au compte à rebours affiché differer.toggle(); minutes.toggle(); secondes.toggle(); annuler.fadeToggle(); decompte.fadeToggle(); decompte2 = setInterval(function(){ decompte.val(decompte.val() - 1); //On désincrémente le compte à rebours if(decompte.val() < 0) clearInterval(decompte2); }, 1000); } }, error: function() { //Si la requête échoue alert("Erreur"); reinit(); } }); } }