You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

members_controller.rb 9.9 kB

13 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
13 years ago
​
​
​
13 years ago
​
​
​
​
​
​
​
13 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
12 years ago
​
​
​
​
​
​
13 years ago
​
​
12 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
13 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
13 years ago
​
​
​
​
​
13 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
13 years ago
13 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
13 years ago
​
​
​
​
​
​
​
​
​
​
​
13 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
13 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  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. class MembersController < ApplicationController
  18. model_object Member
  19. before_filter :find_model_object, :except => [:index, :create, :autocomplete]
  20. #before_filter :find_model_object_contest, :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. def index
  26. @offset, @limit = api_offset_and_limit
  27. @member_count = @project.member_principals.count
  28. @member_pages = Paginator.new @member_count, @limit, params['page']
  29. @offset ||= @member_pages.offset
  30. @members = @project.member_principals.all(
  31. :order => "#{Member.table_name}.id",
  32. :limit => @limit,
  33. :offset => @offset
  34. )
  35. respond_to do |format|
  36. format.html { head 406 }
  37. format.api
  38. end
  39. end
  40. def show
  41. respond_to do |format|
  42. format.html { head 406 }
  43. format.api
  44. end
  45. end
  46. def create
  47. if params[:refusal_button]
  48. members = []
  49. applied_members = true
  50. if params[:membership]
  51. if params[:membership][:user_ids]
  52. attrs = params[:membership].dup
  53. user_ids = attrs.delete(:user_ids)
  54. user_ids.each do |user_id|
  55. AppliedProject.deleteappiled(user_id, @project.id)
  56. end
  57. end
  58. end
  59. else
  60. #modify by nwb
  61. #更改课程成员逻辑
  62. applied_members = false
  63. members = []
  64. user_grades = []
  65. if @project
  66. project_info = []
  67. if params[:membership]
  68. if params[:membership][:user_ids]
  69. attrs = params[:membership].dup
  70. user_ids = attrs.delete(:user_ids)
  71. user_ids.each do |user_id|
  72. members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => user_id)
  73. user_grades << UserGrade.new(:user_id => user_id, :project_id => @project.id)
  74. ## added by nie
  75. if (params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3")
  76. project_info << ProjectInfo.new(:user_id => user_id, :project_id => @project.id)
  77. # ProjectInfo.create(:name => "test", :user_id => 123)
  78. end
  79. ## end
  80. end
  81. else
  82. members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => params[:membership][:user_id])
  83. user_grades << UserGrade.new(:user_id => params[:membership][:user_id], :project_id => @project.id)
  84. ## added by nie
  85. if (params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3")
  86. project_info << ProjectInfo.new(:project_id => @project.id, :user_id => params[:membership][:user_id])
  87. end
  88. ## end
  89. end
  90. @project.members << members
  91. # added by nie
  92. @project.project_infos << project_info
  93. @project.user_grades << user_grades
  94. # end
  95. end
  96. if members.present? && members.all? { |m| m.valid? }
  97. members.each do |member|
  98. AppliedProject.deleteappiled(member.user_id, @project.id)
  99. end
  100. end
  101. respond_to do |format|
  102. format.html { redirect_to_settings_in_projects }
  103. format.js { @members = members; @applied_members = applied_members; }
  104. format.api {
  105. @member = members.first
  106. if @member.valid?
  107. render :action => 'show', :status => :created, :location => membership_url(@member)
  108. else
  109. render_validation_errors(@member)
  110. end
  111. }
  112. end
  113. elsif @course
  114. course_info = []
  115. if params[:membership]
  116. if params[:membership][:user_ids]
  117. attrs = params[:membership].dup
  118. user_ids = attrs.delete(:user_ids)
  119. user_ids.each do |user_id|
  120. members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => user_id)
  121. user_grades << UserGrade.new(:user_id => user_id, :course_id => @course.id)
  122. if (params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3")
  123. course_info << CourseInfo.new(:user_id => user_id, :course_id => @course.id)
  124. end
  125. end
  126. else
  127. members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => params[:membership][:user_id])
  128. if (params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3")
  129. course_info << CourseInfo.new(:course_id => @course.id, :user_id => params[:membership][:user_id])
  130. end
  131. end
  132. @course.members << members
  133. @course.course_infos << course_info
  134. end
  135. respond_to do |format|
  136. format.html { redirect_to_settings_in_courses }
  137. format.js { @members = members; @applied_members = applied_members; }
  138. format.api {
  139. @member = members.first
  140. if @member.valid?
  141. render :action => 'show', :status => :created, :location => membership_url(@member)
  142. else
  143. render_validation_errors(@member)
  144. end
  145. }
  146. end
  147. end # end of if @project
  148. end # end of params[:refusal_button]
  149. end
  150. def update
  151. #modify by nwb
  152. #增加对课程成员修改的支持
  153. if @project
  154. if params[:membership]
  155. @member.role_ids = params[:membership][:role_ids]
  156. #added by nie
  157. if (params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3")
  158. @projectInfo = ProjectInfo.new(:user_id => @member.user_id, :project_id => @project.id)
  159. @projectInfo.save
  160. else
  161. user_admin = ProjectInfo.where("user_id = ? and project_id = ?", @member.user_id, @project.id)
  162. if user_admin.size > 0
  163. user_admin.each do |user|
  164. user.destroy
  165. end
  166. end
  167. end
  168. end
  169. saved = @member.save
  170. respond_to do |format|
  171. format.html { redirect_to_settings_in_projects }
  172. format.js
  173. format.api {
  174. if saved
  175. render_api_ok
  176. else
  177. render_validation_errors(@member)
  178. end
  179. }
  180. end
  181. elsif @course
  182. if params[:membership]
  183. @member.role_ids = params[:membership][:role_ids]
  184. if (params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3")
  185. @courseInfo = CourseInfos.new(:user_id => @member.user_id, :course_id => @course.id)
  186. @courseInfo.save
  187. else
  188. user_admin = CourseInfos.where("user_id = ? and course_id = ?", @member.user_id, @course.id)
  189. if user_admin.size > 0
  190. user_admin.each do |user|
  191. user.destroy
  192. end
  193. end
  194. end
  195. end
  196. saved = @member.save
  197. respond_to do |format|
  198. format.html { redirect_to_settings_in_courses }
  199. format.js
  200. format.api {
  201. if saved
  202. render_api_ok
  203. else
  204. render_validation_errors(@member)
  205. end
  206. }
  207. end
  208. end
  209. end
  210. def destroy
  211. #modify by nwb
  212. #课程成员删除修改
  213. if @project
  214. if request.delete? && @member.deletable?
  215. @member.destroy
  216. # end
  217. user_admin = ProjectInfo.where("user_id = ? and project_id = ?", @member.user_id, @project.id)
  218. if user_admin.size > 0
  219. user_admin.each do |user|
  220. user.destroy
  221. end
  222. end
  223. user_grade = UserGrade.where("user_id = ? and project_id = ?", @member.user_id, @project.id)
  224. if user_grade.size > 0
  225. user_grade.each do |grade|
  226. grade.destroy
  227. end
  228. end
  229. end
  230. respond_to do |format|
  231. format.html { redirect_to_settings_in_projects }
  232. format.js
  233. format.api {
  234. if @member.destroyed?
  235. render_api_ok
  236. else
  237. head :unprocessable_entity
  238. end
  239. }
  240. end
  241. elsif @course
  242. if request.delete? && @member.deletable?
  243. @member.destroy
  244. user_admin = CourseInfos.where("user_id = ? and course_id = ?", @member.user_id, @course.id)
  245. if user_admin.size > 0
  246. user_admin.each do |user|
  247. user.destroy
  248. end
  249. end
  250. end
  251. respond_to do |format|
  252. format.html { redirect_to_settings_in_courses }
  253. format.js
  254. format.api {
  255. if @member.destroyed?
  256. render_api_ok
  257. else
  258. head :unprocessable_entity
  259. end
  260. }
  261. end
  262. end
  263. end
  264. def autocomplete
  265. respond_to do |format|
  266. format.js
  267. end
  268. end
  269. private
  270. def redirect_to_settings_in_projects
  271. redirect_to settings_project_path(@project, :tab => 'members')
  272. end
  273. def redirect_to_settings_in_courses
  274. redirect_to settings_course_path(@course, :tab => 'members')
  275. end
  276. end

软件技术创新是当今国家整体创新能力的重要基础和发展引擎。近年来,大众参与的软件创新与创业活动已经成为网络时代软件开发和应用的新形态,正在快速改变着全球软件创新模式和软件产业格局。 ...