您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Transformation de la boite d'édition standard des messages en un Rich Text Editor
// ==UserScript== // @name MH - Kassbi - Message RTE // @namespace MH // @description Transformation de la boite d'édition standard des messages en un Rich Text Editor // @include */MH_Play/Play_vue.php // @include */Messagerie/MH_Messagerie.php?cat=3* // @include */Messagerie/ViewMessage.php?answer=1* // @icon https://xballiet.github.io/ImagesMH/MZ.png // @version 2.8 // @grant none // @require https://gf.qytechs.cn/scripts/23602-tout-mz?version=892175&d=.user.js // ==/UserScript== /* * Script MZ : Transformation de la boite d'édition standard des messages en un Rich Text Editor * Auteur : Kassbinette (95429) * Contributeur : Utilisation des exemples Mozilla de RTE * fonction addbutton empruntée aux scripts de Marmotte86 (93138) & disciple (62333) * Intégration complète des scripts Messagerie.js de Marmotte86 (93138) & disciple (62333) * * Merci à Vapulabehemot(82169) pour ses remarques pertinentes et ses corrections dans les infobulles. * * La variable hostName doit être adaptée si le script est copié sur un autre serveur. * Le chemin du fichier doit subir le même sort si l'arborescence est changée. */ //var hostName = "http://localhost:2305"; var hostName = "https://xballiet.github.io"; var editorPath = "/MessageRTE/"; var editorPage = editorPath + "MessageRTE.htm"; if (isPage("MH_Play/Play_vue.php")) { function appendLinkToCopiableTable(labelName, tableName) { try { document.getElementsByName(labelName)[0].parentNode.innerHTML = "<span>" + document.getElementsByName(labelName)[0].parentNode.innerHTML + "</span>"; oA = document.createElement("A"); oA.style.cssFloat = "right"; //oA.innerHTML = "showCopiable"; oImg = document.createElement("IMG"); oImg.src = hostName + editorPath + "ClipBoard.png"; oImg.alt = "Montrer une version copier-collable du tableau"; oA.appendChild(oImg); oA.addEventListener('click', function () { if (document.getElementById("showCopiableTable") == null || document.getElementById("showCopiableTable").style.display == "none") { displayTable(labelName, tableName); } else { document.getElementById("showCopiableTable").style.display = "none"; } }, true ); document.getElementsByName(labelName)[0].parentNode.appendChild(oA); } catch (e) { alert("JS - appendLinkToCopiableTable : " + e.message); } } function removeChildren(oObj) { if (oObj.hasChildNodes()) { while (oObj.childNodes.length >= 1) { oObj.removeChild(oObj.firstChild); } } } function findPosY(obj) { var curtop = 0; if (obj.offsetParent) { do { curtop += obj.offsetTop; } while (obj = obj.offsetParent); } return curtop; } function displayTable(labelName, tableName) { try { var oDiv = document.getElementById("showCopiableTable"); if (oDiv == null) { oDiv = document.createElement("DIV"); } else { removeChildren(oDiv); } oDiv.style.display = "block"; oDiv.id = "showCopiableTable"; oDiv.style.zIndex = 100; oDiv.style.padding = "0px"; oDiv.style.margin = "0px"; oDiv.style.top = findPosY(document.getElementsByName(labelName)[0]); oDiv.style.left = 100; oDiv.style.border = "1px black solid"; oDiv.style.position = "absolute"; var oEntete = document.createElement("DIV"); oEntete.style.width = "100%"; oEntete.style.height = "22px"; oEntete.style.border = "1px black solid"; //oEntete.style.background = "White"; oEntete.style.backgroundImage = "url('" + hostName + editorPath + "MHfond.jpg')"; oEntete.id = "showCopiableTableEntete"; var oEnteteTextInnerDiv = document.createElement("DIV"); oEnteteTextInnerDiv.style.cssFloat = "left"; oEnteteTextInnerDiv.style.height = "20px"; oEnteteTextInnerDiv.innerHTML = "Tableau copier-collable vers le MessageRTE"; oEnteteTextInnerDiv.style.marginTop = "2px"; oEnteteTextInnerDiv.style.marginLeft = "2px"; var oEnteteInnerDiv = document.createElement("DIV"); oEnteteInnerDiv.style.cssFloat = "right"; oEnteteInnerDiv.style.height = "20px"; oEnteteInnerDiv.style.width = "20px"; var oImg = document.createElement("Img"); oImg.style.width = "100%"; oImg.style.marginRight = "5px"; oImg.style.paddingRight = "3px"; oImg.style.paddingTop = "3px"; oImg.style.height = "15px"; oImg.style.width = "15px"; oImg.addEventListener('click', function () { document.getElementById("showCopiableTable").style.display = "none"; }, true); oImg.src = hostName + editorPath + "index.png"; oImg.style.float = "right"; oEnteteInnerDiv.appendChild(oImg); oEntete.appendChild(oEnteteTextInnerDiv); oEntete.appendChild(oEnteteInnerDiv); oDiv.appendChild(oEntete); var oInnerDiv = document.createElement("DIV"); oInnerDiv.style.width = "100%"; oInnerDiv.innerHTML = document.getElementById(tableName).innerHTML; oDiv.appendChild(oInnerDiv); document.body.appendChild(oDiv); } catch(e) { alert("JS - displayTable : " + e.message); } } appendLinkToCopiableTable("monstres", "mh_vue_hidden_monstres"); appendLinkToCopiableTable("trolls", "mh_vue_hidden_trolls"); appendLinkToCopiableTable("tresors", "mh_vue_hidden_tresors"); appendLinkToCopiableTable("champignons", "mh_vue_hidden_champignons"); appendLinkToCopiableTable("lieux", "mh_vue_hidden_lieux"); appendLinkToCopiableTable("cadavres", "mh_vue_hidden_cadavres"); } if (isPage("Messagerie/MH_Messagerie.php?cat=3")) { // Dialogue avec l'iframe function receiveMessage(event) { try { // Vérifier l'origine du message if (event.origin.toLowerCase() == hostName.toLowerCase()) { if (event.data.substring(0, "SendHtml".length) == "SendHtml") { // L'iframe enfant envoie le texte qu'elle contient, donc l'ajouter dans la textArea originale SendHtml(event.data); } else if (event.data == "RequestText") { // L'iframe demande le texte présent dans la textArea, donc lui fournir le texte présent dans celle-ci FillText(); } else if (event.data == "HideTextArea") { HideTextArea(); } else if (event.data == "DisplayRTE") { DisplayRTE(); } else if (event.data == "Preview") { displayPreview(); } else if (event.data == "SaveMsg") { SaveMsg(); } else if (event.data.substring(0, "SaveMpFont".length) == "SaveMpFont") { SaveFont(event.data.substring("SaveMpFont".length, event.data.length)); } else if (event.data == "RTERequestMpFont") { SendFont(); } else if (event.data == "RestoreMsg") { RestoreMsg(); } else if (event.data == "Reply") { Reply(); } else if (event.data == "RTERequestMpSignature") { SendSignature(); } else if (event.data == "RTERequestMpSignatureUsage") { SendSignatureUsage(); } else if (event.data.substring(0, "SaveSignatureUsage".length) == "SaveSignatureUsage") { SaveSignatureUsage(event.data.substring("SaveSignatureUsage".length, event.data.length)); } else if (event.data.substring(0, "SaveMpSignature".length) == "SaveMpSignature") { SaveSignature(event.data.substring("SaveMpSignature".length, event.data.length)); } else { alert("JS - receiveMessage - Commande non reconnue : " + event.data); } } else { alert("HostName incorrect :" + event.origin + " alors que " + hostName + " était attendu."); } } catch (e) { alert("JS - receiveMessage : " + e.message); } } // Stocker la signature function SaveSignature(signature) { try { window.localStorage['MpSignature'] = signature; } catch (e) { alert("JS - SaveSignature : " + e.message); } } // Stocker l'utilisation de la signature function SaveSignatureUsage(usage) { try { window.localStorage['MpSignatureUsage'] = usage; } catch (e) { alert("JS - SaveSignatureUsage : " + e.message); } } // Envoyer la signature function SendSignature(){ try { if (window.localStorage['MpSignature']) { signature = window.localStorage['MpSignature']; var iFrameWindow = unsafeWindow.document.getElementById('RTEedit').contentWindow; iFrameWindow.postMessage("JsSendMpSignature" + signature, hostName); } } catch (e) { alert("JS - SaveSignature : " + e.message); } } // Envoyer l'utilisation de la signature function SendSignatureUsage() { try { if (window.localStorage['MpSignatureUsage']) { signatureUsage = window.localStorage['MpSignatureUsage']; var iFrameWindow = unsafeWindow.document.getElementById('RTEedit').contentWindow; iFrameWindow.postMessage("JsSendMpSignatureUsage" + signatureUsage, hostName); } } catch (e) { alert("JS - SaveSignature : " + e.message); } } // Stocker la font function SaveFont(fontName) { try { window.localStorage['MpFont'] = fontName; } catch (e) { alert("JS - SaveFont : " + e.fontName); } } // Envoyer la font function SendFont() { try { if (window.localStorage['MpFont']) { fontname = window.localStorage['MpFont']; var iFrameWindow = unsafeWindow.document.getElementById('RTEedit').contentWindow; iFrameWindow.postMessage("JsSendMpFont" + fontname, hostName); } } catch (e) { alert("JS - SendFont : " + e.message); } } // Fonction envoyant le texte du RTE à la textArea function SendHtml(text) { try { document.getElementsByName('Message')[0].value = text.substring("SendHtml".length, text.length).replace(/<br>/gi, '\r\n'); displayPreview(); } catch (e) { alert("JS - SendHtml : " + e.message); } } // Fonction demandant au RTE de fournir le texte qu'il contient function RequestHtmlText() { try { var iFrameWindow = unsafeWindow.document.getElementById('RTEedit').contentWindow; // Demander le texte contenu dans la textArea iFrameWindow.postMessage("RequestHtmlText", hostName); } catch (err) { alert("JS - error : " + err.message); } } // Fournir le texte de la textArea au RTE function FillText() { try { var iFrameWindow = unsafeWindow.document.getElementById('RTEedit').contentWindow; // Forcer le stockage du texte contenu dans la textArea dans la boite d'édition iFrameWindow.postMessage("FillText" + document.getElementsByName('Message')[0].value.replace(/\n/gi, '<br>'), hostName); displayPreview(); } catch (err) { alert("JS - error : " + err.message); } } // Cacher la textArea function HideTextArea() { try { document.getElementsByName('Message')[0].style.visibility = "hidden"; document.getElementsByName('Message')[0].style.display = "none"; } catch (e) { alert("JS - HideTextArea : " + e.message); } } // Montrer la textArea function ShowTextArea() { try { document.getElementsByName('Message')[0].style.visibility = "visible"; document.getElementsByName('Message')[0].style.display = "block"; document.getElementsByName('Message')[0].focus(); } catch (e) { alert("JS - ShowTextArea : " + e.message); } } // Créer le RTE function createRTE() { try { // Création de la textArea var messageArea = document.getElementsByName('Message')[0]; //messageArea.parentNode.appendChild(document.createElement('br')); var newTextArea = document.createElement('iframe'); newTextArea.setAttribute('id', 'RTEedit'); newTextArea.setAttribute('src', hostName + editorPage); newTextArea.setAttribute('style', 'border:0px;overflow:hidden;width:630px;height:440px;display:none'); messageArea.parentNode.appendChild(newTextArea); submitButton = document.getElementsByName('bsSend')[0]; } catch (e) { alert("JS - CreateRTE : " +e.message); } } // Montrer le RTE function DisplayRTE() { try { document.getElementById('RTEedit').style.display = "block"; } catch (e) { alert("JS - DisplayRTE : " + e.message); } } // Ajout d'un bouton function addButton(caption, clickFunction) { try { var sendButton = document.getElementsByName('bsSend')[0]; var newButton = document.createElement('input'); newButton.setAttribute('type', 'button'); newButton.setAttribute('class', 'mh_form_submit'); newButton.setAttribute('value', caption); newButton.addEventListener('click', clickFunction, true); sendButton.parentNode.appendChild(document.createTextNode(' ')); sendButton.parentNode.appendChild(newButton); } catch (e) { alert("JS - addButton : " + e.message); } } /// Intégration des scripts de marmotte et disciple /// function addPreviewBox() { try { // Ajout de la ligne d'affichage de l'aperçu var trPreview = document.createElement('tr'); trPreview.setAttribute('class', 'mh_tdpage'); var tdPreview = document.createElement('td'); tdPreview.setAttribute('id', 'marmotte_preview'); tdPreview.setAttribute('colspan', 4); trPreview.appendChild(tdPreview); //document.getElementsByTagName('form')[0].getElementsByTagName('table')[2].getElementsByTagName('tbody')[0].appendChild(trPreview); document.getElementsByName('bsSend')[0].parentNode.parentNode.parentNode.appendChild(trPreview); } catch (e) { alert("JS - addPreviewBox : " + e.message); } } // Affichage de l'aperçu function displayPreview() { try { var tdPreview = document.getElementById('marmotte_preview'); var messageArea = document.getElementsByName('Message')[0]; tdPreview.innerHTML = messageArea.value.replace(/\r?\n/g, '<br>'); } catch (e) { alert("JS - displayPreview : " + e.message); } } // Sauvegarde du MP function SaveMsg() { try { var messageArea = document.getElementsByName('Message')[0]; var titleInput = document.getElementsByName('Titre')[0]; if (titleInput.value != '') { window.localStorage['lastMPTitle'] = titleInput.value; } if (messageArea.value != '') { window.localStorage['lastMP'] = messageArea.value; } } catch (e) { alert("JS - SaveMsg : " + e.message); } } // Restauration du MP sauvegardé function RestoreMsg() { try { var messageArea = document.getElementsByName('Message')[0]; var titleInput = document.getElementsByName('Titre')[0]; if (window.localStorage['lastMPTitle']) { titleInput.value = window.localStorage['lastMPTitle']; } if (window.localStorage['lastMP']) { messageArea.value = window.localStorage['lastMP']; } FillText(); } catch (e) { alert("JS - RestoreMsg : " + e.message); } } // Restauration du MP sauvegardé function Reply() { var messageArea = document.getElementsByName('Message')[0]; if (window.localStorage['lastReply']) { messageArea.value = window.localStorage['lastReply']; } FillText(); } /// Fin première partie intégration /// // Modification de la page MH try { // Initialiser les événements sur la page unsafeWindow.addEventListener("message", receiveMessage, false); // Ajout d'un event onChange sur la textArea //document.getElementsByName('Message')[0].addEventListener("change", FillText, false); // Ajouter le RTE (mais pas le montrer : lorsqu'il sera créé, il demandera lui-même à cette page de l'afficher) createRTE(); /// Marmotte : ajouter la boite de preview addPreviewBox(); /// Marmotte : ajouter l'événement enregistrant la copie durant l'envoi du message document.getElementsByName('bsSend')[0].addEventListener('click', SaveMsg, true); if (hostName == "http://localhost:2105" || hostName == "http://localhost:2305") { addButton("Textarea Text", ShowTextArea); } } catch (e) { alert("JS - Init page: " + e.message); } } else if (isPage("Messagerie/ViewMessage.php?answer=1")) { /* Ajout de disciple (62333) */ function reply(e) { var reply = document.evaluate("//table/tbody/tr[5]/td", document, null, XPathResult.ANY_TYPE, null).iterateNext().innerHTML; reply = '> ' + reply.replace(/<br>/g, '<br>> '); window.localStorage['lastReply'] = reply + '\n\n'; }; document.getElementsByName('bAnswer')[0].addEventListener('click', reply, true); document.getElementsByName('bAnswerToAll')[0].addEventListener('click', reply, true); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址