Newer
Older
# Copyright (c) 2010-2011, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
Daniel Vincent Grippi
a validé
before_filter :authenticate_user!
respond_to :html
danielvincent
a validé
respond_to :mobile
# Called when a user clicks "Mention" on a profile page
# @param person_id [Integer] The id of the person to be mentioned
if params[:person_id] && @person = Person.where(:id => params[:person_id]).first
danielgrippi
a validé
@aspect = :profile
@contact = current_user.contact_for(@person)
@aspects_with_person = []
if @contact
@aspects_with_person = @contact.aspects
@aspect_ids = @aspects_with_person.map{|x| x.id}
danielgrippi
a validé
@contacts_of_contact = @contact.contacts
render :layout => nil
end
danielgrippi
a validé
@aspect = :all
@aspects = current_user.aspects
@aspect_ids = @aspects.map{ |a| a.id }
def bookmarklet
@selected_contacts = @aspects.map { |aspect| aspect.contacts }.flatten.uniq
@aspect_ids = @aspects.map{|x| x.id}
render :layout => nil
end
params[:status_message][:aspect_ids] = params[:aspect_ids]
Raphael Sofaer
a validé
normalize_public_flag!
@status_message = current_user.build_post(:status_message, params[:status_message])
photos = Photo.where(:id => [*params[:photos]], :diaspora_handle => current_user.person.diaspora_handle)
unless photos.empty?
@status_message.photos << photos
end
if @status_message.save
# always send to all aspects if public
if params[:status_message][:public] || params[:status_message][:aspect_ids].first == "all_aspects"
aspect_ids = current_user.aspects.map{|a| a.id}
else
aspect_ids = params[:aspect_ids]
end
aspects = current_user.aspects_from_ids(aspect_ids)
Raphael Sofaer
a validé
current_user.add_to_streams(@status_message, aspects)
receiving_services = current_user.services.where(:type => params[:services].map{|s| "Services::"+s.titleize}) if params[:services]
current_user.dispatch_post(@status_message, :url => short_post_url(@status_message.guid), :services => receiving_services)
Raphael Sofaer
a validé
if request.env['HTTP_REFERER'].include?("people") # if this is a post coming from a profile page
flash[:notice] = t('status_messages.create.success', :names => @status_message.mentions.includes(:person => :profile).map{ |mention| mention.person.name }.join(', '))
danielvincent
a validé
respond_to do |format|
format.js { render :create, :status => 201}
maxwell
a validé
format.html { redirect_to :back}
format.mobile{ redirect_to root_url}
danielvincent
a validé
end
else
unless photos.empty?
photos.update_all(:status_message_guid => nil)
end
Raphael Sofaer
a validé
danielvincent
a validé
respond_to do |format|
errors = @status_message.errors.full_messages.collect { |msg| msg.gsub(/^Text/, "") }
render :json =>{:errors => errors}, :status => 422
}
format.html {redirect_to :back}
danielvincent
a validé
end
Raphael Sofaer
a validé
def normalize_public_flag!
# mobile || desktop conditions
public_flag = (params[:status_message][:aspect_ids] && params[:status_message][:aspect_ids].first == 'public') || params[:status_message][:public]
Raphael Sofaer
a validé
public_flag.to_s.match(/(true)|(on)/) ? public_flag = true : public_flag = false
params[:status_message][:public] = public_flag
public_flag
helper_method :comments_expanded
def comments_expanded
true
end