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 << %{}
+
+ if options[:show_cropped] && post.has_cropped?
+ src = post.cropped_file_url
+ else
+ src = post.preview_file_url
+ end
+
+ html << %{
}
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| %>