Com'back

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

当前为 2016-02-22 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Com'back
  3. // @namespace https://greasyfork.org/fr/scripts/17200-com-back
  4. // @version 0.6.1
  5. // @description Ajoute un choix pour le type (écrit, audio, vidéo...) de message envoyé.
  6. // @author DarKobalt, Naugriim(♥)
  7. // @match http://www.dreadcast.net/Main
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11.  
  12. //DEBUT DE L'INITIALISATION DES BOUTONS
  13.  
  14. //IMPORTANT: N'ESSAYEZ PAS DE RAJOUTER DES LIGNES POUR L'INSTANT. Sérieusement. Ca ne marche pas.
  15. //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).
  16. var vButton = [];
  17. vButton.push("?");
  18. vButton.push("?");
  19. vButton.push("?");
  20. vButton.push("?");
  21. vButton.push("?");
  22. vButton.push("▶️");
  23.  
  24. //Initialisation des messages ajoutés par les boutons.
  25. var dataAnnexes = [];
  26. dataAnnexes.push('【? Pièce jointe: ""】\n\n');
  27. dataAnnexes.push('【? Accusé de réception】\n\n');
  28. dataAnnexes.push('【? Envoi de données en cours: ""】\n\n');
  29. dataAnnexes.push('【? Chargement en cours, veuillez patienter.】\n\n');
  30. dataAnnexes.push('【? Fichier: ""】\n\n');
  31. dataAnnexes.push('【▶️ Lecture: ""】\n\n');
  32.  
  33. //FIN DE L'INITIALISATION DES BOUTONS
  34. //A partir d'ici, toute modification est (encore plus qu'avant) à vos risques et périls.
  35.  
  36.  
  37. var listeTypes = []; //Liste des introductions de message.
  38. listeTypes.push("");
  39. listeTypes.push("\n                    【? \/ Message écrit】\n\n\n");
  40. listeTypes.push("\n                    【? \/ Message audio】\n\n\n");
  41. listeTypes.push("\n                    【? \/ Message vidéo】\n\n\n");
  42. listeTypes.push("\n                    【? \/ Depuis un deck】\n\n\n");
  43. listeTypes.push("\n                     【❌ \/ Message HRP】\n\n\n");
  44.  
  45. var init = false; //évite de dédoubler l'interface nm à chaque ouverture...
  46.  
  47.  
  48.  
  49.  
  50. function mainf() { //Fonction principale pour nouveau message
  51.  
  52. if(!init) {
  53. 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>';
  54. $("#db_new_message > div.content").append(strTypeList); //Ajout du menu déroulant.
  55.  
  56. 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>';
  57. $("#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.
  58.  
  59. //Initialisation du code des boutons.
  60. 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>';
  61. $("#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)
  62. $(".cb_annexes").css({"background-color": "#ACABAB", "height": "30px", "width": "30px", "font-size": "20px"}); //Ajout du CSS des boutons.
  63.  
  64. init = true;
  65. }
  66.  
  67. //INTRO DE MESSAGE
  68. var addIntro = function() { //Ajoute l'intro PUIS envoie le message.
  69.  
  70. $(".message_nouveau > #nm_texte > textarea").val(listeTypes[document.getElementById("listeTypes").selectedIndex] + $(".message_nouveau > #nm_texte > textarea").val());
  71.  
  72. nav.getMessagerie().sendMessage($("#db_new_message")); //Envoi du message, fonction native du site dans l'inline css du bouton original.
  73.  
  74. };
  75.  
  76. document.getElementById("button_listeTypes").addEventListener('click', addIntro, true);
  77.  
  78. //AJOUT BOUTONS ANNEXES
  79. var arrayBoutons = [];
  80. arrayBoutons = document.getElementsByClassName("cb_annexes");
  81. arrayBoutons[0].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[0]);}, false);
  82. arrayBoutons[1].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[1]);}, false);
  83. arrayBoutons[2].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[2]);}, false);
  84. arrayBoutons[3].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[3]);}, false);
  85. arrayBoutons[4].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[4]);}, false);
  86. arrayBoutons[5].addEventListener('click', function(){$(".message_nouveau > #nm_texte > textarea").val($(".message_nouveau > #nm_texte > textarea").val() + dataAnnexes[5]);}, false);
  87.  
  88. console.log("Com'back started: nouveau message"); //Debug
  89. }
  90.  
  91. $("div.btnTxt.link").click(mainf); //Activation du script à l'ouverture de la fenêtre de nouveau message. Merci à Naugriim!
  92.  
  93.  
  94.  
  95.  
  96. function filcomf() { //Fonction principale pour fil de com' déjà existant
  97.  
  98. $("#liste_messages").ajaxComplete(function(){ //Naugriim, je t'aime. ♥ (Attendre le chargement de la fenêtre avant d'envoyer la sauce)
  99.  
  100. $("#liste_messages").unbind('ajaxComplete'); //Moi aussi, je m'aime. ♥ (Evite de renvoyer à chaque requête ajax du jeu et donc de dupliquer la fonction)
  101.  
  102. var tempid = $(".content > .message > .zone_reponse").parent().parent().parent().attr('id').substring(11); //A revoir...
  103. console.log("tempid: " + tempid);
  104. $("#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
  105. //C'EST CETTE LIGNE QUI DECONNE
  106. console.log("tempid: " + tempid);
  107. //idMessage = $(".content > .message > .zone_reponse").parent().parent().parent().attr('id').substring(11);
  108. var idMessage = $("#db_message_" + tempid.toString()).attr('id').substring(11);
  109.  
  110. 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.
  111.  
  112. var strTypeListfc = '<div id="dccb_div_fc_'+idMessage.toString()+'" 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_'+idMessage.toString()+'" 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>';
  113. $("#db_message_" + idMessage.toString() + " > .content > .message").append(strTypeListfc); //Ajout du menu déroulant.
  114.  
  115. var strButtonfc = '<div id="button_listeTypesfc_'+idMessage.toString()+'" 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>';
  116. $("#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.
  117.  
  118. //Initialisation du code des boutons.
  119. var strAnnexesfc = "";
  120. for(var i = 0; i < 6; i++) {
  121. var tempstr = '<button class="cb_annexesfc_'+idMessage.toString()+'" id="DCCB_b'+i.toString()+'_'+idMessage.toString()+'">'+vButton[i]+'</button>';
  122. strAnnexesfc = strAnnexesfc + tempstr;
  123. }
  124.  
  125. $("#db_message_" + idMessage.toString() + " > .content > .message").append('<div id="dccb_annexesfc_'+idMessage.toString()+'" 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)
  126.  
  127. $(".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.
  128.  
  129. var textareaPath = "#db_message_" + idMessage.toString() + " > .content > .message > .zone_reponse > .texte > #nm_texte > textarea";
  130.  
  131. var addIntrofc = function() { //Ajoute l'intro PUIS envoie le message.
  132.  
  133. $(textareaPath).val(listeTypes[document.getElementById("listeTypesfc_"+idMessage.toString()).selectedIndex] + $(textareaPath).val());
  134.  
  135. nav.getMessagerie().sendMessage($("#db_message_" + idMessage.toString())); //Envoi du message, fonction native du site dans l'inline css du bouton original.
  136.  
  137. };
  138.  
  139. document.getElementById("button_listeTypesfc_"+idMessage.toString()).addEventListener('click', addIntrofc, false);
  140.  
  141.  
  142. var arrayBoutonsfc = [];
  143. arrayBoutonsfc = document.getElementsByClassName("cb_annexesfc_"+idMessage.toString());
  144. arrayBoutonsfc[0].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[0]);}, false);
  145. arrayBoutonsfc[1].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[1]);}, false);
  146. arrayBoutonsfc[2].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[2]);}, false);
  147. arrayBoutonsfc[3].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[3]);}, false);
  148. arrayBoutonsfc[4].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[4]);}, false);
  149. arrayBoutonsfc[5].addEventListener('click', function(){$(textareaPath).val($(textareaPath).val() + dataAnnexes[5]);}, false);
  150.  
  151. }
  152. });
  153.  
  154. });
  155.  
  156. console.log("Com'back started: fil de com"); //Debug
  157. }
  158.  
  159. $("li.message").click(filcomf); //1ere init
  160.  
  161. $("#folder_list > .folder").click(function() { //Replacer les events sur les li.message lors d'un changement de dossier (ceux-ci semblent être effacés)
  162.  
  163. $("#liste_messages").ajaxComplete(function(){
  164.  
  165. $("#liste_messages").unbind('ajaxComplete');
  166. $("li.message").click(filcomf); //Normalement pas besoin de .off puisque le site recrée la liste
  167. console.log("Changement de dossier - Actualisation des events");
  168.  
  169. });
  170.  
  171. });
  172.  
  173. $("#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)
  174.  
  175. $("#liste_messages").ajaxComplete(function(){
  176.  
  177. $("#liste_messages").unbind('ajaxComplete');
  178. $("li.message").off("click", filcomf); //Eviter un doublon d'event
  179. $("li.message").click(filcomf);
  180. console.log("Clic sur la liste des messages - Actualisation des events");
  181.  
  182. });
  183.  
  184. });
  185.  
  186. console.log("Com'back initialisé!");