Merge branch 'master' of github.com:diaspora/diaspora

This commit is contained in:
Raphael 2010-09-22 15:53:23 -07:00
commit 33317aeeaf
17 changed files with 177 additions and 44 deletions

View file

@ -52,7 +52,7 @@ class AlbumsController < ApplicationController
data = clean_hash(params[:album])
if @album.update_attributes data
if current_user.update_post( @album, data )
flash[:notice] = "Album #{@album.name} successfully edited."
respond_with @album
else

View file

@ -88,7 +88,7 @@ class PhotosController < ApplicationController
data = clean_hash(params)
if @photo.update_attributes data[:photo]
if current_user.update_post( @photo, data[:photo] )
flash[:notice] = "Photo successfully updated."
respond_with @photo
else

View file

@ -122,6 +122,12 @@ class User
post
end
def update_post( post, post_hash = {} )
if self.owns? post
post.update_attributes(post_hash)
end
end
def validate_aspect_permissions(aspect_ids)
aspect_ids = [aspect_ids.to_s] if aspect_ids.is_a? BSON::ObjectId

View file

@ -10,7 +10,7 @@
= f.error_messages
%p
%label{:for => "status_message_message"} Message
= f.text_area :message, :rows => 2
= f.text_area :message, :rows => 2, :value => params[:prefill]
%ul.aspect_selector{ :style => "display:none;"}
going to...

View file

@ -0,0 +1,27 @@
-# Copyright (c) 2010, Diaspora Inc. This file is
-# licensed under the Affero General Public License version 3. See
-# the COPYRIGHT file.
:javascript
$(".reshare_button").toggle(function(e){
e.preventDefault();
$(this).parent(".reshare_pane").children(".reshare_box").fadeIn(200);
}, function(e) {
e.preventDefault();
$(this).parent(".reshare_pane").children(".reshare_box").fadeOut(200);
});
.reshare_pane
%span.reshare_button
= link_to "Reshare", "#"
%ul.reshare_box
- for aspect in current_user.aspects_with_post( post.id )
%li.currently_sharing= aspect.name
- for aspect in current_user.aspects
- unless aspect.posts.include? post
%li.aspect_to_share= link_to aspect, :controller => "aspects", :action => "show", :id => aspect.id, :prefill => post.message

View file

@ -17,8 +17,10 @@
\--
= link_to "show comments (#{post.comments.count})", '#', :class => "show_post_comments"
= render "comments/comments", :post => post
= render "comments/comments", :post => post
- if current_user.owns?(post)
.destroy_link
= link_to 'Delete', status_message_path(post), :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "delete"
= render "shared/reshare", :post => post, :current_user => current_user

View file

@ -8,10 +8,10 @@ end
if File.exist? "#{Rails.root}/config/app_config.yml"
all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml"
all_envs = load_config_yaml "#{Rails.root}/config/app_config_example.yml" unless all_envs
all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml.example" unless all_envs
else
puts "WARNING: No config/app_config.yml found! Look at config/app_config_example.yml for help."
all_envs = load_config_yaml "#{Rails.root}/config/app_config_example.yml"
puts "WARNING: No config/app_config.yml found! Look at config/app_config.yml.example for help."
all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml.example"
end
if all_envs[Rails.env.to_s]

View file

@ -7,7 +7,7 @@
Diaspora::Application.routes.draw do
resources :people, :only => [:index, :show, :destroy]
resources :users, :except => [:create, :new, :show]
resources :status_messages, :only => [:create, :destroy, :show]
resources :status_messages
resources :comments, :except => [:index]
resources :requests, :except => [:edit, :update]
resources :photos, :except => [:index]

View file

@ -42,7 +42,7 @@ def create
end
def set_app_config username
current_config = YAML.load(File.read(Rails.root.join('config', 'app_config_example.yml')))
current_config = YAML.load(File.read(Rails.root.join('config', 'app_config.yml.example')))
current_config[Rails.env.to_s] ||= {}
current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com"
current_config['default']['pod_url'] = "#{username}.joindiaspora.com"

View file

@ -7,7 +7,7 @@
require 'config/environment'
def set_app_config username
current_config = YAML.load(File.read(Rails.root.join('config', 'app_config_example.yml')))
current_config = YAML.load(File.read(Rails.root.join('config', 'app_config.yml.example')))
current_config[Rails.env.to_s] ||= {}
current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com"
current_config['default']['pod_url'] = "#{username}.joindiaspora.com"

View file

@ -7,7 +7,7 @@
require 'config/environment'
def set_app_config username
current_config = YAML.load(File.read(Rails.root.join('config', 'app_config_example.yml')))
current_config = YAML.load(File.read(Rails.root.join('config', 'app_config.yml.example')))
current_config[Rails.env.to_s] ||= {}
current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com"
current_config['default']['pod_url'] = "#{username}.joindiaspora.com"

