rename similar posts to recommended posts, refactor menu on posts/show

This commit is contained in:
Albert Yi
2018-07-20 16:36:14 -07:00
parent b8b0f2628d
commit 9cfb629891
12 changed files with 40 additions and 24 deletions

View File

@@ -438,7 +438,7 @@
$("#comments").show(); $("#comments").show();
$("#edit").hide(); $("#edit").hide();
$("#share").hide(); $("#share").hide();
$("#similar").hide(); $("#recommended").hide();
} else if (e.target.hash === "#edit") { } else if (e.target.hash === "#edit") {
$("#edit").show(); $("#edit").show();
$("#comments").hide(); $("#comments").hide();
@@ -446,18 +446,18 @@
$("#post_tag_string").focus().selectEnd().height($("#post_tag_string")[0].scrollHeight); $("#post_tag_string").focus().selectEnd().height($("#post_tag_string")[0].scrollHeight);
$("#related-tags-button").trigger("click"); $("#related-tags-button").trigger("click");
$("#find-artist-button").trigger("click"); $("#find-artist-button").trigger("click");
$("#similar").hide(); $("#recommended").hide();
} else if (e.target.hash === "#similar") { } else if (e.target.hash === "#recommended") {
$("#comments").hide(); $("#comments").hide();
$("#edit").hide(); $("#edit").hide();
$("#share").hide(); $("#share").hide();
$("#similar").show(); $("#recommended").show();
} else { } else {
$("#edit").hide(); $("#edit").hide();
$("#comments").hide(); $("#comments").hide();
$("#share").show(); $("#share").show();
addthis.init(); addthis.init();
$("#similar").hide(); $("#recommended").hide();
} }
$("#post-sections li").removeClass("active"); $("#post-sections li").removeClass("active");
@@ -465,11 +465,14 @@
e.preventDefault(); e.preventDefault();
}); });
$("#post-sections li:first-child").addClass("active");
$("#notes").hide(); $("#notes").hide();
$("#edit").hide(); $("#edit").hide();
if ($("#similar").length) { if ($("#recommended").data("available")) {
$("#post-sections li:first-child").addClass("active");
$("#comments").hide(); $("#comments").hide();
} else {
$("#post-sections li:nth-child(2)").addClass("active");
$("#recommended").hide();
} }
} }

View File

@@ -324,7 +324,7 @@ div#c-posts {
font-weight: bold; font-weight: bold;
} }
.similar-posts { .recommended-posts {
margin-top: 1em; margin-top: 1em;
} }

View File

@@ -178,6 +178,7 @@
article.post-preview { article.post-preview {
width: 33.3%; width: 33.3%;
height: 33.3vw; height: 33.3vw;
overflow: hidden;
} }
img { img {

View File

@@ -96,6 +96,7 @@ class UsersController < ApplicationController
disable_categorized_saved_searches disable_tagged_filenames disable_categorized_saved_searches disable_tagged_filenames
enable_recent_searches disable_cropped_thumbnails disable_mobile_gestures enable_recent_searches disable_cropped_thumbnails disable_mobile_gestures
enable_safe_mode disable_responsive_mode disable_post_tooltips enable_safe_mode disable_responsive_mode disable_post_tooltips
enable_recommended_posts
] ]
permitted_params += [dmail_filter_attributes: %i[id words]] permitted_params += [dmail_filter_attributes: %i[id words]]

View File

@@ -281,6 +281,10 @@ class AnonymousUser
false false
end end
def enable_recommended_posts?
false
end
User::Roles.reject {|r| r == :anonymous}.each do |name| User::Roles.reject {|r| r == :anonymous}.each do |name|
define_method("is_#{name}?") do define_method("is_#{name}?") do
false false

View File

@@ -1,5 +1,5 @@
module PostSets module PostSets
class Similar < PostSets::Post class Recommended < PostSets::Post
def initialize(post) def initialize(post)
super("") super("")
@post = post @post = post

View File

@@ -1,12 +1,14 @@
module RecommenderService module RecommenderService
extend self extend self
SCORE_THRESHOLD = 10
def enabled? def enabled?
Danbooru.config.recommender_server.present? Danbooru.config.recommender_server.present?
end end
def available?(post) def available?(post)
enabled? && post.created_at > 6.months.ago && post.score >= 10 enabled? && CurrentUser.enable_recommended_posts? && post.created_at > Date.civil(2018, 1, 1) #&& post.score >= SCORE_THRESHOLD
end end
def similar(post) def similar(post)

View File

@@ -59,6 +59,7 @@ class User < ApplicationRecord
enable_safe_mode enable_safe_mode
disable_responsive_mode disable_responsive_mode
disable_post_tooltips disable_post_tooltips
enable_recommended_posts
) )
include Danbooru::HasBitFlags include Danbooru::HasBitFlags

View File

@@ -0,0 +1,7 @@
<div class="recommended-posts">
<p><em>You might also like:</em></p>
<section class="user-disable-cropped-<%= Danbooru.config.enable_image_cropping && CurrentUser.user.disable_cropped_thumbnails? %>">
<%= PostSets::Recommended.new(post).presenter.post_previews_html(self) %>
</section>
</div>

View File

@@ -1,7 +0,0 @@
<div class="similar-posts">
<p><em>You might also like:</em></p>
<section>
<%= PostSets::Similar.new(post).presenter.post_previews_html(self) %>
</section>
</div>

View File

@@ -87,8 +87,8 @@
<% end %> <% end %>
<menu id="post-sections"> <menu id="post-sections">
<% if RecommenderService.available?(@post) %> <% if RecommenderService.enabled? %>
<li><a href="#similar">Similar</a></li> <li><a href="#recommended">Recommended</a></li>
<% end %> <% end %>
<li><a href="#comments">Comments</a></li> <li><a href="#comments">Comments</a></li>
@@ -100,11 +100,13 @@
<li><a href="#share">Share</a></li> <li><a href="#share">Share</a></li>
</menu> </menu>
<% if RecommenderService.available?(@post) %> <section id="recommended" data-available="<%= RecommenderService.available?(@post) %>">
<section id="similar"> <% if RecommenderService.available?(@post) %>
<%= render "posts/partials/index/similar", post: @post %> <%= render "posts/partials/index/recommended", post: @post %>
</section> <% else %>
<% end %> <p><em>Not enough data available</em></p>
<% end %>
</section>
<section id="comments"> <section id="comments">
<% if !CurrentUser.user.is_builder? %> <% if !CurrentUser.user.is_builder? %>

View File

@@ -82,6 +82,8 @@
<%= f.input :disable_cropped_thumbnails, :as => :select, :collection => [["No", "false"], ["Yes", "true"]], :include_blank => false %> <%= f.input :disable_cropped_thumbnails, :as => :select, :collection => [["No", "false"], ["Yes", "true"]], :include_blank => false %>
<%= f.input :enable_recommended_posts, :as => :select, :collection => [["No", "false"], ["Yes", "true"]], :include_blank => false %>
<div class="input text optional field_with_hint"> <div class="input text optional field_with_hint">
<label class="text optional" for="user_dmail_filter_attributes_words">Dmail filter</label> <label class="text optional" for="user_dmail_filter_attributes_words">Dmail filter</label>
<%= hidden_field_tag "user[dmail_filter_attributes][id]", @user.dmail_filter.try(:id) %> <%= hidden_field_tag "user[dmail_filter_attributes][id]", @user.dmail_filter.try(:id) %>