Mirkohelper

Niezbędnik każdego Mirka!

当前为 2014-10-20 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Mirkohelper
  3. // @namespace http://www.wykop.pl/ludzie/osael/
  4. // @description Niezbędnik każdego Mirka!
  5. // @author osael
  6. // @version 2.2
  7. // @grant none
  8. // @include http://www.wykop.pl/mikroblog*
  9. // @include http://www.wykop.pl/wpis*
  10. // @include http://www.wykop.pl/tag*
  11. // @include http://www.wykop.pl/ludzie*
  12. // @include http://www.wykop.pl/dodatki*
  13. // @include http://www.wykop.pl/wiadomosc-prywatna*
  14. // @include http://www.wykop.pl/moj*
  15. // @run-at document-end
  16. // ==/UserScript==
  17. //Bazowane na kilku innych dodatkach.
  18. //To jest mój pierwszy skrypt. Powiedz jeżeli coś jest nie tak jak powinno lub mogłobyć zrobione lepiej.
  19. //Podziekowania dla @Ginden oraz @kasper93.
  20.  
  21. //WERSJA TESTOWA POD NOWY WYPOK
  22.  
  23.  
  24. function main() {
  25.  
  26. //------------ TU SIE DEFINIUJEMY ---------------------
  27. //( ͡° ͜ʖ ͡°)
  28. var MirkoEmotki = [
  29. '( \u0361\u00B0 \u035C\u0296 \u0361\u00B0)',
  30. '( \u0361\u00B0 \u0296\u032F \u0361\u00B0)',
  31. '( \u0361\u00BA \u035C\u0296\u0361\u00BA)',
  32. '( \u0361\u00B0( \u0361\u00B0 \u035C\u0296( \u0361\u00B0 \u035C\u0296 \u0361\u00B0)\u0296 \u0361\u00B0) \u0361\u00B0)',
  33. '(\u2310 \u0361\u25A0 \u035C\u0296 \u0361\u25A0)',
  34. '(\u30FB\u3078\u30FB)',
  35. '\u10DA(\u0CA0_\u0CA0 \u10DA)',
  36. '(\u2565\uFE4F\u2565)',
  37. '(\u256F\uFE35\u2570,)',
  38. '( \u0361; \u0296\u032F \u0361;)',
  39. '( \u203E\u0296\u032B\u203E)',
  40. '(\u0298\u203F\u0298)',
  41. '(\uFF61\u25D5\u203F\u203F\u25D5\uFF61)',
  42. '\u1559(\u21C0\u2038\u21BC\u2036)\u1557',
  43. '\u1566(\u00F2_\u00F3\u02C7)\u1564',
  44. '(\u270C \uFF9F \u2200 \uFF9F)\u261E',
  45. 't(\u30C4)_/\u00AF',
  46. '\u25D5\u203F\u25D5',
  47. '(\uFF9F\uFF70\uFF9F)',
  48. '(>\u10DA)',
  49. '\uFD3E\u0361\u0E4F\u032F\u0361\u0E4F\uFD3F',
  50. '\u0CA0_\u0CA0',
  51. '\u0628_\u0628',
  52. '\u30FD( \u035D\u00B0 \u035C\u0296\u0361\u00B0)\uFF89',
  53. '( \u0361\u00B0\u256D\u256E\u0361 \u00B0)',
  54. '\u0295\u2022\u1D25\u2022\u0294',
  55. '\u1D98\u1D52\u1D25\u1D52\u1D85',
  56. '(\u2312(oo)\u2312)',
  57. '\u113D\u1F41\u020D \u032A \u0151\u1F40\u113F'
  58. ];
  59. //Emotki proponowne przez mirki na #mirkohelper
  60. var MirkoEmotkiUsr = [
  61. '( \u0361\u20AC \u035C\u0296 \u0361\u20AC)',
  62. '\u10DA(\u0301\u25C9\u25DE\u0C6A\u25DF\u25C9\u2035\u10DA)',
  63. '(\u3002\u30D8\u00B0)',
  64. '(\uFE36\uFE39\uFE3A)',
  65. '(\u2310 \u0361\u25A0 \u035F\u0296 \u0361\u25A0)',
  66. '(\u1D54\u1D25\u1D54)',
  67. '(\u222A_\u222A)\uFF61\uFF61\uFF61zzz',
  68. '( \u0361~ \u035C\u0296 \u0361~) ',
  69. '\u30FD\u0F3C\u0E88\u0644\u035C\u0E88\u0F3D\uFF89',
  70. '(\u00AC\u203F\u00AC)',
  71. '(\uFF89\u00B4\u30EE\u00B4)\uFF89*:\uFF65\uFF9F\u2727',
  72. '\u30FE(\u2310\u25A0_\u25A0)\u30CE\u266A',
  73. '( \u02D8 \u00B3\u02D8)\u2665',
  74. '( \u0E07 \u0361\u00B0\u256D\u035C\u0296\u256E\u0361\u00B0 ) \u0E07',
  75. '(\u0E07 \u2022\u0300_\u2022\u0301)\u0E07 ',
  76. '( \u02D8\u25BD\u02D8)\u3063\u2668',
  77. '(\u0E07 \u0360\u00B0 \u035F\u0296 \u0361\u00B0)\u0E07',
  78. '(\u256F\u00B0\u25A1\u00B0\uFF09\u256F\uFE35 \u253B\u2501\u253B',
  79. '\u252C\u2500\u2500\u252C\u25E1\uFF89(\u00B0 -\u00B0\uFF89)'
  80.  
  81. ];
  82.  
  83. var MirkoEmotkiBig = [
  84. '( \u0361\u00B0 \u035C\u0296 \u0361\u00B0)\n( \u0361\u00B0 \u035C\u0296 \u0361\u00B0)\uFF89\u2310\u25A0-\u25A0\n(\u2310 \u0361\u25A0 \u035C\u0296 \u0361\u25A0)',
  85. '\u252C\u2534\u252C\u2534\u2524 ( \u0361\u00B0 \u035C\u0296\u251C\u252C\u2534\u252C\u2534',
  86. '\u255A\u2550( \u0361\u00B0 \u035C\u0296 \u0361\u00B0)\u2550\u255D\n\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n.\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n..\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n\u2026\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n\u2026\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n..\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n.\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n.\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n..\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n\u2026\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n\u2026\u255A\u2550(\u2588\u2588\u2588)\u2550\u255D\n\u2026..\u255A(\u2588\u2588\u2588)\u255D\n\u2026\u2026\u255A(\u2588\u2588)\u255D\n\u2026\u2026\u2026(\u2588)\n\u2026\u2026\u2026.*',
  87. '\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000 \u3000 \u2227__\u2227\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000 \u3000( \u0361\u00B0 \u035C\u0296 \u0361\u00B0)\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2282\u3000\u3000\u3064\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000(\u3064 \uFF89\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000 (\u30CE\n\u3000\u3000\u3000\u3000\u3000\uFF3C\u3000\u3000\u3000\u3000\u3000\u3000\u2606\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000|\u3000\u3000\u3000\u3000\u3000\u2606\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000(\u2312 \u2312\u30FD\u3000\u3000\u3000/\n\u3000\u3000\u3000\u3000\uFF3C\u3000\u3000\uFF08\u00B4\u2312\u3000\u3000\u2312\u3000\u3000\u2312\u30FE\u3000\u3000\u3000\uFF0F\n\u3000\u3000\u3000\u3000\u3000 \uFF08\u2019\u2312\u3000;\u3000\u2312\u3000\u3000\u3000::\u2312\u3000\u3000\uFF09\n\u3000\u3000\u3000\u3000\u3000\uFF08\u00B4\u3000\u3000\u3000\u3000\u3000\uFF09\u3000\u3000\u3000\u3000\u3000:::\u3000\uFF09\u3000\uFF0F\n\u3000\u3000\u2606\u2500\u3000\uFF08\u00B4\u2312;:\u3000\u3000\u3000\u3000::\u2312`\uFF09\u3000:;\u3000\u3000\uFF09\n\u3000\u3000\u3000\u3000\u3000\uFF08\u2312::\u3000\u3000\u3000::\u3000\u3000\u3000\u3000\u3000::\u2312\u3000\uFF09\n\u3000\u3000 \u3000\uFF0F\u3000\uFF08\u3000\u3000\u3000\u3000\u309D\u3000\u3000\u30FE\u3000\u4E36\u3000\u3000\u30BD\u3000\u2500',
  88. '\u2588\u25A0\u2588 \u2588 \u2580\u2588\u2580'
  89. ];
  90. var MirkoEmotkiBigDesc = [
  91. '(\u2310 \u0361\u25A0 \u035C\u0296 \u0361\u25A0)',
  92. '( \u0361\u00B0 \u035C\u0296\u251C\u252C',
  93. '\u255A\u2550( \u0361\u00B0 \u035C\u0296 \u0361\u00B0)\u2550\u255D',
  94. '( ͡° ͜ʖ ͡°)',
  95. 'HIT'
  96. ];
  97.  
  98. var MirkoSmieszki = '';
  99. var MirkoSmieszkiusr = '';
  100. var MirkoSmieszkiBig = [];
  101. //A tu kolor linkow. Potrzebne pod nocny/dzienny
  102. var classColor = $('a.editlenny').css("color");
  103. //CSSki
  104. $("<style type='text/css'> .color { color:"+classColor+" !important; } </style>").appendTo("head");
  105. $("<style type='text/css'> .mirkosmieszek { min-width: 30px; float: left; padding: 0 5px 0px 0px;} </style>").appendTo("head");
  106. $("<style type='text/css'> #mirkohelper { position: absolute; width: 500px; height: 85px; line-height: 21px !important; padding: 0px !important; min-height: 0px !important; } </style>").appendTo("head");
  107. $("<style type='text/css'> #mirki { text-align: justify; border: 0px !important; padding: 0px !important; margin: 4px; } </style>").appendTo("head");
  108. $("<style type='text/css'> #mirkiusr { text-align: justify; border: 0px !important; padding: 0px !important; margin: 4px; display: none; } </style>").appendTo("head");
  109. $("<style type='text/css'> div#halp { border: 0px !important; padding: 0px !important; margin: 4px; display: none; } </style>").appendTo("head");
  110. $("<style type='text/css'> .mirkoButtons { position: absolute; float: left; z-index: 101; bottom: -4px; left: 3px; font-size: 9px; } </style>").appendTo("head");
  111. $("<style type='text/css'> .mirkoFooter { position: absolute; font-size: 9px; right: 3px; bottom: -3px; } </style>").appendTo("head");
  112.  
  113. //Mielenie emotek
  114. MirkoEmotki.forEach(function(el){
  115. MirkoSmieszki += '<a href="#" class="mirkosmieszek color" data-smieszek="'+el+'">'+el+'</a>';
  116. });
  117. MirkoEmotkiUsr.forEach(function(el){
  118. MirkoSmieszkiusr += '<a href="#" class="mirkosmieszek color" data-smieszek="'+el+'">'+el+'</a>';
  119. });
  120. $.map(MirkoEmotkiBig, function (el, idx) {
  121. var desc = MirkoEmotkiBigDesc[idx];
  122. MirkoSmieszkiBig += '<a href="#" class="mirkosmieszek color" data-smieszek="'+el+'" title="'+el+'">'+desc+'</a>';
  123. });
  124. /*MirkoEmotkiBig.forEach(function(el){
  125. MirkoSmieszkiBig += '<a href="#" class="mirkosmieszek color" data-smieszek="'+el+'">'+el+'</a>';
  126. });
  127. */
  128. //DA JOB
  129. if(window.location.href.indexOf("ulubione") <0) {
  130. //Usuwamy Maciejowego helpera / Sorry Kaciej
  131. $('div.grid-main div.ddC div.dropdown table').remove();
  132. //I dodajemy prawilny MirkoHelper
  133. $('div.grid-main div.ddC div.dropdown').prepend('<div id="mirkohelper" class="summary"></div>');
  134. $('div#mirkohelper').append('<div id="mirki">'+ MirkoSmieszki +'</div>');
  135. $('div#mirkohelper').append('<div id="mirkiusr" class="bgfff rel">'+ MirkoSmieszkiusr +'</div>');
  136. $('div#mirkohelper').append('<div id="moar" class="bgfff rel"><div id="halp">'+ MirkoSmieszkiBig +'</div></div>');
  137. $('div#mirkohelper').prepend('<span class="mirkoButtons" style=""><a href"#" class="color" id="halp">BIG</a> <a href="#" class="color" id="moar">WINCYJ!</a></span>');
  138. $('div#mirkohelper').append('<span class="mirkoFooter"><a class="color" href="http://www.wykop.pl/dodatki/pokaz/291/" title="Strona MirkoHelpera" target="_blank">MirkoHelper</a> by <a class="color" href="http://www.wykop.pl/ludzie/Osael/" target="_blank" title="( ͡° ͜ʖ ͡°) usuń konto">@osael</a></span>');
  139. }
  140. //A teraz obsluga tego towarzystwa
  141. //Wstawianie wybranej emotki tam gdzie jest kursor
  142. $(document).on('click', 'a.mirkosmieszek', function() {
  143. var smieszko = ($(this).attr("data-smieszek"));
  144. jQuery(this).closest('form').find('textarea').insertAtCaret(smieszko+" ");
  145. return false;
  146. });
  147.  
  148. //chowanie MOAR! pokazywanie WINCYJ! i w ogóle dziwki, koks i lasery
  149. $(document).on("click", 'a#halp', function(){
  150. if( $('div#mirki').is(':visible') ) {
  151. $('div#mirki').hide();
  152. $('div#mirkiusr').hide();
  153. $('div#halp').show();
  154. } else if ( $('div#mirkiusr').is(':visible') ) {
  155. $('div#mirkiusr').hide();
  156. $('div#mirki').hide();
  157. $('div#halp').show();
  158. } else {
  159. $('div#halp').hide();
  160. $('div#mirki').show();
  161. }
  162. return false;
  163. });
  164. //niezle pojebane, nie? ale dziala! :D
  165. $(document).on("click", 'a#moar', function(){
  166. if( $('div#mirki').is(':visible') ) {
  167. $('div#mirki').hide();
  168. $('div#mirkiusr').show();
  169. } else if ( $('div#mirkiusr').is(':visible') ) {
  170. $('div#mirkiusr').hide();
  171. $('div#mirki').show();
  172. } else {
  173. $('div#mirkiusr').show();
  174. }
  175. $('div#halp').hide();
  176. return false;
  177. });
  178. //Skrypcik na wstawianie MirkoEmotki gdzie jest kursor
  179. jQuery.fn.extend({
  180. insertAtCaret: function(myValue){
  181. return this.each(function(i) {
  182. if (document.selection) {
  183. //For browsers like Internet Explorer
  184. this.focus();
  185. var sel = document.selection.createRange();
  186. sel.text = myValue;
  187. this.focus();
  188. }
  189. else if (this.selectionStart || this.selectionStart == '0') {
  190. //For browsers like Firefox and Webkit based
  191. var startPos = this.selectionStart;
  192. var endPos = this.selectionEnd;
  193. var scrollTop = this.scrollTop;
  194. this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
  195. this.focus();
  196. this.selectionStart = startPos + myValue.length;
  197. this.selectionEnd = startPos + myValue.length;
  198. this.scrollTop = scrollTop;
  199. } else {
  200. this.value += myValue;
  201. this.focus();
  202. }
  203. });
  204. }
  205. });
  206. }
  207.  
  208. if (typeof $ == 'undefined') {
  209. if (typeof unsafeWindow !== 'undefined' && unsafeWindow.jQuery) {
  210. // Firefox
  211. var $ = unsafeWindow.jQuery;
  212. main();
  213. } else {
  214. // Chrome
  215. addJQuery(main);
  216. }
  217. } else {
  218. // Opera >.>
  219. main();
  220. }
  221.  
  222. //what is this i dont even
  223. function addJQuery(callback) {
  224. var script = document.createElement("script");
  225. script.textContent = "(" + callback.toString() + ")();";
  226. document.body.appendChild(script);
  227. }