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!
before_filter :remove_getting_started, :only => [:create]
# 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
@aspects = current_user.aspects
@aspect_ids = @aspects.map{|x| x.id}
if ! is_mobile_device?
Jason Robinson
a validé
render :layout => nil
end
params[:status_message][:aspect_ids] = [*params[:aspect_ids]]
Raphael Sofaer
a validé
normalize_public_flag!
services = [*params[:services]].compact
@status_message = current_user.build_post(:status_message, params[:status_message])
@status_message.attach_photos_by_ids(params[:photos])
if @status_message.save
aspects = current_user.aspects_from_ids(destination_aspect_ids)
Raphael Sofaer
a validé
current_user.add_to_streams(@status_message, aspects)
receiving_services = current_user.services.where(:type => Service.titles(services))
current_user.dispatch_post(@status_message, :url => short_post_url(@status_message.guid), :services => receiving_services)
Raphael Sofaer
a validé
if coming_from_profile_page? # if this is a post coming from a profile page
flash[:notice] = successful_mention_message
danielvincent
a validé
respond_to do |format|
maxwell
a validé
format.html { redirect_to :back}
format.mobile{ redirect_to multi_stream_path}
format.json{ render :json => @status_message.as_api_response(:backbone), :status => 201 }
danielvincent
a validé
end
else
respond_to do |format|
format.json { render :nothing, :status => 403 }
format.html { redirect_to :back }
danielvincent
a validé
end
def destination_aspect_ids
if params[:status_message][:public] || params[:status_message][:aspect_ids].first == "all_aspects"
current_user.aspect_ids
else
params[:aspect_ids]
end
end
def successful_mention_message
t('status_messages.create.success', :names => @status_message.mentioned_people_names)
end
def coming_from_profile_page?
request.env['HTTP_REFERER'].include?("people")
end
Raphael Sofaer
a validé
def normalize_public_flag!
# mobile || desktop conditions
sm = params[:status_message]
public_flag = (sm[:aspect_ids] && sm[:aspect_ids].first == 'public') || sm[: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
def remove_getting_started
current_user.disable_getting_started
end