Mirkohelper

Niezbędnik każdego Mirka!

目前為 2014-06-17 提交的版本,檢視 最新版本

  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.1.1
  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. //------------ TU SIE DEFINIUJEMY ---------------------
  26. //( ͡° ͜ʖ ͡°)
  27. var MirkoEmotki = [
  28. '( \u0361\u00B0 \u035C\u0296 \u0361\u00B0)',
  29. '( \u0361\u00B0 \u0296\u032F \u0361\u00B0)',
  30. '( \u0361\u00BA \u035C\u0296\u0361\u00BA)',
  31. '( \u0361\u00B0( \u0361\u00B0 \u035C\u0296( \u0361\u00B0 \u035C\u0296 \u0361\u00B0)\u0296 \u0361\u00B0) \u0361\u00B0)',
  32. '(\u2310 \u0361\u25A0 \u035C\u0296 \u0361\u25A0)',
  33. '(\u30FB\u3078\u30FB)',
  34. '\u10DA(\u0CA0_\u0CA0 \u10DA)',
  35. '(\u2565\uFE4F\u2565)',
  36. '(\u256F\uFE35\u2570,)',
  37. '(\u0298\u203F\u0298)',
  38. '(\uFF61\u25D5\u203F\u203F\u25D5\uFF61)',
  39. '\u1559(\u21C0\u2038\u21BC\u2036)\u1557',
  40. '\u1566(\u00F2_\u00F3\u02C7)\u1564',
  41. '(\u270C \uFF9F \u2200 \uFF9F)\u261E',
  42. 't(\u30C4)_/\u00AF',
  43. '\u25D5\u203F\u25D5',
  44. '(\uFF9F\uFF70\uFF9F)',
  45. '(>\u10DA)',
  46. '\uFD3E\u0361\u0E4F\u032F\u0361\u0E4F\uFD3F',
  47. '\u0CA0_\u0CA0',
  48. '\u0628_\u0628',
  49. '\u30FD( \u035D\u00B0 \u035C\u0296\u0361\u00B0)\uFF89',
  50. '( \u0361\u00B0\u256D\u256E\u0361 \u00B0)',
  51. '\u0295\u2022\u1D25\u2022\u0294',
  52. '\u1D98\u1D52\u1D25\u1D52\u1D85',
  53. '(\u2312(oo)\u2312)',
  54. '\u113D\u1F41\u020D \u032A \u0151\u1F40\u113F'
  55. ];
  56. //Emotki proponowne przez mirki na #mirkohelper
  57. var MirkoEmotkiUsr = [
  58. '( \u0361\u20AC \u035C\u0296 \u0361\u20AC)',
  59. '( \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)',
  60. '\u10DA(\u0301\u25C9\u25DE\u0C6A\u25DF\u25C9\u2035\u10DA)',
  61. '(\u3002\u30D8\u00B0)',
  62. '(\uFE36\uFE39\uFE3A)',
  63. '(\u2310 \u0361\u25A0 \u035F\u0296 \u0361\u25A0)',
  64. '(\u1D54\u1D25\u1D54)',
  65. '(\u222A_\u222A)\uFF61\uFF61\uFF61zzz',
  66. '\u30FD\u0F3C\u0E88\u0644\u035C\u0E88\u0F3D\uFF89',
  67. '(\u00AC\u203F\u00AC)',
  68. '(\uFF89\u00B4\u30EE\u00B4)\uFF89*:\uFF65\uFF9F\u2727',
  69. '\u30FE(\u2310\u25A0_\u25A0)\u30CE\u266A',
  70. '( \u02D8 \u00B3\u02D8)\u2665',
  71. '( \u0E07 \u0361\u00B0\u256D\u035C\u0296\u256E\u0361\u00B0 ) \u0E07',
  72. '(\u0E07 \u2022\u0300_\u2022\u0301)\u0E07 ',
  73. '( \u02D8\u25BD\u02D8)\u3063\u2668',
  74. '(\u0E07 \u0360\u00B0 \u035F\u0296 \u0361\u00B0)\u0E07',
  75. '(\u256F\u00B0\u25A1\u00B0\uFF09\u256F\uFE35 \u253B\u2501\u253B',
  76. '\u252C\u2500\u2500\u252C\u25E1\uFF89(\u00B0 -\u00B0\uFF89)'
  77.  
  78. ];
  79. var MirkoSmieszki = '';
  80. var MirkoSmieszkiusr = '';
  81. //Nowa tajemnicza zakladka
  82. var moar = '<div id="halp">Coming Soon</div>';
  83. //A tu kolor linkow. Potrzebne pod nocny/dzienny
  84. var classColor = $('a.editlenny').css("color");
  85. //CSSki
  86. $("<style type='text/css'> .color { color:"+classColor+" !important; } </style>").appendTo("head");
  87. $("<style type='text/css'> .mirkosmieszek { padding: 0 5px 7px 5px; min-width: 30px; } </style>").appendTo("head");
  88. $("<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");
  89. $("<style type='text/css'> #mirki { text-align: justify; border: 0px !important; padding: 0px !important; margin: 4px; white-space: normal; } </style>").appendTo("head");
  90. $("<style type='text/css'> #mirkiusr { text-align: justify; border: 0px !important; padding: 0px !important; margin: 4px; white-space: normal; display: none; } </style>").appendTo("head");
  91. $("<style type='text/css'> div#halp { border: 0px !important; padding: 0px !important; margin: 4px; display: none; } </style>").appendTo("head");
  92. $("<style type='text/css'> .mirkoButtons { position: absolute; float: left; z-index: 101; bottom: -4px; left: 3px; font-size: 9px; } </style>").appendTo("head");
  93. $("<style type='text/css'> .mirkoFooter { position: absolute; font-size: 9px; right: 3px; bottom: -3px; } </style>").appendTo("head");
  94.  
  95. //Mielenie emotek
  96. MirkoEmotki.forEach(function(el){
  97. MirkoSmieszki += '<a href="#" class="mirkosmieszek color" data-smieszek="'+el+'">'+el+'</a>';
  98. });
  99. MirkoEmotkiUsr.forEach(function(el){
  100. MirkoSmieszkiusr += '<a href="#" class="mirkosmieszek color" data-smieszek="'+el+'">'+el+'</a>';
  101. });
  102. //DA JOB
  103. //Usuwamy Maciejowego helpera / Sorry Kaciej
  104. $('div.grid-main div.ddC div.dropdown table').remove();
  105. //I dodajemy prawilny MirkoHelper
  106. $('div.grid-main div.ddC div.dropdown').prepend('<div id="mirkohelper" class="summary"></div>');
  107. $('div#mirkohelper').append('<div id="mirki">'+ MirkoSmieszki +'</div>');
  108. $('div#mirkohelper').append('<div id="mirkiusr" class="bgfff rel">'+ MirkoSmieszkiusr +'</div>');
  109. $('div#mirkohelper').append('<div id="moar" class="bgfff rel">'+ moar +'</div>');
  110. $('div#mirkohelper').prepend('<span class="mirkoButtons" style=""><a href"#" class="color" id="halp">MOAR!</a> <a href="#" class="color" id="moar">WINCYJ!</a></span>');
  111. $('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>');
  112.  
  113. //A teraz obsluga tego towarzystwa
  114. //Wstawianie wybranej emotki tam gdzie jest kursor
  115. $(document).on('click', 'a.mirkosmieszek', function() {
  116. var smieszko = ($(this).attr("data-smieszek"));
  117. jQuery(this).closest('form').find('textarea').insertAtCaret(smieszko+" ");
  118. return false;
  119. });
  120.  
  121. //chowanie MOAR! pokazywanie WINCYJ! i w ogóle dziwki, koks i lasery
  122. $(document).on("click", 'a#halp', function(){
  123. if( $('div#mirki').is(':visible') ) {
  124. $('div#mirki').hide();
  125. $('div#mirkiusr').hide();
  126. $('div#halp').show();
  127. } else if ( $('div#mirkiusr').is(':visible') ) {
  128. $('div#mirkiusr').hide();
  129. $('div#mirki').hide();
  130. $('div#halp').show();
  131. } else {
  132. $('div#halp').hide();
  133. $('div#mirki').show();
  134. }
  135. return false;
  136. });
  137. //niezle pojebane, nie? ale dziala! :D
  138. $(document).on("click", 'a#moar', function(){
  139. if( $('div#mirki').is(':visible') ) {
  140. $('div#mirki').hide();
  141. $('div#mirkiusr').show();
  142. } else if ( $('div#mirkiusr').is(':visible') ) {
  143. $('div#mirkiusr').hide();
  144. $('div#mirki').show();
  145. } else {
  146. $('div#mirkiusr').show();
  147. }
  148. $('div#halp').hide();
  149. return false;
  150. });
  151. //Skrypcik na wstawianie MirkoEmotki gdzie jest kursor
  152. jQuery.fn.extend({
  153. insertAtCaret: function(myValue){
  154. return this.each(function(i) {
  155. if (document.selection) {
  156. //For browsers like Internet Explorer
  157. this.focus();
  158. var sel = document.selection.createRange();
  159. sel.text = myValue;
  160. this.focus();
  161. }
  162. else if (this.selectionStart || this.selectionStart == '0') {
  163. //For browsers like Firefox and Webkit based
  164. var startPos = this.selectionStart;
  165. var endPos = this.selectionEnd;
  166. var scrollTop = this.scrollTop;
  167. this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
  168. this.focus();
  169. this.selectionStart = startPos + myValue.length;
  170. this.selectionEnd = startPos + myValue.length;
  171. this.scrollTop = scrollTop;
  172. } else {
  173. this.value += myValue;
  174. this.focus();
  175. }
  176. });
  177. }
  178. });
  179. }
  180.  
  181. if (typeof $ == 'undefined') {
  182. if (typeof unsafeWindow !== 'undefined' && unsafeWindow.jQuery) {
  183. // Firefox
  184. var $ = unsafeWindow.jQuery;
  185. main();
  186. } else {
  187. // Chrome
  188. addJQuery(main);
  189. }
  190. } else {
  191. // Opera >.>
  192. main();
  193. }
  194.  
  195. //what is this i dont even
  196. function addJQuery(callback) {
  197. var script = document.createElement("script");
  198. script.textContent = "(" + callback.toString() + ")();";
  199. document.body.appendChild(script);
  200. }