diff --git a/app/javascript/src/javascripts/blacklists.js b/app/javascript/src/javascripts/blacklists.js index d630646fa..3264dd67e 100644 --- a/app/javascript/src/javascripts/blacklists.js +++ b/app/javascript/src/javascripts/blacklists.js @@ -10,6 +10,7 @@ Blacklist.parse_entry = function(string) { "tags": string, "require": [], "exclude": [], + "optional": [], "disabled": false, "hits": 0, "min_score": null @@ -18,6 +19,8 @@ Blacklist.parse_entry = function(string) { $.each(matches, function(i, tag) { if (tag.charAt(0) === '-') { entry.exclude.push(tag.slice(1)); + } else if (tag.charAt(0) === '~') { + entry.optional.push(tag.slice(1)); } else if (tag.match(/^score:<.+/)) { var score = tag.match(/^score:<(.+)/)[1]; entry.min_score = parseInt(score); @@ -30,6 +33,7 @@ Blacklist.parse_entry = function(string) { Blacklist.parse_entries = function() { var entries = (Utility.meta("blacklisted-tags") || "nozomiisthebestlovelive").replace(/(rating:[qes])\w+/ig, "$1").toLowerCase().split(/,/); + entries = entries.filter(e => e.trim() !== ""); $.each(entries, function(i, tags) { var entry = Blacklist.parse_entry(tags); @@ -51,6 +55,7 @@ Blacklist.toggle_entry = function(e) { } } Blacklist.apply(); + e.preventDefault(); } Blacklist.update_sidebar = function() { @@ -64,6 +69,8 @@ Blacklist.update_sidebar = function() { var count = $(""); link.text(entry.tags); + link.attr("href", `/posts?tags=${encodeURIComponent(entry.tags)}`); + link.attr("title", entry.tags); link.click(Blacklist.toggle_entry); count.html(entry.hits); count.addClass("count"); @@ -156,7 +163,10 @@ Blacklist.post_match = function(post, entry) { $.each(String($post.data("flags")).match(/\S+/g) || [], function(i, v) { tags.push("status:" + v); }); - return (entry.require.length > 0 || entry.exclude.length > 0) && Utility.is_subset(tags, entry.require) && !Utility.intersect(tags, entry.exclude).length; + + return Utility.is_subset(tags, entry.require) + && (!entry.optional.length || Utility.intersect(tags, entry.optional).length) + && !Utility.intersect(tags, entry.exclude).length; } Blacklist.post_hide = function(post) { diff --git a/app/javascript/src/styles/common/blacklists.scss b/app/javascript/src/styles/common/blacklists.scss new file mode 100644 index 000000000..da4604032 --- /dev/null +++ b/app/javascript/src/styles/common/blacklists.scss @@ -0,0 +1,49 @@ +@import "../base/000_vars.scss"; + +#blacklist-box { + display: none; + + #blacklist-list { + a { + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: bottom; + } + + a.blacklisted-active { + text-decoration: line-through; + } + } + + &.sidebar-blacklist ul li { + list-style-type: disc; + list-style-position: inside; + + a { + max-width: 75%; + } + } + + &.inline-blacklist { + margin-bottom: 1em; + + #blacklist-list { + display: inline; + + li { + display: inline; + margin-right: 1em; + + a { + max-width: 25%; + } + } + } + } +} + +.post-preview.blacklisted-active, #image-container.blacklisted-active, #c-comments .post.blacklisted-active { + display: none; +} diff --git a/app/javascript/src/styles/common/main_layout.scss b/app/javascript/src/styles/common/main_layout.scss index 661984bfd..7c35ada30 100644 --- a/app/javascript/src/styles/common/main_layout.scss +++ b/app/javascript/src/styles/common/main_layout.scss @@ -65,23 +65,6 @@ div#page { margin-bottom: 1em; } - aside#sidebar > section#blacklist-box ul { - margin-left: 1em; - - li { - list-style-type: disc; - } - - a { - color: $link_color; - cursor: pointer; - } - - span { - color: #AAA; - } - } - section#content { overflow: visible; margin-left: 15em; diff --git a/app/javascript/src/styles/specific/comments.scss b/app/javascript/src/styles/specific/comments.scss index 7bbeb4c38..c39219295 100644 --- a/app/javascript/src/styles/specific/comments.scss +++ b/app/javascript/src/styles/specific/comments.scss @@ -123,10 +123,6 @@ div#c-comments { } } } - - div.post.blacklisted.blacklisted-active { - display: none; - } } } diff --git a/app/javascript/src/styles/specific/posts.scss b/app/javascript/src/styles/specific/posts.scss index cb905cb0e..19ded8736 100644 --- a/app/javascript/src/styles/specific/posts.scss +++ b/app/javascript/src/styles/specific/posts.scss @@ -51,14 +51,6 @@ article.post-preview { margin-top: 1em; } -a.blacklisted-active { - text-decoration: line-through; -} - -.post-preview.blacklisted-active, #image-container.blacklisted-active { - display: none; -} - #excerpt p.links { margin-top: 1em; } @@ -499,33 +491,6 @@ div#c-explore-posts { } } -#blacklist-box { - display: none; -} - -#blacklist-box.inline-blacklist { - margin-bottom: 1em; - - #blacklist-list { - display: inline; - } - - #blacklist-list li { - display: inline; - margin-right: 1em; - - a { - color: $link_color; - cursor: pointer; - } - - span.count { - color: #AAA; - margin-left: 0; - } - } -} - div#unapprove-dialog { p { margin-bottom: 1em; diff --git a/app/views/posts/partials/index/_blacklist.html.erb b/app/views/posts/partials/index/_blacklist.html.erb index 979d49849..16850d512 100644 --- a/app/views/posts/partials/index/_blacklist.html.erb +++ b/app/views/posts/partials/index/_blacklist.html.erb @@ -1,7 +1,7 @@ -
+
+ diff --git a/app/views/wiki_pages/_sidebar.html.erb b/app/views/wiki_pages/_sidebar.html.erb index 3a4e6981f..461e3bccf 100644 --- a/app/views/wiki_pages/_sidebar.html.erb +++ b/app/views/wiki_pages/_sidebar.html.erb @@ -1,9 +1,4 @@