Merge branch 'master' of https://github.com/r888888888/danbooru
This commit is contained in:
@@ -341,9 +341,11 @@
|
||||
$("#image-resize-link").click(function(e) {
|
||||
var $link = $(e.target);
|
||||
var $image = $("#image");
|
||||
$image.removeAttr("src");
|
||||
$image.attr("src", "https://www.google.com")
|
||||
$image.attr("src", $link.attr("href"));
|
||||
$image.width($image.data("original-width"));
|
||||
$image.height($image.data("original-height"));
|
||||
$image.height($image.data("original-height"));
|
||||
Danbooru.Note.Box.scale_all();
|
||||
$("#image-resize-notice").hide();
|
||||
$image.data("scale_factor", 1);
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
@import "../common/000_vars.css.scss";
|
||||
|
||||
div#c-explore-posts {
|
||||
header {
|
||||
text-align: center;
|
||||
@@ -16,4 +18,10 @@ div#c-explore-posts {
|
||||
padding: 1em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
div#a-intro {
|
||||
width: 870px;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
0
app/assets/stylesheets/specific/reports.css.scss
Normal file
0
app/assets/stylesheets/specific/reports.css.scss
Normal file
@@ -1,5 +1,5 @@
|
||||
class PostsController < ApplicationController
|
||||
before_filter :member_only, :except => [:show, :show_seq, :index]
|
||||
before_filter :member_only, :except => [:show, :show_seq, :index, :home]
|
||||
before_filter :builder_only, :only => [:copy_notes]
|
||||
after_filter :save_recent_tags, :only => [:update]
|
||||
respond_to :html, :xml, :json
|
||||
@@ -98,6 +98,14 @@ class PostsController < ApplicationController
|
||||
@error = x
|
||||
end
|
||||
|
||||
def home
|
||||
if CurrentUser.user.is_anonymous?
|
||||
redirect_to intro_explore_posts_path
|
||||
else
|
||||
redirect_to posts_path(:tags => params[:tags])
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def tag_query
|
||||
params[:tags] || (params[:post] && params[:post][:tags])
|
||||
|
||||
@@ -86,15 +86,22 @@ class DText
|
||||
|
||||
def self.parse_list(str, options = {})
|
||||
html = ""
|
||||
current_item = ""
|
||||
layout = []
|
||||
nest = 0
|
||||
|
||||
str.split(/\n/).each do |line|
|
||||
if line =~ /^\s*(\*+) (.+)/
|
||||
if nest > 0
|
||||
html += "<li>#{current_item}</li>"
|
||||
elsif not current_item.strip.empty?
|
||||
html += "<p>#{current_item}</p>"
|
||||
end
|
||||
|
||||
nest = $1.size
|
||||
content = parse_inline($2)
|
||||
current_item = parse_inline($2)
|
||||
else
|
||||
content = parse_inline(line)
|
||||
current_item += parse_inline(line)
|
||||
end
|
||||
|
||||
if nest > layout.size
|
||||
@@ -108,10 +115,10 @@ class DText
|
||||
html += "</#{elist}>"
|
||||
end
|
||||
end
|
||||
|
||||
html += "<li>#{content}</li>"
|
||||
end
|
||||
|
||||
html += "<li>#{current_item}</li>"
|
||||
|
||||
while layout.any?
|
||||
elist = layout.pop
|
||||
html += "</#{elist}>"
|
||||
@@ -187,7 +194,7 @@ class DText
|
||||
else
|
||||
""
|
||||
end
|
||||
|
||||
|
||||
when /\[code\](?!\])/
|
||||
flags[:code] = true
|
||||
'<pre>'
|
||||
@@ -208,7 +215,7 @@ class DText
|
||||
if stack.last == "expandable"
|
||||
stack.pop
|
||||
'</div></div>'
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
if flags[:code]
|
||||
|
||||
@@ -6,7 +6,7 @@ module PostSets
|
||||
|
||||
def posts
|
||||
@posts ||= begin
|
||||
temp = ::Post.tag_match("#{tag_string} favcount:>10").paginate(page, :search_count => nil, :limit => 6)
|
||||
temp = ::Post.tag_match("#{tag_string} favcount:>3").paginate(page, :search_count => nil, :limit => 5)
|
||||
temp.all
|
||||
temp
|
||||
end
|
||||
|
||||
@@ -2,6 +2,19 @@ require 'statistics2'
|
||||
|
||||
module Reports
|
||||
class UserPromotions
|
||||
class User
|
||||
attr_reader :user
|
||||
delegate :name, :post_upload_count, :level_string, :level, :created_at, :to => :user
|
||||
|
||||
def initialize(user)
|
||||
@user = user
|
||||
end
|
||||
|
||||
def confidence_interval_for(n)
|
||||
Reports::UserPromotions.confidence_interval_for(user, n)
|
||||
end
|
||||
end
|
||||
|
||||
def self.confidence_interval_for(user, n)
|
||||
up_votes = Post.where("created_at >= ?", min_time).where(:uploader_id => user.id).where("fav_count >= ?", n).count
|
||||
total_votes = Post.where("created_at >= ?", min_time).where(:uploader_id => user.id).count
|
||||
@@ -23,7 +36,7 @@ module Reports
|
||||
end
|
||||
|
||||
def users
|
||||
User.where("users.level < ? and users.post_upload_count >= 100", User::Levels::CONTRIBUTOR).order("created_at desc").limit(50)
|
||||
::User.where("users.level < ? and users.post_upload_count >= 100", ::User::Levels::CONTRIBUTOR).order("created_at desc").limit(50).map {|x| Reports::UserPromotions::User.new(x)}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,7 +3,6 @@ class JanitorTrial < ActiveRecord::Base
|
||||
before_create :initialize_original_level
|
||||
after_create :send_dmail
|
||||
after_create :promote_user
|
||||
after_destroy :create_feedback
|
||||
validates_presence_of :user
|
||||
before_validation :initialize_creator
|
||||
|
||||
@@ -61,6 +60,7 @@ class JanitorTrial < ActiveRecord::Base
|
||||
|
||||
def demote!
|
||||
user.update_column(:level, original_level)
|
||||
self.create_feedback
|
||||
destroy
|
||||
end
|
||||
end
|
||||
|
||||
@@ -141,7 +141,12 @@ class Tag < ActiveRecord::Base
|
||||
counts = counts.to_a.select {|x| x[1] > trending_count_limit}
|
||||
counts = counts.map do |tag_name, recent_count|
|
||||
tag = Tag.find_or_create_by_name(tag_name)
|
||||
[tag_name, recent_count.to_f / tag.post_count.to_f]
|
||||
if tag.category == Danbooru.config.tag_category_mapping["artist"]
|
||||
# we're not interested in artists in the trending list
|
||||
[tag_name, 0]
|
||||
else
|
||||
[tag_name, recent_count.to_f / tag.post_count.to_f]
|
||||
end
|
||||
end
|
||||
|
||||
counts.sort_by {|x| -x[1]}.slice(0, 25).map(&:first)
|
||||
|
||||
@@ -11,3 +11,4 @@ $("div.comments-for-post[data-post-id=<%= @post.id %>] div.list-of-comments").ht
|
||||
|
||||
Danbooru.Comment.initialize_reply_links();
|
||||
Danbooru.Comment.initialize_edit_links();
|
||||
Danbooru.Comment.initialize_vote_links();
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
<% @presenter.each do |tag, post_set| %>
|
||||
<div class="posts">
|
||||
<h2><%= link_to tag, posts_path(:tags => tag), :class => "tag-type-3" %></h2>
|
||||
<h2><%= link_to tag, posts_path(:tags => tag) %></h2>
|
||||
<%= post_set.presenter.post_previews_html(self) %>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
@@ -4,29 +4,45 @@
|
||||
|
||||
<p>Binomial proportion confidence interval for how likely a user's uploads will achieve a fav count of at at least n with 95% confidence within the past 30 days.</p>
|
||||
|
||||
<table width="100%" class="striped">
|
||||
<table width="100%" class="striped" id="sortable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>User</th>
|
||||
<th>Level</th>
|
||||
<th>score:1+</th>
|
||||
<th>score:5+</th>
|
||||
<th>score:10+</th>
|
||||
<th data-sort="string">User</th>
|
||||
<th data-sort="int">Level</th>
|
||||
<th data-sort="int">Uploads</th>
|
||||
<th data-sort="string">Age</th>
|
||||
<th data-sort="int">score:1+</th>
|
||||
<th data-sort="int">score:5+</th>
|
||||
<th data-sort="int">score:10+</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% cache("user-promotions-report/#{Date.today}") do %>
|
||||
<% @report.users.each do |user| %>
|
||||
<tr>
|
||||
<td><%= link_to user.name, user_path(user) %></td>
|
||||
<td><%= user.level_string %></td>
|
||||
<td><%= number_to_percentage Reports::UserPromotions.confidence_interval_for(user, 1), :precision => 0 %></td>
|
||||
<td><%= number_to_percentage Reports::UserPromotions.confidence_interval_for(user, 5), :precision => 0 %></td>
|
||||
<td><%= number_to_percentage Reports::UserPromotions.confidence_interval_for(user, 10), :precision => 0 %></td>
|
||||
<td><%= link_to user.name, user_path(user.user) %></td>
|
||||
<td data-sort-value="<%= user.level %>"><%= user.level_string %></td>
|
||||
<td><%= user.post_upload_count %></td>
|
||||
<td data-sort-value="<%= user.created_at.to_formatted_s(:db) %>"><%= time_ago_in_words user.created_at %></td>
|
||||
<td><%= number_to_percentage user.confidence_interval_for(1), :precision => 0 %></td>
|
||||
<td><%= number_to_percentage user.confidence_interval_for(5), :precision => 0 %></td>
|
||||
<td><%= number_to_percentage user.confidence_interval_for(10), :precision => 0 %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= content_for(:html_header) do %>
|
||||
<%= javascript_include_tag "stupidtable" %>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#sortable").stupidtable().on("aftertablesort", function() {
|
||||
$("#sortable tbody tr:even").removeClass("odd").addClass("even");
|
||||
$("#sortable tbody tr:odd").removeClass("even").addClass("odd");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<% end %>
|
||||
Reference in New Issue
Block a user