forked from e621ng/e621ng
[Pools] Fix show/gallery for frozen string literals
Get rid of the presenters/post sets.
This commit is contained in:
parent
0381653e80
commit
930b4b905c
@ -27,13 +27,15 @@ class PoolsController < ApplicationController
|
||||
params[:limit] ||= CurrentUser.user.per_page
|
||||
|
||||
@pools = Pool.search(search_params).paginate(params[:page], :limit => params[:limit], :search_count => params[:search])
|
||||
@post_set = PostSets::PoolGallery.new(@pools)
|
||||
end
|
||||
|
||||
def show
|
||||
@pool = Pool.find(params[:id])
|
||||
@post_set = PostSets::Pool.new(@pool, params[:page])
|
||||
respond_with(@pool)
|
||||
respond_with(@pool) do |format|
|
||||
format.html do
|
||||
@posts = @pool.posts.paginate(params[:page], limit: params[:limit], total_count: @pool.post_ids.count)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
|
@ -81,7 +81,7 @@ class PostsDecorator < ApplicationDecorator
|
||||
def preview_html(t, options = {})
|
||||
post = object
|
||||
if post.nil?
|
||||
return "<em>none</em>".html_safe
|
||||
return ""
|
||||
end
|
||||
|
||||
if !options[:show_deleted] && post.is_deleted? && options[:tags] !~ /(?:status:(?:all|any|deleted))|(?:deletedby:)|(?:delreason:)/i
|
||||
|
@ -1,34 +0,0 @@
|
||||
module PostSets
|
||||
class Pool < PostSets::Base
|
||||
attr_reader :pool, :page
|
||||
|
||||
def initialize(pool, page = 1)
|
||||
@pool = pool
|
||||
@page = page
|
||||
end
|
||||
|
||||
def limit
|
||||
CurrentUser.user.per_page
|
||||
end
|
||||
|
||||
def tag_array
|
||||
["pool:#{pool.id}"]
|
||||
end
|
||||
|
||||
def posts
|
||||
@posts ||= pool.posts.paginate(page, limit: limit, total_count: pool.post_ids.count)
|
||||
end
|
||||
|
||||
def tag_string
|
||||
tag_array.join("")
|
||||
end
|
||||
|
||||
def humanized_tag_string
|
||||
"pool:#{pool.pretty_name}"
|
||||
end
|
||||
|
||||
def presenter
|
||||
@presenter ||= PostSetPresenters::Pool.new(self)
|
||||
end
|
||||
end
|
||||
end
|
@ -1,13 +0,0 @@
|
||||
module PostSets
|
||||
class PoolGallery < PostSets::Base
|
||||
attr_reader :pools
|
||||
|
||||
def initialize(pools)
|
||||
@pools = pools
|
||||
end
|
||||
|
||||
def presenter
|
||||
@presenter ||= ::PostSetPresenters::PoolGallery.new(self)
|
||||
end
|
||||
end
|
||||
end
|
@ -300,8 +300,8 @@ class Pool < ApplicationRecord
|
||||
post_ids[n]
|
||||
end
|
||||
|
||||
def cover_post_id
|
||||
post_ids.first
|
||||
def cover_post
|
||||
Post.find_by(id: post_ids.first)
|
||||
end
|
||||
|
||||
def create_version(updater: CurrentUser.user, updater_ip_addr: CurrentUser.ip_addr)
|
||||
|
@ -4,7 +4,7 @@ class PostPresenter < Presenter
|
||||
|
||||
def self.preview(post, options = {})
|
||||
if post.nil?
|
||||
return "<em>none</em>".html_safe
|
||||
return ""
|
||||
end
|
||||
|
||||
if !options[:show_deleted] && post.is_deleted? && options[:tags] !~ /(?:status:(?:all|any|deleted))|(?:deletedby:)|(?:delreason:)/i
|
||||
|
@ -1,24 +0,0 @@
|
||||
module PostSetPresenters
|
||||
class Pool < Base
|
||||
attr_reader :post_set
|
||||
delegate :posts, :to => :post_set
|
||||
|
||||
def initialize(post_set)
|
||||
@post_set = post_set
|
||||
end
|
||||
|
||||
def post_previews_html(template)
|
||||
html = ""
|
||||
|
||||
if posts.empty?
|
||||
return template.render("posts/blank")
|
||||
end
|
||||
|
||||
posts.each do |post|
|
||||
html << PostPresenter.preview(post, :pool_id => post_set.pool.id, show_cropped: true, show_deleted: true)
|
||||
end
|
||||
|
||||
html.html_safe
|
||||
end
|
||||
end
|
||||
end
|
@ -1,29 +0,0 @@
|
||||
module PostSetPresenters
|
||||
class PoolGallery < Base
|
||||
attr_accessor :post_set
|
||||
delegate :pools, :to => :post_set
|
||||
|
||||
def initialize(post_set)
|
||||
@post_set = post_set
|
||||
end
|
||||
|
||||
def post_previews_html(template)
|
||||
html = ""
|
||||
|
||||
if pools.empty?
|
||||
return template.render("posts/blank")
|
||||
end
|
||||
|
||||
pools.each do |pool|
|
||||
if pool.cover_post_id
|
||||
post = ::Post.find_by_id(pool.cover_post_id)
|
||||
next if post.nil?
|
||||
html << PostPresenter.preview(post, inline: true, link_target: pool, pool: pool, show_deleted: true)
|
||||
html << "\n"
|
||||
end
|
||||
end
|
||||
|
||||
html.html_safe
|
||||
end
|
||||
end
|
||||
end
|
@ -1,16 +1,21 @@
|
||||
<div id="c-pools">
|
||||
<div id="a-gallery">
|
||||
<%= render partial: "search", locals: {path: gallery_pools_path} %>
|
||||
<%= render partial: "search", locals: { path: gallery_pools_path } %>
|
||||
|
||||
<%= render "posts/partials/common/inline_blacklist" %>
|
||||
|
||||
<h2>Pools</h2>
|
||||
|
||||
<section>
|
||||
<%= @post_set.presenter.post_previews_html(self) %>
|
||||
|
||||
<%= numbered_paginator(@pools) %>
|
||||
<% if @pools.none? %>
|
||||
<%= render "posts/blank" %>
|
||||
<% else %>
|
||||
<% @pools.each do |pool| %>
|
||||
<%= PostPresenter.preview(pool.cover_post, inline: true, link_target: pool, pool: pool, show_deleted: true) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</section>
|
||||
<%= numbered_paginator(@pools) %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div id="a-show">
|
||||
<h2>
|
||||
<%= @pool.pretty_category %>:
|
||||
<%= link_to @pool.pretty_name, posts_path(:tags => "pool:#{@pool.id}"), :class => "pool-category-#{@pool.category}" %>
|
||||
<%= link_to @pool.pretty_name, posts_path(tags: "pool:#{@pool.id}"), class: "pool-category-#{@pool.category}" %>
|
||||
</h2>
|
||||
|
||||
<div id="description" class="dtext-container">
|
||||
@ -13,11 +13,16 @@
|
||||
|
||||
<div id="posts" class="user-disable-cropped-<%= Danbooru.config.enable_image_cropping? && CurrentUser.user.disable_cropped_thumbnails? %>">
|
||||
<div id="posts-container">
|
||||
<%= @post_set.presenter.post_previews_html(self) %>
|
||||
<% if @posts.none? %>
|
||||
<%= render "posts/blank" %>
|
||||
<% else %>
|
||||
<% @posts.each do |post| %>
|
||||
<%= PostPresenter.preview(post, pool_id: @pool.id, show_cropped: true, show_deleted: true) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%= numbered_paginator(@post_set.posts) %>
|
||||
</div>
|
||||
<%= numbered_paginator(@posts) %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
require 'test_helper'
|
||||
require "test_helper"
|
||||
|
||||
module PostSets
|
||||
class PoolTest < ActiveSupport::TestCase
|
||||
@ -7,44 +7,42 @@ module PostSets
|
||||
@user = create(:user)
|
||||
CurrentUser.user = @user
|
||||
|
||||
@post_1 = create(:post)
|
||||
@post_2 = create(:post)
|
||||
@post_3 = create(:post)
|
||||
@post1 = create(:post)
|
||||
@post2 = create(:post)
|
||||
@post3 = create(:post)
|
||||
@pool = create(:pool)
|
||||
@pool.add!(@post_2)
|
||||
@pool.add!(@post_1)
|
||||
@pool.add!(@post_3)
|
||||
@pool.add!(@post2)
|
||||
@pool.add!(@post1)
|
||||
@pool.add!(@post3)
|
||||
end
|
||||
|
||||
context "a post pool set for page 2" do
|
||||
setup do
|
||||
@set = PostSets::Pool.new(@pool, 2)
|
||||
@set.stubs(:limit).returns(1)
|
||||
@post_page = @pool.posts.paginate(2, limit: 1)
|
||||
end
|
||||
|
||||
should "return the second element" do
|
||||
assert_equal(1, @set.posts.size)
|
||||
assert_equal(@post_1.id, @set.posts.first.id)
|
||||
assert_equal(1, @post_page.size)
|
||||
assert_equal(@post1, @post_page.first)
|
||||
end
|
||||
|
||||
should "know the total number of pages" do
|
||||
assert_equal(3, @set.posts.total_pages)
|
||||
assert_equal(3, @post_page.total_pages)
|
||||
end
|
||||
|
||||
should "know the current page" do
|
||||
assert_equal(2, @set.posts.current_page)
|
||||
assert_equal(2, @post_page.current_page)
|
||||
end
|
||||
end
|
||||
|
||||
context "a post pool set with no page specified" do
|
||||
setup do
|
||||
@set = PostSets::Pool.new(@pool)
|
||||
@set.stubs(:limit).returns(1)
|
||||
@post_page = @pool.posts.paginate(nil, limit: 1)
|
||||
end
|
||||
|
||||
should "return the first element" do
|
||||
assert_equal(1, @set.posts.size)
|
||||
assert_equal(@post_2.id, @set.posts.first.id)
|
||||
assert_equal(1, @post_page.size)
|
||||
assert_equal(@post2, @post_page.first)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user