Mercurial > hg > soundsoftware-site
comparison .svn/pristine/12/120840d537ad68f417065b102e2763e8f985fe62.svn-base @ 1298:4f746d8966dd redmine_2.3_integration
Merge from redmine-2.3 branch to create new branch redmine-2.3-integration
author | Chris Cannam |
---|---|
date | Fri, 14 Jun 2013 09:28:30 +0100 |
parents | 622f24f53b42 |
children |
comparison
equal
deleted
inserted
replaced
1297:0a574315af3e | 1298:4f746d8966dd |
---|---|
1 # Redmine - project management software | |
2 # Copyright (C) 2006-2013 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.all( | |
32 :order => "#{Member.table_name}.id", | |
33 :limit => @limit, | |
34 :offset => @offset | |
35 ) | |
36 | |
37 respond_to do |format| | |
38 format.html { head 406 } | |
39 format.api | |
40 end | |
41 end | |
42 | |
43 def show | |
44 respond_to do |format| | |
45 format.html { head 406 } | |
46 format.api | |
47 end | |
48 end | |
49 | |
50 def create | |
51 members = [] | |
52 if params[:membership] | |
53 if params[:membership][:user_ids] | |
54 attrs = params[:membership].dup | |
55 user_ids = attrs.delete(:user_ids) | |
56 user_ids.each do |user_id| | |
57 members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => user_id) | |
58 end | |
59 else | |
60 members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => params[:membership][:user_id]) | |
61 end | |
62 @project.members << members | |
63 end | |
64 | |
65 respond_to do |format| | |
66 format.html { redirect_to_settings_in_projects } | |
67 format.js { @members = members } | |
68 format.api { | |
69 @member = members.first | |
70 if @member.valid? | |
71 render :action => 'show', :status => :created, :location => membership_url(@member) | |
72 else | |
73 render_validation_errors(@member) | |
74 end | |
75 } | |
76 end | |
77 end | |
78 | |
79 def update | |
80 if params[:membership] | |
81 @member.role_ids = params[:membership][:role_ids] | |
82 end | |
83 saved = @member.save | |
84 respond_to do |format| | |
85 format.html { redirect_to_settings_in_projects } | |
86 format.js | |
87 format.api { | |
88 if saved | |
89 render_api_ok | |
90 else | |
91 render_validation_errors(@member) | |
92 end | |
93 } | |
94 end | |
95 end | |
96 | |
97 def destroy | |
98 if request.delete? && @member.deletable? | |
99 @member.destroy | |
100 end | |
101 respond_to do |format| | |
102 format.html { redirect_to_settings_in_projects } | |
103 format.js | |
104 format.api { | |
105 if @member.destroyed? | |
106 render_api_ok | |
107 else | |
108 head :unprocessable_entity | |
109 end | |
110 } | |
111 end | |
112 end | |
113 | |
114 def autocomplete | |
115 respond_to do |format| | |
116 format.js | |
117 end | |
118 end | |
119 | |
120 private | |
121 | |
122 def redirect_to_settings_in_projects | |
123 redirect_to settings_project_path(@project, :tab => 'members') | |
124 end | |
125 end |