From 6c9ddac8dd3877711b91eb590956f05dd8a7ae67 Mon Sep 17 00:00:00 2001 From: Matchu Date: Sun, 22 May 2011 16:30:02 -0400 Subject: [PATCH] totally pro wardrobe image adapter, via konami --- ...et_image_conversion_requests_controller.rb | 8 - app/controllers/swf_assets_controller.rb | 16 +- app/models/asset_image_conversion_request.rb | 4 +- app/models/swf_asset.rb | 36 +- app/stylesheets/outfits/_edit.sass | 23 ++ app/stylesheets/partials/_wardrobe.sass | 6 + app/views/outfits/edit.html.haml | 1 + config/routes.rb | 4 +- public/javascripts/outfits/edit.js | 27 +- public/javascripts/wardrobe.js | 171 +++++++- public/stylesheets/compiled/screen.css | 375 ++++++++++-------- 11 files changed, 447 insertions(+), 224 deletions(-) delete mode 100644 app/controllers/asset_image_conversion_requests_controller.rb create mode 100644 app/stylesheets/partials/_wardrobe.sass diff --git a/app/controllers/asset_image_conversion_requests_controller.rb b/app/controllers/asset_image_conversion_requests_controller.rb deleted file mode 100644 index 4ba1f883..00000000 --- a/app/controllers/asset_image_conversion_requests_controller.rb +++ /dev/null @@ -1,8 +0,0 @@ -class AssetImageConversionRequestsController < ApplicationController - def create - @swf_asset = SwfAsset.find params[:swf_asset_id] - @swf_asset.request_image_conversion! - render :nothing => true - end -end - diff --git a/app/controllers/swf_assets_controller.rb b/app/controllers/swf_assets_controller.rb index 23fb9c14..1eadc135 100644 --- a/app/controllers/swf_assets_controller.rb +++ b/app/controllers/swf_assets_controller.rb @@ -26,8 +26,22 @@ class SwfAssetsController < ApplicationController json = @swf_assets.map { |a| a.as_json(:parent_id => pet_state_id, :for => 'wardrobe') } elsif params[:pet_type_id] @swf_assets = PetType.find(params[:pet_type_id]).pet_states.emotion_order.first.swf_assets + elsif params[:ids] + @swf_assets = [] + if params[:ids][:biology] + @swf_assets += SwfAsset.biology_assets.where(:id => params[:ids][:biology]).all + end + if params[:ids][:object] + @swf_assets += SwfAsset.object_assets.where(:id => params[:ids][:object]).all + end + end + if @swf_assets + @swf_assets = @swf_assets.all unless @swf_assets.is_a? Array + @swf_assets.each(&:request_image_conversion!) + json = @swf_assets unless json + else + json = nil end - json ||= @swf_assets ? @swf_assets.all : nil render :json => json end diff --git a/app/models/asset_image_conversion_request.rb b/app/models/asset_image_conversion_request.rb index e4a0430e..2d5d1a09 100644 --- a/app/models/asset_image_conversion_request.rb +++ b/app/models/asset_image_conversion_request.rb @@ -1,8 +1,8 @@ class AssetImageConversionRequest @queue = :requested_asset_images - def self.perform(asset_id) - asset = SwfAsset.find asset_id + def self.perform(asset_type, asset_id) + asset = SwfAsset.where(:type => asset_type).find(asset_id) asset.convert_swf_if_not_converted! end diff --git a/app/models/swf_asset.rb b/app/models/swf_asset.rb index cbe999bd..23c2779c 100644 --- a/app/models/swf_asset.rb +++ b/app/models/swf_asset.rb @@ -27,11 +27,10 @@ class SwfAsset < ActiveRecord::Base def after_swf_conversion(images) images.each do |size, path| - s3_key = URI.encode("#{self.id}/#{size.join 'x'}.png") - - print "Uploading #{s3_key}..." + key = s3_key(size) + print "Uploading #{key}..." IMAGE_BUCKET.put( - s3_key, + key, File.open(path), {}, # meta headers IMAGE_PERMISSION, # permission @@ -43,6 +42,25 @@ class SwfAsset < ActiveRecord::Base end end + def s3_key(size) + URI.encode("#{s3_path}/#{size.join 'x'}.png") + end + + def s3_path + "#{type}/#{s3_partition_path}#{self.id}" + end + + PARTITION_COUNT = 3 + PARTITION_DIGITS = 3 + PARTITION_ID_LENGTH = PARTITION_COUNT * PARTITION_DIGITS + def s3_partition_path + (id / 10**PARTITION_DIGITS).to_s.rjust(PARTITION_ID_LENGTH, '0').tap do |id_str| + PARTITION_COUNT.times do |n| + id_str.insert(PARTITION_ID_LENGTH - (n * PARTITION_DIGITS), '/') + end + end + end + def convert_swf_if_not_converted! if has_image? false @@ -58,7 +76,7 @@ class SwfAsset < ActiveRecord::Base if image_requested? false else - Resque.enqueue(AssetImageConversionRequest, self.id) + Resque.enqueue(AssetImageConversionRequest, self.type, self.id) self.image_requested = true save! true @@ -101,12 +119,14 @@ class SwfAsset < ActiveRecord::Base def as_json(options={}) json = { :id => id, + :type => type, :depth => depth, :body_id => body_id, :zone_id => zone_id, :zones_restrict => zones_restrict, :is_body_specific => body_specific?, - :has_image => has_image? + :has_image => has_image?, + :s3_path => s3_path } if options[:for] == 'wardrobe' json[:local_path] = local_url @@ -179,8 +199,8 @@ class SwfAsset < ActiveRecord::Base self.body_id = 0 if !self.body_specific? || (!self.new_record? && self.body_id_changed?) end - after_create do - Resque.enqueue(AssetImageConversionRequest::OnCreation, self.id) + after_commit :on => :create do + Resque.enqueue(AssetImageConversionRequest::OnCreation, self.type, self.id) end class DownloadError < Exception;end diff --git a/app/stylesheets/outfits/_edit.sass b/app/stylesheets/outfits/_edit.sass index a6d2a537..4ccf69ca 100644 --- a/app/stylesheets/outfits/_edit.sass +++ b/app/stylesheets/outfits/_edit.sass @@ -1,4 +1,5 @@ @import ../shared/jquery.jgrowl +@import partials/wardrobe @import icon @import star @@ -156,6 +157,16 @@ body.outfits-edit margin-bottom: 1em position: relative width: $preview-dimension + &.swf-adapter + #preview-image-container + display: none + &.image-adapter + #preview-swf-container + display: none + #preview-image-container + +wardrobe-image-wrapper + margin: 1em auto + position: relative #preview-swf-overlay +opacity(0) background: black @@ -164,6 +175,18 @@ body.outfits-edit position: absolute top: 0 width: 100% + #preview-images-pending + background: black + background: rgba(0, 0, 0, 0.75) + bottom: 0 + color: white + font-size: 75% + padding: .5em + position: absolute + right: 0 + z-index: 1000 + &.waiting-on-0 + display: none #preview-sidebar +border-radius(10px) border: 1px solid $soft-border-color diff --git a/app/stylesheets/partials/_wardrobe.sass b/app/stylesheets/partials/_wardrobe.sass new file mode 100644 index 00000000..bd0e792f --- /dev/null +++ b/app/stylesheets/partials/_wardrobe.sass @@ -0,0 +1,6 @@ +=wardrobe-image-wrapper + img + left: 0 + position: absolute + top: 0 + diff --git a/app/views/outfits/edit.html.haml b/app/views/outfits/edit.html.haml index 8132190e..e51db33b 100644 --- a/app/views/outfits/edit.html.haml +++ b/app/views/outfits/edit.html.haml @@ -35,6 +35,7 @@ #preview-swf-container %p Flash and Javascript (but not Java!) are required to preview outfits. %p If this message stays after the page is done loading, check those first. + #preview-image-container #preview-sidebar #outfit-not-found Outfit not found #save-success Outfit successfully saved diff --git a/config/routes.rb b/config/routes.rb index 74a8e5aa..e1db67df 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -22,9 +22,7 @@ OpenneoImpressItems::Application.routes.draw do |map| end resources :outfits, :only => [:show, :create, :update, :destroy] resources :pet_attributes, :only => [:index] - resources :swf_assets, :only => [:show] do - resources :asset_image_conversion_requests, :path => 'conversions', :only => [:create] - end + resources :swf_assets, :only => [:index, :show] match '/users/current-user/outfits' => 'outfits#index', :as => :current_user_outfits diff --git a/public/javascripts/outfits/edit.js b/public/javascripts/outfits/edit.js index f64ea206..e0add0e7 100644 --- a/public/javascripts/outfits/edit.js +++ b/public/javascripts/outfits/edit.js @@ -25,8 +25,9 @@ var Partial = {}, main_wardrobe, View = Wardrobe.getStandardView({ Preview: { swf_url: '/swfs/preview.swf?v=0.12', - wrapper: $('#preview'), - placeholder: $('#preview-swf-container') + wrapper: $('#preview-swf'), + placeholder: $('#preview-swf-container'), + image_container: '#preview-image-container' } }); @@ -223,18 +224,6 @@ View.Fullscreen = function (wardrobe) { wardrobe.item_zone_sets.bind('update', fitSoon); wardrobe.pet_attributes.bind('update', fitSoon); fit(); - - var Konami=function(){var a={addEvent:function(b,c,d,e){if(b.addEventListener)b.addEventListener(c,d,false);else if(b.attachEvent){b["e"+c+d]=d;b[c+d]=function(){b["e"+c+d](window.event,e)};b.attachEvent("on"+c,b[c+d])}},input:"",pattern:"3838404037393739666513",load:function(b){this.addEvent(document,"keydown",function(c,d){if(d)a=d;a.input+=c?c.keyCode:event.keyCode;if(a.input.indexOf(a.pattern)!=-1){a.code(b);a.input=""}},this);this.iphone.load(b)},code:function(b){window.location=b},iphone:{start_x:0,start_y:0,stop_x:0,stop_y:0,tap:false,capture:false,keys:["UP","UP","DOWN","DOWN","LEFT","RIGHT","LEFT","RIGHT","TAP","TAP","TAP"],code:function(b){a.code(b)},load:function(b){a.addEvent(document,"touchmove",function(c){if(c.touches.length==1&&a.iphone.capture==true){c=c.touches[0];a.iphone.stop_x=c.pageX;a.iphone.stop_y=c.pageY;a.iphone.tap=false;a.iphone.capture=false;a.iphone.check_direction()}});a.addEvent(document,"touchend",function(){a.iphone.tap==true&&a.iphone.check_direction(b)},false);a.addEvent(document,"touchstart",function(c){a.iphone.start_x=c.changedTouches[0].pageX;a.iphone.start_y=c.changedTouches[0].pageY;a.iphone.tap=true;a.iphone.capture=true})},check_direction:function(b){x_magnitude=Math.abs(this.start_x-this.stop_x);y_magnitude=Math.abs(this.start_y-this.stop_y);x=this.start_x-this.stop_x<0?"RIGHT":"LEFT";y=this.start_y-this.stop_y<0?"DOWN":"UP";result=x_magnitude>y_magnitude?x:y;result=this.tap==true?"TAP":result;if(result==this.keys[0])this.keys=this.keys.slice(1,this.keys.length);this.keys.length==0&&this.code(b)}}};return a}; - konami = new Konami(); - konami.code = function () { - overrideFull = true; - $(document.body).removeClass('fullscreen'); - preview_swf.removeAttr('style').css('visibility', 'visible'); - preview_el.removeAttr('style'); - wardrobe.search.setItemsByQuery(wardrobe.search.request.query, {offset: wardrobe.search.request.offset}); - full = false; - } - konami.load(); } View.Hash = function (wardrobe) { @@ -825,6 +814,16 @@ View.PetTypeForm = function (wardrobe) { }); } +View.PreviewAdapterForm = function (wardrobe) { + var preview = wardrobe.views.Preview; + var Konami=function(){var a={addEvent:function(b,c,d,e){if(b.addEventListener)b.addEventListener(c,d,false);else if(b.attachEvent){b["e"+c+d]=d;b[c+d]=function(){b["e"+c+d](window.event,e)};b.attachEvent("on"+c,b[c+d])}},input:"",pattern:"3838404037393739666513",load:function(b){this.addEvent(document,"keydown",function(c,d){if(d)a=d;a.input+=c?c.keyCode:event.keyCode;if(a.input.indexOf(a.pattern)!=-1){a.code(b);a.input=""}},this);this.iphone.load(b)},code:function(b){window.location=b},iphone:{start_x:0,start_y:0,stop_x:0,stop_y:0,tap:false,capture:false,keys:["UP","UP","DOWN","DOWN","LEFT","RIGHT","LEFT","RIGHT","TAP","TAP","TAP"],code:function(b){a.code(b)},load:function(b){a.addEvent(document,"touchmove",function(c){if(c.touches.length==1&&a.iphone.capture==true){c=c.touches[0];a.iphone.stop_x=c.pageX;a.iphone.stop_y=c.pageY;a.iphone.tap=false;a.iphone.capture=false;a.iphone.check_direction()}});a.addEvent(document,"touchend",function(){a.iphone.tap==true&&a.iphone.check_direction(b)},false);a.addEvent(document,"touchstart",function(c){a.iphone.start_x=c.changedTouches[0].pageX;a.iphone.start_y=c.changedTouches[0].pageY;a.iphone.tap=true;a.iphone.capture=true})},check_direction:function(b){x_magnitude=Math.abs(this.start_x-this.stop_x);y_magnitude=Math.abs(this.start_y-this.stop_y);x=this.start_x-this.stop_x<0?"RIGHT":"LEFT";y=this.start_y-this.stop_y<0?"DOWN":"UP";result=x_magnitude>y_magnitude?x:y;result=this.tap==true?"TAP":result;if(result==this.keys[0])this.keys=this.keys.slice(1,this.keys.length);this.keys.length==0&&this.code(b)}}};return a}; + konami = new Konami(); + konami.code = function () { + preview.toggleAdapter(); + } + konami.load(); +} + View.Search = function (wardrobe) { var form_selector = '#preview-search-form', form = $(form_selector), item_set = new Partial.ItemSet(wardrobe, form_selector + ' ul'), diff --git a/public/javascripts/wardrobe.js b/public/javascripts/wardrobe.js index 0bfe14b6..bd8b3cf4 100644 --- a/public/javascripts/wardrobe.js +++ b/public/javascripts/wardrobe.js @@ -76,18 +76,22 @@ function Wardrobe() { } } - function Asset(data) { + function Asset(newData) { var asset = this; - for(var key in data) { - if(data.hasOwnProperty(key)) { - asset[key] = data[key]; + this.imageURL = function (size) { + return Wardrobe.IMAGE_CONFIG.base_url + this.s3_path + "/" + size[0] + "x" + size[1] + ".png"; + } + + this.update = function (data) { + for(var key in data) { + if(data.hasOwnProperty(key)) { + asset[key] = data[key]; + } } } - this.requestImageConversion = function () { - $.post('/swf_assets/' + this.id + '/conversions'); - } + this.update(newData); } function BiologyAsset(data) { @@ -271,7 +275,8 @@ function Wardrobe() { // note: may contain duplicates - loop through assets, not these, for // best performance var restricted_zones = [], - restrictors = outfit.worn_items.concat(outfit.pet_state.assets); + restrictors = outfit.worn_items; + if(outfit.pet_state) restrictors = restrictors.concat(outfit.pet_state.assets); $.each(restrictors, function () { restricted_zones = restricted_zones.concat(this.restricted_zones); }); @@ -366,8 +371,9 @@ function Wardrobe() { } this.getVisibleAssets = function () { - var assets = this.pet_state.assets, restricted_zones = getRestrictedZones(), + var assets, restricted_zones = getRestrictedZones(), visible_assets = []; + assets = this.pet_state ? this.pet_state.assets : []; for(var i = 0; i < outfit.worn_items.length; i++) { assets = assets.concat(outfit.worn_items[i].getAssetsFitting(outfit.pet_type)); } @@ -1114,6 +1120,15 @@ function Wardrobe() { } } +Wardrobe.IMAGE_CONFIG = { + base_url: "https://s3.amazonaws.com/impress-asset-images/", + sizes: [ + [600, 600], + [300, 300], + [150, 150] + ] +} + Wardrobe.StandardPreview = { views_by_swf_id: {} }; @@ -1163,6 +1178,7 @@ Wardrobe.getStandardView = function (options) { } StandardView.Preview = function (wardrobe) { + var preview = this; var preview_el = $(options.Preview.wrapper), preview_swf_placeholder = $(options.Preview.placeholder); @@ -1171,6 +1187,8 @@ Wardrobe.getStandardView = function (options) { preview_swf, update_pending_flash = false; + preview_el.removeClass('image-adapter').addClass('swf-adapter'); + swfobject.embedSWF( options.Preview.swf_url, preview_swf_id, @@ -1205,28 +1223,145 @@ Wardrobe.getStandardView = function (options) { } function ImageAdapter() { + var pendingAssets = {}, pendingAssetIds = [], pendingInterval, + pendingAssetsCount = 0, + pendingMessageEl = $('', {id: 'preview-images-pending'}), + previewImageContainer = $(options.Preview.image_container); + + var ASSET_PING_RATE = 5000; + + preview_el.removeClass('swf-adapter').addClass('image-adapter'); + pendingMessageEl.appendTo(previewImageContainer); + this.updateAssets = function () { - var assets = wardrobe.outfit.getVisibleAssets(), asset; - var imagesPending = 0; + var assets = wardrobe.outfit.getVisibleAssets(), asset, + availableAssets = []; + pendingAssets = {}; + pendingAssetsCount = 0; + clearView(); for(var i in assets) { if(!assets.hasOwnProperty(i)) continue; asset = assets[i]; - if(!asset.has_image) { - assets[i].requestImageConversion(); - imagesPending++; + if(asset.has_image) { + addToView(asset); + } else { + pendingAssets[asset.id] = asset; + pendingAssetsCount++; } } - preview_swf_placeholder.text("Waiting on " + imagesPending + " images."); + updatePendingStatus(); } + + function addToView(asset) { + $( + '', + { + css: { + zIndex: asset.depth + }, + src: asset.imageURL(bestSize()) + } + ).appendTo(previewImageContainer); + } + + // TODO: choose new best size on window resize + function bestSize() { + var sizes = Wardrobe.IMAGE_CONFIG.sizes, + width = preview_el.width(), height = preview_el.height(); + for(var i in sizes) { + if(sizes[i][0] < width && sizes[i][1] < height) return sizes[i]; + } + return sizes[sizes.length - 1]; + } + + function clearView() { + previewImageContainer.children('img').remove(); + } + + function loadPendingAssets() { + var pendingAssetIds = { + biology: [], + object: [] + }, asset; + for(var i in pendingAssets) { + if(pendingAssets.hasOwnProperty(i)) { + pendingAssetIds[pendingAssets[i].type].push(pendingAssets[i].id); + } + } + $.getJSON( + '/swf_assets.json', + { + ids: pendingAssetIds + }, + function (assetsData) { + var assetData, asset; + for(var i in assetsData) { + assetData = assetsData[i]; + if(assetData.has_image && pendingAssets.hasOwnProperty(assetData.id)) { + asset = pendingAssets[assetData.id]; + asset.update(assetData); + delete pendingAssets[assetData.id]; + pendingAssetsCount--; + addToView(asset); + } + } + updatePendingStatus(); + } + ); + } + + function updateContainerSize() { + var size = bestSize(); + previewImageContainer.css({ + height: size[1], + width: size[0] + }); + } + + function updatePendingInterval() { + if(pendingAssetsCount) { + if(pendingInterval == null) { + pendingInterval = setInterval(loadPendingAssets, ASSET_PING_RATE); + } + } else { + if(pendingInterval != null) { + clearInterval(pendingInterval); + pendingInterval = null; + } + } + } + + function updatePendingMessage() { + pendingMessageEl.text("Waiting on " + pendingAssetsCount + " images"). + attr("className", "waiting-on-" + pendingAssetsCount); + } + + function updatePendingStatus() { + updatePendingInterval(); + updatePendingMessage(); + } + + updateContainerSize(); + $(window).resize(updateContainerSize); } - //this.adapter = new SWFAdapter(); - this.adapter = new ImageAdapter(); + this.adapter = new SWFAdapter(); + + function updateAssets() { + preview.adapter.updateAssets(); + } - var updateAssets = $.proxy(this.adapter, 'updateAssets'); wardrobe.outfit.bind('updateWornItems', updateAssets); wardrobe.outfit.bind('updateItemAssets', updateAssets); wardrobe.outfit.bind('updatePetState', updateAssets); + + this.useSWFAdapter = function () { preview.adapter = new SWFAdapter(); updateAssets(); } + this.useImageAdapter = function () { preview.adapter = new ImageAdapter(); updateAssets(); } + this.toggleAdapter = function () { + var nextAdapter = preview.adapter.constructor == SWFAdapter ? ImageAdapter : SWFAdapter; + preview.adapter = new nextAdapter(); + updateAssets(); + } } window.previewSWFIsReady = function (id) { diff --git a/public/stylesheets/compiled/screen.css b/public/stylesheets/compiled/screen.css index d5459c0f..1e4174ef 100644 --- a/public/stylesheets/compiled/screen.css +++ b/public/stylesheets/compiled/screen.css @@ -760,12 +760,12 @@ body.items-show .nc-icon { } @import url(../shared/jquery.jgrowl.css); -/* line 107, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 108, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-toolbar { margin-bottom: 0.5em; text-align: left; } -/* line 110, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 111, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-toolbar form { display: -moz-inline-box; -moz-box-orient: vertical; @@ -775,23 +775,23 @@ body.outfits-edit #preview-toolbar form { *vertical-align: auto; margin-right: 2em; } -/* line 113, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 114, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-info form { display: inline; } -/* line 116, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 117, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form ul { list-style: none; } -/* line 118, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 119, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form ul, body.outfits-edit #pet-state-form ul li { display: inline; } -/* line 120, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 121, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form input { display: none; } -/* line 122, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 123, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form label { /* http://www.zurb.com/blog_uploads/0000/0617/buttons-03.html */ -moz-border-radius: 5px; @@ -823,7 +823,7 @@ body.outfits-edit #pet-state-form label:hover { body.outfits-edit #pet-state-form label:active { top: 1px; } -/* line 125, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 126, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form li.selected button { background: #0b61a4 url('/images/alert-overlay.png?1296599919') repeat-x; } @@ -831,30 +831,30 @@ body.outfits-edit #pet-state-form li.selected button { body.outfits-edit #pet-state-form li.selected button:hover { background-color: #005093; } -/* line 127, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 128, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form.hidden { visibility: hidden; } -/* line 129, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 130, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-outfit-wrapper { float: right; } -/* line 131, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 132, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-outfit-wrapper button { display: none; } -/* line 133, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 134, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-outfit-wrapper #share-outfit { display: inline-block; } -/* line 135, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 136, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-outfit-wrapper.loading { background-image: url('/images/loading.gif?1296599919'); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } -/* line 141, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 142, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-outfit, body.outfits-edit #save-outfit-not-signed-in, body.outfits-edit #save-current-outfit, body.outfits-edit #save-outfit-copy, body.outfits-edit #save-outfit-finish { background: #ff5c00 url('/images/alert-overlay.png?1296599919') repeat-x; } @@ -862,28 +862,28 @@ body.outfits-edit #save-outfit, body.outfits-edit #save-outfit-not-signed-in, bo body.outfits-edit #save-outfit:hover, body.outfits-edit #save-outfit-not-signed-in:hover, body.outfits-edit #save-current-outfit:hover, body.outfits-edit #save-outfit-copy:hover, body.outfits-edit #save-outfit-finish:hover { background-color: #ee4b00; } -/* line 143, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 144, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #current-outfit-permalink, body.outfits-edit #shared-outfit-permalink { display: none; margin-right: 0.25em; } -/* line 146, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 147, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #current-outfit-permalink img, body.outfits-edit #shared-outfit-permalink img { bottom: -2px; height: 16px; position: relative; width: 16px; } -/* line 148, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 149, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #shared-outfit-url { display: none; width: 15em; } -/* line 151, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 152, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview { clear: both; } -/* line 153, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 154, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-swf { float: left; height: 400px; @@ -891,7 +891,26 @@ body.outfits-edit #preview-swf { position: relative; width: 400px; } -/* line 159, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 161, ../../../app/stylesheets/outfits/_edit.sass */ +body.outfits-edit #preview-swf.swf-adapter #preview-image-container { + display: none; +} +/* line 164, ../../../app/stylesheets/outfits/_edit.sass */ +body.outfits-edit #preview-swf.image-adapter #preview-swf-container { + display: none; +} +/* line 166, ../../../app/stylesheets/outfits/_edit.sass */ +body.outfits-edit #preview-image-container { + margin: 1em auto; + position: relative; +} +/* line 2, ../../../app/stylesheets/partials/_wardrobe.sass */ +body.outfits-edit #preview-image-container img { + left: 0; + position: absolute; + top: 0; +} +/* line 170, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-swf-overlay { -moz-opacity: 0; -webkit-opacity: 0; @@ -904,7 +923,23 @@ body.outfits-edit #preview-swf-overlay { top: 0; width: 100%; } -/* line 167, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 178, ../../../app/stylesheets/outfits/_edit.sass */ +body.outfits-edit #preview-images-pending { + background: black; + background: rgba(0, 0, 0, 0.75); + bottom: 0; + color: white; + font-size: 75%; + padding: 0.5em; + position: absolute; + right: 0; + z-index: 1000; +} +/* line 188, ../../../app/stylesheets/outfits/_edit.sass */ +body.outfits-edit #preview-images-pending.waiting-on-0 { + display: none; +} +/* line 190, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar { -moz-border-radius: 10px; -webkit-border-radius: 10px; @@ -916,73 +951,73 @@ body.outfits-edit #preview-sidebar { overflow: auto; width: 378px; } -/* line 177, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 200, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-outfits #preview-closet { display: none; } -/* line 179, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 202, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-outfits #preview-outfits { display: block; } -/* line 181, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 204, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-saving-outfit { height: auto; max-height: 100%; } -/* line 184, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 207, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-saving-outfit #preview-closet { display: none; } -/* line 186, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 209, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-saving-outfit #preview-saving-outfit { display: block; } -/* line 189, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 212, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar .sidebar-view h2 { margin-bottom: 0.25em; margin-left: 24px; } -/* line 194, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 217, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet h2 { margin-bottom: 0; } -/* line 196, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 219, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet ul { text-align: center; } -/* line 198, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 221, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object { background: #eeffee; } -/* line 200, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 223, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object img { -moz-opacity: 0.5; -webkit-opacity: 0.5; -o-opacity: 0.5; -khtml-opacity: 0.5; } -/* line 202, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 225, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object.worn { background: transparent; } -/* line 204, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 227, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object.worn img { -moz-opacity: 1; -webkit-opacity: 1; -o-opacity: 1; -khtml-opacity: 1; } -/* line 206, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 229, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object.no-assets { background: #fbe3e4; color: #8a1f11; padding-bottom: 1.25em; } -/* line 210, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 233, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object.no-assets .no-assets-message { display: block; } -/* line 212, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 235, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .no-assets-message { background: #f3dbdc; bottom: 0; @@ -994,7 +1029,7 @@ body.outfits-edit .no-assets-message { position: absolute; width: 100%; } -/* line 222, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 245, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #no-assets-full-message { -moz-border-radius: 5px; -webkit-border-radius: 5px; @@ -1008,12 +1043,12 @@ body.outfits-edit #no-assets-full-message { top: -9999px; width: 30em; } -/* line 233, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 256, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form { clear: both; text-align: left; } -/* line 236, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 259, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form h2 { display: -moz-inline-box; -moz-box-orient: vertical; @@ -1023,7 +1058,7 @@ body.outfits-edit #preview-search-form h2 { *vertical-align: auto; margin: 0 1em 0 0; } -/* line 239, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 262, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form input { display: -moz-inline-box; -moz-box-orient: vertical; @@ -1032,7 +1067,7 @@ body.outfits-edit #preview-search-form input { *display: inline; *vertical-align: auto; } -/* line 241, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 264, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-pagination { display: -moz-inline-box; -moz-box-orient: vertical; @@ -1042,53 +1077,53 @@ body.outfits-edit #preview-search-form-pagination { *vertical-align: auto; margin-left: 2em; } -/* line 244, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 267, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-pagination a, body.outfits-edit #preview-search-form-pagination span { margin: 0 0.25em; } -/* line 246, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 269, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-pagination .current { font-weight: bold; } -/* line 248, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 271, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-clear { display: none; font-size: 87.5%; margin-left: 2em; } -/* line 252, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 275, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-loading { display: none; font-size: 75%; font-style: italic; margin-left: 2em; } -/* line 258, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 281, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-no-results { display: none; } -/* line 260, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 283, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-help { font-size: 87.5%; margin-left: 2em; } -/* line 263, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 286, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .search-helper { font-family: inherit; } -/* line 265, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 288, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .possible-error { display: none; } -/* line 268, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 291, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #fullscreen-copyright { display: none; } -/* line 270, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 293, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen { height: 100%; } -/* line 273, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 296, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #container { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; @@ -1101,19 +1136,19 @@ body.outfits-edit.fullscreen #container { position: relative; width: 80%; } -/* line 281, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 304, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen h1 { display: none; } -/* line 283, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 306, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #short-url-response { position: static; } -/* line 285, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 308, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview { width: 100%; } -/* line 287, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 310, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-sidebar { float: right; height: 100%; @@ -1121,12 +1156,12 @@ body.outfits-edit.fullscreen #preview-sidebar { position: relative; width: 400px; } -/* line 293, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 316, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-sidebar.viewing-saving-outfit { height: auto; max-height: 100%; } -/* line 296, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 319, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-search-form { bottom: 1.5em; left: 0; @@ -1135,7 +1170,7 @@ body.outfits-edit.fullscreen #preview-search-form { position: absolute; width: 100%; } -/* line 304, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 327, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-search-form-help div { display: -moz-inline-box; -moz-box-orient: vertical; @@ -1145,27 +1180,27 @@ body.outfits-edit.fullscreen #preview-search-form-help div { *vertical-align: auto; width: 48%; } -/* line 307, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 330, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #footer { bottom: 0; left: 0; position: absolute; width: 100%; } -/* line 312, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 335, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #footer ul, body.outfits-edit.fullscreen #footer p, body.outfits-edit.fullscreen #footer li { display: inline; } -/* line 314, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 337, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #footer ul { margin-right: 2em; } -/* line 317, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 340, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object { padding: 6px; position: relative; } -/* line 320, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 343, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object ul { display: none; left: 0; @@ -1173,11 +1208,11 @@ body.outfits-edit .object ul { position: absolute; top: 0; } -/* line 326, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 349, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object ul li { margin-bottom: 0.25em; } -/* line 328, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 351, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object ul li a { /* http://www.zurb.com/blog_uploads/0000/0617/buttons-03.html */ -moz-border-radius: 5px; @@ -1218,11 +1253,11 @@ body.outfits-edit .object ul li a:active { body.outfits-edit .object ul li a:hover { background-color: #999999; } -/* line 334, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 357, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object:hover ul, body.outfits-edit .object:hover .object-info { display: block; } -/* line 341, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 364, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .nc-icon { background: url('/images/nc.png?1296599919') no-repeat; height: 16px; @@ -1232,14 +1267,14 @@ body.outfits-edit .nc-icon { top: 64px; width: 16px; } -/* line 349, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 372, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .nc-icon:hover { -moz-opacity: 0.5; -webkit-opacity: 0.5; -o-opacity: 0.5; -khtml-opacity: 0.5; } -/* line 352, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 375, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object-info { -moz-border-radius: 12px; -webkit-border-radius: 12px; @@ -1256,26 +1291,26 @@ body.outfits-edit .object-info { top: 0; width: 16px; } -/* line 363, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 386, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object-info span { font-family: "Droid Serif", Georgia, "Times New Roman", Times, serif; font-weight: bold; position: relative; top: -2px; } -/* line 369, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 392, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object-info:hover { -moz-opacity: 1; -webkit-opacity: 1; -o-opacity: 1; -khtml-opacity: 1; } -/* line 372, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 395, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits { display: none; text-align: left; } -/* line 375, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 398, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul { margin-left: 24px; margin-right: 24px; @@ -1286,7 +1321,7 @@ body.outfits-edit #preview-outfits > ul { margin-bottom: 1em; min-height: 16px; } -/* line 384, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 407, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li { padding: 0.25em 0; } @@ -1321,7 +1356,7 @@ body.outfits-edit #preview-outfits > ul > li .outfit-star { margin-left: -24px; margin-right: 0; } -/* line 32, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 33, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li img { height: 100px; left: -25px; @@ -1329,7 +1364,7 @@ body.outfits-edit #preview-outfits > ul > li img { top: -25px; width: 100px; } -/* line 38, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 39, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-delete { -moz-border-radius: 0; -webkit-border-radius: 0; @@ -1363,7 +1398,7 @@ body.outfits-edit #preview-outfits > ul > li .outfit-delete:hover { body.outfits-edit #preview-outfits > ul > li .outfit-delete:active { top: auto; } -/* line 46, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 47, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-delete:hover { -moz-opacity: 1; -webkit-opacity: 1; @@ -1371,29 +1406,29 @@ body.outfits-edit #preview-outfits > ul > li .outfit-delete:hover { -khtml-opacity: 1; background: #eeffee; } -/* line 49, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 50, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li header { display: block; padding-left: 24px; } -/* line 52, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 53, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li h4 { cursor: pointer; display: inline; } -/* line 55, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 56, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li h4:hover { text-decoration: underline; } -/* line 57, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 58, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li h4, body.outfits-edit #preview-outfits > ul > li .outfit-rename-field { font-size: 115%; } -/* line 59, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 60, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-rename-button, body.outfits-edit #preview-outfits > ul > li .outfit-rename-form { display: none; } -/* line 61, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 62, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-rename-button { -moz-opacity: 0.75; -webkit-opacity: 0.75; @@ -1402,7 +1437,7 @@ body.outfits-edit #preview-outfits > ul > li .outfit-rename-button { font-size: 75%; margin-left: 1em; } -/* line 65, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 66, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-url { -moz-opacity: 0.5; -webkit-opacity: 0.5; @@ -1412,7 +1447,7 @@ body.outfits-edit #preview-outfits > ul > li .outfit-url { border-width: 0; width: 284px; } -/* line 70, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 71, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-url:hover { -moz-opacity: 1; -webkit-opacity: 1; @@ -1420,63 +1455,63 @@ body.outfits-edit #preview-outfits > ul > li .outfit-url:hover { -khtml-opacity: 1; border-width: 1px; } -/* line 73, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 74, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-delete-confirmation { display: none; font-size: 75%; } -/* line 76, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 77, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-delete-confirmation span { color: red; } -/* line 78, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 79, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-delete-confirmation a { margin: 0 0.25em; } -/* line 80, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 81, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.active { background: #eeffee; } -/* line 83, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 84, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.confirming-deletion .outfit-delete { visibility: hidden; } -/* line 85, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 86, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.confirming-deletion .outfit-url { display: none; } -/* line 87, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 88, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.confirming-deletion .outfit-delete-confirmation { display: block; } -/* line 90, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 91, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.renaming h4 { display: none; } -/* line 92, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 93, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.renaming .outfit-rename-form { display: inline; } -/* line 95, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 96, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.renaming:hover .outfit-rename-button { display: none; } -/* line 98, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 99, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li:hover .outfit-rename-button { display: inline; } -/* line 386, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 409, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul.loaded { background: transparent; } -/* line 389, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 412, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .preview-sidebar-nav { float: right; font-size: 85%; margin-right: 24px; margin-top: 1em; } -/* line 396, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 419, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-success, body.outfits-edit #save-error, body.outfits-edit #outfit-not-found { margin-left: 24px; margin-right: 24px; @@ -1484,19 +1519,19 @@ body.outfits-edit #save-success, body.outfits-edit #save-error, body.outfits-edi margin-top: 1em; text-align: center; } -/* line 403, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 426, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-success { background: #e6efc2; border: 1px solid #c6d880; color: #264409; } -/* line 406, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 429, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-error, body.outfits-edit #outfit-not-found { background: #fbe3e4; border: 1px solid #fbc2c4; color: #8a1f11; } -/* line 409, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 432, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #userbar-message { -moz-opacity: 0.5; -webkit-opacity: 0.5; @@ -1504,7 +1539,7 @@ body.outfits-edit #userbar-message { -khtml-opacity: 0.5; display: none; } -/* line 413, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 436, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit { padding: 0.25em 0; margin-left: 24px; @@ -1542,7 +1577,7 @@ body.outfits-edit #new-outfit .outfit-star { margin-left: -24px; margin-right: 0; } -/* line 32, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 33, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit img { height: 100px; left: -25px; @@ -1550,7 +1585,7 @@ body.outfits-edit #new-outfit img { top: -25px; width: 100px; } -/* line 38, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 39, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-delete { -moz-border-radius: 0; -webkit-border-radius: 0; @@ -1584,7 +1619,7 @@ body.outfits-edit #new-outfit .outfit-delete:hover { body.outfits-edit #new-outfit .outfit-delete:active { top: auto; } -/* line 46, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 47, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-delete:hover { -moz-opacity: 1; -webkit-opacity: 1; @@ -1592,29 +1627,29 @@ body.outfits-edit #new-outfit .outfit-delete:hover { -khtml-opacity: 1; background: #eeffee; } -/* line 49, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 50, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit header { display: block; padding-left: 24px; } -/* line 52, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 53, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit h4 { cursor: pointer; display: inline; } -/* line 55, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 56, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit h4:hover { text-decoration: underline; } -/* line 57, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 58, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit h4, body.outfits-edit #new-outfit .outfit-rename-field { font-size: 115%; } -/* line 59, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 60, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-rename-button, body.outfits-edit #new-outfit .outfit-rename-form { display: none; } -/* line 61, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 62, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-rename-button { -moz-opacity: 0.75; -webkit-opacity: 0.75; @@ -1623,7 +1658,7 @@ body.outfits-edit #new-outfit .outfit-rename-button { font-size: 75%; margin-left: 1em; } -/* line 65, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 66, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-url { -moz-opacity: 0.5; -webkit-opacity: 0.5; @@ -1633,7 +1668,7 @@ body.outfits-edit #new-outfit .outfit-url { border-width: 0; width: 284px; } -/* line 70, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 71, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-url:hover { -moz-opacity: 1; -webkit-opacity: 1; @@ -1641,78 +1676,78 @@ body.outfits-edit #new-outfit .outfit-url:hover { -khtml-opacity: 1; border-width: 1px; } -/* line 73, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 74, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-delete-confirmation { display: none; font-size: 75%; } -/* line 76, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 77, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-delete-confirmation span { color: red; } -/* line 78, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 79, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-delete-confirmation a { margin: 0 0.25em; } -/* line 80, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 81, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.active { background: #eeffee; } -/* line 83, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 84, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.confirming-deletion .outfit-delete { visibility: hidden; } -/* line 85, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 86, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.confirming-deletion .outfit-url { display: none; } -/* line 87, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 88, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.confirming-deletion .outfit-delete-confirmation { display: block; } -/* line 90, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 91, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.renaming h4 { display: none; } -/* line 92, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 93, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.renaming .outfit-rename-form { display: inline; } -/* line 95, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 96, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.renaming:hover .outfit-rename-button { display: none; } -/* line 98, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 99, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit:hover .outfit-rename-button { display: inline; } -/* line 417, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 440, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit h4 { display: inline; } -/* line 419, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 442, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit h4:hover { text-decoration: none; } -/* line 421, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 444, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-star { margin-top: 0.5em; } -/* line 424, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 447, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit-name { font: inherit; line-height: 1; } -/* line 428, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 451, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-saving-outfit { display: none; padding-bottom: 1em; } -/* line 432, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 455, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-type-form, body.outfits-edit #pet-state-form, body.outfits-edit #preview-swf, body.outfits-edit #preview-search-form { position: relative; } -/* line 435, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 458, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .control-overlay { height: 100%; left: 0; @@ -1721,11 +1756,11 @@ body.outfits-edit .control-overlay { width: 100%; z-index: 5; } -/* line 443, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 466, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar-nav-outfits, body.outfits-edit #save-outfit-signed-in { display: none; } -/* line 446, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 469, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form { padding: 0.25em 0; display: none; @@ -1763,7 +1798,7 @@ body.outfits-edit form#save-outfit-form .outfit-star { margin-left: -24px; margin-right: 0; } -/* line 32, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 33, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form img { height: 100px; left: -25px; @@ -1771,7 +1806,7 @@ body.outfits-edit form#save-outfit-form img { top: -25px; width: 100px; } -/* line 38, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 39, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-delete { -moz-border-radius: 0; -webkit-border-radius: 0; @@ -1805,7 +1840,7 @@ body.outfits-edit form#save-outfit-form .outfit-delete:hover { body.outfits-edit form#save-outfit-form .outfit-delete:active { top: auto; } -/* line 46, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 47, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-delete:hover { -moz-opacity: 1; -webkit-opacity: 1; @@ -1813,29 +1848,29 @@ body.outfits-edit form#save-outfit-form .outfit-delete:hover { -khtml-opacity: 1; background: #eeffee; } -/* line 49, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 50, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form header { display: block; padding-left: 24px; } -/* line 52, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 53, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form h4 { cursor: pointer; display: inline; } -/* line 55, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 56, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form h4:hover { text-decoration: underline; } -/* line 57, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 58, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form h4, body.outfits-edit form#save-outfit-form .outfit-rename-field { font-size: 115%; } -/* line 59, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 60, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-rename-button, body.outfits-edit form#save-outfit-form .outfit-rename-form { display: none; } -/* line 61, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 62, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-rename-button { -moz-opacity: 0.75; -webkit-opacity: 0.75; @@ -1844,7 +1879,7 @@ body.outfits-edit form#save-outfit-form .outfit-rename-button { font-size: 75%; margin-left: 1em; } -/* line 65, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 66, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-url { -moz-opacity: 0.5; -webkit-opacity: 0.5; @@ -1854,7 +1889,7 @@ body.outfits-edit form#save-outfit-form .outfit-url { border-width: 0; width: 284px; } -/* line 70, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 71, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-url:hover { -moz-opacity: 1; -webkit-opacity: 1; @@ -1862,52 +1897,52 @@ body.outfits-edit form#save-outfit-form .outfit-url:hover { -khtml-opacity: 1; border-width: 1px; } -/* line 73, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 74, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-delete-confirmation { display: none; font-size: 75%; } -/* line 76, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 77, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-delete-confirmation span { color: red; } -/* line 78, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 79, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-delete-confirmation a { margin: 0 0.25em; } -/* line 80, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 81, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form.active { background: #eeffee; } -/* line 83, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 84, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form.confirming-deletion .outfit-delete { visibility: hidden; } -/* line 85, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 86, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form.confirming-deletion .outfit-url { display: none; } -/* line 87, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 88, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form.confirming-deletion .outfit-delete-confirmation { display: block; } -/* line 90, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 91, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form.renaming h4 { display: none; } -/* line 92, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 93, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form.renaming .outfit-rename-form { display: inline; } -/* line 95, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 96, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form.renaming:hover .outfit-rename-button { display: none; } -/* line 98, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 99, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form:hover .outfit-rename-button { display: inline; } -/* line 452, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 475, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-star, body.outfits-edit form#save-outfit-form input, body.outfits-edit form#save-outfit-form button { display: -moz-inline-box; -moz-box-orient: vertical; @@ -1918,51 +1953,51 @@ body.outfits-edit form#save-outfit-form .outfit-star, body.outfits-edit form#sav float: none; vertical-align: top; } -/* line 457, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 480, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit form#save-outfit-form .outfit-star { margin-top: 0.25em; } -/* line 460, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 483, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .outfit-url { font-size: 75%; } -/* line 464, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 487, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-signed-in #preview-sidebar-nav-outfits { display: block; } -/* line 466, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 489, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-signed-in #save-outfit { display: inline-block; } -/* line 470, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 493, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-signed-in #save-outfit-wrapper.active-outfit #save-outfit { display: none; } -/* line 472, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 495, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-signed-in #save-outfit-wrapper.active-outfit #save-current-outfit, body.outfits-edit.user-signed-in #save-outfit-wrapper.active-outfit #save-outfit-copy { display: inline-block; } -/* line 474, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 497, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-signed-in #save-outfit-wrapper.active-outfit #current-outfit-permalink { display: inline-block; } -/* line 477, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 500, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-signed-in #save-outfit-wrapper.saving-outfit #save-outfit-form { display: block; } -/* line 479, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 502, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-signed-in #save-outfit-wrapper.saving-outfit #save-outfit, body.outfits-edit.user-signed-in #save-outfit-wrapper.saving-outfit #save-current-outfit, body.outfits-edit.user-signed-in #save-outfit-wrapper.saving-outfit #save-outfit-copy, body.outfits-edit.user-signed-in #save-outfit-wrapper.saving-outfit #current-outfit-permalink, body.outfits-edit.user-signed-in #save-outfit-wrapper.saving-outfit #shared-outfit-permalink, body.outfits-edit.user-signed-in #save-outfit-wrapper.saving-outfit #share-outfit, body.outfits-edit.user-signed-in #save-outfit-wrapper.saving-outfit #shared-outfit-url { display: none; } -/* line 483, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 506, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-not-signed-in #save-outfit-not-signed-in { display: inline-block; } -/* line 487, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 510, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-outfit-wrapper.shared-outfit #shared-outfit-permalink, body.outfits-edit #save-outfit-wrapper.shared-outfit #shared-outfit-url { display: inline-block; } -/* line 489, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 512, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-outfit-wrapper.shared-outfit #current-outfit-permalink { display: none !important; }