View file

@ -41,6 +41,12 @@ $(document).ready(function(){
}
);
$("#publisher textarea").keydown( function(e) {
if (e.shiftKey && e.keyCode == 13) {
$("#publisher form").submit();
}
});
});//end document ready

View file

@ -171,6 +171,41 @@ li.message {
li.message .content div.info .time a {
color: #666666; }
.reshare_pane {
margin-left: 5px;
margin-right: 5px;
display: inline;
position: relative; }
.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; }
.reshare_pane ul.reshare_box > li {
font-weight: bold;
padding: 8px;
padding-right: 15px;
border-top: 1px solid white;
border-bottom: 1px solid #cccccc; }
.reshare_pane ul.reshare_box > li:first-child {
border-top: none; }
.reshare_pane ul.reshare_box > li:last-child {
border-bottom: none; }
.reshare_pane ul.reshare_box > li a {
display: block;
height: 100%; }
.reshare_pane ul.reshare_box > li a:hover {
background-color: #eeeeee; }
form {
position: relative;
font-size: 120%;
@ -270,6 +305,9 @@ ul.comment_set {
.destroy_link a, .request_button a {
color: #999999;
font-weight: normal; }
.destroy_link a:hover, .request_button a:hover {
text-decoration: underline;
background: none; }
.destroy_link {
display: none;

View file

@ -225,6 +225,59 @@ li.message
a
:color #666
.reshare_pane
:margin
:left 5px
:right 5px
:display inline
:position relative
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 #666
:-webkit-box-shadow 0 0 5px #666
:-moz-box-shadow 0 0 5px #666
:text-shadow 0 2px #fff
:color #000
> li
:font
:weight bold
:padding 8px
:right 15px
:border
:top 1px solid #fff
:bottom 1px solid #ccc
&:first-child
:border
:top none
&:last-child
:border
:bottom none
a
:display block
:height 100%
&:hover
:background
:color #eee
form
:position relative
@ -360,6 +413,10 @@ ul.comment_set
:color #999
:font
:weight normal
&:hover
:text
:decoration underline
:background none
.destroy_link
:display none

View file

@ -64,6 +64,16 @@ describe User do
aspect1.posts.count.should be 1
end
end
describe '#update_post' do
let!(:album) { user.post(:album, :name => "Profile Photos", :to => aspect.id) }
it 'should update fields' do
update_hash = { :name => "Other Photos" }
user.update_post( album, update_hash )
album.name.should == "Other Photos"
end
end
end
context 'dispatching' do

View file

@ -7,54 +7,41 @@
require File.dirname(__FILE__) + '/../spec_helper'
describe User do
before do
@user = Factory.create(:user)
@aspect = @user.aspect(:name => 'heroes')
end
let(:user) { Factory(:user) }
let(:aspect) { user.aspect(:name => 'heroes') }
describe '#diaspora_handle' do
it 'uses the pod config url to set the diaspora_handle' do
@user.diaspora_handle.should == @user.username + "@example.org"
user.diaspora_handle.should == user.username + "@example.org"
end
end
describe 'profiles' do
context 'profiles' do
it 'should be able to update their profile and send it to their friends' do
Factory.create(:person)
updated_profile = { :profile => {
:first_name => 'bob',
:last_name => 'billytown',
:image_url => "http://clown.com"} }
updated_profile = {:profile => {:first_name => 'bob', :last_name => 'billytown', :image_url => "http://clown.com"}}
@user.update_profile(updated_profile).should == true
@user.profile.image_url.should == "http://clown.com"
user.update_profile(updated_profile).should be true
user.profile.image_url.should == "http://clown.com"
end
end
describe 'aspects' do
it 'should delete an empty aspect' do
@user.aspects.include?(@aspect).should == true
@user.drop_aspect(@aspect)
@user.reload
context 'aspects' do
let(:user2) { Factory(:user) }
let(:aspect2) { user2.aspect(:name => 'stuff') }
@user.aspects.include?(@aspect).should == false
it 'should delete an empty aspect' do
user.drop_aspect(aspect)
user.aspects.include?(aspect).should == false
end
it 'should not delete an aspect with friends' do
user2 = Factory.create(:user)
aspect2 = user2.aspect(:name => 'stuff')
user2.reload
aspect2.reload
friend_users(@user, Aspect.find_by_id(@aspect.id), user2, Aspect.find_by_id(aspect2.id))
@aspect.reload
@user.aspects.include?(@aspect).should == true
proc{@user.drop_aspect(@aspect)}.should raise_error /Aspect not empty/
@user.reload
@user.aspects.include?(@aspect).should == true
friend_users(user, Aspect.find_by_id(aspect.id), user2, Aspect.find_by_id(aspect2.id))
aspect.reload
proc{user.drop_aspect(aspect)}.should raise_error /Aspect not empty/
user.aspects.include?(aspect).should == true
end
end