comparison .svn/pristine/93/930c50eb3cb7992fed5895ce6745ed2059f7434c.svn-base @ 1517:dffacf8a6908 redmine-2.5

Update to Redmine SVN revision 13367 on 2.5-stable branch
author Chris Cannam
date Tue, 09 Sep 2014 09:29:00 +0100
parents
children
comparison
equal deleted inserted replaced
1516:b450a9d58aed 1517:dffacf8a6908
1 # Redmine - project management software
2 # Copyright (C) 2006-2014 Jean-Philippe Lang
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
18 class MembersController < ApplicationController
19 model_object Member
20 before_filter :find_model_object, :except => [:index, :create, :autocomplete]
21 before_filter :find_project_from_association, :except => [:index, :create, :autocomplete]
22 before_filter :find_project_by_project_id, :only => [:index, :create, :autocomplete]
23 before_filter :authorize
24 accept_api_auth :index, :show, :create, :update, :destroy
25
26 def index
27 @offset, @limit = api_offset_and_limit
28 @member_count = @project.member_principals.count
29 @member_pages = Paginator.new @member_count, @limit, params['page']
30 @offset ||= @member_pages.offset
31 @members = @project.member_principals.
32 order("#{Member.table_name}.id").
33 limit(@limit).
34 offset(@offset).
35 all
36 respond_to do |format|
37 format.html { head 406 }
38 format.api
39 end
40 end
41
42 def show
43 respond_to do |format|
44 format.html { head 406 }
45 format.api
46 end
47 end
48
49 def create
50 members = []
51 if params[:membership]
52 if params[:membership][:user_ids]
53 attrs = params[:membership].dup
54 user_ids = attrs.delete(:user_ids)
55 user_ids.each do |user_id|
56 members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => user_id)
57 end
58 else
59 members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => params[:membership][:user_id])
60 end
61 @project.members << members
62 end
63
64 respond_to do |format|
65 format.html { redirect_to_settings_in_projects }
66 format.js { @members = members }
67 format.api {
68 @member = members.first
69 if @member.valid?
70 render :action => 'show', :status => :created, :location => membership_url(@member)
71 else
72 render_validation_errors(@member)
73 end
74 }
75 end
76 end
77
78 def update
79 if params[:membership]
80 @member.role_ids = params[:membership][:role_ids]
81 end
82 saved = @member.save
83 respond_to do |format|
84 format.html { redirect_to_settings_in_projects }
85 format.js
86 format.api {
87 if saved
88 render_api_ok
89 else
90 render_validation_errors(@member)
91 end
92 }
93 end
94 end
95
96 def destroy
97 if request.delete? && @member.deletable?
98 @member.destroy
99 end
100 respond_to do |format|
101 format.html { redirect_to_settings_in_projects }
102 format.js
103 format.api {
104 if @member.destroyed?
105 render_api_ok
106 else
107 head :unprocessable_entity
108 end
109 }
110 end
111 end
112
113 def autocomplete
114 respond_to do |format|
115 format.js
116 end
117 end
118
119 private
120
121 def redirect_to_settings_in_projects
122 redirect_to settings_project_path(@project, :tab => 'members')
123 end
124 end