1
0
Fork 0
forked from OpenNeo/impress

carrierwave for asset swfs

This commit is contained in:
Emi Matchu 2012-07-16 16:34:44 -04:00
parent 5a5b5fffc7
commit 7c015e2d88
4 changed files with 40 additions and 6 deletions

View file

@ -15,8 +15,14 @@ class SwfAsset < ActiveRecord::Base
set_inheritance_column 'inheritance_type' set_inheritance_column 'inheritance_type'
IMAGE_SIZES = {
:small => [150, 150],
:medium => [300, 300],
:large => [600, 600]
}
include SwfConverter include SwfConverter
converts_swfs :size => [600, 600], :output_sizes => [[150, 150], [300, 300], [600, 600]] converts_swfs :size => IMAGE_SIZES[:large], :output_sizes => IMAGE_SIZES.values
def local_swf_path def local_swf_path
LOCAL_ASSET_DIR.join(local_path_within_outfit_swfs) LOCAL_ASSET_DIR.join(local_path_within_outfit_swfs)
@ -74,6 +80,21 @@ class SwfAsset < ActiveRecord::Base
end end
end end
end end
def image_version
converted_at.to_i
end
def image_url(size=IMAGE_SIZES[:large])
host = ASSET_HOSTS[:swf_asset_images]
size_key = size.join('x')
"http://#{host}/#{s3_path}/#{size_key}.png?#{image_version}"
end
def images
IMAGE_SIZES.values.map { |size| {:size => size, :url => image_url(size)} }
end
def convert_swf_if_not_converted! def convert_swf_if_not_converted!
if needs_conversion? if needs_conversion?
@ -161,7 +182,7 @@ class SwfAsset < ActiveRecord::Base
:zones_restrict => zones_restrict, :zones_restrict => zones_restrict,
:is_body_specific => body_specific?, :is_body_specific => body_specific?,
:has_image => has_image?, :has_image => has_image?,
:s3_path => s3_path :images => images
} }
if options[:for] == 'wardrobe' if options[:for] == 'wardrobe'
json[:local_path] = local_url json[:local_path] = local_url

View file

@ -12,7 +12,7 @@
%ul#report-assets %ul#report-assets
- @swf_assets.each do |swf_asset| - @swf_assets.each do |swf_asset|
%li %li
= link_to image_tag(swf_asset.s3_url([150, 150])), swf_asset.url = link_to image_tag(swf_asset.image_url([150, 150])), swf_asset.url
- unless swf_asset.image_pending_repair? - unless swf_asset.image_pending_repair?
= form_tag(:action => :create) do = form_tag(:action => :create) do
= hidden_field_tag 'swf_asset_remote_id', swf_asset.remote_id = hidden_field_tag 'swf_asset_remote_id', swf_asset.remote_id

View file

@ -0,0 +1,3 @@
ASSET_HOSTS = {
:swf_asset_images => 'd1i4vx4g4uxw7j.cloudfront.net'
}

View file

@ -78,9 +78,20 @@ function Wardrobe() {
function Asset(newData) { function Asset(newData) {
var asset = this; var asset = this;
function size_key(size) {
return size[0] + 'x' + size[1];
}
this.image_urls_by_size_key = {};
var image;
for(var i = 0; i < newData.images.length; i++) {
image = newData.images[i];
this.image_urls_by_size_key[size_key(image.size)] = image.url;
}
this.imageURL = function (size) { this.imageURL = function (size) {
return Wardrobe.IMAGE_CONFIG.base_url + this.s3_path + "/" + size[0] + "x" + size[1] + ".png"; return this.image_urls_by_size_key[size_key(size)];
} }
this.update = function (data) { this.update = function (data) {
@ -1376,10 +1387,9 @@ Wardrobe.getStandardView = function (options) {
for(var i in sizes) { for(var i in sizes) {
if(!sizes.hasOwnProperty(i)) continue; if(!sizes.hasOwnProperty(i)) continue;
size = sizes[i]; size = sizes[i];
size[2] = size[0] * size[1];
inserted = false; inserted = false;
for(var i in SIZES_SMALL_TO_LARGE) { for(var i in SIZES_SMALL_TO_LARGE) {
if(SIZES_SMALL_TO_LARGE[i][2] > size[2]) { if(SIZES_SMALL_TO_LARGE[i][0] * SIZES_SMALL_TO_LARGE[i][1] > size[0] * size[1]) {
SIZES_SMALL_TO_LARGE.splice(i, 0, size); SIZES_SMALL_TO_LARGE.splice(i, 0, size);
inserted = true; inserted = true;
break; break;