Greasy Fork 还支持 简体中文。

Edenya-Script

Addon Edenya

目前為 2017-06-13 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Edenya-Script
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.100017
  5. // @description Addon Edenya
  6. // @author Valkazaar
  7. // @match http://www.edenya.net/_vahal/*
  8. // @grant none
  9. // @include http://www.edenya.net/_vahal/*
  10. // @include https://www.edenya.net/_vahal/*
  11. // ==/UserScript==
  12.  
  13. (function () {
  14. 'use strict';
  15. // Vérification de la présence de la variable localStorage EdenyaColor
  16. // et instanciation de base si nécessaire
  17. var localColor = localStorage.getItem('EdenyaColor');
  18. if (localColor === null) {
  19. localColor = {};
  20. localColor.cadre2 = '#dda0dd';
  21. localColor.ligneA = '#000000';
  22. localColor.dialogue = '#ffffff';
  23. localColor.narration = '#ffd700';
  24. localColor.cri = '#9acd32';
  25. localColor.hj = '#FFDAB9';
  26. localColor.BlackDate = '#B09070';
  27. localStorage.setItem('EdenyaColor', JSON.stringify(localColor));
  28. localColor = localStorage.getItem('EdenyaColor');
  29. }
  30.  
  31. var localColorParsed = JSON.parse(localColor);
  32. if (localColorParsed.BlackDate === undefined) {
  33. localColorParsed.BlackDate = '#B09070';
  34. localStorage.setItem('EdenyaColor', JSON.stringify(localColorParsed));
  35. }
  36.  
  37. // Remplacement des dates écrites en noir dans les forums.
  38. var x = document.getElementsByTagName("font");
  39. for (var i = 0; i < x.length; i++) {
  40. if (x[i].getAttribute('color') !== null) {
  41. x[i].setAttribute('color', (x[i].getAttribute('color')).replace('#000000', localColorParsed.BlackDate));
  42. x[i].setAttribute('color', (x[i].getAttribute('color')).replace('#990000', '#FF0000'));
  43. x[i].setAttribute('color', (x[i].getAttribute('color')).replace('\\"', ''));
  44. x[i].setAttribute('color', (x[i].getAttribute('color')).replace('\\"', ''));
  45. }
  46. }
  47.  
  48. // Colorisation des éléments
  49. var baliseHeader = document.querySelector('head');
  50. var styleToAdd = document.createElement('style');
  51. for (var item in localColorParsed) {
  52. styleToAdd.innerText += '.' +item + '{color:'+ localColorParsed[item]+'}';
  53. }
  54. styleToAdd.innerText += 'menu#menuValk {padding:0px;list-style-type: none;-webkit-padding-start: 0px;};';
  55. baliseHeader.appendChild(styleToAdd);
  56. var scriptToAdd = document.createElement('script');
  57. scriptToAdd.setAttribute('type',"text/javascript");
  58. var t = document.createTextNode("function Valk_Del(item){var z = localStorage.getItem('EdenyaShortcut');z = JSON.parse(z);delete z[item];localStorage.setItem('EdenyaShortcut',JSON.stringify(z));Valk_Refresh();}\n");
  59. scriptToAdd.appendChild(t);
  60. t = document.createTextNode("function Valk_Refresh(){var first = true; var z = localStorage.getItem('EdenyaShortcut');z = JSON.parse(z);var menuToAdd = document.getElementById('menuValk');menuToAdd.innerText='';for (item in z) {var linkToUp = document.createElement('img');linkToUp.setAttribute('src', '../images/arrow-up.gif');linkToUp.setAttribute('onclick', 'Valk_Up(\"' + item + '\");');var linkToDown = document.createElement('img');linkToDown.setAttribute('src', '../images/arrow-down.gif');linkToDown.setAttribute('onclick', 'Valk_Down(\"' + item + '\");');var linkToModify = document.createElement('img');linkToModify.setAttribute('src', '../images/edit.png');linkToModify.setAttribute('onclick', 'Valk_Rename(\"' + item + '\");');var linkToDelete = document.createElement('img');linkToDelete.setAttribute('src', '../images/bad.gif');linkToDelete.setAttribute('onclick', 'Valk_Del(\"' + item + '\");');var ligneShortcut = document.createElement('li');var linkShortcut = document.createElement('a');linkShortcut.setAttribute('href', z[item]);linkShortcut.innerText = item;first == false ? ligneShortcut.appendChild(linkToUp): first = false;ligneShortcut.appendChild(linkToDown);ligneShortcut.appendChild(linkToModify);ligneShortcut.appendChild(linkToDelete);ligneShortcut.appendChild(linkShortcut);menuToAdd.appendChild(ligneShortcut);}}");
  61. scriptToAdd.appendChild(t);
  62. t = document.createTextNode("function Valk_Add(){var nom=prompt('Nom du shortcut ?');if (nom!==null){var z = localStorage.getItem('EdenyaShortcut');z = JSON.parse(z);z[nom]=document.URL;localStorage.setItem('EdenyaShortcut',JSON.stringify(z));Valk_Refresh();}}");
  63. scriptToAdd.appendChild(t);
  64. t = document.createTextNode("function Valk_Up(itemIn){var previous = null;var y={};var z = localStorage.getItem('EdenyaShortcut');z = JSON.parse(z);for (item in z) {if (previous != null){if (item == itemIn){y[item]=z[item];}for (bidule in previous){if (bidule != itemIn){y[bidule]=previous[bidule];}}};previous={};previous[item]=z[item];}for (bidule in previous) {if (bidule != itemIn){y[bidule]=previous[bidule];}}localStorage.setItem('EdenyaShortcut',JSON.stringify(y));Valk_Refresh();}");
  65. scriptToAdd.appendChild(t);
  66. t = document.createTextNode("function Valk_Down(itemIn) {var next = null;var y = {};var z = localStorage.getItem('EdenyaShortcut');z = JSON.parse(z);for (item in z) {if (item != itemIn) {y[item] = z[item];if (next != null) {for (bidule in next) {y[bidule] = next[bidule];}next = null;}}else {next = {};next[item] = z[item];}}localStorage.setItem('EdenyaShortcut', JSON.stringify(y));Valk_Refresh();}");
  67. scriptToAdd.appendChild(t);
  68. t = document.createTextNode("function Valk_Rename(itemIn){var nom=prompt('A renommer en ?');if (nom!==null){var y = {};var z = localStorage.getItem('EdenyaShortcut');z = JSON.parse(z);for (item in z) {if(item == itemIn){y[nom]=z[item];}else{y[item]=z[item];}};localStorage.setItem('EdenyaShortcut',JSON.stringify(y));Valk_Refresh();}}");
  69. scriptToAdd.appendChild(t);
  70. baliseHeader.appendChild(scriptToAdd);
  71.  
  72. if (window.location.pathname == "/_vahal/index.php"){
  73. // Positionnement sur la colone de gauche pour y ajouter les éléments (raccourcis et gestion des couleurs)
  74. x = document.querySelector(".menu");
  75. if (x !== null) {
  76. var divScript = document.createElement("div");
  77. var localShortcut = localStorage.getItem('EdenyaShortcut');
  78. if (localShortcut === null) {
  79. var shortcut = { 'accueil': 'https://www.edenya.net/_vahal/' };
  80. localStorage.setItem('EdenyaShortcut', JSON.stringify(shortcut));
  81. localShortcut = localStorage.getItem('EdenyaShortcut');
  82. }
  83. var localShortcutParsed = JSON.parse(localShortcut);
  84.  
  85. var titre = document.createElement("p");
  86. var linkToAdd = document.createElement("span");
  87.  
  88. linkToAdd.innerHTML = "<a href='#'> Ajouter </a>";
  89. linkToAdd.setAttribute("onclick", "Valk_Add()");
  90. titre.innerText = "Raccourcis : ";
  91. titre.appendChild(linkToAdd);
  92. divScript.appendChild(titre);
  93. var menuToAdd = document.createElement("menu");
  94. menuToAdd.setAttribute("id","menuValk");
  95. divScript.appendChild(menuToAdd);
  96.  
  97. divScript.className = "cadre";
  98. divScript.style = "width:200";
  99. x.appendChild(divScript);
  100. titre = document.createElement("p");
  101. titre.innerText = "Couleurs utilisées :";
  102. divScript.appendChild(titre);
  103. // Refresh des raccourcis mémorisés
  104. Valk_Refresh();
  105.  
  106. var localTips = localStorage.getItem('EdenyaTips');
  107. if (localTips === null) {
  108. localTips = {};
  109. localTips.cadre2 = "Couleur générale titre, panneau PJ,...";
  110. localTips.ligneA = "Couleur texte hors balises RP";
  111. localTips.dialogue = "Texte d'un dialogue";
  112. localTips.narration = "Texte de narration";
  113. localTips.cri = "Texte crié";
  114. localTips.hj = "descriptions HJ";
  115. localTips.BlackDate = "couleur des dates dans les forums";
  116. localStorage.setItem('EdenyaTips', JSON.stringify(localTips));
  117. localTips = localStorage.getItem('EdenyaTips');
  118. }
  119. var localTipsParsed = JSON.parse(localTips);
  120.  
  121. for (item in localColorParsed) {
  122. var inputColor = document.createElement("input");
  123. inputColor.setAttribute("id", item);
  124. inputColor.setAttribute("type", "color");
  125. inputColor.setAttribute("class", "bouton");
  126. inputColor.setAttribute("value", localColorParsed[item]);
  127. inputColor.setAttribute("style", "width:25;padding:0");
  128. inputColor.setAttribute("onChange", "var z = localStorage.getItem('EdenyaColor');z = JSON.parse(z);z['" + inputColor.getAttribute("id") + "'] = document.getElementById('" + inputColor.getAttribute("id") + "').value; localStorage.setItem('EdenyaColor',JSON.stringify(z));location.href = location.href;");
  129. inputColor.setAttribute("onMouseOver", "ShowHelpTab('<b>Usage :</b><br>"+localTipsParsed[item]+"')");
  130. inputColor.setAttribute("onMouseOut", "HideHelp()");
  131. inputColor.title = localTipsParsed[item];
  132. divScript.appendChild(inputColor);
  133. }
  134. var localPreview = localStorage.getItem('EdenyaPreview');
  135. if(localPreview === null) {
  136. localPreview = true;
  137. localStorage.setItem('EdenyaPreview', localPreview);
  138. }
  139. var localPreviewParsed = JSON.parse(localPreview);
  140. var checkPreview = document.createElement("input");
  141. checkPreview.setAttribute("type","checkbox");
  142. checkPreview.checked = localPreviewParsed;
  143. checkPreview.setAttribute ("onclick", "localStorage.setItem('EdenyaPreview', !JSON.parse(localStorage.getItem('EdenyaPreview')));");
  144. var spanTmp = document.createElement("span");
  145. spanTmp.innerText = "Prévisualisation de post : ";
  146. spanTmp.appendChild(checkPreview);
  147. spanTmp.setAttribute('style', 'display:block;');
  148. divScript.appendChild(spanTmp);
  149.  
  150.  
  151. }
  152. }
  153. if (window.location.pathname == "/_vahal/vide.php" && ((document.getElementsByClassName("titre"))[0]).innerText == "Nouveau message" && JSON.parse(localStorage.getItem('EdenyaPreview'))){
  154. var boutonSubmit = document.getElementsByName('Submit')[0];
  155. var pParent = boutonSubmit.parentElement;
  156. var boutonPreview = document.createElement('button');
  157. boutonPreview.innerText = "Prévisualiser";
  158. boutonPreview.className = "bouton";
  159. boutonPreview.setAttribute("type", "button");
  160. pParent.appendChild(boutonPreview);
  161. var toAddTextarea = (document.getElementsByName('message')[0]).parentElement.parentElement.parentElement.parentElement.parentElement;
  162. var lineToDivide = document.createElement('hr');
  163. toAddTextarea.appendChild(lineToDivide);
  164. var elementToAdd = document.createElement('div');
  165. elementToAdd.setAttribute('id','previewText');
  166. elementToAdd.setAttribute("style","text-align:left;");
  167. toAddTextarea.appendChild(elementToAdd);
  168. var line2ToDivide = document.createElement('hr');
  169. toAddTextarea.appendChild(line2ToDivide);
  170. toAddTextarea.appendChild(pParent);
  171. boutonPreview.setAttribute("onclick","(document.getElementsByName('Submit')[0]).disabled = false;var initial_texte = ((document.getElementsByName('message'))[0]).value;var regexpOpen = /\\[(narration|dialogue|cri|hj|ecriture)\\]/g;var regexpClose = /\\[\\/(narration|dialogue|cri|hj|ecriture)\\]/g;var previsu_texte = initial_texte.replace(regexpOpen, '<span class=\\'$1\\'>');previsu_texte = previsu_texte.replace(regexpClose, '</span><!--$1-->');var regexpImg = /\\[img\\]([^\\[]*)\\[\\/img\\]/g;previsu_texte = previsu_texte.replace(regexpImg, '<img src=\\'$1\\' border=\\'0\\'\\/>');previsu_texte = previsu_texte.replace(/\\n/g, '<'+'br/>');document.getElementById('previewText').innerHTML = previsu_texte;");
  172. // boutonPreview.setAttribute("onclick","(var initial_texte = ((document.getElementsByName('message'))[0]).value;var regexpOpen = /\\[(narration|dialogue|cri|hj|ecriture)\\]/g;var regexpClose = /\\[\\/(narration|dialogue|cri|hj|ecriture)\\]/g;var previsu_texte = initial_texte.replace(regexpOpen, '<span class=\\'$1\\'>');previsu_texte = previsu_texte.replace(regexpClose, '</span><!--$1-->');var regexpImg = /\\[img\\]([^\\[]*)\\[\\/img\\]/g;previsu_texte = previsu_texte.replace(regexpImg, '<img src=\\'$1\\' border=\\'0\\'\\/>');previsu_texte = previsu_texte.replace(/\\n/g, '<'+'br/>');document.getElementById('previewText').innerHTML = previsu_texte;");
  173. }
  174. })();