scripts.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. $('body').on('click', '.spoiler', function() {
  2. $(this).toggle();
  3. $(this).next('div').toggle();
  4. });
  5. $('body').on('click', '.blur', function(e) {
  6. e.stopPropagation();
  7. $(this).prev().toggle();
  8. $(this).toggle();
  9. $(this).next('a').toggle();
  10. });
  11. $('body').on('click', '.toggleblur', function(e) {
  12. e.stopPropagation();
  13. $(this).toggle();
  14. $(this).next('a').next('a').toggle();
  15. $(this).next('a').toggle();
  16. });
  17. $('body').on('click', '#emoji', function(e) {
  18. $(this).closest(".element").find('.picker').css("display","none");
  19. $(this).closest(".element").find('.picker').css("display","block");
  20. });
  21. $('body').on('click', '.emoji', function(e) {
  22. var code = $(this).attr("title");
  23. console.log(code);
  24. boxtxt = $(this).closest(".element").find("#status").val();
  25. $(this).closest(".element").find("#status").val(boxtxt + ":"+code+":");
  26. });
  27. $('body').on('click', '.close', function(e) {
  28. $(this).closest('.element').find('.emojilist').html("");
  29. $(this).closest(".element").find('.picker').css("display","none");
  30. });
  31. $(document).on("change paste keyup","#emojisearch",function () {
  32. var val = $(this).val();
  33. var list = $(this).closest('.element').find('.emojilist');
  34. console.log(val);
  35. $.get("action.php?a=true&emoji=" + val, function(data) {
  36. list.html(data);
  37. });
  38. });
  39. // Open Lightbox
  40. $('body').on('click', '.open-lightbox', function(e) {
  41. e.preventDefault();
  42. e.stopPropagation();
  43. var image = $(this).attr('href');
  44. $('html').addClass('no-scroll');
  45. $('body').append('<div class="lightbox-opened"><img style="max-height:100%; max-width:100%;" src="' + image + '"></div>');
  46. });
  47. // Close Lightbox
  48. $('body').on('click', '.lightbox-opened', function() {
  49. $('html').removeClass('no-scroll');
  50. $('.lightbox-opened').remove();
  51. });
  52. window.addEventListener("scroll", function() {
  53. onScrollDiv()
  54. });
  55. window.addEventListener("DOMContentLoaded", function() {
  56. onScrollDiv()
  57. });
  58. function onScrollDiv() {
  59. var images = document.querySelectorAll('.lazyload');
  60. for (var i = 0, nb = images.length; i < nb; i++) {
  61. var img = images[i]
  62. var rect = img.getBoundingClientRect();
  63. var isVisible = ((rect.top - window.innerHeight) < 500 && (rect.bottom) > -50) ? true : false;
  64. if (isVisible) {
  65. if (!img.src) {
  66. img.src = img.dataset.src;
  67. }
  68. }
  69. }
  70. }
  71. $('body').on('click', '.replies', function(e) {
  72. e.preventDefault;
  73. $(".reply").remove();
  74. $(".element").removeClass("element_pad");
  75. $(this).closest(".element").addClass("element_pad");
  76. /*$('.replies_container').html('');*/
  77. var id = $(this).parent().parent().attr('id');
  78. if($('#' + id+'.replies_container').find('.reply').length < 1){
  79. $('#' + id+'.replies_container').html("<p><img src='img/loading.gif'></p>");
  80. }
  81. $.get("action.php?a=true&replies=" + id, function(data) {
  82. $('#' + id+'.replies_container').html(data);
  83. $('#' + id+'.replies_container').delay(800).fadeIn(400);
  84. $('#a' + id).html('');
  85. $('#' + id+".replies_container .ancestor").appendTo('#a' + id);
  86. });
  87. });
  88. $('body').on('click', '.ldr:not(.tlicon)', function(e) {
  89. $('.tlicon').each(function(a){
  90. $( this ).removeClass('tiselected')
  91. });
  92. });
  93. $('body').on('click', '.ldr', function(e) {
  94. e.preventDefault();
  95. location.hash = "#top";
  96. $('#loader').html('');
  97. $('#loaded').remove();
  98. var url = $(this).attr('href');
  99. var id = $(this).attr('id');
  100. localStorage.setItem("content", $('#content .element').detach());
  101. $('#content').html('<center><img src="img/loadingb.gif"></center>');
  102. $.get(url + "&ajax=1", function(data) {
  103. $('#content').html(data);
  104. history.pushState({}, "Dashboard FE", url);
  105. var thread = getUrlParameter('thread');
  106. });
  107. });
  108. $('body').on('click', '.gotop a', function(e) {
  109. e.preventDefault();
  110. $('html, body').animate({
  111. scrollTop: 0
  112. }, 800);
  113. return false;
  114. });
  115. $('body').on('click', '#loader', function() {
  116. var cnt = $("#loaded").contents();
  117. // $("#content").prepend(cnt);
  118. $('#content').find('.element').first().after(cnt);
  119. $("#loaded").remove();
  120. $("#loader").html('');
  121. });
  122. $('body').on('click', '.nsfw', function() {
  123. var id = $(this).attr('id');
  124. $.get("action.php?a=true&nsfw=" + id, function(data) {
  125. if (data == '1') {
  126. $('#' + id + '.nsfw').toggleClass('nsfw unnsfw');
  127. $('#' + id + '.unnsfw').html('NSFW <span class="fontello">&#xf205;</span>');
  128. }
  129. });
  130. });
  131. $('body').on('click', '.unnsfw', function() {
  132. var id = $(this).attr('id');
  133. $.get("action.php?a=true&nsfw=" + id, function(data) {
  134. if (data == '1') {
  135. $('#' + id + '.unnsfw').toggleClass('unnsfw nsfw');
  136. $('#' + id + '.nsfw').html('NSFW <span class="fontello">&#xf204;</span>');
  137. }
  138. });
  139. });
  140. $('body').on('click', '.block', function() {
  141. var id = $(this).attr('id');
  142. $.get("action.php?a=true&mode=true&block=" + id, function(data) {
  143. $('#' + id + '.block').removeClass('block').addClass('unblock');
  144. $('#' + id + '.unblock').html('Unblock');
  145. });
  146. });
  147. $('body').on('click', '.unblock', function() {
  148. var id = $(this).attr('id');
  149. $.get("action.php?a=true&mode=off&block=" + id, function(data) {
  150. $('#' + id + '.unblock').removeClass('unblock').addClass('block');
  151. $('#' + id + '.block').html('Block');
  152. });
  153. });
  154. $('body').on('click', '.autl', function() {
  155. var id = $(this).attr('id');
  156. var list = $(this).attr('list');
  157. $.get("action.php?a=true&mode=true&user=" + id + "&list=" + list, function(data) {
  158. $('#' + id + '.autl').removeClass('autl').addClass('rutl');
  159. /* $('#' + id + '.rutl li').html('Added'); */
  160. });
  161. });
  162. $('body').on('click', '.rutl', function() {
  163. var elem = $(this);
  164. var id = $(this).attr('id');
  165. var list = $(this).attr('list');
  166. $.get("action.php?a=true&mode=off&user=" + id + "&list=" + list, function(data) {
  167. $('#' + id + '.rutl').removeClass('rutl').addClass('autl');
  168. /* $(elem).find('li').html('Removed');*/
  169. });
  170. });
  171. $('body').on('click', '.hide', function() {
  172. var id = $(this).attr('id');
  173. $.get("action.php?a=true&mode=true&hide=" + id, function(data) {
  174. $('#' + id + '.hide').removeClass('hide').addClass('unhide');
  175. $('#' + id + '.unhide').html('Unhide Thread');
  176. console.log(data);
  177. });
  178. });
  179. $('body').on('click', '.unhide', function() {
  180. var id = $(this).attr('id');
  181. $.get("action.php?a=true&mode=off&hide=" + id, function(data) {
  182. $('#' + id + '.unhide').removeClass('unhide').addClass('hide');
  183. $('#' + id + '.hide').html('Hide Thread');
  184. console.log(data);
  185. });
  186. });
  187. $('body').on('click', '.bookmark', function() {
  188. var id = $(this).attr('id');
  189. $.get("action.php?a=true&mode=true&bookmark=" + id, function(data) {
  190. $('#' + id + '.bookmark').removeClass('bookmark').addClass('unbookmark');
  191. $('#' + id + '.unbookmark').html('Unbookmark');
  192. console.log(data);
  193. });
  194. });
  195. $('body').on('click', '.unbookmark', function() {
  196. var id = $(this).attr('id');
  197. $.get("action.php?a=true&mode=off&bookmark=" + id, function(data) {
  198. $('#' + id + '.unbookmark').removeClass('unbookmark').addClass('bookmark');
  199. $('#' + id + '.bookmark').html('Bookmark');
  200. console.log(data);
  201. });
  202. });
  203. $('body').on('click', '.follow', function() {
  204. var id = $(this).attr('id');
  205. $.get("action.php?a=true&follow=" + id, function(data) {
  206. console.log(data);
  207. if (data == '1') {
  208. $('#' + id + '.follow').removeClass('follow').addClass('unfollow');
  209. $('#' + id + '.unfollow').html('<span class=\'fontello\'></span> Following');
  210. }
  211. });
  212. });
  213. $('body').on('click', '.unfollow', function() {
  214. var id = $(this).attr('id');
  215. $.get("action.php?a=true&unfollow=" + id, function(data) {
  216. if (data == '1') {
  217. $('#' + id + '.unfollow').removeClass('unfollow').addClass('follow');
  218. $('#' + id + '.follow').html('Follow');
  219. }
  220. });
  221. });
  222. $('.container').on('mouseenter', '.user', function(event) {
  223. event.stopPropagation();
  224. event.stopImmediatePropagation();
  225. var id = $(this).attr('id');
  226. console.log(id);
  227. $(this).append("<div class='userinfo' id='" + id + "'><img src='loading.gif'></div>");
  228. $.when($.get("action.php?a=true&userinfo=" + id, function(data) {
  229. $('#' + id + '.userinfo').html(data);
  230. })).then(function(){
  231. $('#' + id + '.userinfo').fadeIn();
  232. });
  233. });
  234. $('.container').on('mouseleave', '.user', function(event) {
  235. event.stopPropagation();
  236. event.stopImmediatePropagation();
  237. $(this).find('.userinfo').fadeOut(300, function() { $(this).remove(); });
  238. });
  239. $('.container').on('mouseenter', '.preview', function(event) {
  240. event.stopPropagation();
  241. event.stopImmediatePropagation();
  242. var id = $(this).attr('id');
  243. console.log(id);
  244. $(this).before("<div class='notif previewpost' id='" + id + "'></div>");
  245. $.when($.get("action.php?a=true&previewpost=" + id, function(data) {
  246. $('#' + id + '.previewpost').html(data);
  247. })).then(function(){
  248. $('#' + id + '.previewpost').fadeIn();
  249. });
  250. });
  251. $('.container').on('mouseleave', '.preview', function(event) {
  252. event.stopPropagation();
  253. event.stopImmediatePropagation();
  254. $('.container').find('.previewpost').fadeOut(300, function() { $(this).remove(); });
  255. });
  256. /*
  257. $('body').on('mouseleave', '.userinfo', function() {
  258. var id = $(this).attr('id');
  259. $.when($('#' + id + '.userinfo').fadeOut()).then(function() {
  260. $('#' + id + '.userinfo').remove();
  261. });
  262. });
  263. * */
  264. var getUrlParameter = function getUrlParameter(sParam) {
  265. var sPageURL = window.location.search.substring(1),
  266. sURLVariables = sPageURL.split('&'),
  267. sParameterName,
  268. i;
  269. for (i = 0; i < sURLVariables.length; i++) {
  270. sParameterName = sURLVariables[i].split('=');
  271. if (sParameterName[0] === sParam) {
  272. return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
  273. }
  274. }
  275. };
  276. function getMode() {
  277. if (typeof getUrlParameter('user') !== 'undefined') {
  278. console.log('list');
  279. return "&user=" + getUrlParameter('user');
  280. }
  281. if (typeof getUrlParameter('list') !== 'undefined') {
  282. console.log('list');
  283. return "&list=" + getUrlParameter('list');
  284. }
  285. if (typeof getUrlParameter('mode') !== 'undefined') {
  286. console.log('mode');
  287. return "&mode=" + getUrlParameter('mode');
  288. }
  289. if (typeof getUrlParameter('tag') !== 'undefined') {
  290. console.log('tag');
  291. return "&tag=" + getUrlParameter('tag');
  292. }
  293. if (typeof getUrlParameter('search') !== 'undefined') {
  294. console.log('tag');
  295. return "&search=" + getUrlParameter('search');
  296. }
  297. return "&mode=federated";
  298. };
  299. function loadmore(){
  300. var thread = getUrlParameter('thread');
  301. if (typeof thread !== 'undefined') {
  302. return false;
  303. }
  304. if (typeof getUrlParameter('search') !== 'undefined') {
  305. return false;
  306. }
  307. var thread = getUrlParameter('thread');
  308. if (typeof thread === 'undefined') {
  309. var error = $(".error").length;
  310. if (error < 1) {
  311. pageMode = getMode();
  312. var id = $('.post').last().attr('pid');
  313. $('.loadmore').html("<img src='img/loading.gif'>")
  314. $.get("index.php?ajax=1&next=" + id + "" + pageMode, function(data) {
  315. $('.loadmore').parent().before(data);
  316. $('.loadmore').html("Load More Posts")
  317. /*$('.loadmore').parent().detach();
  318. $('#content').append(data);
  319. $('.loadmore').parent().appendTo('#content');
  320. */
  321. });
  322. }
  323. }
  324. }
  325. $(window).scroll(function() {
  326. if ($(window).scrollTop() == $(document).height() - $(window).height()) {
  327. loadmore();
  328. }
  329. });
  330. $('body').on('click', '.loadmore', function() {
  331. loadmore();
  332. });
  333. function newPosts() {
  334. var thread = getUrlParameter('thread');
  335. if (typeof thread !== 'undefined') {
  336. return false;
  337. }
  338. var search = getUrlParameter('search');
  339. if (typeof search !== 'undefined') {
  340. return false;
  341. }
  342. var error = $(".error").length;
  343. if (error >= 1) {
  344. return false;
  345. }
  346. var id = $(".post").first().attr('pid');
  347. pageMode = getMode();
  348. if (getUrlParameter('mode') == 'bookmarks') {
  349. return false;
  350. }
  351. $.get("index.php?ajax=1&since=" + id + "" + pageMode, function(data) {
  352. if (data) {
  353. var scroll = $(window).scrollTop();
  354. if (scroll > 1000) {
  355. $('#loader').html("<div class='avatar' style='height:0px;'></div><div class='loader' style='display:table-cell; height:50px; line-height:50px;'><a class='link' style='margin:5px;' href='#'>Load Newer Posts</a></div>");
  356. if ($('#loaded').length) {
  357. $('#loaded').prepend(data);
  358. } else {
  359. $('#loader').after("<div id='loaded' style='display:none'></div>");
  360. $('#loaded').prepend(data);
  361. }
  362. } else {
  363. if ($('#loaded').length) {
  364. $('#loaded').prepend(data);
  365. } else {
  366. $('#content').find('.element').first().after(data);
  367. }
  368. }
  369. }
  370. });
  371. };
  372. window.setInterval(function() {
  373. newPosts();
  374. }, 25000);
  375. $('body').on('click', '#settings #send', function() {
  376. $('#settings #send').after('<img id="loading" src="img/loading.gif">');
  377. var attach = $('#settings input[name=attach]:checked').val();
  378. var explicit = $('#settings input[name=explicit]:checked').val();
  379. var replies = $('#settings input[name=replies]:checked').val();
  380. var reblog = $('#settings input[name=reblog]:checked').val();
  381. var text = $('#settings input[name=text]:checked').val();
  382. var videoloop = $('#settings input[name=videoloop]:checked').val();
  383. var theme = $('#settings').find('select[name=theme]').val();
  384. var fg = $('#settings').find('input[name=fg]').val();
  385. var bg = $('#settings').find('input[name=bg]').val();
  386. var tx = $('#settings').find('input[name=tx]').val();
  387. var lc = $('#settings').find('input[name=lc]').val();
  388. var bc = $('#settings').find('input[name=bc]').val();
  389. var br = $('#settings').find('input[name=br]').val();
  390. var bw = $('#settings').find('input[name=bw]').val();
  391. var params = {
  392. attach: attach,
  393. explicit: explicit,
  394. replies: replies,
  395. reblog: reblog,
  396. videoloop: videoloop,
  397. text: text,
  398. theme: theme,
  399. fg: fg,
  400. bg: bg,
  401. tx: tx,
  402. lc: lc,
  403. bc: bc,
  404. bw: bw,
  405. br: br
  406. };
  407. $.get("?action=settings&ajax=1&" + $.param(params), function(data) {
  408. $('#settings #loading').remove();
  409. $('#settings #send').after('<b id="saved">Settings Saved</b>');
  410. $('#settings #saved').delay(1000).fadeOut("slow");
  411. window.location.reload(true);
  412. });
  413. });
  414. function themecheck(name){
  415. if(name.value == "custom"){
  416. $('#customtheme').css("display","block");
  417. }
  418. else{
  419. $('#customtheme').css("display","none");
  420. }
  421. };