From 4fb55657c021eaeb3df495055ddcad02ef1db1ee Mon Sep 17 00:00:00 2001 From: r888888888 Date: Tue, 12 Sep 2017 13:03:59 -0700 Subject: [PATCH] refactor cropped images into explore/posts/intro --- app/assets/stylesheets/specific/posts.scss | 7 +++++++ app/logical/image_cropper.rb | 12 ++++++++++++ app/models/post.rb | 9 +++++++++ app/models/upload.rb | 5 ++--- app/presenters/post_presenter.rb | 10 +++++++++- app/views/explore/posts/intro.html.erb | 2 +- 6 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 app/logical/image_cropper.rb diff --git a/app/assets/stylesheets/specific/posts.scss b/app/assets/stylesheets/specific/posts.scss index 32f08e499..2415ca2f9 100644 --- a/app/assets/stylesheets/specific/posts.scss +++ b/app/assets/stylesheets/specific/posts.scss @@ -26,6 +26,13 @@ article.post-preview { margin: auto; } + &.large-cropped { + height: auto; + weidth: auto; + float: none; + display: block; + } + &[data-tags~=animated]:before, &[data-file-ext=swf]:before, &[data-file-ext=webm]:before, &[data-file-ext=mp4]:before, &[data-file-ext=zip]:before { @include animated-icon; } diff --git a/app/logical/image_cropper.rb b/app/logical/image_cropper.rb new file mode 100644 index 000000000..ff03f4bbe --- /dev/null +++ b/app/logical/image_cropper.rb @@ -0,0 +1,12 @@ +class ImageCropper + def self.enabled? + Danbooru.config.aws_sqs_cropper_url.present? + end + + def self.notify(post) + if post.is_image? + sqs = SqsService.new(Danbooru.config.aws_sqs_cropper_url) + sqs.send_message("#{post.id},https://#{Danbooru.config.hostname}/data/#{post.md5}.#{post.file_ext}") + end + end +end diff --git a/app/models/post.rb b/app/models/post.rb index 1f10012d3..45d38c6c4 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -142,6 +142,15 @@ class Post < ApplicationRecord end end + # this is for the 640x320 version + def cropped_file_url + if Danbooru.config.use_s3_proxy?(self) + "/cached/data/cropped/large/#{md5}.jpg" + else + "/data/cropped/large/#{md5}.jpg" + end + end + def large_file_url if has_large? if Danbooru.config.use_s3_proxy?(self) diff --git a/app/models/upload.rb b/app/models/upload.rb index c48ac3ce3..7f6705b6d 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -200,9 +200,8 @@ class Upload < ApplicationRecord end def notify_cropper(post) - if Danbooru.config.aws_sqs_cropper_url && is_image? - sqs = SqsService.new(Danbooru.config.aws_sqs_cropper_url) - sqs.send_message("#{post.id},https://#{Danbooru.config.hostname}/data/#{post.md5}.#{post.file_ext}") + if ImageCropper.enabled? + ImageCropper.notify(post) end end end diff --git a/app/presenters/post_presenter.rb b/app/presenters/post_presenter.rb index fbe33a8ff..aa33ce1fe 100644 --- a/app/presenters/post_presenter.rb +++ b/app/presenters/post_presenter.rb @@ -32,7 +32,14 @@ class PostPresenter < Presenter tag_param = nil end html << %{} - html << %{#{h(post.tag_string)}} + + if options[:show_cropped] && post.has_cropped? + src = post.cropped_file_url + else + src = post.preview_file_url + end + + html << %{#{h(post.tag_string)}} html << %{} if options[:pool] @@ -56,6 +63,7 @@ class PostPresenter < Presenter def self.preview_class(post, description = nil) klass = "post-preview" + klass << " large-cropped" if post.has_cropped? && options[:show_cropped] klass << " pooled" if description klass << " post-status-pending" if post.is_pending? klass << " post-status-flagged" if post.is_flagged? diff --git a/app/views/explore/posts/intro.html.erb b/app/views/explore/posts/intro.html.erb index 645202d2d..885babbbc 100644 --- a/app/views/explore/posts/intro.html.erb +++ b/app/views/explore/posts/intro.html.erb @@ -16,7 +16,7 @@ <% @presenter.each do |tag, post_set| %>

<%= link_to tag, posts_path(:tags => tag) %>

- <%= post_set.presenter.post_previews_html(self) %> + <%= post_set.presenter.post_previews_html(self, show_cropped: true) %>
<% end %>