This commit is contained in:
maxwell 2010-10-14 16:32:37 -07:00
parent bc5bcd16fb
commit a30a2666c6
17 changed files with 63 additions and 1264 deletions

7
.gitignore vendored
View file

@ -4,8 +4,13 @@ config/fb_config.yml
config/initializers/secret_token.rb config/initializers/secret_token.rb
.bundle .bundle
# Uploded files and local files # Generated files
log/* log/*
public/stylesheets/application.css
public/stylesheets/sessions.css
public/stylesheets/ui.css
# Uploded files and local files
public/uploads/* public/uploads/*
public/source.tar public/source.tar
tmp/**/* tmp/**/*

View file

@ -1,6 +1,6 @@
source 'http://rubygems.org' source 'http://rubygems.org'
gem 'rails', '3.0.0' gem 'rails', '3.0.1'
gem 'bundler', '>= 1.0.0' gem 'bundler', '>= 1.0.0'
#Security #Security

View file

@ -1,301 +0,0 @@
GIT
remote: git://github.com/Empact/roxml.git
revision: 33034d3e632b3a14565a791af0a63c7e23ec0de4
specs:
roxml (3.1.5)
activesupport (>= 2.3.0)
nokogiri (>= 1.3.3)
GIT
remote: git://github.com/collectiveidea/devise-mongo_mapper
revision: fa2f20310e0988295adc192255d3b1cedee1b412
specs:
devise-mongo_mapper (0.0.1)
devise (~> 1.1.0)
GIT
remote: git://github.com/dcu/magent.git
revision: fe08cc6e9d4c1772035f84bcfb665d17b00ac625
specs:
magent (1.0.0)
em-websocket
mongo
uuidtools
GIT
remote: git://github.com/igrigorik/em-http-request.git
revision: bf62d67fc72d6e701be5037e239dd470194b8e45
ref: bf62d67fc72d6e701be5
specs:
em-http-request (0.2.13)
addressable (>= 2.0.0)
eventmachine (>= 0.12.9)
GIT
remote: git://github.com/jnunemaker/mongomapper.git
revision: fd59b0ab068be7321f8e84b9dc12fb4fa6b8535d
branch: rails3
specs:
mongo_mapper (0.8.4)
activemodel (~> 3.0.0)
activesupport (~> 3.0.0)
plucky (~> 0.3.6)
GIT
remote: git://github.com/rsofaer/carrierwave.git
revision: 9edb8bdddd2236742a85bfd7b260387498d01f88
branch: master
specs:
carrierwave (0.4.4)
GIT
remote: git://github.com/rsofaer/redfinger.git
revision: 07721f46d02b9d3aa04880788fecb0b4c1b284d7
specs:
redfinger (0.0.6)
hashie
nokogiri (>= 1.4.0)
rest-client (>= 1.5.0)
GIT
remote: git://github.com/rsofaer/sprinkle.git
revision: 7c744ed158dda1f99a015e6a29d086e80bd8c635
specs:
sprinkle (0.3.1)
activesupport (>= 3.0.0beta4)
capistrano (>= 2.5.5)
highline (>= 1.4.0)
GEM
remote: http://rubygems.org/
specs:
abstract (1.0.0)
actionmailer (3.0.0)
actionpack (= 3.0.0)
mail (~> 2.2.5)
actionpack (3.0.0)
activemodel (= 3.0.0)
activesupport (= 3.0.0)
builder (~> 2.1.2)
erubis (~> 2.6.6)
i18n (~> 0.4.1)
rack (~> 1.2.1)
rack-mount (~> 0.6.12)
rack-test (~> 0.5.4)
tzinfo (~> 0.3.23)
activemodel (3.0.0)
activesupport (= 3.0.0)
builder (~> 2.1.2)
i18n (~> 0.4.1)
activerecord (3.0.0)
activemodel (= 3.0.0)
activesupport (= 3.0.0)
arel (~> 1.0.0)
tzinfo (~> 0.3.23)
activeresource (3.0.0)
activemodel (= 3.0.0)
activesupport (= 3.0.0)
activesupport (3.0.0)
addressable (2.2.2)
archive-tar-minitar (0.5.2)
arel (1.0.1)
activesupport (~> 3.0.0)
aws (2.3.21)
http_connection
uuidtools
xml-simple
bcrypt-ruby (2.1.2)
bson (1.1)
bson_ext (1.1)
builder (2.1.2)
capistrano (2.5.19)
highline
net-scp (>= 1.0.0)
net-sftp (>= 2.0.0)
net-ssh (>= 2.0.14)
net-ssh-gateway (>= 1.0.0)
capybara (0.3.9)
culerity (>= 0.2.4)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
selenium-webdriver (>= 0.0.3)
childprocess (0.0.7)
ffi (~> 0.6.3)
columnize (0.3.1)
crack (0.1.8)
cucumber (0.9.2)
builder (~> 2.1.2)
diff-lcs (~> 1.1.2)
gherkin (~> 2.2.5)
json (~> 1.4.6)
term-ansicolor (~> 1.0.5)
cucumber-rails (0.3.2)
cucumber (>= 0.8.0)
culerity (0.2.12)
daemons (1.1.0)
database_cleaner (0.5.2)
devise (1.1.3)
bcrypt-ruby (~> 2.1.2)
warden (~> 0.10.7)
devise_invitable (0.3.4)
devise (~> 1.1.0)
diff-lcs (1.1.2)
em-websocket (0.1.4)
addressable (>= 2.1.1)
eventmachine (>= 0.12.9)
erubis (2.6.6)
abstract (>= 1.0.0)
eventmachine (0.12.10)
factory_girl (1.3.2)
factory_girl_rails (1.0)
factory_girl (~> 1.3)
rails (>= 3.0.0.beta4)
ffi (0.6.3)
rake (>= 0.8.7)
gherkin (2.2.8)
json (~> 1.4.6)
term-ansicolor (~> 1.0.5)
haml (3.0.21)
hashie (0.4.0)
highline (1.6.1)
http_connection (1.3.1)
i18n (0.4.1)
json (1.4.6)
json_pure (1.4.6)
linecache19 (0.5.11)
ruby_core_source (>= 0.1.4)
mail (2.2.7)
activesupport (>= 2.3.6)
mime-types
treetop (>= 1.4.5)
mime-types (1.16)
mini_fb (1.1.3)
hashie
rest-client
mini_magick (2.3)
subexec (~> 0.0.4)
mocha (0.9.8)
rake
mongo (1.1)
bson (>= 1.0.5)
net-scp (1.0.4)
net-ssh (>= 1.99.1)
net-sftp (2.0.5)
net-ssh (>= 2.0.9)
net-ssh (2.0.23)
net-ssh-gateway (1.0.1)
net-ssh (>= 1.99.1)
nokogiri (1.4.3.1)
plucky (0.3.6)
mongo (~> 1.1)
polyglot (0.3.1)
pubsubhubbub (0.1.1)
em-http-request (>= 0.1.5)
eventmachine (>= 0.12.9)
rack (1.2.1)
rack-mount (0.6.13)
rack (>= 1.0.0)
rack-test (0.5.6)
rack (>= 1.0)
rails (3.0.0)
actionmailer (= 3.0.0)
actionpack (= 3.0.0)
activerecord (= 3.0.0)
activeresource (= 3.0.0)
activesupport (= 3.0.0)
bundler (~> 1.0.0)
railties (= 3.0.0)
railties (3.0.0)
actionpack (= 3.0.0)
activesupport (= 3.0.0)
rake (>= 0.8.4)
thor (~> 0.14.0)
rake (0.8.7)
rest-client (1.6.1)
mime-types (>= 1.16)
rspec (2.0.0)
rspec-core (= 2.0.0)
rspec-expectations (= 2.0.0)
rspec-mocks (= 2.0.0)
rspec-core (2.0.0)
rspec-expectations (2.0.0)
diff-lcs (>= 1.1.2)
rspec-mocks (2.0.0)
rspec-core (= 2.0.0)
rspec-expectations (= 2.0.0)
rspec-rails (2.0.0)
rspec (= 2.0.0)
ruby-debug-base19 (0.11.24)
columnize (>= 0.3.1)
linecache19 (>= 0.5.11)
ruby_core_source (>= 0.1.4)
ruby-debug19 (0.11.6)
columnize (>= 0.3.1)
linecache19 (>= 0.5.11)
ruby-debug-base19 (>= 0.11.19)
ruby_core_source (0.1.4)
archive-tar-minitar (>= 0.5.2)
rubyzip (0.9.4)
selenium-webdriver (0.0.29)
childprocess (>= 0.0.7)
ffi (~> 0.6.3)
json_pure
rubyzip
subexec (0.0.4)
term-ansicolor (1.0.5)
thin (1.2.7)
daemons (>= 1.0.9)
eventmachine (>= 0.12.6)
rack (>= 1.0.0)
thor (0.14.3)
treetop (1.4.8)
polyglot (>= 0.3.1)
tzinfo (0.3.23)
uuidtools (2.1.1)
warden (0.10.7)
rack (>= 1.0.0)
webmock (1.4.0)
addressable (>= 2.2.2)
crack (>= 0.1.7)
will_paginate (3.0.pre2)
xml-simple (1.0.12)
PLATFORMS
ruby
DEPENDENCIES
addressable
aws
bson (= 1.1)
bson_ext (= 1.1)
bundler (>= 1.0.0)
capybara (~> 0.3.9)
carrierwave!
cucumber-rails (= 0.3.2)
database_cleaner
devise (= 1.1.3)
devise-mongo_mapper!
devise_invitable (~> 0.3.4)
em-http-request!
em-websocket
factory_girl_rails
haml
json
magent!
mini_fb
mini_magick
mocha
mongo_mapper!
pubsubhubbub
rails (= 3.0.0)
redfinger!
roxml!
rspec (>= 2.0.0)
rspec-rails (>= 2.0.0)
ruby-debug19
sprinkle!
thin
webmock
will_paginate (= 3.0.pre2)

