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 @@