Bloodrat

Untitled

Oct 10th, 2022
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 30.88 KB | Source Code | 0 0
  1.  
  2. var $debilove = "SAS1939"; // prispevky se zobrazi az po kliknuti na nick
  3. var $poleBanAdres = [];
  4. /*
  5. var podbarvit = `[
  6. {"nick":"bloodrat", "background_color":"beige"},
  7. {"nick":"Losssssss", "background_color":"#c3f9ff"}
  8. ]`;
  9. */
  10. if (location.protocol == 'http:') {
  11. window.location.assign("https://www.okoun.cz");
  12. }
  13.  
  14. var ultradebilove_cas = localStorage.getItem("ultradebilove_cas");
  15. var $ultradebilove = localStorage.getItem("ultradebilove");
  16.  
  17. var b_ud_stahnout = false;
  18.  
  19. if (typeof $ultradebilove === 'undefined') {
  20. b_ud_stahnout = true;
  21. }
  22.  
  23. if (ultradebilove_cas) {
  24. var newDate = new Date();
  25. var difference = newDate.getTime() - ultradebilove_cas;
  26.  
  27. if (difference > 600000) {
  28. b_ud_stahnout = true;
  29. }
  30. } else {
  31. b_ud_stahnout = true;
  32. }
  33.  
  34. if (b_ud_stahnout) {
  35. $ultradebilove = $(getUD()).find('div.xdata').html();
  36. var newDate = new Date();
  37. localStorage.setItem("ultradebilove_cas", newDate.getTime());
  38. }
  39.  
  40. // var podbarvit2 = JSON.parse(podbarvit);
  41.  
  42. var $defaultFormat = "plain"; /* plain | html | radeox */
  43.  
  44.  
  45. var mods = $(".yui-u").first().html();
  46. mods = mods.split("<br><br>");
  47. mods = mods[0];
  48.  
  49.  
  50. var $el = $(".main > .yui-g > .yui-u").first();
  51.  
  52. if ($el.length === 0) {
  53. $el = $(".main > .yui-gc > .yui-u").first();
  54. }
  55.  
  56. $el.html("<p title='Naposledy načteno' id='xtime'></p><p><input placeholder='Hledej' id='srchinput'></p>");
  57. $el.append("<h3>S novými <span id='pocetsnovymi'></span></h3><div id='novydiv'></div>");
  58.  
  59. // Opravene mizeni .pager a mazaciho tlacitka pokud se jedna o vzkaznik - BR 12.9.22 - ZACATEK
  60. $el_pager = $("div.pager").first();
  61. var $jeToMujVzkaznik = $(".expbutton").find("a.expcol").text();
  62. if ($jeToMujVzkaznik !== 'Nový vzkaz') {
  63. $el_pager.detach().prependTo( ".list-and-pagers-wrapper");
  64. }
  65.  
  66. var $jeToMujKlub = $('div.settings a').filter(function(index) { return $(this).text() === "Nastavení klubu"; }).attr("href") ;
  67.  
  68. // Opravene mizeni .pager a mazaciho tlacitka pokud se jedna o vzkaznik - BR 12.9.22 - KONEC
  69. $( "<div id='welcome2'></div>" ).insertAfter( $(".welcome"));
  70.  
  71. $("[name='markWelcomeMsgBoardForm']").hide();
  72.  
  73. $("h2").append("<span id='rozbal2' title='Rozbal popis klubu'>&nbsp;</span>");
  74. $( "#welcome2").html("<div id='rozbal3'>"+$( ".welcome" ).html()+"</div>");
  75.  
  76. $("h2").append("<span id='mods_expand' title='Moderátoři'>M</span>");
  77. $("#welcome2").append("<div id='rozbal4'>"+mods+"</div>");
  78.  
  79.  
  80. var $prispevky = $("div.item");
  81. var $neprecteny;
  82. var $debilove_arr = $debilove.split(",");
  83.  
  84.  
  85. $ultradebilove = $ultradebilove.split(' ,').join(',');
  86. $ultradebilove = $ultradebilove.split(', ').join(',');
  87.  
  88. localStorage.setItem("ultradebilove", $ultradebilove);
  89.  
  90. var $ultradebilove_arr = $ultradebilove.split(",");
  91. var ultradebilove_counter = 0;
  92. var $showAutocheckedForDel = false; //mechanismus schovávání del buttonu na radce 428
  93. $ultradebilove_arr.push('Cindy');
  94. $ultradebilove_arr.push('Karma');
  95.  
  96. $prispevky.each(function() {
  97.  
  98. var prispevek = $(this);
  99. embedVideos (prispevek.find(".content"));
  100. if (jQuery.inArray(prispevek.find("span.user").html(), $debilove_arr )!== -1) {
  101. $(this).addClass( "hiddenart" );
  102. }
  103.  
  104. var username = prispevek.find( "span.user").html();
  105.  
  106. if (jQuery.inArray(username, $ultradebilove_arr )!== -1) {
  107. ultradebilove_counter++;
  108.  
  109. // zde je začátek přidaného kódu - BR
  110. var titleId = prispevek.find("div.content").html();
  111. var $debilProBan = prispevek.find("span.user").html();
  112. if (titleId.search("img") !== -1) {
  113. var id = $(this).attr('id');
  114. $(`#${id} .title`).text('měl bych se raději zabít');
  115. $(`#${id} .yui-base`).find("img").attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z/C/HgAGgwJ/lK3Q6wAAAABJRU5ErkJggg==');
  116. /*
  117. var pathname = window.location.pathname;
  118. if (pathname == 'https://www.okoun.cz/msgbox.jsp'||'http://www.okoun.cz/msgbox.jsp') {
  119. $(`#${id} .content`).find("img").attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z/C/HgAGgwJ/lK3Q6wAAAABJRU5ErkJggg==');
  120. }*/
  121. }
  122.  
  123. // a zde je konec, jinak beze změn - BR
  124. // umlceni ultradebila - BR 12.9.22 - ZACATEK
  125. var id = $(this).attr('id');
  126. $(`#${id} .yui-base`).html("Měl bych se zabít a chcípnout v libovolném pořadí.");
  127. if ($jeToMujVzkaznik === 'Nový vzkaz') {
  128. $(`#${id} .content`).html("Měl bych se zabít a chcípnout v libovolném pořadí.");
  129. }
  130. // umlceni ultradebila - BR 12.9.22 - KONEC
  131. if ($jeToMujKlub !== undefined){
  132. $(this).find("span.delete input").prop( "checked", true );
  133. $showAutocheckedForDel = true;
  134. var item = $(this);
  135. // item.before( '<span class="yui-button" id="banButtonID"><a href="' + $jeToMujKlub + '&uuName=' + $debilProBan +'&uuAction=banishHim" target="_blank">Ban!</a></span>' );
  136. // https://www.okoun.cz/updateBoard.jsp?boardId=10303&uuName=Cindy&uuAction=banishHim
  137. $poleBanAdres.push($jeToMujKlub +'&uuName=' + $debilProBan +'&uuAction=banishHim');
  138.  
  139.  
  140.  
  141. }
  142.  
  143. // <input type="checkbox" name="defReadPerm" value="on" checked="checked" id="bcform-defReadPerm">
  144. $(this).addClass( "hiddenart2" );
  145. }
  146.  
  147. if (prispevek.hasClass('new')) {
  148. $neprecteny = prispevek;
  149. }
  150. /*
  151. $.each(podbarvit2, function(key,value) {
  152. if (username == value.nick) {
  153. prispevek.css("background-color", value.background_color);
  154. }
  155. });
  156. */
  157.  
  158. $(this).find("span.user").after("&nbsp;&nbsp;<a title='Filtruj' class='userfilter' href='"+window.location.pathname+"?searchedUsers="+username+"'>&bull;</a>");
  159.  
  160. $(this).find(".actions").append( "<span class='oblibit' data-xid="+$(this).attr("id")+">Oblíbit</span>");
  161. });
  162.  
  163.  
  164. if (ultradebilove_counter> 0 ) {
  165. $('.settings').append("<span class='skrytoprispevku' style='float:left;padding-right:10px'>UD: "+ultradebilove_counter+' ' + "</span>");
  166. }
  167.  
  168. $(document).on("click", ".skrytoprispevku", function (e) {
  169. $(".hiddenart2").addClass("hiddenart2_show");
  170. $(".hiddenart2").removeClass("hiddenart2");
  171.  
  172. $(".skrytoprispevku").hide();
  173. });
  174.  
  175. if ($neprecteny) {
  176. if (NotInViewport($neprecteny)) {
  177. const julie = $neprecteny[0];
  178. julie.scrollIntoView(false);
  179. window.scrollBy(0,100);
  180. }
  181. }
  182.  
  183. var mesice = "ledna,února,března,dubna,května,června,července,srpna,září,října,listopadu,prosince";
  184. var mesice_arr = mesice.split(",");
  185. var $novy = $("#novydiv");
  186.  
  187. xload();
  188.  
  189. setInterval( function(){
  190. xload();
  191. }, 60000);
  192.  
  193.  
  194.  
  195. function xload() {
  196.  
  197. var $pocetsnovymi = 0;
  198. $novy.load( "https://www.okoun.cz/favourites.jsp?new=1&k="+Math.random()+" .item", function() {
  199.  
  200. $novy.find(".item").each(function() {
  201. var str_dt = $(this).find("span.date").html();
  202. var arr = str_dt.split(" ");
  203. var arr2 = arr[0].split(".");
  204. var out = arr[1];
  205.  
  206. out += twoplaces(mesice_arr.indexOf(arr2[1]));
  207. out += twoplaces(arr2[0]);
  208.  
  209. if (arr[2].length<8) {out += "0";}
  210. out += arr[2];
  211.  
  212. var nazev = $(this).find("a.name").html();
  213. var href = $(this).find("a.name").attr('href');
  214. var novych = $(this).find("b").html();
  215.  
  216. novych = novych.replace('&nbsp;nových', '');
  217. novych = novych.replace('&nbsp;nový', '');
  218. novych = novych.replace('&nbsp;nové', '');
  219.  
  220. $(this).html("<a class='klub' data-tm='" + out + "' title='"+ str_dt + "' href='" + href + "'>" + nazev + "</a> - " + novych);
  221.  
  222. $pocetsnovymi = $pocetsnovymi +1;
  223. });
  224.  
  225. $("#novydiv .item").sort(descending_sort).appendTo('#novydiv');
  226. $("#pocetsnovymi").html("(" + $pocetsnovymi + ")");
  227. });
  228.  
  229.  
  230. var dt = new Date();
  231.  
  232. $("#xtime").html(dt.getHours() + ":" + twoplaces(dt.getMinutes()) + ":" + twoplaces(dt.getSeconds()));
  233. }
  234.  
  235.  
  236.  
  237. function descending_sort(a, b) {
  238. return ($(b).html()) > ($(a).html()) ? 1 : -1;
  239. }
  240.  
  241.  
  242. function twoplaces(n) {
  243. return (n<10) ? "0"+n: n;
  244. }
  245.  
  246.  
  247.  
  248. $("[name='searchBoardsForm']").submit(function() {
  249.  
  250. if ($("[name='searchBoardsForm'] [name='keyword']").val()=="") {
  251. alert ("Hledáš prázdný text");
  252. return false;
  253. }
  254.  
  255. });
  256.  
  257.  
  258. $(".hiddenart .user").on( "click", function() {
  259. $(this).parent().parent().removeClass("hiddenart");
  260. });
  261.  
  262. $('select[name ="bodyType"]').val($defaultFormat);
  263.  
  264. function NotInViewport(e) {
  265.  
  266. var elementTop = e.offset().top;
  267. var elementBottom = elementTop + e.outerHeight();
  268. var viewportTop = $(window).scrollTop();
  269. var viewportBottom = viewportTop + $(window).height();
  270.  
  271. return !(elementBottom > viewportTop && elementTop < viewportBottom);
  272. }
  273.  
  274.  
  275. $('div.menu').append('&nbsp;&nbsp;<span><a id="loadarchiv" href="#">Archiv</a></span>');
  276.  
  277. $(document).on("click", ".smazatzaznam", function (e) {
  278.  
  279. if (confirm("Určitě odstranit z archivu?")) {
  280. var bookmarks = jQuery.parseJSON(localStorage.getItem("zalozky"));
  281.  
  282. var idx = 0;
  283. var k = $(this).data("xid");
  284.  
  285. $("#"+k).remove();
  286.  
  287. $.each(bookmarks, function(key,value) {
  288. if (k == value.id) {
  289. bookmarks.splice(idx, 1);
  290. };
  291. idx = idx +1;
  292. });
  293.  
  294. localStorage.setItem("zalozky", JSON.stringify(bookmarks));
  295. }
  296. });
  297.  
  298.  
  299. $(".oblibit").on( "click", function() {
  300.  
  301. var prispevek = $(this).parent().parent();
  302.  
  303. var user2 = prispevek.find(".ico-wrapper > a").attr('href');
  304. if (user2) {
  305. user2 = user2.replace('/msgbox.do?rcpt=', '');
  306. }
  307.  
  308. var savearticle = {
  309. "id": $(this).data("xid"),
  310. "icosrc": prispevek.find(".ico-wrapper > a > img").attr('src'),
  311. "user": prispevek.find("span.user").text(),
  312. "user2": user2,
  313. "descr": prispevek.find("span.user > span.descr").text(),
  314. "permalink": prispevek.find("div.permalink > a").attr('href'),
  315. "content": prispevek.find("div.content").html(),
  316. "replyto": prispevek.find("div.actions a.prev").html(),
  317. "replytolink": prispevek.find("div.actions a.prev").attr('href')
  318. };
  319.  
  320. const bookmarks0 = localStorage.getItem('zalozky');
  321.  
  322. if (bookmarks0) {
  323. var bookmarks = JSON.parse(bookmarks0);
  324. bookmarks.push (savearticle);
  325. } else {
  326. bookmarks = [];
  327. bookmarks.push (savearticle);
  328. }
  329.  
  330. localStorage.setItem("zalozky",JSON.stringify(bookmarks));
  331. alert ("Přidáno.");
  332. })
  333.  
  334.  
  335. $("#loadarchiv").on( "click", function() {
  336.  
  337. var $el2 = $(".yui-g").first();
  338.  
  339. if ($el2.length === 0) {
  340. $el2 = $(".yui-u.yui-ge.first.main").first();
  341. }
  342.  
  343. $el2.html(``);
  344.  
  345. var bookmarks = jQuery.parseJSON(localStorage.getItem("zalozky"));
  346.  
  347. $.each(bookmarks, function(key,value) {
  348.  
  349. if (!value.deleted) {
  350.  
  351. var xout =`
  352.  
  353. <div id="` + value.id + `" class="item">
  354. <div class="ico user" style="clear:left">
  355. <div class="ico-wrapper">
  356. <a href="/msgbox.do?rcpt=` + value.user2 + `"><img src="` + value.icosrc + ` " alt=""></a>
  357. </div>
  358. </div>
  359. <div class="meta">
  360. <span class="user">` + value.user + ` </span>
  361. <span class="descr">&nbsp;</span>
  362.  
  363. <div class="permalink">
  364. <a href="` + value.permalink + ` " class="date link">Přejít na příspěvek</a>
  365. </div>
  366. </div>
  367.  
  368. <div class="content yui-base">` + value.content + ` </div>
  369.  
  370. <div class="actions">
  371.  
  372. <span class="smazatzaznam" data-xid="` + value.id + `">Smazat záznam</span>
  373.  
  374. `;
  375.  
  376.  
  377. if (value.replyto) {
  378. xout += ' Reakce na <a class="prev" href="' + value.replytolink + '">' + value.replyto + '</a>';
  379. }
  380.  
  381. xout += "</div></div>";
  382.  
  383. $el2.prepend (xout);
  384.  
  385. }
  386.  
  387. });
  388.  
  389.  
  390. $el2.prepend (`
  391. <div class="yui-u first">
  392. <h2><a href="#">Archiv</a></h2>
  393. </div>
  394. `);
  395.  
  396.  
  397. $el2.css("background-color", "#F0F8FF");
  398. $el2.css("border-radius", "5px");
  399. $el2.css("padding", "10px");
  400.  
  401. var $yuigc = $(document).find(".yui-gc");
  402.  
  403. if ($yuigc) {
  404. $yuigc.removeClass("news");
  405. }
  406.  
  407.  
  408. });
  409.  
  410.  
  411.  
  412. $(document).on("click", "#rozbal2", function (e) {
  413. $("#rozbal3").slideToggle( "300", function() {
  414. });
  415. });
  416.  
  417. $(document).on("click", "#mods_expand", function (e) {
  418. $("#rozbal4").slideToggle( "300", function() {
  419. });
  420. });
  421.  
  422.  
  423.  
  424.  
  425. $(document).on("keyup", "#srchinput", function (e) {
  426. var inputValue = $(this).val().toLowerCase();
  427.  
  428. $("#novydiv a.klub").each(function() {
  429.  
  430. if ($(this).text().toLowerCase().indexOf(inputValue) > -1) {
  431. $(this).parent().removeClass("notfound");
  432. } else {
  433. $(this).parent().addClass("notfound");
  434. }
  435.  
  436. });
  437. });
  438.  
  439.  
  440. // mechanismus mazacího tlačítka
  441.  
  442. var btn = $('button:contains("Smazat")').first();
  443. btn.appendTo($('.pager').first());
  444. btn.css("float", "right");
  445. btn.html("Smazat vybrané");
  446. btn.attr('id', "smazatvybrane");
  447. if (!$showAutocheckedForDel) {btn.hide()};
  448.  
  449. var btn = $('button.submit:contains("Hledat")').eq(1);
  450. var frm = $('div.search form').first();
  451. btn.appendTo(frm);
  452.  
  453. $(document).on("click", "span.delete input", function (e) {
  454.  
  455. var nekterynahozeny = false;
  456. var checkboxy = $(document).find("span.delete input");
  457.  
  458. $.each(checkboxy, function() {
  459. if ($(this).is(':checked')) {
  460. nekterynahozeny = true;
  461. };
  462. });
  463.  
  464. if (nekterynahozeny) {
  465. $("#smazatvybrane").show();
  466. } else {
  467. $("#smazatvybrane").hide();
  468. }
  469. });
  470.  
  471. // Stažení Seznam_parazitu
  472. function getUD(){
  473.  
  474. console.log ("stahuju UD");
  475. return $.ajax({
  476. type: "GET",
  477. url: '/boards/Seznam_parazitu',
  478. cache: false,
  479. async: false
  480. }).responseText;
  481. }
  482.  
  483. // banovací tlačítko a mechanismus - ZAČÁTEK
  484. $( document ).ready(function() {
  485.  
  486. var okounUsSetLink = $('div.settings a').filter(function(index) { return $(this).text() === "Nastavení klubu"; }).attr("href");
  487.  
  488. if (okounUsSetLink == undefined) {
  489.  
  490. console.log('klub bez moderátorských práv');
  491.  
  492. }
  493.  
  494. if (window.location.href.indexOf('https://www.okoun.cz/updateBoard.jsp?boardId=') == 0) {
  495.  
  496. var urlParams = new URLSearchParams(window.location.search);
  497.  
  498. if (urlParams.get('uuAction') == 'banishHim') {
  499.  
  500. $('input[name="newPermUserLogin[0]"]').val(urlParams.get('uuName'));
  501. $('input[name="newPermRead[0]"]').prop('checked', false);
  502. $('input[name="newPermWrite[0]"]').prop('checked', false);
  503. $('input[name="newPermDeleteOwn[0]"]').prop('checked', false)
  504. $('html, body').animate({scrollTop: $(document).height()},500);
  505. $(document).ready(function(){
  506. $("#owners .submit").click();
  507. });
  508.  
  509. }
  510. }
  511. });
  512. // banovací tlačítko a mechanismus - KONEC
  513.  
  514.  
  515. // Ban All button - ZAČÁTEK
  516.  
  517. if (ultradebilove_counter >0) {
  518. $('.settings').append('<button class="submit" type="submit" id="banUD" style="float: left;">Ban UD </button>'+ ' ');
  519. }
  520.  
  521.  
  522. $('#banUD').click(function(){
  523. $.each($poleBanAdres, function(index, value){
  524. window.open(`${value}`);
  525. var urlParams = new URLSearchParams(window.location.search);
  526. // alert(value);
  527. // alert(urlParams);
  528.  
  529. checkFlag();
  530.  
  531. function checkFlag() {
  532. if (window.location.href.indexOf(value) > -1) {
  533. window.setTimeout(checkFlag, 1000); /* this checks the flag every 100 milliseconds*/
  534. } else {
  535.  
  536. }
  537. }
  538. });
  539. });
  540.  
  541. // Ban All button - KONEC
  542.  
  543.  
  544. $(document).on("change", 'select[name="bodyType"]', function (e) {
  545. localStorage.setItem("post_format", $(this).val());
  546. });
  547.  
  548. if ($(document).find('form[name="boardUpdateForm"]').length > 0) { // jsem na obrazovce nastavení klubu
  549.  
  550. $("#perms, #owners").hide();
  551. var nazevklubu = $(".yui-u.yui-g.first .settings a").first().text();
  552. $(".yui-u.yui-g.first").first().remove();
  553. $(".legend").hide();
  554.  
  555.  
  556. $("<h1>Nastavení klubu "+nazevklubu+"</h1>").insertBefore("form[name='boardUpdateForm']");
  557. $("<h1 class='h1nahled'>Náhled Uvítací zprávy</h1><div id='nahled'></div>").insertAfter("textarea[name='welcomeMsg']");
  558.  
  559.  
  560. $(`<div class="boardsettings"><a href="#gen2">Základní nastavení</a>
  561. | <a href="#perms2">Přístupová práva</a>
  562. | <a href="#owners2">Správci klubu</a></div>
  563. `).insertBefore("form[name='boardUpdateForm']");
  564.  
  565.  
  566. $("form[name='boardUpdateForm'] .legend").css("background", "red");
  567.  
  568.  
  569. $(".yui-gf .yui-u").css("float", "left");
  570. $(".yui-gf .yui-u").css("min-height", "30px");
  571.  
  572. $("form[name='boardUpdateForm'] textarea").css("margin-left", "0");
  573. $("form[name='boardUpdateForm'] textarea").css("width", "99%");
  574.  
  575. $('label[for="uf-postLimit"]').html("Max. délka příspěvku pro registrované uživatele<br>(počet znaků, 0 = bez omezeni)");
  576.  
  577. $('label[for="uf-anonPostLimit"]').html("Max. délka příspěvku pro anonymní uživatele<br>(počet znaků, 0 = bez omezeni)");
  578.  
  579.  
  580. $( "i:contains('zadejte maximální počet znaků')" ).parent().remove();
  581.  
  582. $("#gen").append($("#uf-welcome").parent());
  583.  
  584. $("#uf-welcome").parent().addClass("yui-gf");
  585.  
  586. if ($("#uf-format").val()=="html") {
  587. $("#nahled").html($("#uf-welcome").val());
  588. }
  589.  
  590. var submits = $("button.submit");
  591. $(submits[4]).hide();
  592.  
  593. $("h4:contains('Tito uživatelé mají nastavena specifická')").after("<table id='usersList'></table>");
  594.  
  595. $("h4:contains('Tito uživatelé mají nastavena specifická')").before("<table id='hornitabulka'><tr></tr></table>");
  596.  
  597. var xrow=$("#hornitabulka").find('tr:first');
  598.  
  599. var prvni = $('#perms .yui-u.first .detail').parent();
  600. xrow.append("<td>"+prvni.html()+"</td>");
  601. prvni.remove();
  602.  
  603. var druhy = $('#perms .yui-u:first .detail').parent();
  604. xrow.append("<td>"+druhy.html()+"</td>");
  605. druhy.remove();
  606.  
  607. var treti = $('h4:contains("Přidělit specifická přístupová práva")').first().parent();
  608. xrow.append("<td>"+treti.html()+"</td>");
  609.  
  610. var users = $("#perms .user.ico");
  611.  
  612. $("#perms").css("background-color", "#F0F8FF");
  613.  
  614. var row = "";
  615. var counter = 0;
  616. $.each(users, function() {
  617. row += '<td>' + $(this).parent().html() + '</td>';
  618.  
  619. $(this).parent().remove();
  620.  
  621. if (counter++ > 3) {
  622. $('#usersList').append('<tr>' + row + '</tr>');
  623. counter = 0;
  624. row = "";
  625. }
  626. });
  627.  
  628. if (counter > 0) {
  629. $('#usersList').append('<tr>' + row + '</tr>');
  630. }
  631. }
  632.  
  633.  
  634. $(document).on("click", "a[href='#gen2'], a[href='#perms2'], a[href='#owners2']", function (e) {
  635.  
  636. if ($(this).attr("href")=='#gen2') {
  637. $("#gen").show();
  638. $("#perms, #owners").hide();
  639. }
  640.  
  641. if ($(this).attr("href")=='#perms2') {
  642. $("#perms").show();
  643. $("#gen, #owners").hide();
  644. }
  645.  
  646. if ($(this).attr("href")=='#owners2') {
  647. $("#owners").show();
  648. $("#gen, #perms").hide();
  649. }
  650.  
  651. e.stopPropagation();
  652.  
  653. return false;
  654. });
  655.  
  656. $(document).on("change keyup paste", "textarea[name='welcomeMsg']", function (e) {
  657. $("#nahled").html($(this).val());
  658. });
  659.  
  660.  
  661. $(document).on("change keyup paste", "#uf-format", function (e) {
  662.  
  663. if ($("#uf-format").val()=="html") {
  664. $("#nahled").html($("#uf-welcome").val());
  665.  
  666. $("h1.h1nahled").show();
  667. $("#nahled").show();
  668. } else {
  669. $("h1.h1nahled").hide();
  670. $("#nahled").hide();
  671. }
  672. });
  673.  
  674.  
  675.  
  676.  
  677. function embedVideos(e) {
  678.  
  679. $(e).find("a").each(function () {
  680. // Exit quickly if this is the wrong type of URL
  681. if (this.protocol !== 'http:' && this.protocol !== 'https:') {
  682. return;
  683. }
  684.  
  685. // Find the ID of the YouTube video
  686. var id, matches;
  687. if (this.hostname === 'youtube.com' || this.hostname === 'www.youtube.com') {
  688. // For URLs like https://www.youtube.com/watch?v=xLrLlu6KDss
  689. matches = this.search.match(/[?&]v=([^&]*)/);
  690. id = matches && matches[1];
  691. } else if (this.hostname === 'youtu.be') {
  692. // For URLs like https://youtu.be/xLrLlu6KDss
  693. id = this.pathname.substr(1);
  694. }
  695.  
  696. // Check that the ID only has alphanumeric characters, to make sure that
  697. // we don't introduce any XSS vulnerabilities.
  698. var validatedID;
  699. if (id && id.match(/^[a-zA-Z0-9]*$/)) {
  700. validatedID = id;
  701. }
  702.  
  703. // Add the embedded YouTube video, and remove the link.
  704. if (validatedID) {
  705. $(this)
  706. .before('<div><iframe width="500" height="350" src="https://www.youtube.com/embed/' + validatedID + '" frameborder="0" allowfullscreen></iframe></div>')
  707. .remove();
  708. }
  709. });
  710. }
  711.  
  712. // Měnič HTML/text v příspěvku
  713.  
  714. function text_change() {
  715. var value = $(this).val();
  716. var switcher = $(this).parent().parent().parent().find('select[name=bodyType]');
  717. if (value.indexOf('<') >= 0) {
  718. switcher.val('html');
  719. } else {
  720. switcher.val('plain');
  721. }
  722. }
  723.  
  724. try {
  725. $("textarea").keyup(text_change);
  726. var config = { childList: true, subtree: true };
  727. (new MutationObserver(function (records, observer) {
  728. records.forEach(function (record) {
  729. for (var node of record.addedNodes) {
  730. if (node.className == 'post content') {
  731. $(node).find("textarea").keyup(text_change);
  732. }
  733. }
  734. });
  735. })).observe(document, config);
  736. }
  737. catch(exception) {
  738. alert(exception.message);
  739. }
  740.  
  741. // Tlačítka v panelu
  742.  
  743. function addButtons(parent, textarea)
  744. {
  745. parent.insertBefore(create_button('B', bold), textarea);
  746. parent.insertBefore(create_button('I', italic), textarea);
  747. parent.insertBefore(create_button('U', underline), textarea);
  748. parent.insertBefore(create_button('S', strike), textarea);
  749. parent.insertBefore(create_button('BR', br), textarea);
  750.  
  751. parent.insertBefore(document.createTextNode('\xA0\xA0\xA0'), textarea);
  752.  
  753. parent.insertBefore(create_button('URL', link), textarea);
  754. parent.insertBefore(create_button('IMG', img), textarea);
  755. parent.insertBefore(create_button('FONT', font), textarea);
  756. parent.insertBefore(create_button('SPOIL', spoil), textarea);
  757.  
  758. parent.insertBefore(document.createTextNode('\xA0\xA0\xA0'), textarea);
  759.  
  760. parent.insertBefore(create_button('CODE', code), textarea);
  761.  
  762. parent.insertBefore(document.createElement('br'), textarea);
  763. }
  764.  
  765. function link(event)
  766. {
  767. try {
  768. var textarea = event.target.parentNode.querySelector('textarea');
  769. var url = prompt('Zadejte adresu odkazu: ', '');
  770. if (url) {
  771. if (textarea.selectionStart < textarea.selectionEnd) {
  772. var pretext = textarea.value.substring(0, textarea.selectionStart);
  773. var posttext = textarea.value.substring(textarea.selectionEnd, textarea.value.length);
  774. var selection = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd);
  775. textarea.value = pretext + '<a href="' + url + '">' + selection + '</a>' + posttext;
  776. } else {
  777. var str = prompt('Zadejte text odkazu: ', '');
  778. textarea.value = textarea.value + '<a href="' + url + '">' + str + '</a>';
  779. }
  780. }
  781. textarea.focus();
  782. event.preventDefault();
  783. } catch (exception) {
  784. alert(exception.message);
  785. }
  786. }
  787.  
  788. function img(event) {
  789. try {
  790. var textarea = event.target.parentNode.querySelector('textarea');
  791. if (textarea.selectionStart < textarea.selectionEnd) {
  792. var pretext = textarea.value.substring(0, textarea.selectionStart);
  793. var posttext = textarea.value.substring(textarea.selectionEnd, textarea.value.length);
  794. var selection = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd);
  795. textarea.value = pretext + '<img src="' + selection + '" />' + posttext;
  796. } else {
  797. var str = prompt('Zadejte cestu k obrazku: ', '');
  798. if (str) textarea.value = textarea.value + '<img src="' + str + '" />';
  799. }
  800.  
  801. textarea.focus();
  802. event.preventDefault();
  803. } catch (exception) {
  804. alert(exception.message);
  805. }
  806. }
  807.  
  808. function font(event) {
  809. try {
  810. var textarea = event.target.parentNode.querySelector('textarea');
  811. var color = prompt('Zadejte barvu textu: ', '');
  812. var size = prompt('Zadejte velikost fontu: ', '');
  813.  
  814. if (color || size) {
  815.  
  816. var string_to_write;
  817.  
  818. if (textarea.selectionStart < textarea.selectionEnd) {
  819. var pretext = textarea.value.substring(0, textarea.selectionStart);
  820. var posttext = textarea.value.substring(textarea.selectionEnd, textarea.value.length);
  821. var selection = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd);
  822. string_to_write = '<font';
  823.  
  824. if (color) { string_to_write = string_to_write +' color="' + color + '"'; }
  825. if (size) { string_to_write = string_to_write +' size="' + size +'"'; }
  826. string_to_write = string_to_write +'>' + selection + '</font>';
  827.  
  828. textarea.value = pretext + string_to_write + posttext;
  829. } else {
  830. var str = prompt('Zadejte text: ', '');
  831. string_to_write = '<font';
  832.  
  833. if (color) { string_to_write = string_to_write +' color="' + color + '"'; }
  834. if (size) { string_to_write = string_to_write +' size="' + size +'"'; }
  835. string_to_write = string_to_write +'>' + str + '</font>';
  836.  
  837. textarea.value = textarea.value + string_to_write;
  838. }
  839. }
  840. textarea.focus();
  841. event.preventDefault();
  842. } catch (exception) {
  843. alert(exception.message);
  844. }
  845. }
  846.  
  847. function surroundText(event, opening, closing) {
  848. try {
  849. var textarea = event.target.parentNode.querySelector('textarea');
  850. var pretext = textarea.value.substring(0, textarea.selectionStart);
  851. var posttext = textarea.value.substring(textarea.selectionEnd, textarea.value.length);
  852. var selection = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd);
  853. textarea.value = pretext + opening + selection + closing + posttext;
  854. textarea.focus();
  855. event.preventDefault();
  856. } catch (exception) {
  857. alert(exception.message);
  858. }
  859. }
  860.  
  861. function spoil(event) {
  862. surroundText(event, '<table><tr><td bgcolor="#fff"><font color="#fff">', '</font></td></tr></table>');
  863. }
  864.  
  865. function bold(event) {
  866. surroundText(event, '<b>', '</b>');
  867. }
  868.  
  869. function italic(event) {
  870. surroundText(event, '<i>', '</i>');
  871. }
  872.  
  873. function underline(event) {
  874. surroundText(event, '<u>', '</u>');
  875. }
  876.  
  877. function strike(event) {
  878. surroundText(event, '<s>', '</s>');
  879. }
  880.  
  881. function br(event) {
  882. try {
  883. var textarea = event.target.parentNode.querySelector('textarea');
  884. const selectionStart = textarea.selectionStart;
  885. const selectionEnd = textarea.selectionEnd;
  886. const value = textarea.value;
  887. const pretext = value.substring(0, selectionStart);
  888. const posttext = value.substring(selectionEnd, value.length);
  889. const selection = value.substring(selectionStart, selectionEnd);
  890. textarea.value = pretext + selection + '<br>' + posttext;
  891. textarea.focus();
  892. textarea.selectionStart = selectionEnd + 4;
  893. textarea.selectionEnd = selectionEnd + 4;
  894. event.preventDefault();
  895. } catch (exception) {
  896. alert(exception.message);
  897. }
  898. }
  899.  
  900. function code(event) {
  901. surroundText(event, '<div class="code">', '</div>');
  902. }
  903.  
  904. function mouseover(event)
  905. {
  906. this.style.border = "1px solid #808080";
  907. this.style.backgroundColor = "#E0E0E0";
  908. event.preventDefault();
  909. }
  910.  
  911. function mouseout(event)
  912. {
  913. this.style.border = "1px solid #A7A6AA";
  914. this.style.backgroundColor = "white";
  915. event.preventDefault();
  916. }
  917.  
  918. function create_button(text, listener)
  919. {
  920. var button = document.createElement('button');
  921. var txt = document.createTextNode(text);
  922.  
  923. button.style.font = "10pt Arial";
  924.  
  925. button.style.border = "1px solid #A7A6AA";
  926. button.style.backgroundColor = "white";
  927. button.style.cursor = "pointer";
  928. button.style.marginBottom = "2px";
  929. button.style.marginRight = "2px";
  930.  
  931. switch (text) {
  932. case 'B': button.style.fontWeight = "bold";
  933. break;
  934. case 'I': button.style.fontStyle = "italic";
  935. break;
  936. case 'U': button.style.textDecoration = "underline";
  937. break;
  938. case 'S': button.style.textDecoration = "line-through";
  939. break;
  940. }
  941.  
  942. button.insertBefore(txt, null);
  943. button.addEventListener("mouseover", mouseover, false);
  944. button.addEventListener("mouseout", mouseout, false);
  945.  
  946. button.addEventListener("click", listener, false);
  947. return button;
  948. }
  949.  
  950. try {
  951.  
  952. var textarea = document.querySelector("textarea");
  953. if (textarea) {
  954. var parent = textarea.parentNode;
  955. addButtons(parent, textarea);
  956. }
  957.  
  958. (new MutationObserver(function (records, observer) {
  959. records.forEach(function (record) {
  960. for (var node of record.addedNodes) {
  961. if (node.className == 'post content') {
  962. node.querySelectorAll('textarea').forEach(function (textarea) {
  963. var parent = textarea.parentNode;
  964. addButtons(parent, textarea);
  965. });
  966. }
  967. }
  968. });
  969.  
  970. })).observe(document, { childList: true, subtree: true });
  971.  
  972. } catch (exception) {
  973. alert(exception.message);
  974. }
  975.  
Add Comment
Please, Sign In to add comment