View file

@ -33,7 +33,7 @@ class RequestsController < ApplicationController
aspect = current_user.aspect_by_id(params[:request][:aspect_id]) aspect = current_user.aspect_by_id(params[:request][:aspect_id])
begin begin
rel_hash = relationship_flow(params[:request][:destination_url]) rel_hash = relationship_flow(params[:request][:destination_url].strip)
rescue Exception => e rescue Exception => e
raise e unless e.message.include? "not found" raise e unless e.message.include? "not found"
flash[:error] = I18n.t 'requests.create.error' flash[:error] = I18n.t 'requests.create.error'

View file

@ -48,6 +48,7 @@ class Request
protected protected
def clean_link def clean_link
if self.destination_url if self.destination_url
self.destination_url = self.destination_url.strip
self.destination_url = 'http://' + self.destination_url unless self.destination_url.match('https?://') self.destination_url = 'http://' + self.destination_url unless self.destination_url.match('https?://')
self.destination_url = self.destination_url + '/' if self.destination_url[-1,1] != '/' self.destination_url = self.destination_url + '/' if self.destination_url[-1,1] != '/'
end end

View file

@ -11,6 +11,8 @@
%meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/ %meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/
= stylesheet_link_tag "blueprint/screen", :media => 'screen' = stylesheet_link_tag "blueprint/screen", :media => 'screen'
= stylesheet_link_tag "blueprint/print", :media => 'print'
= stylesheet_link_tag "application", "ui" = stylesheet_link_tag "application", "ui"
= stylesheet_link_tag "/../javascripts/fancybox/jquery.fancybox-1.3.1" = stylesheet_link_tag "/../javascripts/fancybox/jquery.fancybox-1.3.1"

