From 9e6d08600c6a08c775b2153b639ce9e4dd32b2e9 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Tue, 21 Jul 2015 13:09:32 -0700 Subject: [PATCH] store post view counts in reportbooru/fetch view counts from reportbooru #2128 --- app/assets/javascripts/posts.js | 20 +++++++++++++++++++ app/helpers/posts_helper.rb | 16 +++++++++++++++ .../posts/partials/show/_information.html.erb | 3 +++ .../posts/partials/show/_view_count.html.erb | 9 +++++++++ app/views/posts/show.html.erb | 6 ++++++ config/danbooru_default_config.rb | 12 +++++++++++ 6 files changed, 66 insertions(+) create mode 100644 app/views/posts/partials/show/_view_count.html.erb diff --git a/app/assets/javascripts/posts.js b/app/assets/javascripts/posts.js index 50cb07701..845e3a99d 100644 --- a/app/assets/javascripts/posts.js +++ b/app/assets/javascripts/posts.js @@ -25,6 +25,7 @@ this.initialize_post_image_resize_links(); this.initialize_post_image_resize_to_window_link(); this.initialize_similar(); + this.initialize_view_count(); if (Danbooru.meta("always-resize-images") === "true") { $("#image-resize-to-window-link").click(); @@ -529,6 +530,25 @@ } }); } + + Danbooru.Post.initialize_view_count = function() { + if ($("#views-for-post").length) { + $("#views-for-post-li").hide(); + var current_post_id = $("meta[name=post-id]").attr("content"); + $.ajax({ + url: Danbooru.meta("report-server") + "/hits/pv-" + current_post_id, + success: function(data) { + $("#views-for-post").html(data); + $("#views-for-post-li").show(); + }, + dataType: "text" + }); + } + } + + Danbooru.Post.set_view_count = function(count) { + $("#views-for-post").html(count); + } })(); $(document).ready(function() { diff --git a/app/helpers/posts_helper.rb b/app/helpers/posts_helper.rb index 2d2e130fc..d6f4eaeb6 100644 --- a/app/helpers/posts_helper.rb +++ b/app/helpers/posts_helper.rb @@ -1,4 +1,20 @@ module PostsHelper + def post_view_count_js + return nil unless Danbooru.config.enable_view_counts + + if action_name == "index" + return nil + elsif action_name == "show" + key = "show-#{params[:id]}" + value = session.id + digest = OpenSSL::Digest.new("sha256") + sig = OpenSSL::HMAC.hexdigest(digest, Danbooru.config.shared_remote_key, "#{key},#{value}") + return render("posts/partials/show/view_count", key: key, value: value, sig: sig) + end + + return nil + end + def resize_image_links(post, user) links = [] diff --git a/app/views/posts/partials/show/_information.html.erb b/app/views/posts/partials/show/_information.html.erb index fbd51e4f7..379481def 100644 --- a/app/views/posts/partials/show/_information.html.erb +++ b/app/views/posts/partials/show/_information.html.erb @@ -14,6 +14,9 @@
  • Source: <%= post_source_tag(post) %>
  • Rating: <%= post.pretty_rating %>
  • Score: <%= post.score %> <% if CurrentUser.is_gold? %>(vote <%= link_to "up", post_votes_path(:post_id => post.id, :score => "up"), :remote => true, :method => :post %>/<%= link_to "down", post_votes_path(:post_id => post.id, :score => "down"), :remote => true, :method => :post %><%= link_to "unvote", unvote_post_path(post), :remote => true, :method => :put, :id => "unvote-link-for-post-#{post.id}", :class => "unvote-post-link" %>)<% end %>
  • + <% if Danbooru.config.enable_view_counts %> +
  • Views: loading...
  • + <% end %>
  • Favorites: <%= post.fav_count %> <% if CurrentUser.is_gold? %> <%= link_to "Show »".html_safe, "#", :id => "show-favlist-link" %> diff --git a/app/views/posts/partials/show/_view_count.html.erb b/app/views/posts/partials/show/_view_count.html.erb new file mode 100644 index 000000000..e11f65429 --- /dev/null +++ b/app/views/posts/partials/show/_view_count.html.erb @@ -0,0 +1,9 @@ + diff --git a/app/views/posts/show.html.erb b/app/views/posts/show.html.erb index d8253e875..dd2f05756 100644 --- a/app/views/posts/show.html.erb +++ b/app/views/posts/show.html.erb @@ -139,6 +139,8 @@ +<%= post_view_count_js %> + <% content_for(:page_title) do %> <%= @post.presenter.humanized_essential_tag_string %> - <%= Danbooru.config.app_name %> <% end %> @@ -158,6 +160,10 @@ + <% if Danbooru.config.enable_view_counts %> + + <% end %> + <% if @post.twitter_card_supported? %> diff --git a/config/danbooru_default_config.rb b/config/danbooru_default_config.rb index c725308b5..a10494bca 100644 --- a/config/danbooru_default_config.rb +++ b/config/danbooru_default_config.rb @@ -347,5 +347,17 @@ module Danbooru def twitter_api_secret end + + def shared_remote_key + "blah blah blah blah blah blah" + end + + def report_server + "https://isshiki.donmai.us" + end + + def enable_view_counts + false + end end end