From be3c467b60f241b0b4194c20a223dc282aa96b3b Mon Sep 17 00:00:00 2001 From: asiekierka Date: Mon, 24 Dec 2012 12:30:32 +0100 Subject: [PATCH 1/5] PostHider: added dummy files --- inc/config.php | 4 +++ js/jquery.cookie.js | 72 +++++++++++++++++++++++++++++++++++++++++++++ js/post-hider.js | 0 3 files changed, 76 insertions(+) create mode 100644 js/jquery.cookie.js create mode 100644 js/post-hider.js diff --git a/inc/config.php b/inc/config.php index 2137c91d..d5af4965 100644 --- a/inc/config.php +++ b/inc/config.php @@ -603,6 +603,10 @@ // Some scripts require jQuery. Check the comments in script files to see what's needed. // $config['additional_javascript'][] = 'js/jquery.min.js'; // $config['additional_javascript'][] = 'js/auto-reload.js'; + + // Enable hiding posts. Remember to put this /AFTER/ jQuery. + // $config['additional_javascript'][] = 'js/jquery.cookie.js'; + // $config['additional_javascript'][] = 'js/post-hider.js'; // Where these script files are located on the web (defaults to $config['root']). // $config['additional_javascript_url'] = '/js/'; diff --git a/js/jquery.cookie.js b/js/jquery.cookie.js new file mode 100644 index 00000000..2d4c05a8 --- /dev/null +++ b/js/jquery.cookie.js @@ -0,0 +1,72 @@ +/*! + * jQuery Cookie Plugin v1.3 + * https://github.com/carhartl/jquery-cookie + * + * Copyright 2011, Klaus Hartl + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://www.opensource.org/licenses/mit-license.php + * http://www.opensource.org/licenses/GPL-2.0 + */ +(function ($, document, undefined) { + + var pluses = /\+/g; + + function raw(s) { + return s; + } + + function decoded(s) { + return decodeURIComponent(s.replace(pluses, ' ')); + } + + var config = $.cookie = function (key, value, options) { + + // write + if (value !== undefined) { + options = $.extend({}, config.defaults, options); + + if (value === null) { + options.expires = -1; + } + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setDate(t.getDate() + days); + } + + value = config.json ? JSON.stringify(value) : String(value); + + return (document.cookie = [ + encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), + options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join('')); + } + + // read + var decode = config.raw ? raw : decoded; + var cookies = document.cookie.split('; '); + for (var i = 0, l = cookies.length; i < l; i++) { + var parts = cookies[i].split('='); + if (decode(parts.shift()) === key) { + var cookie = decode(parts.join('=')); + return config.json ? JSON.parse(cookie) : cookie; + } + } + + return null; + }; + + config.defaults = {}; + + $.removeCookie = function (key, options) { + if ($.cookie(key) !== null) { + $.cookie(key, null, options); + return true; + } + return false; + }; + +})(jQuery, document); diff --git a/js/post-hider.js b/js/post-hider.js new file mode 100644 index 00000000..e69de29b From 53a2544218276704f3e2f2bcb0bb2c43efa6feff Mon Sep 17 00:00:00 2001 From: asiekierka Date: Mon, 24 Dec 2012 13:03:07 +0100 Subject: [PATCH 2/5] PostHider: engine done --- js/post-hider.js | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/js/post-hider.js b/js/post-hider.js index e69de29b..9a198620 100644 --- a/js/post-hider.js +++ b/js/post-hider.js @@ -0,0 +1,43 @@ +function phGetCookieName(id) { + return "ph_hide_" + id; +} +function phPostHidden(id) { + return ($.cookie(phGetCookieName(id)) != null); +} +function phPostToggle(id) { + if(phPostHidden(id)) { $.cookie(phGetCookieName(id),null); } + else { $.cookie(phGetCookieName(id),"yes"); } +} +function phGetInnerText(id) { + if(phPostHidden(id)) { return "[+]"; } + else { return "[-]"; } +} +function phGetOpID(element) { + return Number(element.children("div.post.op").children("p.intro").children("a.post_no:eq(1)").text()); +} +function phPostHandle(element) { + var id = phGetOpID(element); + var preplies = element.children("div.post.reply"); + var pbody = element.children("div.post.op").children("div.body"); + var pimage = element.children("a:first").children("img"); + var pbutton = element.children("div.post.op").children("p.intro").children("a.posthider"); + if(phPostHidden(id)) { element.addClass("post-hidden"); preplies.hide(); pbody.hide(); pimage.hide(); pbutton.text("[+]"); } + else { element.removeClass("post-hidden"); preplies.show(); pbody.show(); pimage.show(); pbutton.text("[-]"); } +} + +$(document).ready(function(){ + $('div[id^="thread"]').each(function(index, element){ + // Get thread ID. + var pin = $(this).children("div.post.op").children("p.intro"); + var tid = phGetOpID($(this)); + if(tid != NaN) { + $("[?]").insertAfter(pin.children('a:last')).click(function(e) { + var eO = $(e.target); + var par = eO.parent().parent().parent(); + phPostToggle(phGetOpID(par)); + phPostHandle(par); + }); + phPostHandle($(this)); + } + }); +}); From ba1a4fc182ec206d11f26faa1a8e87db4207ae38 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Mon, 24 Dec 2012 13:04:06 +0100 Subject: [PATCH 3/5] PostHider: added opacity --- js/post-hider.js | 4 ++-- stylesheets/style.css | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/js/post-hider.js b/js/post-hider.js index 9a198620..625b28fa 100644 --- a/js/post-hider.js +++ b/js/post-hider.js @@ -21,8 +21,8 @@ function phPostHandle(element) { var pbody = element.children("div.post.op").children("div.body"); var pimage = element.children("a:first").children("img"); var pbutton = element.children("div.post.op").children("p.intro").children("a.posthider"); - if(phPostHidden(id)) { element.addClass("post-hidden"); preplies.hide(); pbody.hide(); pimage.hide(); pbutton.text("[+]"); } - else { element.removeClass("post-hidden"); preplies.show(); pbody.show(); pimage.show(); pbutton.text("[-]"); } + if(phPostHidden(id)) { element.addClass("thread-hidden"); preplies.hide(); pbody.hide(); pimage.hide(); pbutton.text("[+]"); } + else { element.removeClass("thread-hidden"); preplies.show(); pbody.show(); pimage.show(); pbutton.text("[-]"); } } $(document).ready(function(){ diff --git a/stylesheets/style.css b/stylesheets/style.css index 14463dc6..3d401184 100644 --- a/stylesheets/style.css +++ b/stylesheets/style.css @@ -453,3 +453,6 @@ table.mod.config-editor input[type="text"] { background-color: #fff; opacity: 0.8; } +.thread-hidden { + opacity: 0.5; +} From 7839d53b3a2c3ea6517ab9e6645bec4868d24233 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Mon, 24 Dec 2012 13:16:12 +0100 Subject: [PATCH 4/5] PostHider: moved to localstorage --- inc/config.php | 3 +- js/jquery.cookie.js | 72 --------------------------------------------- js/post-hider.js | 6 ++-- 3 files changed, 4 insertions(+), 77 deletions(-) delete mode 100644 js/jquery.cookie.js diff --git a/inc/config.php b/inc/config.php index d5af4965..79ac48cb 100644 --- a/inc/config.php +++ b/inc/config.php @@ -604,8 +604,7 @@ // $config['additional_javascript'][] = 'js/jquery.min.js'; // $config['additional_javascript'][] = 'js/auto-reload.js'; - // Enable hiding posts. Remember to put this /AFTER/ jQuery. - // $config['additional_javascript'][] = 'js/jquery.cookie.js'; + // Enable hiding posts. Remember to put this AFTER jQuery. // $config['additional_javascript'][] = 'js/post-hider.js'; // Where these script files are located on the web (defaults to $config['root']). diff --git a/js/jquery.cookie.js b/js/jquery.cookie.js deleted file mode 100644 index 2d4c05a8..00000000 --- a/js/jquery.cookie.js +++ /dev/null @@ -1,72 +0,0 @@ -/*! - * jQuery Cookie Plugin v1.3 - * https://github.com/carhartl/jquery-cookie - * - * Copyright 2011, Klaus Hartl - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://www.opensource.org/licenses/mit-license.php - * http://www.opensource.org/licenses/GPL-2.0 - */ -(function ($, document, undefined) { - - var pluses = /\+/g; - - function raw(s) { - return s; - } - - function decoded(s) { - return decodeURIComponent(s.replace(pluses, ' ')); - } - - var config = $.cookie = function (key, value, options) { - - // write - if (value !== undefined) { - options = $.extend({}, config.defaults, options); - - if (value === null) { - options.expires = -1; - } - - if (typeof options.expires === 'number') { - var days = options.expires, t = options.expires = new Date(); - t.setDate(t.getDate() + days); - } - - value = config.json ? JSON.stringify(value) : String(value); - - return (document.cookie = [ - encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), - options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE - options.path ? '; path=' + options.path : '', - options.domain ? '; domain=' + options.domain : '', - options.secure ? '; secure' : '' - ].join('')); - } - - // read - var decode = config.raw ? raw : decoded; - var cookies = document.cookie.split('; '); - for (var i = 0, l = cookies.length; i < l; i++) { - var parts = cookies[i].split('='); - if (decode(parts.shift()) === key) { - var cookie = decode(parts.join('=')); - return config.json ? JSON.parse(cookie) : cookie; - } - } - - return null; - }; - - config.defaults = {}; - - $.removeCookie = function (key, options) { - if ($.cookie(key) !== null) { - $.cookie(key, null, options); - return true; - } - return false; - }; - -})(jQuery, document); diff --git a/js/post-hider.js b/js/post-hider.js index 625b28fa..2aefa39f 100644 --- a/js/post-hider.js +++ b/js/post-hider.js @@ -2,11 +2,11 @@ function phGetCookieName(id) { return "ph_hide_" + id; } function phPostHidden(id) { - return ($.cookie(phGetCookieName(id)) != null); + return (localStorage.getItem(phGetCookieName(id)) != null); } function phPostToggle(id) { - if(phPostHidden(id)) { $.cookie(phGetCookieName(id),null); } - else { $.cookie(phGetCookieName(id),"yes"); } + if(phPostHidden(id)) { localStorage.removeItem(phGetCookieName(id)); } + else { localStorage.setItem(phGetCookieName(id),"yes"); } } function phGetInnerText(id) { if(phPostHidden(id)) { return "[+]"; } From 55ee009605cf0227b3838e91a0cee64b42a329ff Mon Sep 17 00:00:00 2001 From: asiekierka Date: Mon, 24 Dec 2012 13:17:54 +0100 Subject: [PATCH 5/5] PostHider: added omitted to hidelist --- js/post-hider.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/post-hider.js b/js/post-hider.js index 2aefa39f..2ae7e3b6 100644 --- a/js/post-hider.js +++ b/js/post-hider.js @@ -21,8 +21,9 @@ function phPostHandle(element) { var pbody = element.children("div.post.op").children("div.body"); var pimage = element.children("a:first").children("img"); var pbutton = element.children("div.post.op").children("p.intro").children("a.posthider"); - if(phPostHidden(id)) { element.addClass("thread-hidden"); preplies.hide(); pbody.hide(); pimage.hide(); pbutton.text("[+]"); } - else { element.removeClass("thread-hidden"); preplies.show(); pbody.show(); pimage.show(); pbutton.text("[-]"); } + var pomitted = element.children("div.post.op").children("span.omitted"); + if(phPostHidden(id)) { element.addClass("thread-hidden"); pomitted.hide(); preplies.hide(); pbody.hide(); pimage.hide(); pbutton.text("[+]"); } + else { element.removeClass("thread-hidden"); pomitted.show(); preplies.show(); pbody.show(); pimage.show(); pbutton.text("[-]"); } } $(document).ready(function(){