View file

@ -5,8 +5,13 @@
%h2 Account %h2 Account
%h3 Change Password = link_to "invite friends", new_user_invitation_path(current_user)
%br
%br
%br
%h3 Change Password
= form_for @user do |f| = form_for @user do |f|
= f.error_messages = f.error_messages
@ -23,12 +28,14 @@
= f.submit 'Change password' = f.submit 'Change password'
%h3 Export Data %h3 Export Data
= link_to "download my xml", users_export_path, :class => "button" = link_to "download my xml", users_export_path, :class => "button"
= link_to "download my photos", users_export_photos_path, :class => "button" = link_to "download my photos", users_export_photos_path, :class => "button"
%h3 Close Account %br
%br
%br
%h3 Close Account
= link_to "Close Account", current_user, = link_to "Close Account", current_user,
:confirm => "Are you sure?", :method => :delete, :confirm => "Are you sure?", :method => :delete,
:class => "button" :class => "button"

View file

@ -4,8 +4,6 @@
%h2 Profile %h2 Profile
= link_to new_user_invitation_path(current_user)
= form_for @user do |f| = form_for @user do |f|
= f.error_messages = f.error_messages

View file

@ -40,4 +40,4 @@ user2.person.save!
aspect = user.aspect(:name => "other dudes") aspect = user.aspect(:name => "other dudes")
request = user.send_friend_request_to(user2, aspect) request = user.send_friend_request_to(user2, aspect)
reversed_request = user2.accept_friend_request( request.id, user2.aspect(:name => "presidents").id ) reversed_request = user2.accept_friend_request( request.id, user2.aspect(:name => "presidents").id )
user.receive reversed_request.to_diaspora_xml user.receive reversed_request.to_diaspora_xml, user2.person

View file

@ -41,6 +41,6 @@ user2.person.save!
aspect = user.aspect(:name => "other dudes") aspect = user.aspect(:name => "other dudes")
request = user.send_friend_request_to(user2, aspect) request = user.send_friend_request_to(user2, aspect)
reversed_request = user2.accept_friend_request( request.id, user2.aspect(:name => "presidents").id ) reversed_request = user2.accept_friend_request( request.id, user2.aspect(:name => "presidents").id )
user.receive reversed_request.to_diaspora_xml user.receive reversed_request.to_diaspora_xml, user2.person
user.aspect(:name => "Presidents") user.aspect(:name => "Presidents")

View file

