Com'back

Ajoute un choix pour le type (écrit, audio, vidéo...) de message envoyé.

Mint 2016.02.19.. Lásd a legutóbbi verzió

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Com'back
// @namespace    http://tampermonkey.net/
// @version      0.5
// @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
// ==/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: &#x1F4DD).
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 = '<div style="z-index:999999;position: absolute;top: 25px;left: 320px;background-color: #ACABAB;"><select id="listeTypes" class="DC_liste" name="DC_listeTypes"><option selected> <option>&#x1F4DD - Message écrit<option>&#x1F50A - Message audio<option>&#x1F3A5 - Message vidéo<option>&#x1F4BB - Depuis un deck<option>&#x274C - Message HRP</select></div>';
        $("#db_new_message > div.content").append(strTypeList); //Ajout du menu déroulant.

        var strButton = '<div id="button_listeTypes" style="position: absolute; left: 50%; bottom: -13px; margin-left: -72px; width: 133px; height: 26px; background: url(../../../images/fr/design/boutons/btn_message.png) -399px 0 no-repeat; cursor: pointer;" onmouseover="this.style.backgroundPosition=`-399px -26px`;" onmouseout="this.style.backgroundPosition=`-399px 0px`;"></div>';
        $("#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 = '<button class="cb_annexes" id="DCCB_b0">'+vButton[0]+'</button><button class="cb_annexes" id="DCCB_b1">'+vButton[1]+'</button><button class="cb_annexes" id="DCCB_b2">'+vButton[2]+'</button><button class="cb_annexes" id="DCCB_b3">'+vButton[3]+'</button><button class="cb_annexes" id="DCCB_b4">'+vButton[4]+'</button><button class="cb_annexes" id="DCCB_b5">'+vButton[5]+'</button>';
        $("#db_new_message > div.content").append('<div style="z-index:999999;position: absolute;top: 57px;left: 492px;width: 30px;">' + strAnnexes + '</div>'); //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($(this).parent().parent()); //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)

        $("div.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

            if(document.getElementById("dccb_div_fc") === 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 = '<div id="dccb_div_fc" style="z-index:999999;position: absolute;top: 348px;left: 100px;background-color: #FFFFFF;-webkit-box-shadow: 0 0 1px 0px #329bc2;border-color: #207695;border-style: solid;border-width: thin;"><select id="listeTypesfc" class="DC_listefc" name="DC_listeTypesfc" style="color: #397d94; height: 27px;"><option selected> <option>&#x1F4DD - Message écrit<option>&#x1F50A - Message audio<option>&#x1F3A5 - Message vidéo<option>&#x1F4BB - Depuis un deck<option>&#x274C - Message HRP</select></div>';
                $("div.content > div.message").append(strTypeListfc); //Ajout du menu déroulant.

                var strButtonfc = '<div id="button_listeTypesfc" style="position: absolute; top: 343px; left: 2px; float: left;padding: 4px 20px 3px;text-transform: uppercase;font-size: 12px;margin-right: 10px;font-weight: 700;text-align: center;margin: 6px 0;cursor: pointer;background: #fff;border: 1px solid #fff;color: #397d94;font-family: "Trebuchet MS",Verdana,Arial,sans-serif;line-height: 18px;" onmouseover="this.style.backgroundColor=`#053D50`;this.style.color=`#FFFFFF`;" onmouseout="this.style.backgroundColor=`#FFFFFF`;this.style.color=`#397d94`;">Envoyer</div>';
                $("div.content > div.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 = '<button class="cb_annexesfc" id="DCCB_b0">'+vButton[0]+'</button><button class="cb_annexesfc" id="DCCB_b1">'+vButton[1]+'</button><button class="cb_annexesfc" id="DCCB_b2">'+vButton[2]+'</button><button class="cb_annexesfc" id="DCCB_b3">'+vButton[3]+'</button><button class="cb_annexesfc" id="DCCB_b4">'+vButton[4]+'</button><button class="cb_annexesfc" id="DCCB_b5">'+vButton[5]+'</button>';
                $("div.content > div.message").append('<div id="dccb_annexesfc" style="z-index:999999;position: absolute;top: 348px;left: 250px;height: 30px;">' + strAnnexesfc + '</div>'); //Ajout des boutons annexes pour ajouter des bouts de texte (pièce jointe, etc)
                $(".cb_annexesfc").css({"color": "#397D94", "background-color": "#FFFFFF", "height": "30px", "width": "30px", "font-size": "15px", "border-color": "#207695"}); //Ajout du CSS des boutons.

                var addIntrofc = function() { //Ajoute l'intro PUIS envoie le message.

                    $(".zone_reponse > .texte > #nm_texte > textarea").val(listeTypes[document.getElementById("listeTypesfc").selectedIndex] + $(".zone_reponse > .texte > #nm_texte > textarea").val());

                    nav.getMessagerie().sendMessage($(this).parent().parent().parent().parent()); //Envoi du message, fonction native du site dans l'inline css du bouton original.

                };

                document.getElementById("button_listeTypesfc").addEventListener('click', addIntrofc, false);


                var arrayBoutonsfc = [];
                arrayBoutonsfc = document.getElementsByClassName("cb_annexesfc");
                arrayBoutonsfc[0].addEventListener('click', function(){$(".zone_reponse > .texte > #nm_texte > textarea").val($(".zone_reponse > .texte > #nm_texte > textarea").val() + dataAnnexes[0]);}, false);
                arrayBoutonsfc[1].addEventListener('click', function(){$(".zone_reponse > .texte > #nm_texte > textarea").val($(".zone_reponse > .texte > #nm_texte > textarea").val() + dataAnnexes[1]);}, false);
                arrayBoutonsfc[2].addEventListener('click', function(){$(".zone_reponse > .texte > #nm_texte > textarea").val($(".zone_reponse > .texte > #nm_texte > textarea").val() + dataAnnexes[2]);}, false);
                arrayBoutonsfc[3].addEventListener('click', function(){$(".zone_reponse > .texte > #nm_texte > textarea").val($(".zone_reponse > .texte > #nm_texte > textarea").val() + dataAnnexes[3]);}, false);
                arrayBoutonsfc[4].addEventListener('click', function(){$(".zone_reponse > .texte > #nm_texte > textarea").val($(".zone_reponse > .texte > #nm_texte > textarea").val() + dataAnnexes[4]);}, false);
                arrayBoutonsfc[5].addEventListener('click', function(){$(".zone_reponse > .texte > #nm_texte > textarea").val($(".zone_reponse > .texte > #nm_texte > textarea").val() + dataAnnexes[5]);}, false);

            }
        });

    });

    console.log("Com'back started: fil de com"); //Debug
}

$("li.message").click(filcomf);

$("#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);
        console.log("Changement de dossier - Actualisation des events");
        
    });
    
});

console.log("Com'back initialisé!");