working home page

This commit is contained in:
Emi Matchu 2010-11-05 18:45:05 -04:00
parent defafa0eb6
commit c8acdc4e8d
29 changed files with 1679 additions and 146 deletions

View file

@ -1,6 +1,8 @@
class ItemsController < ApplicationController class ItemsController < ApplicationController
before_filter :set_query before_filter :set_query
layout 'items'
def index def index
if params.has_key?(:q) if params.has_key?(:q)
begin begin
@ -18,7 +20,7 @@ class ItemsController < ApplicationController
end end
rescue rescue
respond_to do |format| respond_to do |format|
format.html { flash.now[:error] = $!.message } format.html { flash.now[:alert] = $!.message }
format.js { render :json => {:error => $!.message}, :callback => params[:callback] } format.js { render :json => {:error => $!.message}, :callback => params[:callback] }
end end
end end

View file

@ -2,4 +2,10 @@ class OutfitsController < ApplicationController
def edit def edit
render :layout => false render :layout => false
end end
def new
@colors = Color.all
@species = Species.all
@top_contributors = User.top_contributors.limit(3)
end
end end

View file

@ -1,7 +1,28 @@
class PetsController < ApplicationController class PetsController < ApplicationController
def show rescue_from Pet::PetNotFound, :with => :pet_not_found
@pet = Pet.load(params[:id])
DESTINATIONS = {
'needed_items' => '?',
'root' => '#',
'wardrobe' => '#'
}
def load
raise Pet::PetNotFound unless params[:name]
@pet = Pet.load(params[:name])
@pet.save @pet.save
redirect_to wardrobe_path(:anchor => @pet.wardrobe_query) destination = params[:destination]
destination = 'root' unless DESTINATIONS[destination]
query_joiner = DESTINATIONS[destination]
path = send("#{destination}_path") + query_joiner + @pet.wardrobe_query
redirect_to path
end
protected
def pet_not_found
path = params[:origin] || root_path
path += "?name=#{params[:name]}"
redirect_to path, :alert => 'Could not find any pet by that name. Did you spell it correctly?'
end end
end end

View file

@ -7,11 +7,29 @@ module ApplicationHelper
).to_s ).to_s
end end
def flashes def body_class
flash.inject('') do |html, pair| "#{params[:controller]} #{params[:controller]}-#{params[:action]}"
key, value = pair
content_tag 'p', value, :class => key
end end
def flashes
raw(flash.inject('') do |html, pair|
key, value = pair
html + content_tag('p', value, :class => key)
end)
end
JAVASCRIPT_LIBRARIES = {
:addthis => 'http://s7.addthis.com/js/250/addthis_widget.js#username=openneo',
:bitly => 'http://bit.ly/javascript-api.js?version=latest&login=openneo&apiKey=R_4d0438829b7a99860de1d3edf55d8dc8',
:html5 => 'http://html5shim.googlecode.com/svn/trunk/html5.js',
:jquery => 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js',
:swfobject => 'http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js'
}
def include_javascript_libraries(*library_names)
raw(library_names.inject('') do |html, name|
html + javascript_include_tag(JAVASCRIPT_LIBRARIES[name])
end)
end end
def login_path_with_return_to def login_path_with_return_to

View file

@ -0,0 +1,18 @@
module OutfitsHelper
def destination_tag(value)
hidden_field_tag 'destination', value, :id => nil
end
def origin_tag(value)
hidden_field_tag 'origin', value, :id => nil
end
def pet_attribute_select(name, collection, value=nil)
select_tag name,
options_from_collection_for_select(collection, :id, :human_name, value)
end
def pet_name_tag
text_field_tag 'name', nil, :spellcheck => false, :id => nil
end
end

View file

@ -2,10 +2,14 @@ class PetAttribute < StaticResource
def as_json(options={}) def as_json(options={})
{ {
:id => self.id, :id => self.id,
:name => self.name.capitalize :name => self.human_name
} }
end end
def human_name
self.name.capitalize
end
def self.find_by_name(name) def self.find_by_name(name)
@objects_by_name[name.downcase] @objects_by_name[name.downcase]
end end

View file

