forked from OpenNeo/impress
neomail link on closets
This commit is contained in:
parent
02ef70f749
commit
c5103b6557
12 changed files with 137 additions and 32 deletions
|
@ -19,6 +19,10 @@ class ApplicationController < ActionController::Base
|
|||
render :file => 'public/403.html', :layout => false, :status => :forbidden
|
||||
end
|
||||
|
||||
def redirect_back!(default=:back)
|
||||
redirect_to(params[:return_to] || default)
|
||||
end
|
||||
|
||||
def user_is?(user)
|
||||
user_signed_in? && user == current_user
|
||||
end
|
||||
|
|
|
@ -36,7 +36,7 @@ class ClosetHangersController < ApplicationController
|
|||
respond_to do |format|
|
||||
format.html {
|
||||
flash[:success] = "Success! You own #{@closet_hanger.quantity} #{@item.name.pluralize}."
|
||||
redirect_back!
|
||||
redirect_back!(@item)
|
||||
}
|
||||
|
||||
format.json { render :json => true }
|
||||
|
@ -45,7 +45,7 @@ class ClosetHangersController < ApplicationController
|
|||
respond_to do |format|
|
||||
format.html {
|
||||
flash[:alert] = "We couldn't save how many of this item you own: #{@closet_hanger.errors.full_messages.to_sentence}"
|
||||
redirect_back!
|
||||
redirect_back!(@item)
|
||||
}
|
||||
|
||||
format.json { render :json => {:errors => @closet_hanger.errors.full_messages}, :status => :unprocessable_entity }
|
||||
|
@ -75,11 +75,7 @@ class ClosetHangersController < ApplicationController
|
|||
|
||||
def redirect_after_destroy!
|
||||
flash[:success] = "Success! You do not own #{@item.name}."
|
||||
redirect_back!
|
||||
end
|
||||
|
||||
def redirect_back!
|
||||
redirect_to params[:return_to] || @item
|
||||
redirect_back!(@item)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,5 +1,24 @@
|
|||
class UsersController < ApplicationController
|
||||
before_filter :find_and_authorize_user!, :only => [:update]
|
||||
|
||||
def top_contributors
|
||||
@users = User.top_contributors.paginate :page => params[:page], :per_page => 20
|
||||
end
|
||||
|
||||
def update
|
||||
@user.update_attributes params[:user]
|
||||
flash[:success] = "Settings successfully saved"
|
||||
redirect_back! user_closet_hangers_path(@user)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def find_and_authorize_user!
|
||||
if current_user.id == params[:id].to_i
|
||||
@user = current_user
|
||||
else
|
||||
raise AccessDenied
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
require 'cgi'
|
||||
|
||||
module ClosetHangersHelper
|
||||
def send_neomail_url(user)
|
||||
"http://www.neopets.com/neomessages.phtml?type=send&recipient=#{CGI.escape @user.neopets_username}"
|
||||
end
|
||||
|
||||
def public_perspective?
|
||||
@public_perspective
|
||||
end
|
||||
|
|
|
@ -11,6 +11,8 @@ class User < ActiveRecord::Base
|
|||
|
||||
devise :rememberable
|
||||
|
||||
attr_accessible :neopets_username
|
||||
|
||||
def contribute!(pet)
|
||||
new_contributions = []
|
||||
new_points = 0
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
body.closet_hangers-index
|
||||
#title
|
||||
float: left
|
||||
margin-bottom: .5em
|
||||
margin-bottom: 0
|
||||
|
||||
.flash
|
||||
clear: both
|
||||
|
@ -28,6 +28,30 @@ body.closet_hangers-index
|
|||
repeat: no-repeat
|
||||
padding-left: $icon-width + 4px
|
||||
|
||||
#closet-hangers-contact
|
||||
clear: both
|
||||
font-size: 85%
|
||||
margin-bottom: 1em
|
||||
margin-left: 2em
|
||||
min-height: image-height("neomail.png")
|
||||
|
||||
a
|
||||
background:
|
||||
image: image-url("neomail.png")
|
||||
position: left center
|
||||
repeat: no-repeat
|
||||
padding-left: image-width("neomail.png") + 2px
|
||||
|
||||
input[type=text]
|
||||
width: 10em
|
||||
|
||||
label
|
||||
font-weight: bold
|
||||
margin-right: .5em
|
||||
|
||||
&:after
|
||||
content: ":"
|
||||
|
||||
#closet-hangers
|
||||
clear: both
|
||||
text-align: center
|
||||
|
|
|
@ -8,15 +8,27 @@
|
|||
- else
|
||||
- title "#{@user.name}'s Items"
|
||||
|
||||
- content_for :before_flashes do
|
||||
#closet-hangers-contact
|
||||
- if public_perspective?
|
||||
- if @user.neopets_username?
|
||||
= link_to "Neomail #{@user.neopets_username}", send_neomail_url(@user)
|
||||
- else
|
||||
= form_for @user do |f|
|
||||
= f.label :neopets_username
|
||||
= f.text_field :neopets_username
|
||||
= f.submit "Save"
|
||||
|
||||
#closet-hangers{:class => public_perspective? ? nil : 'current-user'}
|
||||
- if !@closet_hangers.empty?
|
||||
- unless public_perspective?
|
||||
- if public_perspective?
|
||||
- if @closet_hangers.empty?
|
||||
%p #{@user.name} hasn't tracked any items on Dress to Impress.
|
||||
- else
|
||||
- unless @closet_hangers.empty?
|
||||
%p
|
||||
These are the items you own. Hover over an item to remove it from the
|
||||
list or to change the quantity.
|
||||
= render :partial => 'closet_hanger', :collection => @closet_hangers, :locals => {:show_controls => user_is?(@user)}
|
||||
- else
|
||||
- unless public_perspective?
|
||||
- else
|
||||
%p You haven't tracked any items on Dress to Impress.
|
||||
%p
|
||||
Here you can keep track of what items you already own, so that as you
|
||||
|
@ -27,8 +39,11 @@
|
|||
It's easy to get started!
|
||||
= link_to "Just import your Neopets closet in a few quick steps.", new_closet_page_path
|
||||
Have fun!
|
||||
- else
|
||||
%p #{@user.name} hasn't tracked any items on Dress to Impress.
|
||||
%p
|
||||
You can share
|
||||
= link_to "this page", request.fullpath
|
||||
with the world, and they'll be able to see what items you own.
|
||||
= render :partial => 'closet_hanger', :collection => @closet_hangers, :locals => {:show_controls => user_is?(@user)}
|
||||
|
||||
- content_for :stylesheets do
|
||||
= stylesheet_link_tag 'south-street/jquery-ui'
|
||||
|
|
|
@ -35,7 +35,7 @@ OpenneoImpressItems::Application.routes.draw do |map|
|
|||
match '/logout' => 'sessions#destroy', :as => :logout
|
||||
match '/users/authorize' => 'sessions#create'
|
||||
|
||||
resources :user, :only => [] do
|
||||
resources :users, :path => 'user', :only => [:update] do
|
||||
resources :contributions, :only => [:index]
|
||||
resources :closet_hangers, :only => [:index], :path => 'closet'
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
class AddNeopetsUsernameToUsers < ActiveRecord::Migration
|
||||
def self.up
|
||||
add_column :users, :neopets_username, :string
|
||||
end
|
||||
|
||||
def self.down
|
||||
remove_column :users, :neopets_username
|
||||
end
|
||||
end
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20110712232259) do
|
||||
ActiveRecord::Schema.define(:version => 20110720183722) do
|
||||
|
||||
create_table "auth_servers", :force => true do |t|
|
||||
t.string "short_name", :limit => 10, :null => false
|
||||
|
@ -177,6 +177,7 @@ ActiveRecord::Schema.define(:version => 20110712232259) do
|
|||
t.boolean "forum_admin", :default => false, :null => false
|
||||
t.boolean "forum_moderator"
|
||||
t.boolean "image_mode_tester", :default => false, :null => false
|
||||
t.string "neopets_username"
|
||||
end
|
||||
|
||||
create_table "zones", :force => true do |t|
|
||||
|
@ -187,3 +188,4 @@ ActiveRecord::Schema.define(:version => 20110712232259) do
|
|||
end
|
||||
|
||||
end
|
||||
|
||||
|
|
BIN
public/images/neomail.png
Normal file
BIN
public/images/neomail.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 754 B |
|
@ -552,7 +552,7 @@ div.jGrowl div.jGrowl-closer {
|
|||
/* line 5, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #title {
|
||||
float: left;
|
||||
margin-bottom: 0.5em;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
/* line 9, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index .flash {
|
||||
|
@ -611,11 +611,39 @@ body.closet_hangers-index #closet-hangers-items-search input[type=search].loadin
|
|||
padding-left: 20px;
|
||||
}
|
||||
/* line 31, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers-contact {
|
||||
clear: both;
|
||||
font-size: 85%;
|
||||
margin-bottom: 1em;
|
||||
margin-left: 2em;
|
||||
min-height: 16px;
|
||||
}
|
||||
/* line 38, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers-contact a {
|
||||
background-image: url('/images/neomail.png?1311187553');
|
||||
background-position: left center;
|
||||
background-repeat: no-repeat;
|
||||
padding-left: 18px;
|
||||
}
|
||||
/* line 45, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers-contact input[type=text], body.closet_hangers-index #closet-hangers-contact body.pets-bulk #bulk-pets-form textarea, body.pets-bulk #bulk-pets-form body.closet_hangers-index #closet-hangers-contact textarea {
|
||||
width: 10em;
|
||||
}
|
||||
/* line 48, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers-contact label {
|
||||
font-weight: bold;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
/* line 52, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers-contact label:after {
|
||||
content: ":";
|
||||
}
|
||||
/* line 55, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers {
|
||||
clear: both;
|
||||
text-align: center;
|
||||
}
|
||||
/* line 36, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 60, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers .object .quantity {
|
||||
-moz-opacity: 0.75;
|
||||
-webkit-opacity: 0.75;
|
||||
|
@ -629,26 +657,26 @@ body.closet_hangers-index #closet-hangers .object .quantity {
|
|||
text-align: left;
|
||||
top: 60px;
|
||||
}
|
||||
/* line 46, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 70, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers .object .quantity span, body.closet_hangers-index #closet-hangers .object .quantity input[type=number] {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* line 50, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 74, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers .object form {
|
||||
display: none;
|
||||
}
|
||||
/* line 55, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 79, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user .object:hover form {
|
||||
display: inline;
|
||||
}
|
||||
/* line 58, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 82, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user .object:hover .closet-hanger-destroy {
|
||||
position: absolute;
|
||||
right: 18px;
|
||||
top: 0;
|
||||
}
|
||||
/* line 63, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 87, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user .object:hover .closet-hanger-destroy input {
|
||||
/* http://www.zurb.com/blog_uploads/0000/0617/buttons-03.html */
|
||||
-moz-border-radius: 5px;
|
||||
|
@ -689,7 +717,7 @@ body.closet_hangers-index #closet-hangers.current-user .object:hover .closet-han
|
|||
body.closet_hangers-index #closet-hangers.current-user .object:hover .closet-hanger-destroy input:hover {
|
||||
background-color: #999999;
|
||||
}
|
||||
/* line 66, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 90, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user .object:hover .quantity {
|
||||
-moz-opacity: 1;
|
||||
-webkit-opacity: 1;
|
||||
|
@ -699,33 +727,33 @@ body.closet_hangers-index #closet-hangers.current-user .object:hover .quantity {
|
|||
top: 56px;
|
||||
padding: 0;
|
||||
}
|
||||
/* line 72, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 96, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user .object:hover .quantity span {
|
||||
display: none;
|
||||
}
|
||||
/* line 75, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 99, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user .object:hover .quantity input[type=number] {
|
||||
padding: 2px;
|
||||
width: 2em;
|
||||
}
|
||||
/* line 79, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 103, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user .object:hover .quantity input[type=submit] {
|
||||
font-size: 85%;
|
||||
}
|
||||
/* line 84, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 108, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user.js .object:hover .quantity input[type=number] {
|
||||
width: 2.5em;
|
||||
}
|
||||
/* line 87, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 111, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user.js .object:hover .quantity input[type=submit] {
|
||||
display: none;
|
||||
}
|
||||
/* line 90, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 114, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user.js .object.loading {
|
||||
background: #eeffee;
|
||||
outline: 1px solid #006600;
|
||||
}
|
||||
/* line 94, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
/* line 118, ../../../app/stylesheets/closet_hangers/_index.sass */
|
||||
body.closet_hangers-index #closet-hangers.current-user.js .object.loading .quantity span:after {
|
||||
content: "…";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue