84 lines
2.5 KiB
Ruby
84 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
|
# licensed under the Affero General Public License version 3 or later. See
|
|
# the COPYRIGHT file.
|
|
|
|
class ProfilesController < ApplicationController
|
|
before_action :authenticate_user!, :except => ['show']
|
|
|
|
respond_to :html, :except => [:show]
|
|
respond_to :js, :only => :update
|
|
|
|
# this is terrible because we're actually serving up the associated person here;
|
|
# however, this is the effect that we want for now
|
|
def show
|
|
@person = Person.find_by_guid!(params[:id])
|
|
|
|
respond_to do |format|
|
|
format.json { render :json => PersonPresenter.new(@person, current_user) }
|
|
end
|
|
end
|
|
|
|
def edit
|
|
@person = current_user.person
|
|
@aspect = :person_edit
|
|
@profile = @person.profile
|
|
|
|
gon.preloads[:tagsArray] = @profile.tags.map {|tag| {name: "##{tag.name}", value: "##{tag.name}"} }
|
|
end
|
|
|
|
def update
|
|
# upload and set new profile photo
|
|
@profile_attrs = profile_params
|
|
|
|
munge_tag_string
|
|
|
|
#checkbox tags wtf
|
|
@profile_attrs[:searchable] ||= false
|
|
@profile_attrs[:nsfw] ||= false
|
|
@profile_attrs[:public_details] ||= false
|
|
|
|
if params[:photo_id]
|
|
@profile_attrs[:photo] = Photo.where(:author_id => current_user.person_id, :id => params[:photo_id]).first
|
|
end
|
|
|
|
if current_user.update_profile(@profile_attrs)
|
|
flash[:notice] = I18n.t 'profiles.update.updated'
|
|
else
|
|
flash[:error] = I18n.t 'profiles.update.failed'
|
|
end
|
|
|
|
respond_to do |format|
|
|
format.js { head :ok }
|
|
format.any {
|
|
if current_user.getting_started?
|
|
redirect_to getting_started_path
|
|
else
|
|
redirect_to edit_profile_path
|
|
end
|
|
}
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def munge_tag_string
|
|
unless @profile_attrs[:tag_string].nil? || @profile_attrs[:tag_string] == I18n.t('profiles.edit.your_tags_placeholder')
|
|
@profile_attrs[:tag_string].split( " " ).each do |extra_tag|
|
|
extra_tag.strip!
|
|
unless extra_tag == ""
|
|
extra_tag = "##{extra_tag}" unless extra_tag.start_with?( "#" )
|
|
params[:tags] += " #{extra_tag}"
|
|
end
|
|
end
|
|
end
|
|
@profile_attrs[:tag_string] = (params[:tags]) ? params[:tags].gsub(',',' ') : ""
|
|
end
|
|
|
|
def profile_params
|
|
params.require(:profile).permit(:first_name, :last_name, :gender, :bio,
|
|
:location, :searchable, :tag_string, :nsfw,
|
|
:public_details, date: %i[year month day]).to_h || {}
|
|
end
|
|
end
|