@ -1,744 +0,0 @@
@font-face {
font-family: "BrandonGrotesqueLightRegular";
src: url("brandongrotesque_light/Brandon_light-webfont.eot");
src: local("☺"), url("brandongrotesque_light/Brandon_light-webfont.woff") format("woff"), url("brandongrotesque_light/Brandon_light-webfont.ttf") format("truetype"), url("brandongrotesque_light/Brandon_light-webfont.svg#webfont") format("svg");
font {
weight: normal;
style: normal; } }
body {
padding: 2em;
margin: 0; }
a {
color: #107fc9;
text-decoration: none; }
a:hover {
color: #22aae0; }
a:active {
color: #005d9c; }
h1, h2, h3, h4 {
color: #444444; }
h3 {
font-size: 18px; }
.avatar {
width: 50px;
height: 50px; }
#flash_notice,
#flash_error,
#flash_alert {
z-index: 100;
position: fixed;
color: white;
top: -100px;
left: 0;
width: 100%;
padding: 1em;
box-shadow: 0 1px 2px #333333;
-moz-box-shadow: 0 1px 2px #333333;
-webkit-box-shadow: 0 1px 2px #333333;
font-weight: bold; }
#flash_notice {
background-color: rgba(127, 255, 36, 0.85);
border-bottom: solid 1px #66cc66;
text-shadow: 0 1px #66cc66; }
#flash_error,
#flash_alert {
background-color: rgba(208, 49, 43, 0.85);
border-bottom: solid 1px #cc6666;
text-shadow: 0 1px #cc6666; }
.fieldWithErrors {
display: inline; }
.error_messages {
width: 400px;
border: 2px solid #cf0000;
padding: 0;
padding-bottom: 12px;
margin-bottom: 20px;
background-color: #f0f0f0;
font-size: 12px; }
.error_messages h2 {
text-align: left;
padding: 5px 5px 5px 15px;
margin: 0;
font-weight: bold;
font-size: 12px;
background-color: #cc0000; }
.error_messages p {
margin: 8px 10px; }
.error_messages ul {
margin: 0; }
header {
z-index: 4;
position: relative;
margin: -2em;
margin-bottom: 2em;
color: black;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#666666), to(#222222));
background: -moz-linear-gradient(19% 75% 90deg, #222222, #666666);
background-color: #666666;
padding: 0;
padding-top: 5px;
border-bottom: 1px solid #cccccc; }
header a {
color: #999999; }
header a:hover {
background: none;
color: #eeeeee; }
header #diaspora_text {
display: inline;
font-family: "BrandonGrotesqueLightRegular";
font-size: 16px;
border: none;
color: white; }
header #session_action {
position: absolute;
display: inline;
top: 0;
right: 0; }
header #session_action ul {
list-style: none;
padding: 0;
margin: 0;
display: inline; }
header #session_action ul li {
display: inline;
margin-right: 1em; }
header #session_action ul li:last-child {
margin-right: 0; }
header #aspect_header {
-webkit-box-shadow: 0px -4px 6px -2px #777777;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#f7f7f7), to(#eeeeee));
background: -moz-linear-gradient(19% 75% 90deg, #eeeeee, #f7f7f7);
background-color: #eeeeee;
border-top: 1px solid white;
padding: 20px 0; }
header #aspect_header h1 {
text-shadow: 0 1px 0 white; }
header #aspect_header a {
color: #444444; }
header #aspect_header a:hover {
background: none;
color: #999999; }
header #aspect_header .page_title {
text-transform: uppercase;
text-shadow: 0 1px 0 white; }
ul#stream {
margin: 0;
padding: 0; }
ul#stream > li {
min-height: 50px;
list-style: none;
padding: 12px 0;
border-bottom: 1px solid #eeeeee; }
ul#stream > li:hover {
background-color: #fafafa;
border-bottom: 1px solid #dddddd; }
ul#stream > li:hover .destroy_link {
display: inline; }
ul#stream .right {
top: 0; }
li.message {
position: relative;
line-height: 19px;
font-family: "Arial", "Helvetica", sans-serif;
color: #777777; }
li.message .avatar {
float: left;
margin-right: 15px; }
li.message .delete:hover {
background: #eeeeee; }
li.message .content {
max-width: 610px;
margin-top: -4px;
padding-left: 65px;
color: #444444;
font-weight: normal;
font-size: 14px; }
li.message .content .from {
font-family: "Helvetica neue", Arial, Helvetica, sans-serif;
text-shadow: 0 1px white; }
li.message .content .from .aspect {
cursor: default;
display: inline;
color: #bbbbbb;
font-size: 12px; }
li.message .content .from .aspect a {
font-weight: normal;
color: #bbbbbb; }
li.message .content .from .aspect a:hover {
text-decoration: underline; }
li.message .content .from .aspect a:active {
color: #999999; }
li.message .content .from .aspect ul {
display: inline;
margin: 0;
padding: 0;
list-style: none; }
li.message .content .from .aspect ul li {
display: inline; }
li.message .content .from .aspect ul li:after {
content: ","; }
li.message .content .from .aspect ul li:last-child:after {
content: ""; }
li.message .content .from a {
font-weight: bold; }
li.message .content div.info {
color: #444444;
font-size: 13px; }
li.message .content div.info a {
color: #cccccc; }
li.message .content div.info .time {
font-weight: bold;
margin-right: 5px; }
li.message .content div.info .time a {
color: #bbbbbb; }
li.message:hover div.info a, li.message:hover .time a {
color: #107fc9; }
li.message:hover div.info a:hover, li.message:hover .time a:hover {
color: #22aae0; }
li.message:hover div.info a:active, li.message:hover .time a:active {
color: #005d9c; }
.destroy_link .reshare_pane .reshare_button a.inactive {
color: #cccccc;
cursor: default; }
.destroy_link .reshare_pane .reshare_button a.inactive:hover {
text-decoration: none; }
.destroy_link .reshare_pane {
margin-left: 5px;
margin-right: 5px;
display: inline;
position: relative; }
.destroy_link .reshare_pane ul.reshare_box {
width: 150px;
display: none;
z-index: 10;
position: absolute;
margin-top: 5px;
padding: 0;
background-color: #fafafa;
list-style: none;
border: 5px solid #666666;
-webkit-box-shadow: 0 0 5px #666666;
-moz-box-shadow: 0 0 5px #666666;
text-shadow: 0 2px white;
color: black; }
.destroy_link .reshare_pane ul.reshare_box > li {
font-weight: bold;
color: #cccccc;
border-top: 1px solid white;
border-bottom: 1px solid #cccccc; }
.destroy_link .reshare_pane ul.reshare_box > li:first-child {
border-top: none; }
.destroy_link .reshare_pane ul.reshare_box > li:last-child {
border-bottom: none; }
.destroy_link .reshare_pane ul.reshare_box > li a {
display: block;
height: 100%;
padding: 2px 5px; }
.destroy_link .reshare_pane ul.reshare_box > li a:hover {
background-color: #eeeeee;
text-decoration: none; }
.destroy_link .reshare_pane ul.reshare_box > li a:active {
background-color: #cccccc; }
form {
position: relative;
font-size: 120%;
margin: 1em;
margin-left: 0em; }
#user_name {
margin-bottom: 20px; }
#user_name img {
margin-right: 10px;
display: inline-block;
float: left;
height: 40px; }
#user_name h1 {
margin-bottom: 7px;
line-height: 18px; }
#user_name h1 a {
color: black; }
#user_name span {
size: small;
font-weight: normal;
color: #999999; }
#user_name #latest_message_time {
font-style: italic; }
#user_name ul {
display: inline;
margin: 0;
padding: 0;
list-style: none; }
#user_name ul > li {
display: inline;
margin-right: 1em; }
#stream div.comments {
display: none; }
#stream div.comments .avatar {
width: 35px;
height: 35px;
margin-right: 10px; }
input.comment_submit {
display: none;
margin-right: -10px; }
ul.comment_set {
margin: 0;
margin-top: 1em;
padding: 0;
list-style: none;
max-width: 610px; }
ul.comment_set textarea {
width: 100%; }
ul.comment_set li.comment {
margin-bottom: 0.5em;
background-color: rgba(10, 81, 109, 0.05);
padding: 0.6em;
border-bottom: 1px solid #dddddd; }
ul.comment_set li.comment .content {
color: #777777;
margin-top: -2px;
padding-left: 45px;
font-size: 12px;
line-height: 18px; }
ul.comment_set li.comment .content .from a {
color: #444444; }
ul.comment_set li.comment .content div.time {
color: #bbbbbb;
font-size: 11px;
font-weight: bold; }
ul.comment_set li.comment form {
margin-top: -5px;
margin-bottom: 0;
font-size: 1em; }
ul.comment_set li.comment form textarea {
font-size: 1em; }
.profile_photo img {
height: 150px;
width: 150px; }
#profile ul {
list-style-type: none;
margin: 0;
padding: 0; }
#stream img.person_picture, #profile img.person_picture,
.comments img.person_picture {
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
display: inline block;
height: 30px;
display: absolute;
float: left;
margin-right: 10px; }
.pagination a {
padding: 3px; }
li.message .from .destroy_link {
display: none;
position: absolute;
right: 0;
font-size: 12px; }
li.message .from .destroy_link a {
color: #999999;
font-weight: normal; }
li.message .from .destroy_link a:hover {
text-decoration: underline; }
.request_buttons {
position: absolute;
right: 0;
display: inline;
list-style: none;
margin: 0;
padding: 0; }
.request_buttons > li {
display: inline; }
.request_buttons > li:first-child {
margin-right: 1em; }
#show_photo {
text-align: center;
min-height: 200px; }
#show_photo img {
max-width: 100%; }
#show_photo .caption {
margin-top: 10px;
margin-bottom: 25px;
font-size: larger; }
#debug_info {
margin-top: 20px;
color: #cccccc; }
#debug_info h5 {
color: #cccccc; }
input[type='text'],
input[type='password'],
textarea {
font-family: "Arial", "Helvetica", sans-serif;
font-size: 14px;
padding: 0.3em;
display: block;
width: 66%;
border: 1px solid #cccccc;
height: auto;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px; }
.submit_block {
text-align: right;
font-size: 12px; }
form p {
position: relative;
padding: 0;
margin: 0; }
label {
font-family: "Arial", "Helvetica", sans-serif;
font-weight: normal;
color: #999999;
position: absolute;
top: 3px;
left: 0.48em;
text-shadow: 0 1px 1px #eeeeee; }
#publisher {
color: #999999;
position: relative; }
#publisher .avatar {
float: left;
margin-right: 15px; }
#publisher p {
position: absolute;
left: 0;
top: 0; }
#publisher form {
display: inline; }
#publisher form input[type='submit'] {
display: block;
margin-right: 20px;
width: 100%; }
#publisher textarea {
width: 570px;
height: 42px;
margin-top: 0;
margin-bottom: 0; }
#publisher .buttons {
float: right; }
#image_picker .small_photo {
height: 100px;
position: relative;
display: inline-block;
margin-right: 1em;
margin-bottom: 1em; }
#image_picker .small_photo img {
border-radius: 3px; }
#image_picker .small_photo input[type='checkbox'] {
position: absolute; }
#image_picker .selected {
-webkit-box-shadow: 0 3px 6px black;
-moz-box-shadow: 0 3px 6px black;
border: 1px solid white; }
/* cycle it! */
.album {
position: relative;
height: 200px;
width: 200px;
display: inline-block; }
.album img {
width: 200px;
height: 200px; }
.album .name {
position: absolute;
z-index: 6;
padding: 1em;
background: rgba(0, 0, 0, 0.8);
bottom: 20px;
font-size: 18px;
text-shadow: 0 2px 0 black; }
.album .name .time {
font-size: 12px; }
.album .name .time a {
font-weight: normal; }
.album div.image_cycle img {
display: none; }
.field_with_submit input[type='text'] {
width: 82%;
display: inline; }
h1.big_text {
position: relative;
line-height: auto;
border-bottom: 1px solid #666666; }
h1.big_text .right {
top: -6px; }
#content_bottom .right {
top: -5px; }
.right {
display: inline;
float: right; }
.back {
font-size: 12px;
font-weight: normal; }
#content_bottom {
position: relative;
line-height: 36px;
margin: 0;
margin-top: 25px;
margin-bottom: 25px;
min-height: 36px;
border-top: 1px solid #999999;
border-bottom: 2px solid #eeeeee; }
.show_post_comments ul.comment_set {
width: 100%; }
.sub_header {
position: relative;
text-align: center;
font-style: italic;
margin-bottom: 20px;
color: #999999; }
.image_thumb {
display: inline-block;
width: 100px;
min-width: 100px;
height: 100px;
min-height: 100px; }
.image_thumb img {
display: none; }
.image_cycle img {
display: none; }
#aspect_nav {
color: black;
margin-top: 8px;
margin-bottom: 1px;
font-family: "Arial", "Helvetica", sans-serif; }
#aspect_nav #aspect_manage_button {
display: inline; }
#aspect_nav #aspect_manage_button a {
color: #999999; }
#aspect_nav ul {
margin: 0;
padding: 0;
list-style: none; }
#aspect_nav ul > li {
padding: 0;
display: inline;
margin-right: 2px; }
#aspect_nav ul > li a {
text-shadow: 0 1px 0 #444444;
line-height: 22px;
padding: 3px 8px;
padding-bottom: 3px;
color: #999999; }
#aspect_nav ul > li a:hover {
background-color: #4e4e4e;
color: #cccccc; }
#aspect_nav ul > li.selected a {
-webkit-border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
-webkit-box-shadow: 0px -4px 6px -2px #777777;
-moz-box-shadow: 0px -4px 6px -2px #777777;
text-shadow: 0 1px 0 white;
padding-top: 4px;
padding-bottom: 5px;
line-height: 18px;
font-weight: bold;
background-color: #eeeeee;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(white), to(#f7f7f7));
background: -moz-linear-gradient(19% 75% 90deg, #f7f7f7, white);
border: 1px solid white;
border-bottom: 1px solid #f7f7f7;
color: #444444; }
#aspect_nav ul > li.selected a:hover {
background-color: #efefef; }
#aspect_nav ul > li.selected a a {
color: black; }
#aspect_nav .new_requests {
color: red; }
#global_search {
display: inline;
position: relative;
opacity: 0.5; }
#global_search form {
display: inline; }
#global_search form input {
display: inline;
font-size: 12px;
border: none; }
#global_search form input[type='text'] {
width: 200px;
padding: 2px; }
#global_search form label {
font-size: 12px;
margin-top: -3px; }
.aspect,
.requests,
.remove {
list-style: none; }
.aspect h3,
.requests h3,
.remove h3 {
display: inline-block; }
.aspect .tip,
.requests .tip,
.remove .tip {
display: none;
color: #999999;
margin-left: 0.5em; }
.aspect .edit_name_field:hover .tip,
.requests .edit_name_field:hover .tip,
.remove .edit_name_field:hover .tip {
display: inline; }
.aspect .aspect_name,
.requests .aspect_name,
.remove .aspect_name {
position: relative; }
.aspect .aspect_name ul.tools,
.requests .aspect_name ul.tools,
.remove .aspect_name ul.tools {
position: absolute;
top: 5px;
right: 0;
display: inline;
padding: 0;
margin: 0;
list-style: none; }
.aspect .aspect_name ul.tools li,
.requests .aspect_name ul.tools li,
.remove .aspect_name ul.tools li {
display: inline;
margin-right: 1em; }
.aspect .aspect_name ul.tools li:last-child,
.requests .aspect_name ul.tools li:last-child,
.remove .aspect_name ul.tools li:last-child {
margin-right: 0; }
.aspect .grey,
.requests .grey,
.remove .grey {
color: #999999;
cursor: default;
text-shadow: 0 1px white; }
.aspect ul.dropzone,
.requests ul.dropzone,
.remove ul.dropzone {
min-height: 20px;
margin: 0;
margin-bottom: 25px;
background-color: #efefef;
border: 1px solid #cccccc;
list-style: none;
padding: 15px; }
.aspect ul.dropzone.active,
.requests ul.dropzone.active,
.remove ul.dropzone.active {
background-color: #fafafa; }
.aspect .person,
.aspect .requested_person,
.requests .person,
.requests .requested_person,
.remove .person,
.remove .requested_person {
display: inline-block;
padding: 5px;
cursor: move;
margin: 5px;
z-index: 10;
text-align: center;
width: 125px;
height: 120px; }
.aspect .person img,
.aspect .requested_person img,
.requests .person img,
.requests .requested_person img,
.remove .person img,
.remove .requested_person img {
height: 100px;
width: 100px;
display: inline-block; }
.aspect .person:active,
.aspect .requested_person:active,
.requests .person:active,
.requests .requested_person:active,
.remove .person:active,
.remove .requested_person:active {
z-index: 20;
color: #666666; }
.aspect .person:active img,
.aspect .requested_person:active img,
.requests .person:active img,
.requests .requested_person:active img,
.remove .person:active img,
.remove .requested_person:active img {
-webkit-box-shadow: 0 1px 3px #333333;
-moz-box-shadow: 0 2px 4px #333333;
opacity: 0.9; }
ul#settings_nav {
list-style: none;
padding: 0;
marign: 0;
font-size: larger; }
ul#settings_nav > li a {
font-size: smaller;
display: block;
height: 100%;
border-bottom: 1px solid #eeeeee;
padding: 2px; }
.settings_pane {
display: none; }
#fancybox-close:hover {
background-color: transparent; }
#friend_pictures {
margin-top: 12px;
line-height: 1em; }
#friend_pictures img {
margin-right: -1px;
width: 35px;
height: 35px; }
#thumbnails {
line-height: 14px; }
#aspect_list {
margin: 0;
padding: 0; }

