diff --git a/app/controllers/outfits_controller.rb b/app/controllers/outfits_controller.rb index 8ffffbd5..0d5c02e9 100644 --- a/app/controllers/outfits_controller.rb +++ b/app/controllers/outfits_controller.rb @@ -1,4 +1,6 @@ class OutfitsController < ApplicationController + before_filter :find_outfit, :only => [:show, :update, :destroy] + def create if user_signed_in? outfit = Outfit.new params[:outfit] @@ -28,6 +30,10 @@ class OutfitsController < ApplicationController @top_contributors = User.top_contributors.limit(3) end + def show + render :json => @outfit + end + def update authenticate_action { |outfit| outfit.update_attributes(params[:outfit]) } end @@ -35,12 +41,15 @@ class OutfitsController < ApplicationController private def authenticate_action - raise ActiveRecord::RecordNotFound unless user_signed_in? - outfit = current_user.outfits.find(params[:id]) - if yield(outfit) + if yield(@outfit) render :json => true else render :json => false, :status => :bad_request end end + + def find_outfit + raise ActiveRecord::RecordNotFound unless user_signed_in? + @outfit = current_user.outfits.find(params[:id]) + end end diff --git a/app/stylesheets/outfits/_edit.sass b/app/stylesheets/outfits/_edit.sass index 746d9c74..2c5516a9 100644 --- a/app/stylesheets/outfits/_edit.sass +++ b/app/stylesheets/outfits/_edit.sass @@ -18,7 +18,7 @@ $outfit-content-inner-width: $outfit-content-width - $outfit-header-padding =outfit //+clearfix - margin-bottom: .5em + padding: .25em 0 //.outfit-thumbnail float: left height: $outfit-thumbnail-size @@ -73,6 +73,7 @@ $outfit-content-inner-width: $outfit-content-width - $outfit-header-padding text-decoration: underline .outfit-url +opacity(.5) + background: transparent border-color: $background-color font-size: 75% width: $outfit-content-inner-width @@ -86,6 +87,8 @@ $outfit-content-inner-width: $outfit-content-width - $outfit-header-padding color: red a margin: 0 .25em + &.active + background: $module-bg-color &.confirming-deletion .outfit-delete visibility: hidden @@ -367,7 +370,7 @@ body.outfits-edit font-size: 85% margin-top: 1em - #save-success, #save-error + #save-success, #save-error, #outfit-not-found display: none margin-top: 1em text-align: center @@ -375,7 +378,7 @@ body.outfits-edit #save-success +notice - #save-error + #save-error, #outfit-not-found +error #userbar-message diff --git a/app/views/outfits/edit.html.haml b/app/views/outfits/edit.html.haml index 9478a472..95fa685e 100644 --- a/app/views/outfits/edit.html.haml +++ b/app/views/outfits/edit.html.haml @@ -22,6 +22,7 @@ %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-sidebar + #outfit-not-found Outfit not found #save-success Outfit successfully saved #save-error #preview-closet @@ -87,7 +88,7 @@ #no-assets-full-message We haven't seen this item on this body type before. Have you? Submit its name on the home page if you have! %script#outfit-template{:type => 'text/x-jquery-tmpl'} -
  • +
  • %header %button.outfit-delete × .outfit-star diff --git a/config/routes.rb b/config/routes.rb index 550011e3..40cc2b96 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -20,7 +20,7 @@ OpenneoImpressItems::Application.routes.draw do |map| get :needed end end - resources :outfits, :only => [:create, :update, :destroy] + resources :outfits, :only => [:show, :create, :update, :destroy] resources :pet_attributes, :only => [:index] match '/users/current-user/outfits.json' => 'outfits#for_current_user' diff --git a/public/javascripts/outfits/edit.js b/public/javascripts/outfits/edit.js index d0bca1ca..08a5ea5c 100644 --- a/public/javascripts/outfits/edit.js +++ b/public/javascripts/outfits/edit.js @@ -21,7 +21,7 @@ })(); $.fn.notify = function () { - this.show('slow').delay(5000).hide('fast'); + this.stop().show('slow').delay(5000).hide('fast'); } var Partial = {}, main_wardrobe, @@ -234,6 +234,7 @@ View.Hash = function (wardrobe) { color: TYPES.INTEGER, name: TYPES.STRING, objects: TYPES.INTEGER_ARRAY, + outfit: TYPES.INTEGER, search: TYPES.STRING, search_offset: TYPES.INTEGER, species: TYPES.INTEGER, @@ -295,6 +296,9 @@ View.Hash = function (wardrobe) { if(new_data.state != data.state) { wardrobe.outfit.setPetStateById(new_data.state); } + if(new_data.outfit != data.outfit) { + wardrobe.outfit.setId(new_data.outfit); + } if(new_data.search != data.search || new_data.search_offset != data.search_offset) { wardrobe.search.setItemsByQuery(new_data.search, {offset: new_data.search_offset}); } @@ -391,16 +395,28 @@ View.Hash = function (wardrobe) { } }); - wardrobe.outfit.bind('setOutfit', function (outfit) { + singleOutfitResponse('setOutfit', function (outfit) { + if(outfit.id != data.outfit) { + changeQuery({outfit: outfit.id}); + } + }); + + wardrobe.outfit.bind('loadOutfit', function (outfit) { changeQuery({ closet: outfit.getClosetItemIds(), color: outfit.pet_type.color_id, objects: outfit.getWornItemIds(), + outfit: outfit.id, species: outfit.pet_type.species_id, state: outfit.pet_state.id }); }); + wardrobe.outfit.bind('outfitNotFound', function (outfit) { + var new_id = outfit ? outfit.id : undefined; + changeQuery({outfit: new_id}); + }); + wardrobe.search.bind('updateRequest', function (request) { if(request.offset != data.search_offset || request.query != data.search) { changeQuery({ @@ -418,6 +434,7 @@ View.Outfits = function (wardrobe) { new_outfit_el = $('#new-outfit'), new_outfit_form_el = $('#new-outfit-form'), new_outfit_name_el = $('#new-outfit-name'), outfits_list_el = outfits_el.children('ul'), + outfit_not_found_el = $('#outfit-not-found'), stars = $('#preview-outfits div.outfit-star'), signed_in, previously_viewing = ''; @@ -490,6 +507,7 @@ View.Outfits = function (wardrobe) { wardrobe.user.bind('outfitsLoaded', function (outfits) { var outfit_els = $.tmpl('outfitTemplate', outfits); outfits_list_el.html('').append(outfit_els).addClass('loaded'); + updateActiveOutfit(); }); wardrobe.user.bind('addOutfit', function (outfit, i) { @@ -500,6 +518,7 @@ View.Outfits = function (wardrobe) { } else { outfit_el.appendTo(outfits_list_el); } + updateActiveOutfit(); outfit_el.hide().show('normal'); }); @@ -524,8 +543,12 @@ View.Outfits = function (wardrobe) { }); $('a.outfit-delete-confirmation-yes').live('click', function (e) { + var outfit = $(this).tmplItem().data; e.preventDefault(); - wardrobe.user.destroyOutfit($(this).tmplItem().data); + wardrobe.user.destroyOutfit(outfit); + if(wardrobe.outfit.getOutfit().id == outfit.id) { + wardrobe.outfit.setId(null); + } }); $('a.outfit-delete-confirmation-no').live('click', function (e) { @@ -539,9 +562,19 @@ View.Outfits = function (wardrobe) { wardrobe.user.toggleOutfitStar(el.tmplItem().data); }); - wardrobe.user.bind('outfitStarToggled', function (outfit) { - // test - }); + function setActiveOutfit(outfit) { + outfits_list_el.find('li.active').removeClass('active'); + if(outfit.id) { + $('li.outfit-' + outfit.id).addClass('active'); + } + } + + function updateActiveOutfit() { + setActiveOutfit(wardrobe.outfit.getOutfit()); + } + + wardrobe.outfit.bind('setOutfit', setActiveOutfit); + wardrobe.outfit.bind('outfitNotFound', setActiveOutfit); /* Saving */ @@ -584,6 +617,12 @@ View.Outfits = function (wardrobe) { } } }); + + /* Error */ + + wardrobe.outfit.bind('outfitNotFound', function () { + outfit_not_found_el.notify(); + }); } View.PetStateForm = function (wardrobe) { diff --git a/public/javascripts/wardrobe.js b/public/javascripts/wardrobe.js index 5b95033a..1d27c2f1 100644 --- a/public/javascripts/wardrobe.js +++ b/public/javascripts/wardrobe.js @@ -222,6 +222,12 @@ function Wardrobe() { var outfit = this, previous_pet_type, worn_item_ids = [], new_record = true; + this.setWornAndUnwornItemIds = function (new_ids) { + this.worn_and_unworn_item_ids = new_ids; + worn_item_ids = new_ids.worn; + closet_item_ids = new_ids.unworn.concat(new_ids.worn); + } + if(typeof data != 'undefined') { this.color_id = data.color_id; this.id = data.id; @@ -229,10 +235,7 @@ function Wardrobe() { this.pet_state_id = data.pet_state_id; this.starred = data.starred; this.species_id = data.species_id; - this.worn_and_unworn_item_ids = data.worn_and_unworn_item_ids; - worn_item_ids = this.worn_and_unworn_item_ids.worn; - closet_item_ids = this.worn_and_unworn_item_ids.unworn. - concat(this.worn_and_unworn_item_ids.worn); + this.setWornAndUnwornItemIds(data.worn_and_unworn_item_ids); new_record = false; } @@ -321,6 +324,13 @@ function Wardrobe() { } } + this.getPetStateId = function () { + if(typeof outfit.pet_state_id === 'undefined') { + outfit.pet_state_id = outfit.pet_state.id; + } + return outfit.pet_state_id; + } + this.getVisibleAssets = function () { var assets = this.pet_state.assets, restricted_zones = getRestrictedZones(), visible_assets = []; @@ -354,12 +364,15 @@ function Wardrobe() { } if(id) { this.pet_state = PetState.find(id); + this.pet_state_id = id; this.pet_state.loadAssets(petStateOnLoad); } } this.setPetTypeByColorAndSpecies = function (color_id, species_id, updatePetTypeCallback, petTypeLoadedCallback, petTypeNotFoundCallback, updatePetStateCallback, updateItemsCallback, updateItemAssetsCallback) { this.pet_type = PetType.findOrCreateByColorAndSpecies(color_id, species_id); + this.color_id = color_id; + this.species_id = species_id; updatePetTypeCallback(this.pet_type); this.pet_type.load(function (pet_type) { petTypeOnLoad(pet_type, petTypeLoadedCallback, updatePetStateCallback, updateItemsCallback, updateItemAssetsCallback) }, petTypeNotFoundCallback); } @@ -412,37 +425,42 @@ function Wardrobe() { } } - function sortWornUnworn() { - var unworn_item_ids = [], id; - for(var i in outfit.closet_items) { - id = outfit.closet_items[i].id; - if(outfit.closet_items.hasOwnProperty(i)) { + this.getWornAndUnwornItemIds = function () { + if(typeof outfit.worn_and_unworn_item_ids === 'undefined') { + var unworn_item_ids = [], id; + for(var i = 0; i < closet_item_ids.length; i++) { + id = closet_item_ids[i]; if($.inArray(id, worn_item_ids) === -1) { unworn_item_ids.push(id); } } + outfit.worn_and_unworn_item_ids = {worn: worn_item_ids, unworn: unworn_item_ids}; } - return {worn_item_ids: worn_item_ids, unworn_item_ids: unworn_item_ids}; + return outfit.worn_and_unworn_item_ids; } this.clone = function () { - var outfit_data = { - color_id: outfit.color_id, - id: outfit.id, - name: outfit.name, - species_id: outfit.species_id, - starred: outfit.starred, - pet_state_id: outfit.pet_state_id, - }; - if(typeof outfit.worn_and_unworn_item_ids !== 'undefined') { - outfit_data.worn_and_unworn_item_ids = { - worn: outfit.worn_and_unworn_item_ids.worn.slice(0), - unworn: outfit.worn_and_unworn_item_ids.unworn.slice(0) - } - } else { - outfit_data.worn_and_unworn_item_ids = sortWornUnworn(); - } - return new Outfit(outfit_data); + var new_outfit = new Outfit; + new_outfit.cloneAttributesFrom(outfit); + new_outfit.id = outfit.id; + new_outfit.name = outfit.name; + new_outfit.starred = outfit.starred; + return new_outfit; + } + + this.cloneAttributesFrom = function (base_outfit) { + var base_ids = base_outfit.getWornAndUnwornItemIds(), + new_ids = {}; + outfit.color_id = base_outfit.color_id + outfit.species_id = base_outfit.species_id; + outfit.pet_state_id = base_outfit.getPetStateId(); + outfit.pet_state = base_outfit.pet_state; + outfit.pet_type = base_outfit.pet_type; + outfit.closet_items = base_outfit.closet_items.slice(0); + outfit.worn_items = base_outfit.worn_items.slice(0); + new_ids.worn = base_ids.worn.slice(0); + new_ids.unworn = base_ids.unworn.slice(0); + outfit.setWornAndUnwornItemIds(new_ids); } this.destroy = function (success) { @@ -455,9 +473,11 @@ function Wardrobe() { } this.create = function (success, error) { - var outfit_data = sortWornUnworn(); + var outfit_data = {}, sorted = outfit.getWornAndUnwornItemIds(); outfit_data.name = outfit.name; outfit_data.starred = outfit.starred; + outfit_data.worn_item_ids = sorted.worn; + outfit_data.unworn_item_ids = sorted.unworn; if(outfit.pet_state) outfit_data.pet_state_id = outfit.pet_state.id; $.ajax({ url: '/outfits', @@ -466,6 +486,7 @@ function Wardrobe() { success: function (data) { new_record = false; outfit.id = data; + Outfit.cache[data] = outfit; success(outfit); }, error: function (xhr) { @@ -490,19 +511,35 @@ function Wardrobe() { } } - Outfit.forCurrentUserCache = {}; + Outfit.cache = {}; + + Outfit.find = function (id, callback) { + if(typeof Outfit.cache[id] !== 'undefined') { + callback(Outfit.cache[id]); + } else { + $.ajax({ + url: '/outfits/' + id + '.json', + success: function (data) { + var outfit = new Outfit(data); + Outfit.cache[id] = outfit; + callback(outfit); + }, + error: function () { + callback(null); + } + }); + } + } Outfit.loadForCurrentUser = function (success) { var outfits = []; $.getJSON('/users/current-user/outfits.json', function (data) { var outfit_data, outfit, i; - for(i in data) { - if(data.hasOwnProperty(i)) { - outfit_data = data[i]; - outfit = new Outfit(outfit_data); - outfits.push(outfit); - Outfit.forCurrentUserCache[outfit_data.id] = outfit; - } + for(var i = 0; i < data.length; i++) { + outfit_data = data[i]; + outfit = new Outfit(outfit_data); + outfits.push(outfit); + Outfit.cache[outfit_data.id] = outfit; } success(outfits); }); @@ -689,6 +726,11 @@ function Wardrobe() { this.in_transaction = false; + function setOutfitIdentity(new_outfit) { + new_outfit.cloneAttributesFrom(outfit); + outfit = new_outfit; + } + this.closetItem = function (item) { outfit.closetItem( item, @@ -700,6 +742,10 @@ function Wardrobe() { return outfit.closet_items; } + this.getOutfit = function () { + return outfit; + } + this.getPetType = function () { return outfit.pet_type; } @@ -719,15 +765,19 @@ function Wardrobe() { controller.setPetStateById(outfit.pet_state_id); controller.setClosetItemsByIds(outfit.getClosetItemIds()); controller.setWornItemsByIds(outfit.getWornItemIds()); - this.in_transaction = false; controller.events.trigger('setOutfit', outfit); + this.in_transaction = false; + controller.events.trigger('loadOutfit', outfit); } this.save = function (starred, name) { outfit.starred = starred; outfit.name = name; outfit.create( - controller.event('saveSuccess'), + function (outfit) { + controller.events.trigger('saveSuccess', outfit); + controller.events.trigger('setOutfit', outfit); + }, controller.event('saveFailure') ); } @@ -739,6 +789,25 @@ function Wardrobe() { ); } + this.setId = function (outfit_id) { + // Note that this does not load the outfit, but only sets the ID of the + // outfit we're supposedly working with. This allows the hash to contain + // the outfit ID while still allowing us to change as we go + if(outfit_id) { + Outfit.find(outfit_id, function (new_outfit) { + if(new_outfit) { + setOutfitIdentity(new_outfit); + controller.events.trigger('setOutfit', outfit); + } else { + controller.events.trigger('outfitNotFound', outfit); + } + }); + } else { + setOutfitIdentity(new Outfit); + controller.events.trigger('setOutfit', outfit); + } + } + this.setPetStateById = function (pet_state_id) { outfit.setPetStateById(pet_state_id, controller.event('updatePetState')); } diff --git a/public/stylesheets/compiled/screen.css b/public/stylesheets/compiled/screen.css index 005e5107..457a28ae 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 101, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 104, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-toolbar { margin-bottom: 0.5em; text-align: left; } -/* line 104, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 107, ../../../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 107, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 110, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-info form { display: inline; } -/* line 110, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 113, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form ul { list-style: none; } -/* line 112, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 115, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form ul, body.outfits-edit #pet-state-form ul li { display: inline; } -/* line 114, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 117, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form input { display: none; } -/* line 116, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 119, ../../../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 119, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 122, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form li.selected label { background: #0b61a4 url(/images/alert-overlay.png) repeat-x; } @@ -831,15 +831,15 @@ body.outfits-edit #pet-state-form li.selected label { body.outfits-edit #pet-state-form li.selected label:hover { background-color: #005093; } -/* line 121, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 124, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #pet-state-form.hidden { visibility: hidden; } -/* line 123, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 126, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-outfit-wrapper { float: right; } -/* line 125, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 128, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-outfit-wrapper button { background: #ff5c00 url(/images/alert-overlay.png) repeat-x; display: none; @@ -848,11 +848,11 @@ body.outfits-edit #save-outfit-wrapper button { body.outfits-edit #save-outfit-wrapper button:hover { background-color: #ee4b00; } -/* line 128, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 131, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview { clear: both; } -/* line 130, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 133, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-swf { float: left; height: 400px; @@ -860,7 +860,7 @@ body.outfits-edit #preview-swf { position: relative; width: 400px; } -/* line 136, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 139, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-swf-overlay { -moz-opacity: 0; -webkit-opacity: 0; @@ -873,7 +873,7 @@ body.outfits-edit #preview-swf-overlay { top: 0; width: 100%; } -/* line 144, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 147, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar { float: left; height: 400px; @@ -881,64 +881,64 @@ body.outfits-edit #preview-sidebar { margin-bottom: 1em; width: 380px; } -/* line 151, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 154, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-outfits #preview-closet { display: none; } -/* line 153, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 156, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-outfits #preview-outfits { display: block; } -/* line 155, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 158, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-saving-outfit { height: auto; max-height: 100%; } -/* line 158, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 161, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-saving-outfit #preview-closet { display: none; } -/* line 160, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 163, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar.viewing-saving-outfit #preview-saving-outfit { display: block; } -/* line 163, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 166, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet h2 { margin: 0; } -/* line 165, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 168, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object { background: #eeffee; } -/* line 167, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 170, ../../../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 169, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 172, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object.worn { background: transparent; } -/* line 171, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 174, ../../../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 173, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 176, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object.no-assets { background: #fbe3e4; color: #8a1f11; padding-bottom: 1.25em; } -/* line 177, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 180, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-closet .object.no-assets .no-assets-message { display: block; } -/* line 179, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 182, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .no-assets-message { background: #f3dbdc; bottom: 0; @@ -950,7 +950,7 @@ body.outfits-edit .no-assets-message { position: absolute; width: 100%; } -/* line 189, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 192, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #no-assets-full-message { -moz-border-radius: 5px; -webkit-border-radius: 5px; @@ -964,12 +964,12 @@ body.outfits-edit #no-assets-full-message { top: -9999px; width: 30em; } -/* line 200, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 203, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form { clear: both; text-align: left; } -/* line 203, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 206, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form h2 { display: -moz-inline-box; -moz-box-orient: vertical; @@ -979,7 +979,7 @@ body.outfits-edit #preview-search-form h2 { *vertical-align: auto; margin: 0 1em 0 0; } -/* line 206, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 209, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form input { display: -moz-inline-box; -moz-box-orient: vertical; @@ -988,7 +988,7 @@ body.outfits-edit #preview-search-form input { *display: inline; *vertical-align: auto; } -/* line 208, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 211, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-pagination { display: -moz-inline-box; -moz-box-orient: vertical; @@ -998,53 +998,53 @@ body.outfits-edit #preview-search-form-pagination { *vertical-align: auto; margin-left: 2em; } -/* line 211, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 214, ../../../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 213, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 216, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-pagination .current { font-weight: bold; } -/* line 215, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 218, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-clear { display: none; font-size: 87.5%; margin-left: 2em; } -/* line 219, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 222, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-loading { display: none; font-size: 75%; font-style: italic; margin-left: 2em; } -/* line 225, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 228, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-no-results { display: none; } -/* line 227, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 230, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-search-form-help { font-size: 87.5%; margin-left: 2em; } -/* line 230, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 233, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .search-helper { font-family: inherit; } -/* line 232, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 235, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .possible-error { display: none; } -/* line 235, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 238, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #fullscreen-copyright { display: none; } -/* line 237, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 240, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen { height: 100%; } -/* line 240, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 243, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #container { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; @@ -1057,19 +1057,19 @@ body.outfits-edit.fullscreen #container { position: relative; width: 80%; } -/* line 248, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 251, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen h1 { display: none; } -/* line 250, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 253, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #short-url-response { position: static; } -/* line 252, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 255, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview { width: 100%; } -/* line 254, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 257, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-sidebar { -moz-border-radius: 10px; -webkit-border-radius: 10px; @@ -1081,21 +1081,21 @@ body.outfits-edit.fullscreen #preview-sidebar { position: relative; width: 400px; } -/* line 263, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 266, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-sidebar > div { margin-left: 24px; margin-right: 24px; } -/* line 267, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 270, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-sidebar > div h2 { margin-bottom: 0.25em; } -/* line 269, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 272, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-sidebar.viewing-saving-outfit { height: auto; max-height: 100%; } -/* line 272, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 275, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-search-form { bottom: 1em; left: 0; @@ -1104,7 +1104,7 @@ body.outfits-edit.fullscreen #preview-search-form { position: absolute; width: 100%; } -/* line 280, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 283, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #preview-search-form-help div { display: -moz-inline-box; -moz-box-orient: vertical; @@ -1114,27 +1114,27 @@ body.outfits-edit.fullscreen #preview-search-form-help div { *vertical-align: auto; width: 48%; } -/* line 283, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 286, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #footer { bottom: 0; left: 0; position: absolute; width: 100%; } -/* line 288, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 291, ../../../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 290, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 293, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.fullscreen #footer ul { margin-right: 2em; } -/* line 293, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 296, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object { padding: 6px; position: relative; } -/* line 296, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 299, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object ul { display: none; left: 0; @@ -1142,11 +1142,11 @@ body.outfits-edit .object ul { position: absolute; top: 0; } -/* line 302, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 305, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object ul li { margin-bottom: 0.25em; } -/* line 304, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 307, ../../../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; @@ -1187,11 +1187,11 @@ body.outfits-edit .object ul li a:active { body.outfits-edit .object ul li a:hover { background-color: #999999; } -/* line 310, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 313, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object:hover ul, body.outfits-edit .object:hover .object-info { display: block; } -/* line 317, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 320, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .nc-icon { background: url(/images/nc.png) no-repeat; height: 16px; @@ -1201,14 +1201,14 @@ body.outfits-edit .nc-icon { top: 64px; width: 16px; } -/* line 325, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 328, ../../../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 328, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 331, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object-info { -moz-border-radius: 12px; -webkit-border-radius: 12px; @@ -1225,30 +1225,30 @@ body.outfits-edit .object-info { top: 0; width: 16px; } -/* line 339, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 342, ../../../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 345, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 348, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .object-info:hover { -moz-opacity: 1; -webkit-opacity: 1; -o-opacity: 1; -khtml-opacity: 1; } -/* line 348, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 351, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits { display: none; text-align: left; } -/* line 351, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 354, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits h3 { margin-bottom: 0.5em; } -/* line 353, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 356, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul { background: url(/images/loading.gif) no-repeat center top; display: block; @@ -1257,9 +1257,9 @@ body.outfits-edit #preview-outfits > ul { margin-bottom: 1em; min-height: 16px; } -/* line 360, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 363, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li { - margin-bottom: 0.5em; + padding: 0.25em 0; } /* line 29, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li img { @@ -1351,11 +1351,12 @@ body.outfits-edit #preview-outfits > ul > li .outfit-url { -webkit-opacity: 0.5; -o-opacity: 0.5; -khtml-opacity: 0.5; + background: transparent; border-color: white; font-size: 75%; width: 284px; } -/* line 79, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 80, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-url:hover { -moz-opacity: 1; -webkit-opacity: 1; @@ -1363,64 +1364,68 @@ body.outfits-edit #preview-outfits > ul > li .outfit-url:hover { -khtml-opacity: 1; border-color: #cceecc; } -/* line 82, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 83, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-delete-confirmation { display: none; font-size: 75%; } -/* line 85, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 86, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-delete-confirmation span { color: red; } -/* line 87, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 88, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li .outfit-delete-confirmation a { margin: 0 0.25em; } /* line 90, ../../../app/stylesheets/outfits/_edit.sass */ +body.outfits-edit #preview-outfits > ul > li.active { + background: #eeffee; +} +/* line 93, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.confirming-deletion .outfit-delete { visibility: hidden; } -/* line 92, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 95, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.confirming-deletion .outfit-url { display: none; } -/* line 94, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 97, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.confirming-deletion .outfit-delete-confirmation { display: block; } -/* line 97, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 100, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul > li.starred .outfit-star { background-image: url(/images/star.png); } -/* line 362, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 365, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-outfits > ul.loaded { background: transparent; } -/* line 365, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 368, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .preview-sidebar-nav { float: right; font-size: 85%; margin-top: 1em; } -/* line 370, ../../../app/stylesheets/outfits/_edit.sass */ -body.outfits-edit #save-success, body.outfits-edit #save-error { +/* line 373, ../../../app/stylesheets/outfits/_edit.sass */ +body.outfits-edit #save-success, body.outfits-edit #save-error, body.outfits-edit #outfit-not-found { display: none; margin-top: 1em; text-align: center; } -/* line 375, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 378, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #save-success { background: #e6efc2; border: 1px solid #c6d880; color: #264409; } -/* line 378, ../../../app/stylesheets/outfits/_edit.sass */ -body.outfits-edit #save-error { +/* line 381, ../../../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 381, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 384, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #userbar-message { -moz-opacity: 0.5; -webkit-opacity: 0.5; @@ -1428,9 +1433,9 @@ body.outfits-edit #userbar-message { -khtml-opacity: 0.5; display: none; } -/* line 385, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 388, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit { - margin-bottom: 0.5em; + padding: 0.25em 0; display: none; } /* line 29, ../../../app/stylesheets/outfits/_edit.sass */ @@ -1523,11 +1528,12 @@ body.outfits-edit #new-outfit .outfit-url { -webkit-opacity: 0.5; -o-opacity: 0.5; -khtml-opacity: 0.5; + background: transparent; border-color: white; font-size: 75%; width: 284px; } -/* line 79, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 80, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-url:hover { -moz-opacity: 1; -webkit-opacity: 1; @@ -1535,62 +1541,66 @@ body.outfits-edit #new-outfit .outfit-url:hover { -khtml-opacity: 1; border-color: #cceecc; } -/* line 82, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 83, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-delete-confirmation { display: none; font-size: 75%; } -/* line 85, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 86, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-delete-confirmation span { color: red; } -/* line 87, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 88, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-delete-confirmation a { margin: 0 0.25em; } /* line 90, ../../../app/stylesheets/outfits/_edit.sass */ +body.outfits-edit #new-outfit.active { + background: #eeffee; +} +/* line 93, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.confirming-deletion .outfit-delete { visibility: hidden; } -/* line 92, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 95, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.confirming-deletion .outfit-url { display: none; } -/* line 94, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 97, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.confirming-deletion .outfit-delete-confirmation { display: block; } -/* line 97, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 100, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit.starred .outfit-star { background-image: url(/images/star.png); } -/* line 388, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 391, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit h4 { display: inline; } -/* line 390, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 393, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit h4:hover { text-decoration: none; } -/* line 392, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 395, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit .outfit-star { margin-top: 0.5em; } -/* line 395, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 398, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #new-outfit-name { font: inherit; line-height: 1; } -/* line 399, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 402, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-saving-outfit { display: none; padding-bottom: 1em; } -/* line 403, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 406, ../../../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 406, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 409, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit .control-overlay { height: 100%; left: 0; @@ -1599,19 +1609,19 @@ body.outfits-edit .control-overlay { width: 100%; z-index: 5; } -/* line 414, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 417, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit #preview-sidebar-nav-outfits, body.outfits-edit #save-outfit-signed-in { display: none; } -/* line 418, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 421, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-signed-in #preview-sidebar-nav-outfits { display: block; } -/* line 420, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 423, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-signed-in #save-outfit { display: inline-block; } -/* line 424, ../../../app/stylesheets/outfits/_edit.sass */ +/* line 427, ../../../app/stylesheets/outfits/_edit.sass */ body.outfits-edit.user-not-signed-in #save-outfit-not-signed-in { display: inline-block; }