From 9123161870f0bf935624f7668d28fd62d2a60f8e Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Sun, 21 Jul 2013 21:12:30 -0400 Subject: js/hide-threads.js: Simple thread-minimizing script --- js/hide-threads.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 js/hide-threads.js (limited to 'js/hide-threads.js') diff --git a/js/hide-threads.js b/js/hide-threads.js new file mode 100644 index 00000000..42475d2a --- /dev/null +++ b/js/hide-threads.js @@ -0,0 +1,74 @@ +/* + * hide-threads.js + * https://github.com/savetheinternet/Tinyboard/blob/master/js/hide-threads.js + * + * Released under the MIT license + * Copyright (c) 2013 Michael Save + * + * Usage: + * $config['additional_javascript'][] = 'js/jquery.min.js'; + * $config['additional_javascript'][] = 'js/hide-threads.js'; + * + */ + +$(document).ready(function(){ + if($('div.banner').length != 0) + return; // not index + + var board = $('form input[name="board"]').val().toString(); + + if (!localStorage.hiddenthreads) + localStorage.hiddenthreads = '{}'; + + // Load data from HTML5 localStorage + var hidden_data = JSON.parse(localStorage.hiddenthreads); + + var store_data = function() { + localStorage.hiddenthreads = JSON.stringify(hidden_data); + }; + + // Delete old hidden threads (7+ days old) + for (var key in hidden_data) { + for (var id in hidden_data[key]) { + if (hidden_data[key][id] < Math.round(Date.now() / 1000) - 60 * 60 * 24 * 7) { + delete hidden_data[key][id]; + store_data(); + } + } + } + + if (!hidden_data[board]) { + hidden_data[board] = {}; // id : timestamp + } + + $('div.post.op').each(function() { + var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); + var thread_container = $(this).parent(); + $('[-] ') + .insertBefore(thread_container.find('p.fileinfo')) + .click(function() { + hidden_data[board][id] = Math.round(Date.now() / 1000); + store_data(); + + thread_container.find('div.post,img,p.fileinfo,a.hide-thread-link,br').hide(); + + var hidden_div = thread_container.find('div.post.op > p.intro').clone(); + hidden_div.addClass('thread-hidden'); + hidden_div.find('a[href],input').remove(); + + $('[+] ') + .insertAfter(thread_container.find('a.hide-thread-link')) + .click(function() { + delete hidden_data[board][id]; + store_data(); + thread_container.find('div.post,img,p.fileinfo,a.hide-thread-link,br').show(); + $(this).remove(); + hidden_div.remove(); + }); + + hidden_div.insertAfter(thread_container.find('p.fileinfo')); + }); + if (hidden_data[board][id]) + thread_container.find('.hide-thread-link').click(); + }); +}); -- cgit v1.3 From 51361d02fb4b66a198dcdb5cd6350e6dada0aac9 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Sun, 21 Jul 2013 21:18:57 -0400 Subject: Strange bug in last commit --- js/hide-threads.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'js/hide-threads.js') diff --git a/js/hide-threads.js b/js/hide-threads.js index 42475d2a..135fbf51 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -45,7 +45,7 @@ $(document).ready(function(){ var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); $('[-] ') - .insertBefore(thread_container.find('p.fileinfo')) + .insertBefore(thread_container.find('p.fileinfo:first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); @@ -66,7 +66,7 @@ $(document).ready(function(){ hidden_div.remove(); }); - hidden_div.insertAfter(thread_container.find('p.fileinfo')); + hidden_div.insertAfter(thread_container.find('p.fileinfo:first')); }); if (hidden_data[board][id]) thread_container.find('.hide-thread-link').click(); -- cgit v1.3 From d111c6ab8c9ef12440c52974fc12ea61aa5c6ca1 Mon Sep 17 00:00:00 2001 From: czaks Date: Mon, 22 Jul 2013 10:26:14 -0400 Subject: hide-threads.js: a bigger minus character --- js/hide-threads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js/hide-threads.js') diff --git a/js/hide-threads.js b/js/hide-threads.js index 135fbf51..5a9908f1 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -44,7 +44,7 @@ $(document).ready(function(){ $('div.post.op').each(function() { var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); - $('[-] ') + $('[–] ') .insertBefore(thread_container.find('p.fileinfo:first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); -- cgit v1.3 From 163df14b50eea0fd4b84342055130459c3b8035d Mon Sep 17 00:00:00 2001 From: czaks Date: Mon, 22 Jul 2013 10:26:14 -0400 Subject: hide-threads.js: a bigger minus character --- js/hide-threads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js/hide-threads.js') diff --git a/js/hide-threads.js b/js/hide-threads.js index 135fbf51..5a9908f1 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -44,7 +44,7 @@ $(document).ready(function(){ $('div.post.op').each(function() { var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); - $('[-] ') + $('[–] ') .insertBefore(thread_container.find('p.fileinfo:first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); -- cgit v1.3 From 6bc309697edfa5ab1c2cf22d945361bb8a210baa Mon Sep 17 00:00:00 2001 From: czaks Date: Mon, 22 Jul 2013 23:29:24 -0400 Subject: hide-threads.js: fix working with ukko --- js/hide-threads.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'js/hide-threads.js') diff --git a/js/hide-threads.js b/js/hide-threads.js index 5a9908f1..c9ace8a5 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -12,11 +12,9 @@ */ $(document).ready(function(){ - if($('div.banner').length != 0) + if (active_page != "index" && active_page != "ukko") return; // not index - - var board = $('form input[name="board"]').val().toString(); - + if (!localStorage.hiddenthreads) localStorage.hiddenthreads = '{}'; @@ -37,13 +35,15 @@ $(document).ready(function(){ } } - if (!hidden_data[board]) { - hidden_data[board] = {}; // id : timestamp - } - $('div.post.op').each(function() { var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); + var board = thread_container.data("board"); + + if (!hidden_data[board]) { + hidden_data[board] = {}; // id : timestamp + } + $('[–] ') .insertBefore(thread_container.find('p.fileinfo:first')) .click(function() { -- cgit v1.3 From c562149458dc4ac917858a66dbea705297200b93 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Tue, 23 Jul 2013 09:20:37 -0400 Subject: Bugfix: "[]" showing for mods when hiding threads --- js/hide-threads.js | 1 + 1 file changed, 1 insertion(+) (limited to 'js/hide-threads.js') diff --git a/js/hide-threads.js b/js/hide-threads.js index 5a9908f1..734dfe78 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -55,6 +55,7 @@ $(document).ready(function(){ var hidden_div = thread_container.find('div.post.op > p.intro').clone(); hidden_div.addClass('thread-hidden'); hidden_div.find('a[href],input').remove(); + hidden_div.html(hidden_div.html().replace(' [] ', ' ')); $('[+] ') .insertAfter(thread_container.find('a.hide-thread-link')) -- cgit v1.3 From c217069f2bc7f9b38a4ddbe3d1043fe3b06ecf17 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 14:27:38 -0400 Subject: hide-threads.js: show post hider even in posts without an image --- js/hide-threads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js/hide-threads.js') diff --git a/js/hide-threads.js b/js/hide-threads.js index 75339455..cc06ad0b 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -46,7 +46,7 @@ $(document).ready(function(){ } $('[–] ') - .insertBefore(thread_container.find('p.fileinfo:first')) + .insertBefore(thread_container.find(':first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); -- cgit v1.3 From 95c50ae778d4e47b2076a6af0df61a05180c3dd1 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 14:57:08 -0400 Subject: hide-threads.js: fix previous commit --- js/hide-threads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js/hide-threads.js') diff --git a/js/hide-threads.js b/js/hide-threads.js index cc06ad0b..00ddbc48 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -68,7 +68,7 @@ $(document).ready(function(){ hidden_div.remove(); }); - hidden_div.insertAfter(thread_container.find('p.fileinfo:first')); + hidden_div.insertAfter(thread_container.find(':first')); }); if (hidden_data[board][id]) thread_container.find('.hide-thread-link').click(); -- cgit v1.3 From 1a43b8731525e7268b1c4e167b8116fdf97b28c4 Mon Sep 17 00:00:00 2001 From: czaks Date: Fri, 26 Jul 2013 15:31:20 -0400 Subject: hide-threads.js: further fixes and customisations, mainly due to unexpanding previously not working here, but working on another boards (4chon, etc.) --- js/hide-threads.js | 7 ++++--- stylesheets/style.css | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'js/hide-threads.js') diff --git a/js/hide-threads.js b/js/hide-threads.js index 00ddbc48..abaa700f 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -55,11 +55,12 @@ $(document).ready(function(){ var hidden_div = thread_container.find('div.post.op > p.intro').clone(); hidden_div.addClass('thread-hidden'); - hidden_div.find('a[href],input').remove(); + hidden_div.find('a[href]:not([href$=".html"]),input').remove(); + hidden_div.html(hidden_div.html().replace(' [] ', ' ')); hidden_div.html(hidden_div.html().replace(' [] ', ' ')); - $('[+] ') - .insertAfter(thread_container.find('a.hide-thread-link')) + $('[+] ') + .insertBefore(hidden_div.find(':first')) .click(function() { delete hidden_data[board][id]; store_data(); diff --git a/stylesheets/style.css b/stylesheets/style.css index 0339864b..393f9faa 100644 --- a/stylesheets/style.css +++ b/stylesheets/style.css @@ -458,6 +458,7 @@ table.mod.config-editor input[type="text"] { background-color: #fff; opacity: 0.8; } -.thread-hidden { - opacity: 0.5; +p.intro.thread-hidden { + margin: 0px; + padding: 0px; } -- cgit v1.3 From e3cb427feefbbb4fd6a5e76ce77ef80a240941f1 Mon Sep 17 00:00:00 2001 From: czaks Date: Sat, 27 Jul 2013 00:57:12 -0400 Subject: ukko: fix javascript interoperation --- js/expand.js | 10 +++++++++- js/hide-threads.js | 12 +++++++++--- js/show-backlinks.js | 7 ++++++- templates/themes/ukko/ukko.js | 3 ++- 4 files changed, 26 insertions(+), 6 deletions(-) (limited to 'js/hide-threads.js') diff --git a/js/expand.js b/js/expand.js index a737ee7f..06151627 100644 --- a/js/expand.js +++ b/js/expand.js @@ -15,7 +15,7 @@ $(document).ready(function(){ if($('div.banner').length != 0) return; // not index - $('div.post.op span.omitted').each(function() { + var do_expand = function() { $(this) .html($(this).text().replace(_("Click reply to view."), ''+_("Click to expand")+'.')) .find('a').click(function() { @@ -52,5 +52,13 @@ $(document).ready(function(){ } }); }); + } + + $('div.post.op span.omitted').each(do_expand); + + $(document).bind("new_post", function(e, post) { + if (!$(post).hasClass("reply")) { + $(post).find('div.post.op span.omitted').each(do_expand); + } }); }); diff --git a/js/hide-threads.js b/js/hide-threads.js index abaa700f..44bd829b 100644 --- a/js/hide-threads.js +++ b/js/hide-threads.js @@ -35,7 +35,7 @@ $(document).ready(function(){ } } - $('div.post.op').each(function() { + var do_hide_threads = function() { var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); var thread_container = $(this).parent(); @@ -46,7 +46,7 @@ $(document).ready(function(){ } $('[–] ') - .insertBefore(thread_container.find(':first')) + .insertBefore(thread_container.find(':not(h2,h2 *):first')) .click(function() { hidden_data[board][id] = Math.round(Date.now() / 1000); store_data(); @@ -69,9 +69,15 @@ $(document).ready(function(){ hidden_div.remove(); }); - hidden_div.insertAfter(thread_container.find(':first')); + hidden_div.insertAfter(thread_container.find(':not(h2,h2 *):first')); }); if (hidden_data[board][id]) thread_container.find('.hide-thread-link').click(); + } + + $('div.post.op').each(do_hide_threads); + + $(document).bind('new_post', function(e, post) { + do_hide_threads.call($(post).find('div.post.op')[0]); }); }); diff --git a/js/show-backlinks.js b/js/show-backlinks.js index 4ead494b..f23cfc38 100644 --- a/js/show-backlinks.js +++ b/js/show-backlinks.js @@ -48,7 +48,12 @@ onready(function(){ $('div.post.reply').each(showBackLinks); $(document).bind('new_post', function(e, post) { - showBackLinks.call(post); + if ($(post).hasClass("reply")) { + showBackLinks.call(post); + } + else { + $(post).find('div.post.reply').each(showBackLinks); + } }); }); diff --git a/templates/themes/ukko/ukko.js b/templates/themes/ukko/ukko.js index dc8ed382..6566335e 100644 --- a/templates/themes/ukko/ukko.js +++ b/templates/themes/ukko/ukko.js @@ -10,6 +10,7 @@ $(document).ready(function() { if(thread.length > 0) { thread.prepend('

/' + overflow[0].board + '/

'); $('div[id*="thread_"]').last().after(thread.attr('data-board', overflow[0].board).css('display', 'block')); + $(document).trigger('new_post', thread); overflow.shift(); } } else { @@ -25,6 +26,7 @@ $(document).ready(function() { if(thread.length > 0) { thread.prepend('

/' + overflow[0].board + '/

'); $('div[id*="thread_"]').last().after(thread.attr('data-board', overflow[0].board).css('display', 'block')); + $(document).trigger('new_post', thread); overflow.shift(); } @@ -33,5 +35,4 @@ $(document).ready(function() { } } }); - }); -- cgit v1.3