Merge branch 'master' of github.com:diaspora/diaspora
This commit is contained in:
commit
12f7d16c0b
23 changed files with 292 additions and 305 deletions
|
|
@ -1,20 +1,17 @@
|
|||
class AlbumsController < ApplicationController
|
||||
before_filter :authenticate_user!
|
||||
|
||||
respond_to :html
|
||||
respond_to :json, :only => [:index, :show]
|
||||
|
||||
def index
|
||||
@albums = Album.mine_or_friends(params[:friends], current_user).paginate :page => params[:page], :order => 'created_at DESC'
|
||||
respond_with @albums
|
||||
end
|
||||
|
||||
def create
|
||||
@album = current_user.post(:album, params[:album])
|
||||
|
||||
if @album.created_at
|
||||
flash[:notice] = "Successfully created album."
|
||||
redirect_to @album
|
||||
else
|
||||
flash[:error] = "Successfully failed."
|
||||
redirect_to albums_path
|
||||
end
|
||||
respond_with @album
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
@ -22,30 +19,26 @@ class AlbumsController < ApplicationController
|
|||
end
|
||||
|
||||
def destroy
|
||||
@album = Album.first(:id => params[:id])
|
||||
@album = Album.find_by_id params[:id]
|
||||
@album.destroy
|
||||
flash[:notice] = "Successfully destroyed album."
|
||||
redirect_to albums_url
|
||||
respond_with :location => albums_url
|
||||
end
|
||||
|
||||
def show
|
||||
@photo = Photo.new
|
||||
@album = Album.first(:id => params[:id])
|
||||
@album = Album.find_by_id params[:id]
|
||||
@album_photos = @album.photos
|
||||
|
||||
respond_with @album
|
||||
end
|
||||
|
||||
def edit
|
||||
@album = Album.first(:id => params[:id])
|
||||
@album = Album.find_by_id params[:id]
|
||||
end
|
||||
|
||||
def update
|
||||
@album = Album.first(:id => params[:id])
|
||||
if @album.update_attributes(params[:album])
|
||||
flash[:notice] = "Successfully updated album."
|
||||
redirect_to @album
|
||||
else
|
||||
render :action => 'edit'
|
||||
end
|
||||
@album = Album.find_params_by_id params[:id]
|
||||
respond_with @album
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,15 +1,20 @@
|
|||
class CommentsController < ApplicationController
|
||||
before_filter :authenticate_user!
|
||||
|
||||
respond_to :html
|
||||
respond_to :json, :only => :show
|
||||
|
||||
def create
|
||||
target = Post.first(:id => params[:comment][:post_id])
|
||||
target = Post.find_by_id params[:comment][:post_id]
|
||||
text = params[:comment][:text]
|
||||
|
||||
if current_user.comment text, :on => target
|
||||
render :text => "Woo!"
|
||||
else
|
||||
render :text => "Boo!"
|
||||
end
|
||||
|
||||
@comment = current_user.comment text, :on => target
|
||||
respond_with @comment
|
||||
end
|
||||
|
||||
end
|
||||
def show
|
||||
@comment = Comment.find_by_id params[:id]
|
||||
respond_with @comment
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,20 +1,17 @@
|
|||
class GroupsController < ApplicationController
|
||||
before_filter :authenticate_user!
|
||||
|
||||
respond_to :html
|
||||
respond_to :json, :only => :show
|
||||
|
||||
def index
|
||||
@posts = current_user.visible_posts(:by_members_of => :all).paginate :page => params[:page], :order => 'created_at DESC'
|
||||
@group = :all
|
||||
end
|
||||
|
||||
def create
|
||||
@group = current_user.group(params[:group])
|
||||
|
||||
if @group.created_at
|
||||
flash[:notice] = "Successfully created group."
|
||||
redirect_to @group
|
||||
else
|
||||
render :action => 'new'
|
||||
end
|
||||
@group = current_user.group params[:group]
|
||||
respond_with @group
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
@ -22,36 +19,31 @@ class GroupsController < ApplicationController
|
|||
end
|
||||
|
||||
def destroy
|
||||
@group = Group.first(:id => params[:id])
|
||||
@group = Group.find_by_id params[:id]
|
||||
@group.destroy
|
||||
flash[:notice] = "Successfully destroyed group."
|
||||
redirect_to groups_url
|
||||
respond_with :location => groups_url
|
||||
end
|
||||
|
||||
def show
|
||||
@group = Group.first(:id => params[:id])
|
||||
@group = Group.find_by_id params[:id]
|
||||
@friends = @group.people
|
||||
@posts = current_user.visible_posts( :by_members_of => @group ).paginate :order => 'created_at DESC'
|
||||
@posts = current_user.visible_posts( :by_members_of => @group ).paginate :order => 'created_at DESC'
|
||||
|
||||
respond_with @group
|
||||
end
|
||||
|
||||
def edit
|
||||
@groups = current_user.groups
|
||||
@group = Group.first(:id => params[:id])
|
||||
@group = Group.find_by_id params[:id]
|
||||
end
|
||||
|
||||
def update
|
||||
@group = Group.first(:id => params[:id])
|
||||
if @group.update_attributes(params[:group])
|
||||
#flash[:notice] = "Successfully updated group."
|
||||
redirect_to @group
|
||||
else
|
||||
render :action => 'edit'
|
||||
end
|
||||
@group = Group.find_by_id(params[:id])
|
||||
@group.update_attributes(params[:group])
|
||||
respond_with @group
|
||||
end
|
||||
|
||||
def move_friends
|
||||
pp params
|
||||
|
||||
params[:moves].each{ |move|
|
||||
move = move[1]
|
||||
unless current_user.move_friend(move)
|
||||
|
|
@ -63,8 +55,8 @@ class GroupsController < ApplicationController
|
|||
|
||||
flash[:notice] = "Groups edited successfully."
|
||||
redirect_to Group.first, :action => "edit"
|
||||
|
||||
end
|
||||
|
||||
def move_friend
|
||||
unless current_user.move_friend( :friend_id => params[:friend_id], :from => params[:from], :to => params[:to][:to])
|
||||
flash[:error] = "didn't work #{params.inspect}"
|
||||
|
|
|
|||
|
|
@ -1,14 +1,12 @@
|
|||
class PeopleController < ApplicationController
|
||||
before_filter :authenticate_user!
|
||||
|
||||
respond_to :html
|
||||
respond_to :json, :only => [:index, :show]
|
||||
|
||||
def index
|
||||
unless params[:q]
|
||||
@people = current_user.friends.paginate :page => params[:page], :order => 'created_at DESC'
|
||||
render :index
|
||||
else
|
||||
@people = Person.search(params[:q])
|
||||
render :json => @people.to_json(:only => :_id)
|
||||
end
|
||||
@people = Person.search params[:q]
|
||||
respond_with @people
|
||||
end
|
||||
|
||||
def show
|
||||
|
|
@ -22,12 +20,13 @@ class PeopleController < ApplicationController
|
|||
|
||||
@latest_status_message = current_user.raw_visible_posts.find_all_by__type_and_person_id("StatusMessage", params[:id]).last
|
||||
@post_count = @posts.count
|
||||
|
||||
respond_with @person
|
||||
end
|
||||
|
||||
def destroy
|
||||
current_user.unfriend(current_user.visible_person_by_id(params[:id]))
|
||||
flash[:notice] = "unfriended person."
|
||||
redirect_to people_url
|
||||
respond_with :location => people_url
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,20 +1,28 @@
|
|||
class PhotosController < ApplicationController
|
||||
before_filter :authenticate_user!
|
||||
|
||||
respond_to :html
|
||||
respond_to :json, :only => :show
|
||||
|
||||
def create
|
||||
|
||||
album = Album.find_by_id params[:album_id]
|
||||
|
||||
begin
|
||||
@photo = current_user.post(:photo, params)
|
||||
render :nothing => true if @photo.created_at
|
||||
respond_with @photo
|
||||
|
||||
rescue TypeError
|
||||
flash[:error] = "Photo upload failed. Are you sure an image was added?"
|
||||
redirect_to Album.first(:id => params[:album_id])
|
||||
message = "Photo upload failed. Are you sure an image was added?"
|
||||
respond_with :location => album, :error => message
|
||||
|
||||
rescue CarrierWave::IntegrityError
|
||||
flash[:error] = "Photo upload failed. Are you sure that was an image?"
|
||||
redirect_to Album.first(:id => params[:album_id])
|
||||
message = "Photo upload failed. Are you sure that was an image?"
|
||||
respond_with :location => album, :error => message
|
||||
|
||||
rescue RuntimeError => e
|
||||
flash[:error] = "Photo upload failed. Are you sure that your seatbelt is fastened?"
|
||||
redirect_to Album.first(:id => params[:album_id])
|
||||
message = "Photo upload failed. Are you sure that your seatbelt is fastened?"
|
||||
respond_with :location => album, :error => message
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
|
@ -26,29 +34,27 @@ class PhotosController < ApplicationController
|
|||
end
|
||||
|
||||
def destroy
|
||||
@photo = Photo.first(:id => params[:id])
|
||||
@photo = Photo.find_by_id params[:id]
|
||||
@photo.destroy
|
||||
flash[:notice] = "Successfully deleted photo."
|
||||
redirect_to @photo.album
|
||||
respond_with :location => @photo.album
|
||||
end
|
||||
|
||||
def show
|
||||
@photo = Photo.first(:id => params[:id])
|
||||
@photo = Photo.find_by_id params[:id]
|
||||
@album = @photo.album
|
||||
|
||||
respond_with @photo, @album
|
||||
end
|
||||
|
||||
def edit
|
||||
@photo= Photo.first(:id => params[:id])
|
||||
@photo = Photo.find_by_id params[:id]
|
||||
@album = @photo.album
|
||||
end
|
||||
|
||||
def update
|
||||
@photo= Photo.first(:id => params[:id])
|
||||
if @photo.update_attributes(params[:photo])
|
||||
flash[:notice] = "Successfully updated photo."
|
||||
redirect_to @photo
|
||||
else
|
||||
render :action => 'edit'
|
||||
end
|
||||
@photo = Photo.find_by_id params[:id]
|
||||
@photo.update_attributes params[:photo]
|
||||
|
||||
respond_with @photo
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ class PublicsController < ApplicationController
|
|||
include Diaspora::Parser
|
||||
|
||||
def hcard
|
||||
@person = Person.first(:_id => params[:id])
|
||||
@person = Person.find_by_id params[:id]
|
||||
|
||||
unless @person.nil? || @person.owner.nil?
|
||||
render 'hcard'
|
||||
|
|
|
|||
|
|
@ -1,29 +1,31 @@
|
|||
class RequestsController < ApplicationController
|
||||
before_filter :authenticate_user!
|
||||
include RequestsHelper
|
||||
|
||||
respond_to :html
|
||||
respond_to :json, :only => :index
|
||||
|
||||
def index
|
||||
@remote_requests = Request.for_user( current_user )
|
||||
@request = Request.new
|
||||
@remote_requests = Request.for_user current_user
|
||||
@request = Request.new
|
||||
|
||||
respond_with @remote_requests
|
||||
end
|
||||
|
||||
def destroy
|
||||
if params[:accept]
|
||||
|
||||
if params[:group_id]
|
||||
@friend = current_user.accept_and_respond( params[:id], params[:group_id])
|
||||
|
||||
flash[:notice] = "you are now friends"
|
||||
redirect_to current_user.group_by_id(params[:group_id])
|
||||
respond_with :location => current_user.group_by_id(params[:group_id])
|
||||
else
|
||||
flash[:error] = "please select a group!"
|
||||
redirect_to requests_url
|
||||
respond_with :location => requests_url
|
||||
end
|
||||
else
|
||||
current_user.ignore_friend_request params[:id]
|
||||
flash[:notice] = "ignored friend request"
|
||||
redirect_to requests_url
|
||||
respond_with :location => requests_url, :notice => "Ignored friend request."
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
@ -31,11 +33,12 @@ class RequestsController < ApplicationController
|
|||
end
|
||||
|
||||
def create
|
||||
group = current_user.group_by_id(params[:request][:group_id])
|
||||
|
||||
begin
|
||||
rel_hash = relationship_flow(params[:request][:destination_url])
|
||||
rescue Exception => e
|
||||
flash[:error] = "no diaspora seed found with this email!"
|
||||
redirect_to current_user.group_by_id(params[:request][:group_id])
|
||||
respond_with :location => group, :error => "No diaspora seed found with this email!"
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -45,17 +48,17 @@ class RequestsController < ApplicationController
|
|||
@request = current_user.send_request(rel_hash, params[:request][:group_id])
|
||||
rescue Exception => e
|
||||
raise e unless e.message.include? "already friends"
|
||||
flash[:notice] = "You are already friends with #{params[:request][:destination_url]}!"
|
||||
redirect_to current_user.group_by_id(params[:request][:group_id])
|
||||
message = "You are already friends with #{params[:request][:destination_url]}!"
|
||||
respond_with :location => group, :notice => message
|
||||
return
|
||||
end
|
||||
|
||||
if @request
|
||||
flash[:notice] = "a friend request was sent to #{@request.destination_url}"
|
||||
redirect_to current_user.group_by_id(params[:request][:group_id])
|
||||
message = "A friend request was sent to #{@request.destination_url}."
|
||||
respond_with :location => group, :notice => message
|
||||
else
|
||||
flash[:error] = "Something went horribly wrong..."
|
||||
redirect_to current_user.group_by_id(params[:request][:group_id])
|
||||
message = "Something went horribly wrong."
|
||||
respond_with :location => group, :error => message
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,31 +1,23 @@
|
|||
class StatusMessagesController < ApplicationController
|
||||
before_filter :authenticate_user!
|
||||
|
||||
respond_to :html
|
||||
respond_to :json, :only => :show
|
||||
|
||||
def create
|
||||
params[:status_message][:to] = params[:group_ids]
|
||||
@status_message = current_user.post(:status_message, params[:status_message])
|
||||
|
||||
if @status_message.created_at
|
||||
render :nothing => true
|
||||
else
|
||||
redirect_to root_url
|
||||
end
|
||||
respond_with @status_message
|
||||
end
|
||||
|
||||
def destroy
|
||||
@status_message = StatusMessage.where(:id => params[:id]).first
|
||||
@status_message = StatusMessage.find_by_id params[:id]
|
||||
@status_message.destroy
|
||||
flash[:notice] = "Successfully destroyed status message."
|
||||
redirect_to root_url
|
||||
respond_with :location => root_url
|
||||
end
|
||||
|
||||
def show
|
||||
@status_message = StatusMessage.where(:id => params[:id]).first
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.xml { render :xml => @status_message.build_xml_for }
|
||||
format.json { render :json => @status_message }
|
||||
end
|
||||
@status_message = StatusMessage.find_by_id params[:id]
|
||||
respond_with @status_message
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,37 +1,26 @@
|
|||
class UsersController < ApplicationController
|
||||
before_filter :authenticate_user!, :except => [:new, :create]
|
||||
|
||||
def index
|
||||
@groups_array = current_user.groups.collect{|x| [x.to_s, x.id]}
|
||||
|
||||
unless params[:q]
|
||||
@people = Person.all
|
||||
render :index
|
||||
else
|
||||
@people = Person.search(params[:q])
|
||||
end
|
||||
end
|
||||
respond_to :html
|
||||
respond_to :json, :only => :show
|
||||
|
||||
def show
|
||||
@user= User.first(:id => params[:id])
|
||||
@user = User.find_by_id params[:id]
|
||||
@user_profile = @user.person.profile
|
||||
|
||||
respond_with @user
|
||||
end
|
||||
|
||||
def edit
|
||||
@user = current_user
|
||||
@person = @user.person
|
||||
@user = current_user
|
||||
@person = @user.person
|
||||
@profile = @user.profile
|
||||
@photos = Photo.where(:person_id => @person.id).paginate :page => params[:page], :order => 'created_at DESC'
|
||||
@photos = Photo.find_all_by_person_id(@person.id).paginate :page => params[:page], :order => 'created_at DESC'
|
||||
end
|
||||
|
||||
def update
|
||||
@user = User.where(:id => params[:id]).first
|
||||
|
||||
if @user.update_profile(params[:user])
|
||||
flash[:notice] = "Successfully updated your profile"
|
||||
redirect_to @user.person
|
||||
else
|
||||
render :action => 'edit'
|
||||
end
|
||||
@user = User.find_by_id params[:id]
|
||||
@user.update_profile params[:user]
|
||||
respond_with @user
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
class Album < Post
|
||||
|
||||
xml_reader :name
|
||||
|
||||
key :name, String
|
||||
|
||||
many :photos, :class_name => 'Photo', :foreign_key => :album_id
|
||||
|
|
@ -13,11 +14,7 @@ class Album < Post
|
|||
|
||||
|
||||
def self.mine_or_friends(friend_param, current_user)
|
||||
if friend_param
|
||||
Album.find_all_by_person_id(current_user.friend_ids)
|
||||
else
|
||||
current_user.person.albums
|
||||
end
|
||||
friend_param ? Album.find_all_by_person_id(current_user.friend_ids) : current_user.person.albums
|
||||
end
|
||||
|
||||
def prev_photo(photo)
|
||||
|
|
|
|||
|
|
@ -10,16 +10,17 @@ class Comment
|
|||
xml_accessor :post_id
|
||||
xml_accessor :_id
|
||||
|
||||
key :text, String
|
||||
timestamps!
|
||||
|
||||
key :post_id, ObjectId
|
||||
belongs_to :post, :class_name => "Post"
|
||||
|
||||
key :text, String
|
||||
key :post_id, ObjectId
|
||||
key :person_id, ObjectId
|
||||
|
||||
|
||||
belongs_to :post, :class_name => "Post"
|
||||
belongs_to :person, :class_name => "Person"
|
||||
|
||||
validates_presence_of :text
|
||||
|
||||
timestamps!
|
||||
|
||||
def push_upstream
|
||||
Rails.logger.info("GOIN UPSTREAM")
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
class Group
|
||||
include MongoMapper::Document
|
||||
|
||||
key :name, String
|
||||
validates_presence_of :name
|
||||
|
||||
key :person_ids, Array
|
||||
key :name, String
|
||||
key :person_ids, Array
|
||||
key :request_ids, Array
|
||||
key :post_ids, Array
|
||||
key :post_ids, Array
|
||||
|
||||
many :people, :in => :person_ids, :class_name => 'Person'
|
||||
many :people, :in => :person_ids, :class_name => 'Person'
|
||||
many :requests, :in => :request_ids, :class_name => 'Request'
|
||||
many :posts, :in => :post_ids, :class_name => 'Post'
|
||||
many :posts, :in => :post_ids, :class_name => 'Post'
|
||||
|
||||
belongs_to :user, :class_name => 'User'
|
||||
|
||||
validates_presence_of :name
|
||||
|
||||
timestamps!
|
||||
|
||||
def to_s
|
||||
|
|
@ -24,5 +24,15 @@ class Group
|
|||
id = id.to_id
|
||||
posts.detect{|x| x.person.id == id }
|
||||
end
|
||||
|
||||
def as_json(opts = {})
|
||||
{
|
||||
:group => {
|
||||
:name => self.name,
|
||||
:people => self.people.each{|person| person.as_json},
|
||||
:posts => self.posts.each {|post| post.as_json },
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -8,21 +8,16 @@ class Person
|
|||
xml_accessor :profile, :as => Profile
|
||||
xml_reader :exported_key
|
||||
|
||||
|
||||
key :email, String, :unique => true
|
||||
key :url, String
|
||||
|
||||
key :url, String
|
||||
key :email, String, :unique => true
|
||||
key :serialized_key, String
|
||||
|
||||
|
||||
key :owner_id, ObjectId
|
||||
key :owner_id, ObjectId
|
||||
key :user_refs, Integer, :default => 0
|
||||
|
||||
belongs_to :owner, :class_name => 'User'
|
||||
one :profile, :class_name => 'Profile'
|
||||
|
||||
many :albums, :class_name => 'Album', :foreign_key => :person_id
|
||||
|
||||
belongs_to :owner, :class_name => 'User'
|
||||
|
||||
timestamps!
|
||||
|
||||
|
|
@ -81,8 +76,19 @@ class Person
|
|||
owner.nil?
|
||||
end
|
||||
|
||||
protected
|
||||
def as_json(opts={})
|
||||
{
|
||||
:person => {
|
||||
:id => self.id,
|
||||
:name => self.real_name,
|
||||
:email => self.email,
|
||||
:url => self.url,
|
||||
:exported_key => exported_key
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
protected
|
||||
def clean_url
|
||||
self.url ||= "http://localhost:3000/" if self.class == User
|
||||
if self.url
|
||||
|
|
@ -92,9 +98,8 @@ class Person
|
|||
end
|
||||
|
||||
private
|
||||
|
||||
def remove_all_traces
|
||||
Post.all(:person_id => id).each{|p| p.delete}
|
||||
Album.all(:person_id => id).each{|p| p.delete}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -8,13 +8,18 @@ class Photo < Post
|
|||
xml_reader :album_id
|
||||
|
||||
key :album_id, ObjectId
|
||||
key :caption, String
|
||||
key :caption, String
|
||||
key :remote_photo_path
|
||||
key :remote_photo_name
|
||||
|
||||
|
||||
belongs_to :album, :class_name => 'Album'
|
||||
|
||||
timestamps!
|
||||
|
||||
validates_presence_of :album
|
||||
validates_true_for :album_id, :logic => lambda {self.validate_album_person}
|
||||
|
||||
before_destroy :ensure_user_picture
|
||||
|
||||
def self.instantiate(params = {})
|
||||
image_file = params[:user_file].first
|
||||
|
|
@ -25,19 +30,13 @@ class Photo < Post
|
|||
photo.save
|
||||
photo
|
||||
end
|
||||
|
||||
validates_true_for :album_id, :logic => lambda {self.validate_album_person}
|
||||
|
||||
before_destroy :ensure_user_picture
|
||||
key :remote_photo_path
|
||||
key :remote_photo_name
|
||||
|
||||
def validate_album_person
|
||||
album.person_id == person_id
|
||||
end
|
||||
|
||||
def remote_photo
|
||||
image.url.nil? ? (remote_photo_path + '/' + remote_photo_name) : image.url
|
||||
image.url.nil? ? (remote_photo_path + '/' + remote_photo_name) : image.url
|
||||
end
|
||||
|
||||
def remote_photo= remote_path
|
||||
|
|
|
|||
|
|
@ -16,12 +16,11 @@ class Post
|
|||
many :comments, :class_name => 'Comment', :foreign_key => :post_id
|
||||
belongs_to :person, :class_name => 'Person'
|
||||
|
||||
timestamps!
|
||||
|
||||
cattr_reader :per_page
|
||||
@@per_page = 10
|
||||
|
||||
timestamps!
|
||||
|
||||
before_destroy :propogate_retraction
|
||||
after_destroy :destroy_comments
|
||||
|
||||
|
|
@ -29,7 +28,7 @@ class Post
|
|||
self.create params
|
||||
end
|
||||
|
||||
#ENCRYPTION
|
||||
#ENCRYPTION
|
||||
xml_accessor :creator_signature
|
||||
key :creator_signature, String
|
||||
|
||||
|
|
@ -45,14 +44,23 @@ class Post
|
|||
signable_accessors.collect{|accessor|
|
||||
(self.send accessor.to_sym).to_s}.join ';'
|
||||
end
|
||||
|
||||
def as_json(opts={})
|
||||
{
|
||||
:post => {
|
||||
:id => self.id,
|
||||
:person => self.person.as_json,
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
protected
|
||||
def destroy_comments
|
||||
protected
|
||||
def destroy_comments
|
||||
comments.each{|c| c.destroy}
|
||||
end
|
||||
|
||||
def propogate_retraction
|
||||
self.person.owner.retract(self)
|
||||
end
|
||||
def propogate_retraction
|
||||
self.person.owner.retract(self)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -8,11 +8,10 @@ class Profile
|
|||
xml_accessor :first_name
|
||||
xml_accessor :last_name
|
||||
xml_accessor :image_url
|
||||
|
||||
|
||||
key :first_name, String
|
||||
key :last_name, String
|
||||
key :image_url, String
|
||||
key :last_name, String
|
||||
key :image_url, String
|
||||
|
||||
validates_presence_of :first_name, :last_name
|
||||
|
||||
|
|
|
|||
|
|
@ -11,18 +11,18 @@ class Request
|
|||
xml_accessor :callback_url
|
||||
xml_accessor :exported_key, :cdata => true
|
||||
|
||||
key :person_id, ObjectId
|
||||
key :group_id, ObjectId
|
||||
key :destination_url, String
|
||||
key :callback_url, String
|
||||
key :person_id, ObjectId
|
||||
key :exported_key, String
|
||||
key :group_id, ObjectId
|
||||
key :callback_url, String
|
||||
key :exported_key, String
|
||||
|
||||
belongs_to :person
|
||||
|
||||
validates_presence_of :destination_url, :callback_url
|
||||
before_validation :clean_link
|
||||
|
||||
scope :for_user, lambda{ |user| where(:destination_url => user.receive_url) }
|
||||
scope :for_user, lambda{ |user| where(:destination_url => user.receive_url) }
|
||||
scope :from_user, lambda{ |user| where(:destination_url.ne => user.receive_url) }
|
||||
|
||||
def self.instantiate(options = {})
|
||||
|
|
@ -41,29 +41,28 @@ class Request
|
|||
self.save
|
||||
end
|
||||
|
||||
#ENCRYPTION
|
||||
#ENCRYPTION
|
||||
|
||||
xml_accessor :creator_signature
|
||||
key :creator_signature, String
|
||||
|
||||
def signable_accessors
|
||||
accessors = self.class.roxml_attrs.collect{|definition|
|
||||
definition.accessor}
|
||||
|
||||
accessors.delete 'person'
|
||||
accessors.delete 'creator_signature'
|
||||
accessors
|
||||
end
|
||||
|
||||
def signable_string
|
||||
signable_accessors.collect{|accessor|
|
||||
(self.send accessor.to_sym).to_s}.join ';'
|
||||
end
|
||||
|
||||
def signature_valid?; true; end
|
||||
xml_accessor :creator_signature
|
||||
key :creator_signature, String
|
||||
|
||||
protected
|
||||
def signable_accessors
|
||||
accessors = self.class.roxml_attrs.collect{|definition|
|
||||
definition.accessor}
|
||||
|
||||
accessors.delete 'person'
|
||||
accessors.delete 'creator_signature'
|
||||
accessors
|
||||
end
|
||||
|
||||
def signable_string
|
||||
signable_accessors.collect{|accessor|
|
||||
(self.send accessor.to_sym).to_s}.join ';'
|
||||
end
|
||||
|
||||
def signature_valid?; true; end
|
||||
|
||||
protected
|
||||
def clean_link
|
||||
if self.destination_url
|
||||
self.destination_url = 'http://' + self.destination_url unless self.destination_url.match('https?://')
|
||||
|
|
|
|||
|
|
@ -3,6 +3,15 @@ class Retraction
|
|||
include Diaspora::Webhooks
|
||||
include Encryptable
|
||||
|
||||
xml_accessor :post_id
|
||||
xml_accessor :person_id
|
||||
xml_accessor :type
|
||||
|
||||
attr_accessor :post_id
|
||||
attr_accessor :person_id
|
||||
attr_accessor :type
|
||||
|
||||
|
||||
def self.for(object)
|
||||
retraction = self.new
|
||||
if object.is_a? User
|
||||
|
|
@ -16,14 +25,6 @@ class Retraction
|
|||
retraction
|
||||
end
|
||||
|
||||
xml_accessor :post_id
|
||||
xml_accessor :person_id
|
||||
xml_accessor :type
|
||||
|
||||
attr_accessor :post_id
|
||||
attr_accessor :person_id
|
||||
attr_accessor :type
|
||||
|
||||
def perform receiving_user_id
|
||||
Rails.logger.debug "Performing retraction for #{post_id}"
|
||||
begin
|
||||
|
|
@ -55,21 +56,21 @@ class Retraction
|
|||
Person.find_by_id(self.person_id)
|
||||
end
|
||||
|
||||
#ENCRYPTION
|
||||
xml_accessor :creator_signature
|
||||
#ENCRYPTION
|
||||
xml_accessor :creator_signature
|
||||
|
||||
def signable_accessors
|
||||
accessors = self.class.roxml_attrs.collect{|definition|
|
||||
definition.accessor}
|
||||
accessors.delete 'person'
|
||||
accessors.delete 'creator_signature'
|
||||
accessors
|
||||
end
|
||||
def signable_accessors
|
||||
accessors = self.class.roxml_attrs.collect{|definition|
|
||||
definition.accessor}
|
||||
accessors.delete 'person'
|
||||
accessors.delete 'creator_signature'
|
||||
accessors
|
||||
end
|
||||
|
||||
def signable_string
|
||||
signable_accessors.collect{|accessor|
|
||||
(self.send accessor.to_sym).to_s
|
||||
}.join ';'
|
||||
end
|
||||
def signable_string
|
||||
signable_accessors.collect{|accessor|
|
||||
(self.send accessor.to_sym).to_s
|
||||
}.join ';'
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -6,17 +6,17 @@ class User
|
|||
devise :database_authenticatable, :registerable,
|
||||
:recoverable, :rememberable, :trackable, :validatable
|
||||
|
||||
key :friend_ids, Array
|
||||
key :friend_ids, Array
|
||||
key :pending_request_ids, Array
|
||||
key :visible_post_ids, Array
|
||||
key :visible_person_ids, Array
|
||||
key :visible_post_ids, Array
|
||||
key :visible_person_ids, Array
|
||||
|
||||
one :person, :class_name => 'Person', :foreign_key => :owner_id
|
||||
|
||||
many :friends, :in => :friend_ids, :class_name => 'Person'
|
||||
many :visible_people, :in => :visible_person_ids, :class_name => 'Person' # One of these needs to go
|
||||
many :pending_requests, :in => :pending_request_ids, :class_name => 'Request'
|
||||
many :raw_visible_posts, :in => :visible_post_ids, :class_name => 'Post'
|
||||
many :friends, :in => :friend_ids, :class_name => 'Person'
|
||||
many :visible_people, :in => :visible_person_ids, :class_name => 'Person' # One of these needs to go
|
||||
many :pending_requests, :in => :pending_request_ids, :class_name => 'Request'
|
||||
many :raw_visible_posts, :in => :visible_post_ids, :class_name => 'Post'
|
||||
|
||||
many :groups, :class_name => 'Group'
|
||||
|
||||
|
|
@ -31,7 +31,6 @@ class User
|
|||
self.person.send(method, *args)
|
||||
end
|
||||
|
||||
|
||||
def real_name
|
||||
"#{person.profile.first_name.to_s} #{person.profile.last_name.to_s}"
|
||||
end
|
||||
|
|
@ -61,6 +60,7 @@ class User
|
|||
end
|
||||
false
|
||||
end
|
||||
|
||||
######## Posting ########
|
||||
def post(class_name, options = {})
|
||||
options[:person] = self.person
|
||||
|
|
@ -96,7 +96,8 @@ class User
|
|||
else
|
||||
groups = self.groups.find_all_by_id( group_ids )
|
||||
end
|
||||
#send to the groups
|
||||
|
||||
#send to the groups
|
||||
target_people = []
|
||||
|
||||
groups.each{ |group|
|
||||
|
|
@ -142,7 +143,6 @@ class User
|
|||
end
|
||||
|
||||
######### Posts and Such ###############
|
||||
|
||||
def retract( post )
|
||||
post.unsocket_from_uid(self.id) if post.respond_to? :unsocket_from_uid
|
||||
retraction = Retraction.for(post)
|
||||
|
|
@ -281,6 +281,19 @@ class User
|
|||
def all_group_ids
|
||||
self.groups.all.collect{|x| x.id}
|
||||
end
|
||||
|
||||
def as_json(opts={})
|
||||
{
|
||||
:user => {
|
||||
:posts => self.raw_visible_posts.each{|post| post.as_json},
|
||||
:friends => self.friends.each {|friend| friend.as_json},
|
||||
:groups => self.groups.each {|group| group.as_json},
|
||||
:pending_requests => self.pending_requests.each{|request| request.as_json},
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
|
||||
def self.generate_key
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
|
||||
#session_action
|
||||
#global_search
|
||||
= form_tag(users_path, :method => 'get') do
|
||||
= form_tag(people_path, :method => 'get') do
|
||||
%label{:for => 'q'} Search
|
||||
= text_field_tag 'q'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,24 +1,42 @@
|
|||
/ %h1.big_text
|
||||
/ .back
|
||||
/ = link_to '⇧ home', root_path
|
||||
/ Friends
|
||||
/ .button.right
|
||||
/ = link_to 'Add Friend', requests_path
|
||||
= @people.count.to_s + search_or_index
|
||||
%h1.big_text
|
||||
.back
|
||||
= link_to "⇧ home", root_path
|
||||
|
||||
Search
|
||||
|
||||
%p
|
||||
=form_tag '/users', :method => "get" do
|
||||
= text_field_tag :q
|
||||
= submit_tag "search"
|
||||
= link_to "reset", users_path
|
||||
|
||||
= (@people.count).to_s + search_or_index
|
||||
%table
|
||||
%tr
|
||||
%th real name
|
||||
%th email
|
||||
%th url
|
||||
- for person in @people
|
||||
%tr
|
||||
%td= person.real_name
|
||||
%td= person.email
|
||||
%td= person.url
|
||||
%td= link_to 'Show', person
|
||||
%td= link_to 'Destroy', person, :confirm => 'Are you sure?', :method => :delete
|
||||
- for person in @people
|
||||
%tr
|
||||
%td= person.real_name
|
||||
%td= person.email
|
||||
%td= person.url
|
||||
|
||||
-if current_user.friends.include? person
|
||||
|
||||
%p= link_to "Add a friend", requests_path
|
||||
|
||||
#pagination
|
||||
= will_paginate @people
|
||||
- elsif person.id == current_user.person.id
|
||||
%td
|
||||
%td thats you!
|
||||
-elsif current_user.pending_requests.find_by_person_id(person.id)
|
||||
%td
|
||||
%td ^-you have a friend request from this person
|
||||
-elsif current_user.pending_requests.find_by_url(person.receive_url)
|
||||
%td
|
||||
%td friend request pending
|
||||
-else
|
||||
%td
|
||||
%td
|
||||
= form_for Request.new do |f|
|
||||
= f.select(:group_id, @groups_array)
|
||||
= f.hidden_field :destination_url, :value => person.email
|
||||
= f.submit "add friend"
|
||||
|
|
|
|||
|
|
@ -1,42 +0,0 @@
|
|||
%h1.big_text
|
||||
.back
|
||||
= link_to "⇧ home", root_path
|
||||
|
||||
Search
|
||||
|
||||
%p
|
||||
=form_tag '/users', :method => "get" do
|
||||
= text_field_tag :q
|
||||
= submit_tag "search"
|
||||
= link_to "reset", users_path
|
||||
|
||||
= (@people.count).to_s + search_or_index
|
||||
%table
|
||||
%tr
|
||||
%th real name
|
||||
%th email
|
||||
%th url
|
||||
- for person in @people
|
||||
%tr
|
||||
%td= person.real_name
|
||||
%td= person.email
|
||||
%td= person.url
|
||||
|
||||
-if current_user.friends.include? person
|
||||
|
||||
- elsif person.id == current_user.person.id
|
||||
%td
|
||||
%td thats you!
|
||||
-elsif current_user.pending_requests.find_by_person_id(person.id)
|
||||
%td
|
||||
%td ^-you have a friend request from this person
|
||||
-elsif current_user.pending_requests.find_by_url(person.receive_url)
|
||||
%td
|
||||
%td friend request pending
|
||||
-else
|
||||
%td
|
||||
%td
|
||||
= form_for Request.new do |f|
|
||||
= f.select(:group_id, @groups_array)
|
||||
= f.hidden_field :destination_url, :value => person.email
|
||||
= f.submit "add friend"
|
||||
|
|
@ -10,8 +10,8 @@ describe PeopleController do
|
|||
end
|
||||
|
||||
it "index should yield search results for substring of person name" do
|
||||
pending "wait, what???"
|
||||
Person.should_receive(:search)
|
||||
|
||||
get :index, :q => "Eu"
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue