wardrobe has an 'active outfit' - phew! cloning is hard

This commit is contained in:
Emi Matchu 2010-11-12 20:58:28 -05:00
parent eceecdc38a
commit e6b1465355
7 changed files with 289 additions and 158 deletions

View file

@ -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

View file

@ -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

View file

@ -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'}
<li id="outfit-${id}"{{if starred}} class="starred"{{/if}}>
<li class="outfit-${id}{{if starred}} starred{{/if}}">
%header
%button.outfit-delete &times;
.outfit-star

View file

@ -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'

View file

@ -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) {

View file

@ -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'));
}

View file

@ -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;
}