Merge branch 'master' of github.com:diaspora/diaspora_rails
Conflicts: app/models/user.rb
This commit is contained in:
commit
0cc5cc5487
11 changed files with 82 additions and 40 deletions
|
|
@ -19,7 +19,6 @@ class ApplicationController < ActionController::Base
|
|||
if current_user
|
||||
@groups = current_user.groups
|
||||
@friends = current_user.friends
|
||||
@latest_status_message = StatusMessage.newest_for(current_user.person)
|
||||
@group = params[:group] ? current_user.group_by_id(params[:group]) : current_user.groups.first
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,12 +3,9 @@ class StatusMessagesController < ApplicationController
|
|||
|
||||
def index
|
||||
@status_messages = StatusMessage.paginate :page => params[:page], :order => 'created_at DESC'
|
||||
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def create
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ class Group
|
|||
|
||||
key :person_ids, Array
|
||||
key :request_ids, Array
|
||||
key :post_ids, Array
|
||||
|
||||
many :people, :in => :person_ids, :class_name => 'Person'
|
||||
many :requests, :in => :request_ids, :class_name => 'Request'
|
||||
many :posts, :in => :post_ids, :class_name => 'Post'
|
||||
|
||||
belongs_to :user, :class_name => 'User'
|
||||
|
||||
|
|
|
|||
|
|
@ -41,6 +41,10 @@ class User
|
|||
######## Posting ########
|
||||
def post(class_name, options = {})
|
||||
options[:person] = self.person
|
||||
|
||||
group_id = options[:group_id]
|
||||
options.delete(:group_id)
|
||||
|
||||
model_class = class_name.to_s.camelize.constantize
|
||||
post = model_class.instantiate(options)
|
||||
post.creator_signature = post.sign_with_key(encryption_key)
|
||||
|
|
@ -51,6 +55,12 @@ class User
|
|||
|
||||
self.raw_visible_posts << post
|
||||
self.save
|
||||
|
||||
if group_id
|
||||
group = self.groups.find_by_id(group_id)
|
||||
group.posts << post
|
||||
group.save
|
||||
end
|
||||
|
||||
post
|
||||
end
|
||||
|
|
@ -58,7 +68,7 @@ class User
|
|||
def visible_posts( opts = {} )
|
||||
if opts[:by_members_of]
|
||||
group = self.groups.find_by_id( opts[:by_members_of].id )
|
||||
self.raw_visible_posts.find_all_by_person_id( (group.person_ids + [self.person.id] ), :order => "created_at desc")
|
||||
group.posts
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -258,16 +268,18 @@ class User
|
|||
self.raw_visible_posts << object
|
||||
self.save
|
||||
|
||||
groups = self.groups_with_person(object.person)
|
||||
groups.each{ |group| group.posts << object
|
||||
group.save
|
||||
}
|
||||
|
||||
groups = groups_with_person(object.person)
|
||||
object.socket_to_uid(id, :group_id => group.id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object))
|
||||
end
|
||||
|
||||
socket(object) if (object.respond_to?(:socket_to_uid) && !self.owns?(object))
|
||||
end
|
||||
|
||||
###Helpers############
|
||||
def socket( object )
|
||||
groups = groups_with_person(object.person)
|
||||
object.socket_to_uid(id, :group_id => group.id)
|
||||
end
|
||||
|
||||
def self.instantiate( opts = {} )
|
||||
opts[:person][:email] = opts[:email]
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
welcome home,
|
||||
= current_user.profile.first_name
|
||||
|
||||
= render "shared/publisher"
|
||||
= render "shared/publisher", :group_id => @group.id
|
||||
|
||||
%ul#stream
|
||||
- for post in @posts
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
= render "shared/publisher"
|
||||
= render "shared/publisher", :group_id => @group.id
|
||||
%ul#stream
|
||||
- for post in @posts
|
||||
= render type_partial(post), :post => post
|
||||
|
|
|
|||
|
|
@ -14,7 +14,12 @@
|
|||
#friend_pictures
|
||||
- for friend in @group.people
|
||||
= person_image_link(friend)
|
||||
= link_to "+", "#add_request_pane", :id => 'add_request_button', :class => "add_new"
|
||||
= link_to (image_tag 'add_friend_button.png'), "#add_request_pane", :id => 'add_request_button'
|
||||
|
||||
- if @group.people.count == 0
|
||||
%span.add_new_description
|
||||
<< click the plus to add friends to this group
|
||||
|
||||
|
||||
.yo{:style => 'display:none'}
|
||||
#add_request_pane
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@
|
|||
#publisher_form
|
||||
= form_for StatusMessage.new, :remote => true do |f|
|
||||
= f.error_messages
|
||||
|
||||
= f.hidden_field :group_id, :value => group_id
|
||||
|
||||
%p
|
||||
%label{:for => "status_message_message"} Message
|
||||
= f.text_area :message, :rows => 2
|
||||
|
|
|
|||
|
|
@ -430,24 +430,21 @@ h1.big_text {
|
|||
#group ul > li.selected, #group ul > li.selected a {
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
text-shadow: 0 2px 0px black; }
|
||||
font-size: 18px; }
|
||||
#group a {
|
||||
color: #aaaaaa;
|
||||
font-weight: normal; }
|
||||
#group #friend_pictures .add_new {
|
||||
#group #friend_pictures .add_new_description {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
height: 40px;
|
||||
width: 40px;
|
||||
background-color: black;
|
||||
text-align: center;
|
||||
font-size: 40px;
|
||||
display: inline-block;
|
||||
background-color: #222222;
|
||||
color: #999999;
|
||||
top: -16px;
|
||||
line-height: 40px;
|
||||
top: -6px; }
|
||||
#group #friend_pictures .add_new:hover {
|
||||
background: #999999;
|
||||
color: black; }
|
||||
padding: 0 1em;
|
||||
margin-bottom: -20px;
|
||||
font-style: italic; }
|
||||
#group #friend_pictures img {
|
||||
height: 40px; }
|
||||
|
||||
|
|
|
|||
|
|
@ -546,21 +546,22 @@ h1.big_text
|
|||
:weight normal
|
||||
|
||||
#friend_pictures
|
||||
.add_new
|
||||
:position relative
|
||||
:display inline-block
|
||||
:height 40px
|
||||
:width 40px
|
||||
:background
|
||||
:color #000
|
||||
:text-align center
|
||||
:font-size 40px
|
||||
:line-height 40px
|
||||
:top -6px
|
||||
|
||||
&:hover
|
||||
:background #999
|
||||
:color #000
|
||||
.add_new_description
|
||||
:position relative
|
||||
:height 40px
|
||||
:display inline-block
|
||||
:background
|
||||
:color #222
|
||||
:color #999
|
||||
:top -16px
|
||||
:line
|
||||
:height 40px
|
||||
:padding 0 1em
|
||||
:margin
|
||||
:bottom -20px
|
||||
:font
|
||||
:style italic
|
||||
|
||||
img
|
||||
:height 40px
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ describe Group do
|
|||
group.people.include?(@friend_2).should be true
|
||||
group.people.size.should == 2
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe 'querying' do
|
||||
|
|
@ -52,4 +51,31 @@ describe Group do
|
|||
@group.people.size.should == 1
|
||||
end
|
||||
end
|
||||
|
||||
describe 'posting' do
|
||||
|
||||
it 'should add post to group via post method' do
|
||||
@group = @user.group(:name => 'losers', :people => [@friend])
|
||||
|
||||
status_message = @user.post( :status_message, :message => "hey", :group_id => @group.id )
|
||||
|
||||
@group.reload
|
||||
@group.posts.include?(status_message).should be true
|
||||
end
|
||||
|
||||
it 'should add post to group via receive method' do
|
||||
group = @user.group(:name => 'losers')
|
||||
group2 = @user2.group(:name => 'winners')
|
||||
friend_users(@user, group, @user2, group2)
|
||||
|
||||
message = @user2.post(:status_message, :message => "Hey Dude")
|
||||
|
||||
@user.receive message.to_diaspora_xml
|
||||
|
||||
group.reload
|
||||
group.posts.include?(message).should be true
|
||||
@user.visible_posts(:by_members_of => group).include?(message).should be true
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue