store post view counts in reportbooru/fetch view counts from reportbooru #2128

This commit is contained in:
r888888888
2015-07-21 13:09:32 -07:00
parent ee52ca8b66
commit 9e6d08600c
6 changed files with 66 additions and 0 deletions

View File

@@ -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() {

View File

@@ -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 = []

View File

@@ -14,6 +14,9 @@
<li>Source: <%= post_source_tag(post) %></li>
<li>Rating: <%= post.pretty_rating %></li>
<li>Score: <span id="score-for-post-<%= post.id %>"><%= post.score %></span> <% if CurrentUser.is_gold? %>(<span id="vote-links-for-post-<%= post.id %>">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 %></span><%= link_to "unvote", unvote_post_path(post), :remote => true, :method => :put, :id => "unvote-link-for-post-#{post.id}", :class => "unvote-post-link" %>)<% end %></li>
<% if Danbooru.config.enable_view_counts %>
<li id="views-for-post-li">Views: <span id="views-for-post"><em>loading...</em></span></li>
<% end %>
<li>Favorites: <span id="favcount-for-post-<%= post.id %>"><%= post.fav_count %></span>
<% if CurrentUser.is_gold? %>
<%= link_to "Show &raquo;".html_safe, "#", :id => "show-favlist-link" %>

View File

@@ -0,0 +1,9 @@
<script type="text/javascript">
$(function() {
$.post("<%= Danbooru.config.report_server %>/hits", {
key: "<%= key %>",
value: "<%= value %>",
sig: "<%= sig %>"
});
});
</script>

View File

@@ -139,6 +139,8 @@
</div>
</div>
<%= post_view_count_js %>
<% content_for(:page_title) do %>
<%= @post.presenter.humanized_essential_tag_string %> - <%= Danbooru.config.app_name %>
<% end %>
@@ -158,6 +160,10 @@
<meta property="og:description" content="<%= @post.presenter.humanized_tag_string %>">
<meta property="og:image" content="http://<%= Danbooru.config.hostname %><%= @post.large_file_url %>">
<% if Danbooru.config.enable_view_counts %>
<meta name="report-server" content="<%= Danbooru.config.report_server %>">
<% end %>
<!-- Twitter properties -->
<% if @post.twitter_card_supported? %>
<meta name="twitter:card" content="photo">

View File

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