Skwikker

Mise en forme automatique de Skwikker

当前为 2017-06-01 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Skwikker
  3. // @version 0.1339
  4. // @description Mise en forme automatique de Skwikker
  5. // @author MockingJay
  6. // @match https://www.dreadcast.eu/Forum*
  7. // @grant GM_setValue
  8. // @grant GM_getValue
  9. // @grant GM_deleteValue
  10. // @grant GM_listValues
  11. // @namespace https://greasyfork.org/users/30975
  12. // ==/UserScript==
  13.  
  14. //Lit les variables dans GM à la demande. A utiliser pour chaque déclaration de variable qui est copiée en mémoire.
  15. //initValue: Valeur par défaut de la variable, qu'on lui donne à la déclaration et qu'elle garde si pas d'équivalent en mémoire. localVarName: Valeur GM locale.
  16. function initLocalMemory(defaultValue, localVarName) {
  17. if (GM_getValue(localVarName) === undefined) {
  18. GM_setValue(localVarName, defaultValue);
  19. return defaultValue;
  20. } else {
  21. return GM_getValue(localVarName);
  22. }
  23. }
  24.  
  25. function rgb2hex(orig) {
  26. var rgb = orig.replace(/\s/g,'').match(/^rgba?\((\d+),(\d+),(\d+)/i);
  27. return (rgb && rgb.length === 4) ? "#" +
  28. ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
  29. ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
  30. ("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : orig;
  31. }
  32.  
  33. function getDCDate(){
  34. //Code de Ianouf
  35. var d = new Date();
  36. var day = d.getDate();
  37. var month = d.getMonth() + 1;
  38. var year = d.getYear() - 100;
  39.  
  40. var dchep = Math.floor(day / 7) + 1;
  41. var dcday = day % 7;
  42. var dcyear = 70 + year*12 + month;
  43.  
  44. if(dcday === 0){
  45. dchep--;
  46. dcday=7;
  47. }
  48.  
  49. return dcday + '/' + dcyear + '.' + dchep;
  50. }
  51.  
  52. function detectAddContent(str) {
  53. if (str === "") {
  54. $("#sk_addType").val("txt");
  55. } else if (str.search(/\.(jpg|jpeg|png|gif|bmp)$/i) > -1) {
  56. $("#sk_addType").val("img");
  57. } else if (str.includes("youtube.com") || str.includes("youtu.be")) {
  58. $("#sk_addType").val("vid");
  59. }
  60. }
  61.  
  62. var userPseudo = initLocalMemory("", "sk_userPseudo");
  63. var userId = initLocalMemory("", "sk_userId");
  64. var userLink = initLocalMemory("", "sk_userLink");
  65. var userAvatar = initLocalMemory("", "sk_userAvatar");
  66. var lastSkNum = initLocalMemory("000", "sk_lastSkNum");
  67. var extendedBox = initLocalMemory(true, "sk_extendedBox");
  68.  
  69. var $skBox = $(`
  70. <div id="sk_box" style="display: none; position: fixed; top: 100px; left: 20px; background: aliceblue; border: skyblue 2px solid; padding: 5px; z-index: 99999999999999">
  71. <div id="sk_title" style="width: 380px;height: 20px;">
  72. <h3 style="display: inline; position: absolute;">Skwikker</h3>
  73. <input id="sk_reduce" type="button" value="Agrandir/Réduire" style="display: inline; right: 30px; position: absolute;">
  74. <input id="sk_close" type="button" value="X" style="display: inline; right: 0px; position: absolute;" onclick="$('#sk_box').fadeOut();">
  75. </div>
  76. <br/>
  77. <div id="sk_content" style="width: 380px; padding-left: 5px">
  78. <div id="sk_prime">
  79. <p>Pseudo:</p><input type="text" id="sk_pseudo" class="sk_field">
  80. <p>@ID:</p><input type="text" id="sk_id" class="sk_field">
  81. <p>Lien EDC:</p><input type="text" id="sk_link" class="sk_field">
  82. <p>Lien Avatar:</p><input type="text" id="sk_avatar" class="sk_field">
  83. </div>
  84. <p>N° Skwik:</p><input type="text" id="sk_n" class="sk_field" value="000">
  85. <p>Message:</p><textarea id="sk_message" class="sk_field" maxlength="200" style="background: url(&quot;../../../../images/fr/design/forum/fond_message_repeat_x_2.jpg&quot;) repeat-x rgb(233, 233, 233); height: 60px;"></textarea>
  86. <p>Image/vidéo (optionnel):</p><input type="text" id="sk_add" class="sk_field">
  87. <p>Hashtags:</p><input type="text" id="sk_hash" class="sk_field">
  88. <br/>
  89. <div style="text-align: center">
  90. <select id="sk_addType" style="margin-right: 20px;">
  91. <option value="txt">Texte</option>
  92. <option value="img">Image</option>
  93. <option value="vid">Vidéo</option>
  94. </select><input type="checkBox" id="sk_isEDC"><p style="display: inline; font-size: 13px;"> Afficher l'avatar (pour EDC)</p>
  95. </div>
  96. <div style="text-align: center"><input type="button" id="sk_send" value="Générer!"></div>
  97. </div>
  98. </div>
  99. `);
  100.  
  101. var baseTemplate = `[quote]{#AVATAR#}[taille=4][b]{#PSEUDO#}[/b] [lien={#LIEN#}][c=A0A0A0]@{#ID#}[/c][/lien][c=A0A0A0] · {#DATE#} · #{#NUM#}[/c][/taille]
  102. {#TEXT#}
  103. {#HASH#}
  104.  
  105. [taille=4][c=A0A0A0][b][lien=#new_comment][c=vert]➦[/c][/lien][/b] 0 [invisible] ····· [/invisible] [b][lien=#give_star][c=rouge]❤[/c][/lien][/b] 0 [invisible] ····· [/invisible] [b][c=noir]♺[/c][/b] 0[/c][/taille][/quote]`;
  106.  
  107. $(document).ready(function() {
  108.  
  109. $("body").append($skBox);
  110. $(".sk_field").css({
  111. width: "360px",
  112. padding: "2px 5px",
  113. color: "black",
  114. "margin-bottom": "5px"
  115. });
  116. $("#sk_prime").css({
  117. display: extendedBox ? "block" : "none"
  118. });
  119. $("#sk_pseudo").val(userPseudo).change(function() {
  120. userPseudo = $(this).val();
  121. GM_setValue("sk_userPseudo", userPseudo);
  122. });
  123. $("#sk_id").val(userId).change(function() {
  124. userId = $(this).val();
  125. GM_setValue("sk_userId", userId);
  126. });
  127. $("#sk_link").val(userLink).change(function() {
  128. userLink = $(this).val();
  129. GM_setValue("sk_userLink", userLink);
  130. });
  131. $("#sk_avatar").val(userAvatar).change(function() {
  132. userAvatar = $(this).val();
  133. GM_setValue("sk_userAvatar", userAvatar);
  134. });
  135. $("#sk_n").val(lastSkNum).change(function() {
  136. lastSkNum = $(this).val();
  137. GM_setValue("sk_lastSkNum", lastSkNum);
  138. });
  139. $("#sk_add").change(function() {
  140. detectAddContent($(this).val());
  141. });
  142. $("#sk_reduce").click(function() {
  143. $('#sk_prime').slideToggle();
  144. extendedBox = !extendedBox;
  145. GM_setValue("sk_extendedBox", extendedBox);
  146. });
  147. var $skButton = $('<div style="position: absolute;bottom: 0px;right: 0px" class="bouton">Skwikker</div>');
  148. $("#zone_reponse").append($skButton);
  149. $skButton.click(function(){
  150. $('#sk_box').fadeIn();
  151. });
  152. $("#sk_send").click(function() {
  153. var messageContent = $("#sk_message").val() || " ";
  154. if ($("#sk_addType").val() == "vid") {
  155. messageContent += "\n \n \n" + "[centre][youtube]" + $("#sk_add").val() + "[/youtube][/centre]";
  156. } else if ($("#sk_addType").val() == "img") {
  157. messageContent += "\n \n \n" + "[centre][img=" + $("#sk_add").val() + "][/centre]";
  158. }
  159. var skweek = baseTemplate
  160. .replace("{#AVATAR#}", $("#sk_isEDC").prop("checked") ? "[gauche!][img="+ $("#sk_avatar").val() +"][/gauche!]" : "")
  161. .replace("{#PSEUDO#}", $("#sk_pseudo").val())
  162. .replace("{#LIEN#}", $("#sk_link").val())
  163. .replace("{#ID#}", $("#sk_id").val())
  164. .replace("{#DATE#}", getDCDate())
  165. .replace("{#NUM#}", $("#sk_n").val())
  166. .replace("{#TEXT#}", messageContent)
  167. .replace("{#HASH#}", $("#sk_hash").val() !== "" ? "[c=bleu]" + $("#sk_hash").val() + "[/c]" : " ");
  168. $("#zone_reponse_text").val(skweek);
  169. });
  170.  
  171. });