View file

@ -114,7 +114,7 @@ header
:bottom 1px solid #ccc :bottom 1px solid #ccc
a a
:color #999 :color #CCC
&:hover &:hover
:background none :background none
@ -266,8 +266,8 @@ li.message
:size 14px :size 14px
div.info div.info
:color #444 :color #999
:font-size 13px :font-size smaller
a a
:color #ccc :color #ccc
.time .time
@ -768,12 +768,12 @@ h1.big_text
:padding 3px 8px :padding 3px 8px
:bottom 3px :bottom 3px
:color #999 :color #CCC
&:hover &:hover
:background :background
:color #4e4e4e :color #4e4e4e
:color #ccc :color #eee
&.selected a &.selected a
:-webkit-border-radius 5px 5px 0 0 :-webkit-border-radius 5px 5px 0 0

View file

@ -1,123 +0,0 @@
@font-face {
font-family: "BrandonGrotesqueLightRegular";
src: url("brandongrotesque_light/Brandon_light-webfont.eot");
src: local("☺"), url("brandongrotesque_light/Brandon_light-webfont.woff") format("woff"), url("brandongrotesque_light/Brandon_light-webfont.ttf") format("truetype"), url("brandongrotesque_light/Brandon_light-webfont.svg#webfont") format("svg");
font {
weight: normal;
style: normal; } }
#flash_notice,
#flash_error,
#flash_alert {
z-index: 100;
top: 32px;
position: absolute;
color: black;
width: 400px;
margin: 0 0 0 -200px;
left: 50%;
text-align: center;
font-size: 14px;
padding: 3px 0; }
#flash_notice {
background-color: #ccffcc;
border: solid 1px #66cc66; }
#flash_error,
#flash_alert {
background-color: #ffcccc;
border: solid 1px #cc6666; }
.fieldWithErrors {
display: inline; }
.error_messages {
width: 400px;
border: 2px solid #cf0000;
padding: 0;
padding-bottom: 12px;
margin-bottom: 20px;
background-color: #f0f0f0;
font-size: 12px; }
.error_messages h2 {
text-align: left;
padding: 5px 5px 5px 15px;
margin: 0;
font-weight: bold;
font-size: 12px;
background-color: #cc0000; }
.error_messages p {
margin: 8px 10px; }
.error_messages ul {
margin: 0; }
/* via blueprint */
html {
font-size: 100.01%; }
/* via blueprint */
body {
font-size: 75%;
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
color: #222222;
background: white;
margin-left: 100px; }
/* via blueprint */
input[type=text],
input[type=password],
textarea, select {
background-color: white;
border: 1px solid #bbbbbb; }
/* via blueprint */
input[type=text]:focus,
input[type=password]:focus,
input.text:focus,
input.title:focus,
textarea:focus, select:focus {
border-color: #666666; }
#huge_text {
font-size: 40px;
font-family: "BrandonGrotesqueLightRegular";
line-height: 120px;
color: #333333;
text-shadow: 0 1px 1px #999999; }
input {
font-size: 14px; }
form p {
position: relative;
padding: 0; }
label {
color: #999999;
position: absolute;
padding-top: 7px;
left: 8px;
font-size: 14px;
font-weight: normal; }
input[type='text'],
input[type='password'] {
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
padding: 0.3em;
width: 395px;
border-top: 1px solid #999999; }
#user {
display: inline;
width: 500px; }
#user .username {
width: 200px;
display: inline; }
#user .username input {
display: inline;
width: 200px; }
#user .user_network {
width: 200px;
display: inline;
font-size: 18px; }

