// ==UserScript==
// @name Com'back
// @namespace https://greasyfork.org/fr/scripts/17200-com-back
// @version 0.6.1
// @description Ajoute un choix pour le type (écrit, audio, vidéo...) de message envoyé.
// @author DarKobalt, Naugriim(♥)
// @match http://www.dreadcast.net/Main
// @grant none
// @downloadURL none
// ==/UserScript==
//DEBUT DE L'INITIALISATION DES BOUTONS
//IMPORTANT: N'ESSAYEZ PAS DE RAJOUTER DES LIGNES POUR L'INSTANT. Sérieusement. Ca ne marche pas.
//Initialisation des caractères affichés sur les boutons. NE PAS METTRE PLUS D'UN CARACTERE. SI L'AFFICHAGE BUGUE, UTILISER LE CODE UNICODE (Ressemble à ça: 📝).
var vButton = [];
vButton.push("?");
vButton.push("?");
vButton.push("?");
vButton.push("?");
vButton.push("?");
vButton.push("▶️");
//Initialisation des messages ajoutés par les boutons.
var dataAnnexes = [];
dataAnnexes.push('【? Pièce jointe: ""】\n\n');
dataAnnexes.push('【? Accusé de réception】\n\n');
dataAnnexes.push('【? Envoi de données en cours: ""】\n\n');
dataAnnexes.push('【? Chargement en cours, veuillez patienter.】\n\n');
dataAnnexes.push('【? Fichier: ""】\n\n');
dataAnnexes.push('【▶️ Lecture: ""】\n\n');
//FIN DE L'INITIALISATION DES BOUTONS
//A partir d'ici, toute modification est (encore plus qu'avant) à vos risques et périls.
var listeTypes = []; //Liste des introductions de message.
listeTypes.push("");
listeTypes.push("\n 【? \/ Message écrit】\n\n\n");
listeTypes.push("\n 【? \/ Message audio】\n\n\n");
listeTypes.push("\n 【? \/ Message vidéo】\n\n\n");
listeTypes.push("\n 【? \/ Depuis un deck】\n\n\n");
listeTypes.push("\n 【❌ \/ Message HRP】\n\n\n");
var init = false; //évite de dédoubler l'interface nm à chaque ouverture...
function mainf() { //Fonction principale pour nouveau message
if(!init) {
var strTypeList = '
';
$("#db_new_message > div.content").append(strTypeList); //Ajout du menu déroulant.
var strButton = '';
$("#db_new_message > div.content").append(strButton); //Ajout du bouton imitant le bouton d'envoi. Il a les mêmes propriétés que le bouton d'envoi classique.
//Initialisation du code des boutons.
var strAnnexes = '';
$("#db_new_message > div.content").append('
' + strAnnexes + '
'); //Ajout des boutons annexes pour ajouter des bouts de texte (pièce jointe, etc)
$(".cb_annexes").css({"background-color": "#ACABAB", "height": "30px", "width": "30px", "font-size": "20px"}); //Ajout du CSS des boutons.
init = true;
}
//INTRO DE MESSAGE
var addIntro = function() { //Ajoute l'intro PUIS envoie le message.
$(".message_nouveau > #nm_texte > textarea").val(listeTypes[document.getElementById("listeTypes").selectedIndex] + $(".message_nouveau > #nm_texte > textarea").val());
nav.getMessagerie().sendMessage($("#db_new_message")); //Envoi du message, fonction native du site dans l'inline css du bouton original.
};
document.getElementById("button_listeTypes").addEventListener('click', addIntro, true);
//AJOUT BOUTONS ANNEXES
var arrayBoutons = [];
arrayBoutons = document.getElementsByClassName("cb_annexes");
arrayBoutons[0].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[0]);}, false);
arrayBoutons[1].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[1]);}, false);
arrayBoutons[2].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[2]);}, false);
arrayBoutons[3].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[3]);}, false);
arrayBoutons[4].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[4]);}, false);
arrayBoutons[5].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[5]);}, false);
console.log("Com'back started: nouveau message"); //Debug
}
$("div.btnTxt.link").click(mainf); //Activation du script à l'ouverture de la fenêtre de nouveau message. Merci à Naugriim!
function filcomf() { //Fonction principale pour fil de com' déjà existant
$("#liste_messages").ajaxComplete(function(){ //Naugriim, je t'aime. ♥ (Attendre le chargement de la fenêtre avant d'envoyer la sauce)
$("#liste_messages").unbind('ajaxComplete'); //Moi aussi, je m'aime. ♥ (Evite de renvoyer à chaque requête ajax du jeu et donc de dupliquer la fonction)
var tempid = $(".content > .message > .zone_reponse").parent().parent().parent().attr('id').substring(11); //A revoir...
console.log("tempid: " + tempid);
$("#db_message_" + tempid.toString() + " > .content > div.message > div.btnTxt").click(function() { //Création et affichage lors du clic sur l'un des boutons en bas de la fenêtre
//C'EST CETTE LIGNE QUI DECONNE
console.log("tempid: " + tempid);
//idMessage = $(".content > .message > .zone_reponse").parent().parent().parent().attr('id').substring(11);
var idMessage = $("#db_message_" + tempid.toString()).attr('id').substring(11);
if(document.getElementById("dccb_div_fc_" + idMessage.toString()) === null) { //Ne recrée pas l'interface du script si elle existe déjà: REND IMPOSSIBLE L'OUVERTURE DE PLUSIEURS COMS SANS BUGS.
var strTypeListfc = '';
$("#db_message_" + idMessage.toString() + " > .content > .message").append(strTypeListfc); //Ajout du menu déroulant.
var strButtonfc = '
Envoyer
';
$("#db_message_" + idMessage.toString() + " > .content > .message").append(strButtonfc); //Ajout du bouton imitant le bouton d'envoi. Il a les mêmes propriétés que le bouton d'envoi classique.
//Initialisation du code des boutons.
var strAnnexesfc = "";
for(var i = 0; i < 6; i++) {
var tempstr = '';
strAnnexesfc = strAnnexesfc + tempstr;
}
$("#db_message_" + idMessage.toString() + " > .content > .message").append('
' + strAnnexesfc + '
'); //Ajout des boutons annexes pour ajouter des bouts de texte (pièce jointe, etc)
$(".cb_annexesfc_"+idMessage.toString()).css({"color": "#397D94", "background-color": "#FFFFFF", "height": "30px", "width": "30px", "font-size": "15px", "border-color": "#207695"}); //Ajout du CSS des boutons.
var textareaPath = "#db_message_" + idMessage.toString() + " > .content > .message > .zone_reponse > .texte > #nm_texte > textarea";
var addIntrofc = function() { //Ajoute l'intro PUIS envoie le message.
$(textareaPath).val(listeTypes[document.getElementById("listeTypesfc_"+idMessage.toString()).selectedIndex] + $(textareaPath).val());
nav.getMessagerie().sendMessage($("#db_message_" + idMessage.toString())); //Envoi du message, fonction native du site dans l'inline css du bouton original.
};
document.getElementById("button_listeTypesfc_"+idMessage.toString()).addEventListener('click', addIntrofc, false);
var arrayBoutonsfc = [];
arrayBoutonsfc = document.getElementsByClassName("cb_annexesfc_"+idMessage.toString());
arrayBoutonsfc[0].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[0]);}, false);
arrayBoutonsfc[1].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[1]);}, false);
arrayBoutonsfc[2].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[2]);}, false);
arrayBoutonsfc[3].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[3]);}, false);
arrayBoutonsfc[4].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[4]);}, false);
arrayBoutonsfc[5].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[5]);}, false);
}
});
});
console.log("Com'back started: fil de com"); //Debug
}
$("li.message").click(filcomf); //1ere init
$("#folder_list > .folder").click(function() { //Replacer les events sur les li.message lors d'un changement de dossier (ceux-ci semblent être effacés)
$("#liste_messages").ajaxComplete(function(){
$("#liste_messages").unbind('ajaxComplete');
$("li.message").click(filcomf); //Normalement pas besoin de .off puisque le site recrée la liste
console.log("Changement de dossier - Actualisation des events");
});
});
$("#display_messagerie").click(function() { //Replacer les events sur les li.message lors de l'ouverture de l'affichage de la liste (ceux-ci semblent être effacés)
$("#liste_messages").ajaxComplete(function(){
$("#liste_messages").unbind('ajaxComplete');
$("li.message").off("click", filcomf); //Eviter un doublon d'event
$("li.message").click(filcomf);
console.log("Clic sur la liste des messages - Actualisation des events");
});
});
console.log("Com'back initialisé!");