@ -1,6 +1,8 @@
class User < ActiveRecord::Base class User < ActiveRecord::Base
DefaultAuthServerId = 1 DefaultAuthServerId = 1
scope :top_contributors, order('points DESC')
def self.find_or_create_from_remote_auth_data(user_data) def self.find_or_create_from_remote_auth_data(user_data)
user = find_or_initialize_by_remote_id_and_auth_server_id( user = find_or_initialize_by_remote_id_and_auth_server_id(
user_data['id'], user_data['id'],

View file

@ -1,21 +0,0 @@
$text-color: #004400
$link-color: $text-color + #222222
$module-bg-color: #eeffee
$module-border-color: #006600
$input-border-color: #cceecc
$marked-button-color: #0b61a4
$notice-color: #264409
$notice-bg-color: #e6efc2
$notice-border-color: #c6d880
$error-color: #8a1f11
$error-bg-color: #fbe3e4
$error-border-color: #fbc2c4
$header-font: Delicious, Helvetica, Arial, Verdana, sans-serif
$body-font: "Droid Serif", Georgia, "Times New Roman", Times, serif
$object-img-size: 80px
$object-width: 100px
$object-padding: 6px
$nc-icon-size: 16px

View file

@ -0,0 +1,19 @@
body.items
text-align: center
input[type=text]
font-size: 125%
width: 15em
h1
margin-bottom: 1em
img
height: 80px
margin-bottom: -0.5em
width: 80px
a
text-decoration: none
span
text-decoration: underline
&:hover span
text-decoration: none

View file

@ -0,0 +1,239 @@
/* Reset
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b,
u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table,
caption, tbody, tfoot, thead, tr, th, td
margin: 0
padding: 0
border: 0
outline: 0
font-size: 100%
vertical-align: baseline
background: transparent
/* Typography
html, body
height: 100%
body
color: $text-color
font:
family: $main-font
size: 90%
line-height: 1.5
a
color: $link-color
p
font-family: $text-font
input, button, select
font:
family: inherit
size: 100%
p
margin-bottom: 1em
h1, h2, h3
+header-text
h1
font-size: 3em
line-height: 1
margin-bottom: 0.50em
h2
font-size: 2em
margin-bottom: 0.75em
h3
font-size: 1.5em
line-height: 1
margin-bottom: 1.00em
.inline-image
margin-right: 1em
vertical-align: middle
/* Main
$container_width: 800px
#container
margin: 1em auto
padding-top: 3em
position: relative
width: $container_width
input, button, select, label
cursor: pointer
input[type=text], input[type=password], input[type=search], select
+border-radius(3px)
background: #fff
border: 1px solid $input-border-color
color: $text-color + #444444
padding: .25em
&:focus, &:active
color: inherit
a.button, input[type=submit], button
+awesome-button
&.loud
+loud-awesome-button
a.button
+arrowed-awesome-button
ul.buttons
margin-bottom: 1em
li
list-style: none
margin: 0 .5em
&, form
display: inline
#footer
clear: both
font-size: 75%
margin-bottom: 1em
padding-top: 2em
text-align: center
ul, div
display: inline
margin: 0 1em
li, div ul
display: inline
margin: 0 .5em
.success, .alert, .warning
margin-bottom: 1em
padding: .25em .5em
text-align: center
.success
background: $notice-bg-color
border: 1px solid $notice-border-color
color: $notice-color
.alert
background: $error-bg-color
border: 1px solid $error-border-color
color: $error-color
.warning
background: $warning-bg-color
border: 1px solid $warning-border-color
color: $warning-color
#userbar
+header-text
position: absolute
right: 0
top: 0
> *
display: inline
margin: 0 .25em
#userbar-log-in
text-decoration: none
img
margin:
bottom: -4px
right: .25em
span
text-decoration: underline
&:hover span
text-decoration: none
.object
+inline-block
padding: .5em
position: relative
text-align: center
vertical-align: top
width: $object-width
a
text-decoration: none
img
+opacity(0.75)
&:hover img
+opacity(1)
img
display: block
height: $object-img-size
margin: 0 auto
width: $object-img-size
dt
font-weight: bold
dd
margin: 0 0 1.5em 1em
#home-link
+header-text
font:
size: 175%
weight: bold
left: 0
line-height: 1
padding: .25em
position: absolute
top: 0
&:hover
background: $module-bg-color
text-decoration: none
span:before
content: "<< "
.pagination
a, span
margin: 0 .5em
.current
font-weight: bold
/* Fonts
/* A font by Jos Buivenga (exljbris) -> www.exljbris.nl
@font-face
font-family: Delicious
src: url("/assets/fonts/Delicious-Roman.otf")
@font-face
font-family: Delicious
font-weight: bold
src: url("/assets/fonts/Delicious-Bold.otf")
@font-face
font-family: Delicious
font-style: italic
src: url("/assets/fonts/Delicious-Italic.otf")
@font-face
font-family: 'Droid Serif'
font-style: normal
font-weight: normal
src: local("Droid Serif"), url("http://themes.googleusercontent.com/font?kit=70P0G8gxVDIV6F9om0DsKg") format("truetype")
@font-face
font-family: 'Droid Serif'
font-style: normal
font-weight: bold
src: local("Droid Serif"), url("http://themes.googleusercontent.com/font?kit=QQt14e8dY39u-eYBZmppwf5Jgr8ufe5A6KahQF76Xmg") format("truetype")
@font-face
font-family: 'Droid Sans'
font-style: normal
font-weight: normal
src: local("Droid Sans"), url("http://themes.googleusercontent.com/font?kit=POVDFY-UUf0WFR9DIMCU8g") format("truetype")

View file

@ -48,7 +48,7 @@ body.items-show
width: 300px width: 300px
#item-zones #item-zones
font: font:
family: $body-font family: $text-font
size: 85% size: 85%
p:first-child p:first-child
margin-bottom: .25em margin-bottom: .25em

View file

@ -0,0 +1,145 @@
body.outfits-new
#outfit-forms
+clearfix
+module
margin-bottom: 3em
position: relative
h1
margin-bottom: 0
h2
font:
size: 150%
style: italic
text-indent: 1em
#pet-preview
float: left
height: 300px
margin-right: 2em
position: relative
width: 300px
img
height: 100%
width: 100%
&.loading img
+opacity(0.5)
&.hidden img
display: none
&.loaded
cursor: pointer
span
background: rgb(128, 128, 128)
background: rgba(0, 0, 0, 0.5)
bottom: 0
color: #fff
padding: .25em .5em
position: absolute
right: 0
&:empty
display: none
fieldset
position: relative
left: 1em
legend
margin-left: -1em
#load-pet-to-wardrobe
font-size: 175%
margin:
bottom: 1em
top: 2em
input
font-size: 67%
padding: .5em
width: 10em
button
+loud-awesome-button
font-size: 67%
#description, #top-contributors
float: left
#description
margin-right: 2%
width: 64%
#top-contributors
border: 1px solid $input-border-color
margin-top: 1em
padding: 1%
width: 30%
ol
margin-left: 2em
padding-left: 1em
> a
font-size: 80%
display: block
text-align: right
#how-can-i-help, #i-found-something
+module
float: left
padding: 1%
width: 46%
h2
font-style: italic
input, button
font-size: 115%
input[type=text]
border-color: $module-border-color
width: 12em
#how-can-i-help
margin-right: 1%
#i-found-something
margin-left: 1%
a
float: right
font-size: 87.5%
margin-top: 1em
$section-count: 3
$section-border-width: 1px
$section-padding: 0.5em
$section-width: 100% / $section-count
// (A - (B-1)*C) / B
#sections
+clearfix
display: table
list-style: none
margin-bottom: 1em
h3
margin-bottom: .25em
li
border-left:
color: $module-border-color
style: solid
width: $section-border-width
display: table-cell
padding: $section-padding
position: relative
width: $section-width
&:first-child
border-left: 0
div
color: $soft-text-color
font-size: 75%
margin-left: 1em
z-index: 2
h4, input
font-size: 116%
h4, input[type=text]
color: inherit
h4 a
background: #ffffc0
img
+opacity(0.75)
float: right
margin-left: .5em
&:hover
+opacity(1)
#read-more
float: right
#tell-the-world
font-size: 87.5%
left: 0
position: absolute
top: 0
img
margin:
bottom: -0.25em
right: .25em
height: 16px
width: 16px

View file

@ -0,0 +1,27 @@
$text-color: #040
$soft-text-color: $text-color + #444
$link-color: $text-color + #222
$module-bg-color: #efe
$module-border-color: #060
$soft-border-color: #ada
$input-border-color: #cec
$marked-button-color: #0b61a4
$notice-color: #264409
$notice-bg-color: #e6efc2
$notice-border-color: #c6d880
$warning-color: #514721
$warning-bg-color: #fff6bf
$warning-border-color: #ffd324
$error-color: #8a1f11
$error-bg-color: #fbe3e4
$error-border-color: #fbc2c4
$header-font: Delicious, Helvetica, Arial, Verdana, sans-serif
$main-font: "Droid Sans", Helvetica, Arial, Verdana, sans-serif
$text-font: "Droid Serif", Georgia, "Times New Roman", Times, serif
$object-img-size: 80px
$object-width: 100px
$object-padding: 6px
$nc-icon-size: 16px

View file

@ -0,0 +1,73 @@
=box-sizing($bs)
$bs: unquote($bs)
+experimental(box-sizing, $bs, -moz, -webkit, not -o, -ms, not -khtml, official)
=clearfix
overflow: hidden
display: inline-block
&
display: block
=border-radius($r)
-moz-border-radius: $r
-webkit-border-radius: $r
=inline-block
display: -moz-inline-box
-moz-box-orient: vertical
display: inline-block
vertical-align: middle
*display: inline
*vertical-align: auto
=opacity($o)
-moz-opacity: $o
-webkit-opacity: $o
-o-opacity: $o
-khtml-opacity: $o
=header-text
font-family: $header-font
=awesome-button-color($c)
background: $c url(/assets/images/alert-overlay.png) repeat-x
&:hover
background-color: $c - #111111
=awesome-button
/* http://www.zurb.com/blog_uploads/0000/0617/buttons-03.html
+border-radius(5px)
+awesome-button-color(#006400)
border: 0
display: inline-block
padding: .5em .75em .45em
color: #fff
text-decoration: none
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5)
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5)
text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25)
border-bottom: 1px solid rgba(0, 0, 0, 0.25)
position: relative
font-weight: bold
line-height: 1
&:hover
color: #fff
&:active
top: 1px
=loud-awesome-button-color
+awesome-button-color(#ff5c00)
=loud-awesome-button
+loud-awesome-button-color
font-size: 125%
padding: 8px 14px 9px
=arrowed-awesome-button
&:after
content: " >>"
=module
background: $module-bg-color
border: 1px solid $module-border-color
padding: 1em

View file

@ -1,36 +1,10 @@
@import compass @import compass
@import clean_constants @import partials/clean/constants
@import partials/clean/mixins
body @import layout
text-align: center
input[type=text]
font-size: 125%
width: 15em
h1
margin-bottom: 1em
img
height: 80px
margin-bottom: -0.5em
width: 80px
a
text-decoration: none
span
text-decoration: underline
&:hover span
text-decoration: none
#userbar-log-in
text-decoration: none
img
margin:
bottom: -4px
right: .25em
span
text-decoration: underline
&:hover span
text-decoration: none
@import items
@import items/index @import items/index
@import items/show @import items/show
@import outfits/new

View file

@ -0,0 +1,55 @@
!!! 5
%html
%head
%title Dress to Impress
= stylesheet_link_tag "compiled/screen"
= javascript_include_tag "http://#{RemoteImpressHost}/assets/js/analytics.js"
%body{:class => body_class}
#container
= yield :before_flashes
= flashes
- if content_for? :content
= yield(:content)
- else
= yield
- if content_for? :home_link
= yield :home_link
- else
%a#home-link{:href => root_path}
%span Dress to Impress
#userbar
- if user_signed_in?
== Hey, #{current_user.name}!
== You have #{current_user.points} points.
= link_to 'Log out', logout_path
- else
= link_to login_path_with_return_to, :id => 'userbar-log-in' do
= image_tag auth_server_icon_url
%span Log in
#footer
%ul
%li
%a{:href => "http://openneo.net/", :target => "_blank"} OpenNeo
%li
%a{:href => "http://blog.openneo.net/", :target => "_blank"} Blog
%li
%a{:href => "http://forum.openneo.net/", :target => "_blank"} Forum
%li
%a{:href => "http://github.com/matchu/openneo-impress"} The Source Code
%li
%a{:href => "/terms.html"} Terms of Use
%div
Contact:
%ul
%li
%a{:href => "http://openneo.uservoice.com/forums/40720-dress-to-impress"} Feedback
%li
%a{:href => "mailto:webmaster@openneo.net"} Questions, comments, bug reports
%p
Images &copy; 2000-2010 Neopets, Inc. All Rights Reserved.
Used With Permission
= yield(:javascripts)

View file

@ -1,40 +1,11 @@
!!! 5 - content_for :before_flashes do
%html
%head
%title Infinite Closet
= stylesheet_link_tag "http://#{RemoteImpressHost}/assets/css/clean/layout.css"
= stylesheet_link_tag "compiled/screen"
= javascript_include_tag "http://#{RemoteImpressHost}/assets/js/analytics.js"
%body{:class => params[:action]}
#container
%h1 %h1
= link_to items_path do = link_to items_path do
= image_tag 'http://images.neopets.com/items/mall_floatingneggfaerie.gif' = image_tag 'http://images.neopets.com/items/mall_floatingneggfaerie.gif'
%span Infinite Closet %span Infinite Closet
= flashes - content_for :content do
= form_tag items_path, :method => :get do = form_tag items_path, :method => :get do
= text_field_tag :q, @query = text_field_tag :q, @query
= submit_tag 'Search', :name => nil = submit_tag 'Search', :name => nil
= yield = yield
%a#home-link{:href => "http://#{RemoteImpressHost}"} = render :file => 'layouts/application'
%span Dress to Impress
#userbar
- if user_signed_in?
== Hey, #{current_user.name}!
== You have #{current_user.points} points.
= link_to 'Log out', logout_path
- else
= link_to login_path_with_return_to, :id => 'userbar-log-in' do
= image_tag auth_server_icon_url
%span Log in
#footer
%ul
%li= link_to 'OpenNeo', 'http://www.openneo.net/'
%li= link_to 'Blog', 'http://blog.openneo.net/'
%li= link_to 'The Source Code', 'http://github.com/matchu/openneo-impress'
%li= link_to 'Forum', 'http://forum.openneo.net/'
%li= link_to 'Terms of Use', "http://#{RemoteImpressHost}/terms.html"
%p
Images &copy; 2000-2010 Neopets, Inc. All Rights Reserved.
Used With Permission
= yield(:javascripts)

View file

@ -81,11 +81,8 @@
#no-assets-full-message #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! We haven't seen this item on this body type before. Have you? Submit its name on the home page if you have!
/[if IE] /[if IE]
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> = include_javascript_libraries :html5
%script{:src => "http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js", :type => "text/javascript"} = include_javascript_libraries :jquery, :swfobject, :bitly, :addthis
%script{:src => "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js", :type => "text/javascript"}
%script{:src => "http://bit.ly/javascript-api.js?version=latest&login=openneo&apiKey=R_4d0438829b7a99860de1d3edf55d8dc8", :type => "text/javascript"}
%script{:src => "http://s7.addthis.com/js/250/addthis_widget.js#username=openneo", :type => "text/javascript"}
%script{:src => "http://#{RemoteImpressHost}/assets/timestamped/js/jquery.jgrowl-v1278204174.js", :type => "text/javascript"} %script{:src => "http://#{RemoteImpressHost}/assets/timestamped/js/jquery.jgrowl-v1278204174.js", :type => "text/javascript"}
= include_javascripts :edit_outfit_package = include_javascripts :edit_outfit_package
#userbar #userbar
@ -115,5 +112,5 @@
%li %li
%a{:href => "mailto:webmaster@openneo.net"} Questions, comments, bug reports %a{:href => "mailto:webmaster@openneo.net"} Questions, comments, bug reports
%p %p
Images © 2000-2010 Neopets, Inc. All Rights Reserved. Images &copy; 2000-2010 Neopets, Inc. All Rights Reserved.
Used With Permission Used With Permission

View file

@ -0,0 +1,107 @@
#outfit-forms
#pet-preview
= image_tag 'default_preview.png'
%span
%h1 Dress to Impress
%h2 Neopets wearables made easy!
= form_tag load_pet_path, :id => 'load-pet-to-wardrobe' do
= origin_tag root_path
= destination_tag 'wardrobe'
%fieldset
%legend Enter your pet's name
= pet_name_tag
%button{:type => "submit"}
Plan my outfit!
= form_tag wardrobe_path, :method => 'get', :id => 'start-from-scratch' do
%fieldset
%legend Or start from scratch
= pet_attribute_select 'color', @colors, 8
= pet_attribute_select 'species', @species
%input{:type => "submit", :value => "Go"}
%ul#sections
%li
%a{:href => "http://forum.openneo.net"}
= image_tag 'forum.png'
%h3
%a{:href => "http://forum.openneo.net/"} Forum
%div
%h4 Join our community!
%p
Show off your designs, ask for advice, or play silly forum games
here.
%li
%a{:href => items_path}
= image_tag 'items.png'
%h3
%a{:href => items_path}
Infinite Closet
%div
%h4 Looking for something?
%p
Take a look through our wearables database!
= form_tag items_path, :method => 'get' do
= text_field_tag 'q', '', :placeholder => raw('search items&hellip;'), :type => 'search'
= submit_tag 'search'
%li#blog-preview
%a{:href => "http://blog.openneo.net"}
= image_tag 'blog.png'
%h3
%a{:href => "http://blog.openneo.net/"} OpenNeo Blog
%div
%h4 We'll keep you posted!
%p
Dress to Impress is always improving, and you can always stay in
the loop through our blog.
#description
%h2 Built by you, just for you!
%p
Dress to Impress lets you plan how you want to dress up your Neopets,
before you even go shopping! Whenever you give us a Neopet's name, we
automatically look up what it's wearing and organize the data into
our own wearables database &mdash; a community closet, if you will.
Then you can plan your outfit, mixing and matching various items, so
you can have the best-dressed Neopet in all of Neopia!
%p
To make all this possible, though, we need your help &mdash; and if
you log in at the top, we'll keep track of your
= link_to 'contributions', contributions_path
and award
= link_to 'points', top_contributors_path
so you can show off just how dedicated you really are!
#top-contributors
%h3 Top Contributors
%ol
- @top_contributors.each do |user|
%li
= link_to user.name, user_contributions_path(user)
&mdash;
= user.points
%a{:href => top_contributors_path} see more
= form_tag load_pet_path, :id => 'how-can-i-help' do
= destination_tag 'needed_items'
= origin_tag root_path
%h2 How can I help?
%p
Enter your pet's name, and we'll tell you what items you can help us
model. Thanks so much!
= pet_name_tag
%button{:type => "submit"}
Let's model!
= form_tag load_pet_path, :id => 'i-found-something' do
= origin_tag root_path
%a{:href => bulk_pets_path}
add many pets
%h2 I found something!
%p
Enter the name of the pet you found, and we'll keep a copy of what
it's wearing. Thanks so much!
= pet_name_tag
%button{:type => "submit"}
I pwn!
- content_for :home_link do
%button#tell-the-world.button.addthis_button
%img{:src => "http://s7.addthis.com/static/t00/logo1414.gif"}
Tell the world!
- content_for :javascripts do
= include_javascript_libraries :jquery, :addthis
= include_javascripts :new_outfit_package

View file

@ -4,3 +4,7 @@ javascripts:
edit_outfit_package: edit_outfit_package:
- public/javascripts/wardrobe.js - public/javascripts/wardrobe.js
- public/javascripts/outfits/edit.js - public/javascripts/outfits/edit.js
new_outfit_package:
- public/javascripts/pet_query.js
- public/javascripts/outfits/new.js

View file

@ -1,5 +1,5 @@
OpenneoImpressItems::Application.routes.draw do |map| OpenneoImpressItems::Application.routes.draw do |map|
root :to => 'items#index' root :to => 'outfits#new'
match '/' => 'items#index', :as => :items match '/' => 'items#index', :as => :items
match '/index.js' => 'items#index', :format => :js match '/index.js' => 'items#index', :format => :js
match '/items.json' => 'items#index', :format => :json match '/items.json' => 'items#index', :format => :json
@ -15,13 +15,26 @@ OpenneoImpressItems::Application.routes.draw do |map|
match '/pet_states/:pet_state_id/swf_assets.json' => 'swf_assets#index', :as => :pet_state_swf_assets match '/pet_states/:pet_state_id/swf_assets.json' => 'swf_assets#index', :as => :pet_state_swf_assets
match '/species/:species_id/color/:color_id/pet_type.json' => 'pet_types#show' match '/species/:species_id/color/:color_id/pet_type.json' => 'pet_types#show'
resources :items, :only => [:index] resources :contributions, :only => [:index]
resources :items, :only => [:index] do
collection do
get :needed
end
end
resources :pet_attributes, :only => [:index] resources :pet_attributes, :only => [:index]
resources :pets, :only => [:show]
match '/pets/load' => 'pets#load', :method => :post, :as => :load_pet
match '/pets/bulk' => 'pets#bulk', :as => :bulk_pets
match '/login' => 'sessions#new', :as => :login match '/login' => 'sessions#new', :as => :login
match '/logout' => 'sessions#destroy', :as => :logout match '/logout' => 'sessions#destroy', :as => :logout
match '/users/authorize' => 'sessions#create' match '/users/authorize' => 'sessions#create'
resources :user, :only => [] do
resources :contributions, :only => [:index]
end
match 'users/top-contributors' => 'users#top_contributors', :as => :top_contributors
match 'users/top_contributors' => redirect('/users/top-contributors')
match '/wardrobe' => 'outfits#edit', :as => :wardrobe match '/wardrobe' => 'outfits#edit', :as => :wardrobe
end end

BIN
public/images/blog.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
public/images/forum.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
public/images/items.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

View file

@ -0,0 +1,176 @@
(function () { // don't need to export anything in here
var preview_el = $('#pet-preview'),
img_el = preview_el.find('img'),
response_el = preview_el.find('span'),
name_el = $('#name');
preview_el.click(function () {
name_el.val(Preview.Job.current.name).closest('form').submit();
});
var Preview = {
clear: function () {
if(typeof Preview.Job.fallback != 'undefined') Preview.Job.fallback.setAsCurrent();
},
displayLoading: function () {
preview_el.addClass('loading');
response_el.text('Loading...');
},
notFound: function (str) {
preview_el.addClass('hidden');
response_el.text(str);
},
updateWithName: function () {
var name = name_el.val(), job;
if(name) {
currentName = name;
if(!Preview.Job.current || name != Preview.Job.current.name) {
job = new Preview.Job.Name(name);
job.setAsCurrent();
Preview.displayLoading();
}
} else {
Preview.clear();
}
}
}
$.get('/spotlight_pets.txt', function (data) {
var names = data.split('\n'), i = Math.floor(Math.random()*(names.length-1));
Preview.Job.fallback = new Preview.Job.Name(names[i]);
if(!Preview.Job.current) {
Preview.Job.fallback.setAsCurrent();
}
});
Preview.Job = function (key, base) {
var job = this,
quality = 2;
job.loading = false;
function getImageSrc() {
return petImage(base + '/' + key, quality);
}
function load() {
job.loading = true;
img_el.attr('src', getImageSrc());
}
this.increaseQualityIfPossible = function () {
if(quality == 2) {
quality = 4;
load();
}
}
this.setAsCurrent = function () {
Preview.Job.current = job;
load();
}
}
Preview.Job.Name = function (name) {
this.name = name;
Preview.Job.apply(this, [name, 'cpn']);
}
Preview.Job.Hash = function (hash) {
Preview.Job.apply(this, [hash, 'cp']);
}
$(function () {
var previewWithNameTimeout;
name_el.val(PetQuery.name);
Preview.updateWithName();
name_el.keyup(function () {
if(previewWithNameTimeout) {
clearTimeout(previewWithNameTimeout);
Preview.Job.current.loading = false;
}
previewWithNameTimeout = setTimeout(Preview.updateWithName, 250);
});
img_el.load(function () {
if(Preview.Job.current.loading) {
Preview.Job.loading = false;
Preview.Job.current.increaseQualityIfPossible();
preview_el.removeClass('loading').removeClass('hidden').addClass('loaded');
response_el.text(Preview.Job.current.name);
}
}).error(function () {
if(Preview.Job.current.loading) {
Preview.Job.loading = false;
Preview.notFound('Pet not found.');
}
});
var selectFields = $('#species, #color');
selectFields.change(function () {
var type = {}, name = [];
selectFields.each(function () {
var el = $(this), selectedEl = el.children(':selected');
type[el.attr('id')] = selectedEl.val();
name.push(selectedEl.text());
});
name = name.join(' ');
Preview.displayLoading();
$.ajax({
url: '/pet_types.json',
data: {
'for': 'image',
'species_id': type.species,
'color_id': type.color
},
dataType: 'json',
success: function (data) {
var job;
if(data) {
job = new Preview.Job.Hash(data.image_hash);
job.name = name;
job.setAsCurrent();
} else {
Preview.notFound("We haven't seen a " + name + ". Have you?");
}
},
error: function () {
Preview.notFound("Error fetching preview. Try again?");
}
});
});
$.getJSON('http://blog.openneo.net/api/read/json?callback=?', function (data) {
var post = data.posts[0], el = $('#blog-preview'),
url = post['url-with-slug'], header = "Here's the latest!", body = '',
truncate_body_at = 100, image;
if(post.type == 'regular') {
header = post['regular-title'];
body = post['regular-body'];
} else if(post.type == 'link') {
header = post['link-text'];
body = post['link-description'];
} else if(post.type == 'photo') {
body = post['photo-caption'];
image = post['photo-url-75'];
}
body = body.replace(/(<\/?[\S][^>]*>)/gi, '');
if(body.length > truncate_body_at) {
body = body.substring(0, truncate_body_at);
body = body.replace(/\s+\w+$/, '');
body += '&hellip;';
}
el.find('h4').text(header).wrapInner($('<a/>', {href: url}));
el.find('p').html(body);
$('<a/>', {'id': 'read-more', href: url, text: 'read more'}).appendTo(el.find('div'));
if(image) {
el.find('img').attr('src', image).parent().attr('href', url);
}
el.children('div').hide().fadeIn('slow');
});
});
})();

View file

@ -0,0 +1,29 @@
function petImage(id, size) {
return 'http://pets.neopets.com/' + id + '/1/' + size + '.png';
}
var PetQuery = {},
query_string = document.location.hash || document.location.search;
$.each(query_string.substr(1).split('&'), function () {
var split_piece = this.split('=');
if(split_piece.length == 2) {
PetQuery[split_piece[0]] = split_piece[1];
}
});
if(PetQuery.name) {
if(PetQuery.species && PetQuery.color) {
var notice = $('<div></div>', {
'class': 'success',
'html': "Thanks for showing us <strong>" + PetQuery.name + "</strong>! " +
"Keep up the good work!"
}),
image = $('<img/>', {
'class': 'inline-image',
'src': petImage('cpn/' + PetQuery.name, 1)
});
image.prependTo(notice);
notice.prependTo('#container');
}
}

58
public/spotlight_pets.txt Normal file
View file

@ -0,0 +1,58 @@
Tanymu
Yenivie
__Shippou_chan__
Veii
Mexitl
Dizum
estermineishon
TavishDileas
Mattid
Oraille
Tommy_XBoy
Kapurnia
Dakota6252
hlos
JCMK0589
xorol
bramley
Okebi
Viqc
Kithiarah
Kuschelix
Hiawana
Aramaoi
Amtal
D3SFrosch
Xhrounis
kim_pik
Manshierah
0Max_Sombra0
Venus
Grymma
DivaBlu
Skaech
__FIRE_WING_2001
Jieane
ambersands
Milkstick
cutecumberrr
Frost_Pelt
lauren_ashley09
Melina_Rodriges
sara_626_778
Marrie_MyCuteKacheek
cauchy_xvii
Kahq
Xaeladora
darck_faerie
Sweet_Seraph
Kauboii_
LunaScarlett
Vuranje
Aubepines
rubythexweetok4
suzusuzu0423
Tzaviare
Delphinid_Redux
CrunchCrunch979_2005
Lennythebluedumdum

View file

@ -1,55 +1,404 @@
/* line 4, ../../../app/stylesheets/screen.sass */ /* Reset */
/* line 3, ../../../app/stylesheets/_layout.sass */
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b,
u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table,
caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
/* Typography */
/* line 18, ../../../app/stylesheets/_layout.sass */
html, body {
height: 100%;
}
/* line 21, ../../../app/stylesheets/_layout.sass */
body { body {
color: #004400;
font-family: "Droid Sans", Helvetica, Arial, Verdana, sans-serif;
font-size: 90%;
line-height: 1.5;
}
/* line 28, ../../../app/stylesheets/_layout.sass */
a {
color: #226622;
}
/* line 31, ../../../app/stylesheets/_layout.sass */
p {
font-family: "Droid Serif", Georgia, "Times New Roman", Times, serif;
}
/* line 34, ../../../app/stylesheets/_layout.sass */
input, button, select {
font-family: inherit;
font-size: 100%;
}
/* line 39, ../../../app/stylesheets/_layout.sass */
p {
margin-bottom: 1em;
}
/* line 42, ../../../app/stylesheets/_layout.sass */
h1, h2, h3 {
font-family: Delicious, Helvetica, Arial, Verdana, sans-serif;
}
/* line 45, ../../../app/stylesheets/_layout.sass */
h1 {
font-size: 3em;
line-height: 1;
margin-bottom: 0.5em;
}
/* line 50, ../../../app/stylesheets/_layout.sass */
h2 {
font-size: 2em;
margin-bottom: 0.75em;
}
/* line 54, ../../../app/stylesheets/_layout.sass */
h3 {
font-size: 1.5em;
line-height: 1;
margin-bottom: 1em;
}
/* line 59, ../../../app/stylesheets/_layout.sass */
.inline-image {
margin-right: 1em;
vertical-align: middle;
}
/* Main */
/* line 67, ../../../app/stylesheets/_layout.sass */
#container {
margin: 1em auto;
padding-top: 3em;
position: relative;
width: 800px;
}
/* line 73, ../../../app/stylesheets/_layout.sass */
input, button, select, label {
cursor: pointer;
}
/* line 76, ../../../app/stylesheets/_layout.sass */
input[type=text], input[type=password], input[type=search], select {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
background: white;
border: 1px solid #cceecc;
color: #448844;
padding: 0.25em;
}
/* line 82, ../../../app/stylesheets/_layout.sass */
input[type=text]:focus, input[type=text]:active, input[type=password]:focus, input[type=password]:active, input[type=search]:focus, input[type=search]:active, select:focus, select:active {
color: inherit;
}
/* line 85, ../../../app/stylesheets/_layout.sass */
a.button, input[type=submit], button {
/* http://www.zurb.com/blog_uploads/0000/0617/buttons-03.html */
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
background: #006400 url(/assets/images/alert-overlay.png) repeat-x;
border: 0;
display: inline-block;
padding: 0.5em 0.75em 0.45em;
color: white;
text-decoration: none;
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25);
border-bottom: 1px solid rgba(0, 0, 0, 0.25);
position: relative;
font-weight: bold;
line-height: 1;
}
/* line 34, ../../../app/stylesheets/partials/clean/_mixins.sass */
a.button:hover, input[type=submit]:hover, button:hover {
background-color: #005300;
}
/* line 53, ../../../app/stylesheets/partials/clean/_mixins.sass */
a.button:hover, input[type=submit]:hover, button:hover {
color: white;
}
/* line 55, ../../../app/stylesheets/partials/clean/_mixins.sass */
a.button:active, input[type=submit]:active, button:active {
top: 1px;
}
/* line 87, ../../../app/stylesheets/_layout.sass */
a.button.loud, input[type=submit].loud, button.loud {
background: #ff5c00 url(/assets/images/alert-overlay.png) repeat-x;
font-size: 125%;
padding: 8px 14px 9px;
}
/* line 34, ../../../app/stylesheets/partials/clean/_mixins.sass */
a.button.loud:hover, input[type=submit].loud:hover, button.loud:hover {
background-color: #ee4b00;
}
/* line 67, ../../../app/stylesheets/partials/clean/_mixins.sass */
a.button:after {
content: " >>";
}
/* line 93, ../../../app/stylesheets/_layout.sass */
ul.buttons {
margin-bottom: 1em;
}
/* line 95, ../../../app/stylesheets/_layout.sass */
ul.buttons li {
list-style: none;
margin: 0 0.5em;
}
/* line 98, ../../../app/stylesheets/_layout.sass */
ul.buttons li, ul.buttons li form {
display: inline;
}
/* line 101, ../../../app/stylesheets/_layout.sass */
#footer {
clear: both;
font-size: 75%;
margin-bottom: 1em;
padding-top: 2em;
text-align: center;
}
/* line 107, ../../../app/stylesheets/_layout.sass */
#footer ul, #footer div {
display: inline;
margin: 0 1em;
}
/* line 110, ../../../app/stylesheets/_layout.sass */
#footer li, #footer div ul {
display: inline;
margin: 0 0.5em;
}
/* line 114, ../../../app/stylesheets/_layout.sass */
.success, .alert, .warning {
margin-bottom: 1em;
padding: 0.25em 0.5em;
text-align: center; text-align: center;
} }
/* line 7, ../../../app/stylesheets/screen.sass */ /* line 119, ../../../app/stylesheets/_layout.sass */
input[type=text] { .success {
font-size: 125%; background: #e6efc2;
width: 15em; border: 1px solid #c6d880;
color: #264409;
} }
/* line 11, ../../../app/stylesheets/screen.sass */ /* line 124, ../../../app/stylesheets/_layout.sass */
h1 { .alert {
margin-bottom: 1em; background: #fbe3e4;
} border: 1px solid #fbc2c4;
/* line 13, ../../../app/stylesheets/screen.sass */ color: #8a1f11;
h1 img {
height: 80px;
margin-bottom: -0.5em;
width: 80px;
}
/* line 17, ../../../app/stylesheets/screen.sass */
h1 a {
text-decoration: none;
}
/* line 19, ../../../app/stylesheets/screen.sass */
h1 a span {
text-decoration: underline;
}
/* line 21, ../../../app/stylesheets/screen.sass */
h1 a:hover span {
text-decoration: none;
} }
/* line 24, ../../../app/stylesheets/screen.sass */ /* line 129, ../../../app/stylesheets/_layout.sass */
.warning {
background: #fff6bf;
border: 1px solid #ffd324;
color: #514721;
}
/* line 134, ../../../app/stylesheets/_layout.sass */
#userbar {
font-family: Delicious, Helvetica, Arial, Verdana, sans-serif;
position: absolute;
right: 0;
top: 0;
}
/* line 139, ../../../app/stylesheets/_layout.sass */
#userbar > * {
display: inline;
margin: 0 0.25em;
}
/* line 143, ../../../app/stylesheets/_layout.sass */
#userbar-log-in { #userbar-log-in {
text-decoration: none; text-decoration: none;
} }
/* line 26, ../../../app/stylesheets/screen.sass */ /* line 145, ../../../app/stylesheets/_layout.sass */
#userbar-log-in img { #userbar-log-in img {
margin-bottom: -4px; margin-bottom: -4px;
margin-right: 0.25em; margin-right: 0.25em;
} }
/* line 30, ../../../app/stylesheets/screen.sass */ /* line 149, ../../../app/stylesheets/_layout.sass */
#userbar-log-in span { #userbar-log-in span {
text-decoration: underline; text-decoration: underline;
} }
/* line 32, ../../../app/stylesheets/screen.sass */ /* line 151, ../../../app/stylesheets/_layout.sass */
#userbar-log-in:hover span { #userbar-log-in:hover span {
text-decoration: none; text-decoration: none;
} }
/* line 154, ../../../app/stylesheets/_layout.sass */
.object {
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: middle;
*display: inline;
*vertical-align: auto;
padding: 0.5em;
position: relative;
text-align: center;
vertical-align: top;
width: 100px;
}
/* line 161, ../../../app/stylesheets/_layout.sass */
.object a {
text-decoration: none;
}
/* line 163, ../../../app/stylesheets/_layout.sass */
.object a img {
-moz-opacity: 0.75;
-webkit-opacity: 0.75;
-o-opacity: 0.75;
-khtml-opacity: 0.75;
}
/* line 165, ../../../app/stylesheets/_layout.sass */
.object a:hover img {
-moz-opacity: 1;
-webkit-opacity: 1;
-o-opacity: 1;
-khtml-opacity: 1;
}
/* line 167, ../../../app/stylesheets/_layout.sass */
.object img {
display: block;
height: 80px;
margin: 0 auto;
width: 80px;
}
/* line 173, ../../../app/stylesheets/_layout.sass */
dt {
font-weight: bold;
}
/* line 176, ../../../app/stylesheets/_layout.sass */
dd {
margin: 0 0 1.5em 1em;
}
/* line 179, ../../../app/stylesheets/_layout.sass */
#home-link {
font-family: Delicious, Helvetica, Arial, Verdana, sans-serif;
font-size: 175%;
font-weight: bold;
left: 0;
line-height: 1;
padding: 0.25em;
position: absolute;
top: 0;
}
/* line 189, ../../../app/stylesheets/_layout.sass */
#home-link:hover {
background: #eeffee;
text-decoration: none;
}
/* line 192, ../../../app/stylesheets/_layout.sass */
#home-link span:before {
content: "<< ";
}
/* line 196, ../../../app/stylesheets/_layout.sass */
.pagination a, .pagination span {
margin: 0 0.5em;
}
/* line 198, ../../../app/stylesheets/_layout.sass */
.pagination .current {
font-weight: bold;
}
/* Fonts */
/* A font by Jos Buivenga (exljbris) -> www.exljbris.nl */
@font-face {
font-family: Delicious;
src: url("/assets/fonts/Delicious-Roman.otf");
}
@font-face {
font-family: Delicious;
font-weight: bold;
src: url("/assets/fonts/Delicious-Bold.otf");
}
@font-face {
font-family: Delicious;
font-style: italic;
src: url("/assets/fonts/Delicious-Italic.otf");
}
@font-face {
font-family: "Droid Serif";
font-style: normal;
font-weight: normal;
src: local("Droid Serif"), url("http://themes.googleusercontent.com/font?kit=70P0G8gxVDIV6F9om0DsKg") format("truetype");
}
@font-face {
font-family: "Droid Serif";
font-style: normal;
font-weight: bold;
src: local("Droid Serif"), url("http://themes.googleusercontent.com/font?kit=QQt14e8dY39u-eYBZmppwf5Jgr8ufe5A6KahQF76Xmg") format("truetype");
}
@font-face {
font-family: "Droid Sans";
font-style: normal;
font-weight: normal;
src: local("Droid Sans"), url("http://themes.googleusercontent.com/font?kit=POVDFY-UUf0WFR9DIMCU8g") format("truetype");
}
/* line 1, ../../../app/stylesheets/_items.sass */
body.items {
text-align: center;
}
/* line 4, ../../../app/stylesheets/_items.sass */
body.items input[type=text] {
font-size: 125%;
width: 15em;
}
/* line 8, ../../../app/stylesheets/_items.sass */
body.items h1 {
margin-bottom: 1em;
}
/* line 10, ../../../app/stylesheets/_items.sass */
body.items h1 img {
height: 80px;
margin-bottom: -0.5em;
width: 80px;
}
/* line 14, ../../../app/stylesheets/_items.sass */
body.items h1 a {
text-decoration: none;
}
/* line 16, ../../../app/stylesheets/_items.sass */
body.items h1 a span {
text-decoration: underline;
}
/* line 18, ../../../app/stylesheets/_items.sass */
body.items h1 a:hover span {
text-decoration: none;
}
/* line 8, ../../../app/stylesheets/items/_index.sass */ /* line 8, ../../../app/stylesheets/items/_index.sass */
body.items-index form { body.items-index form {
margin-bottom: 2em; margin-bottom: 2em;
@ -64,9 +413,10 @@ body.items-index .object .nc-icon {
} }
/* line 17, ../../../app/stylesheets/items/_index.sass */ /* line 17, ../../../app/stylesheets/items/_index.sass */
body.items-index .object .nc-icon:hover { body.items-index .object .nc-icon:hover {
opacity: 0.5; -moz-opacity: 0.5;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); -webkit-opacity: 0.5;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); -o-opacity: 0.5;
-khtml-opacity: 0.5;
} }
/* line 20, ../../../app/stylesheets/items/_index.sass */ /* line 20, ../../../app/stylesheets/items/_index.sass */
body.items-index #search-help { body.items-index #search-help {
@ -167,9 +517,10 @@ body.items-show #item-preview-species a.current {
} }
/* line 34, ../../../app/stylesheets/items/_show.sass */ /* line 34, ../../../app/stylesheets/items/_show.sass */
body.items-show #item-preview-species a.deactivated { body.items-show #item-preview-species a.deactivated {
opacity: 0.5; -moz-opacity: 0.5;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); -webkit-opacity: 0.5;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); -o-opacity: 0.5;
-khtml-opacity: 0.5;
background: #fbe3e4; background: #fbe3e4;
} }
/* line 39, ../../../app/stylesheets/items/_show.sass */ /* line 39, ../../../app/stylesheets/items/_show.sass */
@ -220,3 +571,248 @@ body.items-show .nc-icon {
height: 16px; height: 16px;
width: 16px; width: 16px;
} }
/* line 2, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms {
overflow: hidden;
display: inline-block;
background: #eeffee;
border: 1px solid #006600;
padding: 1em;
margin-bottom: 3em;
position: relative;
}
/* line 8, ../../../app/stylesheets/partials/clean/_mixins.sass */
body.outfits-new #outfit-forms {
display: block;
}
/* line 7, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms h1 {
margin-bottom: 0;
}
/* line 9, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms h2 {
font-size: 150%;
font-style: italic;
text-indent: 1em;
}
/* line 14, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms #pet-preview {
float: left;
height: 300px;
margin-right: 2em;
position: relative;
width: 300px;
}
/* line 20, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms #pet-preview img {
height: 100%;
width: 100%;
}
/* line 23, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms #pet-preview.loading img {
-moz-opacity: 0.5;
-webkit-opacity: 0.5;
-o-opacity: 0.5;
-khtml-opacity: 0.5;
}
/* line 25, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms #pet-preview.hidden img {
display: none;
}
/* line 27, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms #pet-preview.loaded {
cursor: pointer;
}
/* line 29, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms #pet-preview span {
background: gray;
background: rgba(0, 0, 0, 0.5);
bottom: 0;
color: white;
padding: 0.25em 0.5em;
position: absolute;
right: 0;
}
/* line 37, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms #pet-preview span:empty {
display: none;
}
/* line 39, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms fieldset {
position: relative;
left: 1em;
}
/* line 42, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms fieldset legend {
margin-left: -1em;
}
/* line 44, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #load-pet-to-wardrobe {
font-size: 175%;
margin-bottom: 1em;
margin-top: 2em;
}
/* line 49, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #load-pet-to-wardrobe input {
font-size: 67%;
padding: 0.5em;
width: 10em;
}
/* line 53, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #load-pet-to-wardrobe button {
background: #ff5c00 url(/assets/images/alert-overlay.png) repeat-x;
font-size: 125%;
padding: 8px 14px 9px;
font-size: 67%;
}
/* line 34, ../../../app/stylesheets/partials/clean/_mixins.sass */
body.outfits-new #load-pet-to-wardrobe button:hover {
background-color: #ee4b00;
}
/* line 56, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #description, body.outfits-new #top-contributors {
float: left;
}
/* line 58, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #description {
margin-right: 2%;
width: 64%;
}
/* line 61, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #top-contributors {
border: 1px solid #cceecc;
margin-top: 1em;
padding: 1%;
width: 30%;
}
/* line 66, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #top-contributors ol {
margin-left: 2em;
padding-left: 1em;
}
/* line 69, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #top-contributors > a {
font-size: 80%;
display: block;
text-align: right;
}
/* line 73, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #how-can-i-help, body.outfits-new #i-found-something {
background: #eeffee;
border: 1px solid #006600;
padding: 1em;
float: left;
padding: 1%;
width: 46%;
}
/* line 78, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #how-can-i-help h2, body.outfits-new #i-found-something h2 {
font-style: italic;
}
/* line 80, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #how-can-i-help input, body.outfits-new #how-can-i-help button, body.outfits-new #i-found-something input, body.outfits-new #i-found-something button {
font-size: 115%;
}
/* line 82, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #how-can-i-help input[type=text], body.outfits-new #i-found-something input[type=text] {
border-color: #006600;
width: 12em;
}
/* line 85, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #how-can-i-help {
margin-right: 1%;
}
/* line 87, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #i-found-something {
margin-left: 1%;
}
/* line 89, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #i-found-something a {
float: right;
font-size: 87.5%;
margin-top: 1em;
}
/* line 98, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections {
overflow: hidden;
display: inline-block;
display: table;
list-style: none;
margin-bottom: 1em;
}
/* line 8, ../../../app/stylesheets/partials/clean/_mixins.sass */
body.outfits-new #sections {
display: block;
}
/* line 103, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections h3 {
margin-bottom: 0.25em;
}
/* line 105, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections li {
border-left-color: #006600;
border-left-style: solid;
border-left-width: 1px;
display: table-cell;
padding: 0.5em;
position: relative;
width: 33.333%;
}
/* line 114, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections li:first-child {
border-left: 0;
}
/* line 116, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections div {
color: #448844;
font-size: 75%;
margin-left: 1em;
z-index: 2;
}
/* line 121, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections h4, body.outfits-new #sections input {
font-size: 116%;
}
/* line 123, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections h4, body.outfits-new #sections input[type=text] {
color: inherit;
}
/* line 125, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections h4 a {
background: #ffffc0;
}
/* line 127, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections img {
-moz-opacity: 0.75;
-webkit-opacity: 0.75;
-o-opacity: 0.75;
-khtml-opacity: 0.75;
float: right;
margin-left: 0.5em;
}
/* line 131, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #sections img:hover {
-moz-opacity: 1;
-webkit-opacity: 1;
-o-opacity: 1;
-khtml-opacity: 1;
}
/* line 133, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #read-more {
float: right;
}
/* line 135, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #tell-the-world {
font-size: 87.5%;
left: 0;
position: absolute;
top: 0;
}
/* line 140, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #tell-the-world img {
margin-bottom: -0.25em;
margin-right: 0.25em;
height: 16px;
width: 16px;
}