View file

@ -1,73 +0,0 @@
.button, .button_set {
font-family: "Lucida Grande", sans-serif;
font-style: normal;
display: inline;
padding: 4px;
font-size: 12px;
line-height: 100%;
text-shadow: 0 1px 0 white;
min-height: 10px;
background: -webkit-gradient(linear, 0% 29%, 0% 85%, from(#fcfcfc), to(#f6f6f6));
background: -moz-linear-gradient(top, #fcfcfc, #f6f6f6);
border: 1px solid #eeeeee;
border-bottom: 1px solid #999999;
border-left: 1px solid #cccccc;
border-right: 1px solid #cccccc;
border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
cursor: pointer;
box-shadow: 0 1px 1px #eeeeee;
-webkit-box-shadow: 0 1px 1px #eeeeee;
-moz-box-shadow: 0 1px 1px #eeeeee;
font-weight: normal;
color: #666666; }
.button:hover, .button_set:hover {
color: #666666;
background: -webkit-gradient(linear, 0% 29%, 0% 85%, from(#fafafa), to(#f0f0f0));
background: -moz-linear-gradient(top, #fafafa, #f0f0f0); }
.button:active, .button_set:active {
color: #666666;
background: -webkit-gradient(linear, 0% 29%, 0% 85%, from(#f0f0f0), to(#fafafa));
background: -moz-linear-gradient(top, #f0f0f0, #fafafa);
border-top: 1px solid #cccccc; }
ul.button_set {
padding-left: 0;
padding-right: 0; }
ul.button_set > li {
padding: 5px;
display: inline;
height: 100%;
border-left: 1px solid #cccccc;
border-right: 1px solid white;
margin-left: -3px;
margin-right: -3px; }
ul.button_set > li:first-child {
margin-left: 0;
border-left: none; }
ul.button_set > li:last-child {
margin-right: 0;
border-right: none; }
.button .selected, .button_set .selected {
background: -webkit-gradient(linear, 0% 29%, 0% 85%, from(#f0f0f0), to(#fafafa));
background: -moz-linear-gradient(top, #f0f0f0, #fafafa);
border-top: 1px solid #aaaaaa; }
.right {
position: absolute;
right: 0; }
.contextual_pane {
z-index: 20;
position: absolute;
display: none;
background-color: white;
border: 4px solid black;
border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
box-shadow: 0 0 5px black;
-webkit-box-shadow: 0 0 10px black;
padding: 2em; }

View file

@ -38,4 +38,11 @@ describe Request do
Request.for_user(user).all.count.should == 1 Request.for_user(user).all.count.should == 1
end end
it 'should strip the destination url' do
person_request = Request.new
person_request.destination_url = " http://google.com/ "
person_request.send(:clean_link)
person_request.destination_url.should == "http://google.com/"
end
end end

View file

@ -13,17 +13,27 @@ describe User do
let(:invited_user3) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter_with_3_invites)} let(:invited_user3) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter_with_3_invites)}
context "creating invites" do context "creating invites" do
it 'should invite the user' do before do
pending "weird wrong number of arguments error (0 for 2), which changes if you put in two args" deliverable = Object.new
#User.should_receive(:invite!).and_return(invited_user) deliverable.stub!(:deliver)
inviter.invite_user(:email => "email@example.com") ::Devise.mailer.stub!(:invitation).and_return(deliverable)
end end
it 'should add the inviter to the invited_user' do it 'creates a user' do
User.should_receive(:invite!).and_return(invited_user) lambda {
invited_user = inviter.invite_user(:email => "email@example.com") inviter.invite_user(:email => "joe@example.com")
}.should change(User, :count).by(1)
end
it 'sends email to the invited user' do
::Devise.mailer.should_receive(:invitation).once
inviter.invite_user(:email => "ian@example.com")
end
it 'adds the inviter to the invited_user' do
invited_user = inviter.invite_user(:email => "marcy@example.com")
invited_user.reload invited_user.reload
invited_user.inviters.include?(inviter).should be true invited_user.inviters.include?(inviter).should be_true
end end
end end

View file

@ -86,6 +86,16 @@ describe User do
user.should_receive(:remove_person) user.should_receive(:remove_person)
user.destroy user.destroy
end end
it 'should remove all aspects' do
pending "this should use :dependant => :destroy on the many assoc...but that screws this test suite..."
aspects = user.aspects
user.destroy
proc{ aspects.reload }.should raise_error /does not exist/
end
describe '#remove_person' do describe '#remove_person' do
it 'should remove the person object' do it 'should remove the person object' do