seven1m / onebody

OneBody is free, open-source, web-based social networking and online directory software for churches.

This URL has Read+Write access

onebody / app / controllers / people_controller.rb
db37afcc » seven1m 2007-01-10 git-svn-id: svn://beonebody... 1 class PeopleController < ApplicationController
91772348 » seven1m 2008-07-15 Set up action caching for p... 2
f38e5813 » seven1m 2008-07-22 Moved system content to con... 3 #caches_action :show, :for => 1.hour, :cache_path => Proc.new { |c| "people/#{c.params[:id]}_for_#{Person.logged_in.id}" }
4 #cache_sweeper :person_sweeper, :family_sweeper, :only => %w(create update destroy)
91772348 » seven1m 2008-07-15 Set up action caching for p... 5
d2b060e0 » seven1m 2008-07-07 Started work on People cont... 6 def index
33e6fd98 » seven1m 2008-07-20 Added people, families, and... 7 respond_to do |format|
8 format.html { redirect_to @logged_in }
9 if @logged_in.admin?(:export_data)
10 @people = Person.paginate(:order => 'last_name, first_name, suffix', :page => params[:page], :per_page => params[:per_page] || 50)
bd93ad00 » seven1m 2008-07-21 Start of data import. 11 format.xml { render :xml => @people.to_xml(:except => %w(feed_code encrypted_password), :include => [:groups, :family]) }
12 format.csv { render :text => @people.to_csv(:except => %w(feed_code encrypted_password), :include => [:family]) }
33e6fd98 » seven1m 2008-07-20 Added people, families, and... 13 end
14 end
d2b060e0 » seven1m 2008-07-07 Started work on People cont... 15 end
db37afcc » seven1m 2007-01-10 git-svn-id: svn://beonebody... 16
d2b060e0 » seven1m 2008-07-07 Started work on People cont... 17 def show
18 if @person = Person.find_by_id(params[:id], :include => :family) and @logged_in.can_see?(@person)
19 @family = @person.family
e4d5f067 » seven1m 2008-01-01 merged vacation branch r443... 20 @family_people = @person.family.visible_people
999676df » seven1m 2007-07-18 tab cleanup and reorganization 21 @me = (@logged_in == @person)
cf153f31 » seven1m 2008-07-30 Fixed typo preventing map f... 22 @show_map = Setting.get(:services, :yahoo) and @person.family.mapable? and @person.share_address_with(@logged_in)
d2b060e0 » seven1m 2008-07-07 Started work on People cont... 23 if params[:simple]
24 if @logged_in.full_access?
25 if params[:photo]
26 render :action => 'show_simple_photo', :layout => false
27 else
28 render :action => 'show_simple', :layout => false
29 end
30 else
31 render :text => '', :status => 404
32 end
11bc5303 » seven1m 2008-07-11 Added Search resource to re... 33 elsif params[:services]
34 render :action => 'services'
d2b060e0 » seven1m 2008-07-07 Started work on People cont... 35 elsif not @logged_in.full_access? and not @me
36 render :action => 'show_limited'
31d0bfa1 » seven1m 2008-08-05 Starting to separate differ... 37 else
38 respond_to do |format|
39 format.html
40 format.xml { render :xml => @person.to_xml }
41 end
d2b060e0 » seven1m 2008-07-07 Started work on People cont... 42 end
e4d5f067 » seven1m 2008-01-01 merged vacation branch r443... 43 else
31d0bfa1 » seven1m 2008-08-05 Starting to separate differ... 44 render :text => 'Person not found.', :status => 404, :layout => true
db37afcc » seven1m 2007-01-10 git-svn-id: svn://beonebody... 45 end
46 end
74b33a1b » seven1m 2008-07-10 Pictures are back. 47
954967a4 » seven1m 2008-07-20 Work on family/people editi... 48 def new
49 if @logged_in.admin?(:edit_profiles)
74b33a1b » seven1m 2008-07-10 Pictures are back. 50 @family = Family.find(params[:family_id])
954967a4 » seven1m 2008-07-20 Work on family/people editi... 51 defaults = {:can_sign_in => true, :visible_to_everyone => true, :visible_on_printed_directory => true, :full_access => true}
52 @person = Person.new(defaults.merge(:family_id => @family.id).merge(:last_name => @family.last_name))
53 else
54 render :text => 'You are not authorized to create a person.', :layout => true, :status => 401
55 end
56 end
57
58 def create
59 if @logged_in.admin?(:edit_profiles)
60 @person = Person.create(params[:person])
61 unless @person.errors.any?
62 redirect_to @person.family
63 else
64 render :action => 'new'
74b33a1b » seven1m 2008-07-10 Pictures are back. 65 end
954967a4 » seven1m 2008-07-20 Work on family/people editi... 66 else
67 render :text => 'You are not authorized to create a person.', :layout => true, :status => 401
74b33a1b » seven1m 2008-07-10 Pictures are back. 68 end
69 end
52ef03f3 » seven1m 2008-07-08 RESTful People controller. ... 70
71 def edit
954967a4 » seven1m 2008-07-20 Work on family/people editi... 72 @person ||= Person.find(params[:id])
73 if @logged_in.can_edit?(@person)
52ef03f3 » seven1m 2008-07-08 RESTful People controller. ... 74 @family = @person.family
75 @service_categories = Person.service_categories
76 else
77 render :text => 'You are not authorized to edit this person.', :layout => true, :status => 401
78 end
db37afcc » seven1m 2007-01-10 git-svn-id: svn://beonebody... 79 end
80
52ef03f3 » seven1m 2008-07-08 RESTful People controller. ... 81 def update
954967a4 » seven1m 2008-07-20 Work on family/people editi... 82 @person = Person.find(params[:id])
83 if @logged_in.can_edit?(@person)
84 if updated = @person.update_from_params(params)
647c17b0 » seven1m 2008-08-05 Rename LogItem#changes attr... 85 respond_to do |format|
86 format.html do
87 flash[:notice] = 'Changes saved.'
88 redirect_to edit_person_path(@person, :anchor => params[:anchor])
89 end
90 format.xml { render :xml => @person.to_xml }
91 end
e4d5f067 » seven1m 2008-01-01 merged vacation branch r443... 92 else
954967a4 » seven1m 2008-07-20 Work on family/people editi... 93 edit; render :action => 'edit'
c5af4198 » seven1m 2007-01-13 git-svn-id: svn://beonebody... 94 end
52ef03f3 » seven1m 2008-07-08 RESTful People controller. ... 95 else
954967a4 » seven1m 2008-07-20 Work on family/people editi... 96 render :text => 'You are not authorized to edit this person.', :layout => true, :status => 401
c5af4198 » seven1m 2007-01-13 git-svn-id: svn://beonebody... 97 end
98 end
99
52ef03f3 » seven1m 2008-07-08 RESTful People controller. ... 100 def destroy
954967a4 » seven1m 2008-07-20 Work on family/people editi... 101 if @logged_in.admin?(:edit_profiles)
52ef03f3 » seven1m 2008-07-08 RESTful People controller. ... 102 @person = Person.find(params[:id])
954967a4 » seven1m 2008-07-20 Work on family/people editi... 103 unless me?
104 @person.destroy
105 redirect_to @person.family
c5af4198 » seven1m 2007-01-13 git-svn-id: svn://beonebody... 106 else
52ef03f3 » seven1m 2008-07-08 RESTful People controller. ... 107 render :text => 'You cannot delete yourself.', :status => 500
871adef9 » seven1m 2007-04-03 git-svn-id: svn://beonebody... 108 end
db37afcc » seven1m 2007-01-10 git-svn-id: svn://beonebody... 109 else
52ef03f3 » seven1m 2008-07-08 RESTful People controller. ... 110 render :text => 'You are not authorized to delete this person.', :status => 401
db37afcc » seven1m 2007-01-10 git-svn-id: svn://beonebody... 111 end
112 end
33e6fd98 » seven1m 2008-07-20 Added people, families, and... 113
114 def import
bd93ad00 » seven1m 2008-07-21 Start of data import. 115 if @logged_in.admin?(:import_data)
116 if request.get?
117 @column_names = Person.columns.map { |c| c.name }
118 @column_names += Family.columns.map { |c| "family_#{c.name}" }
119 @column_names.reject! { |c| c =~ /site_id/ }
120 elsif request.post?
121 @records = Person.queue_import_from_csv_file(params[:file].read, params[:match_by_name])
122 render :action => 'import_queue'
123 elsif request.put?
124 Person.import_data(params)
125 render :text => 'Import successful.', :layout => true
126 end
127 else
128 render :text => 'You are not authorized to import data.', :layout => true, :status => 401
129 end
33e6fd98 » seven1m 2008-07-20 Added people, families, and... 130 end
326dc0be » seven1m 2007-04-07 git-svn-id: svn://beonebody... 131
db37afcc » seven1m 2007-01-10 git-svn-id: svn://beonebody... 132 end