From 67162bd8fb652581edef2b381800bebf66145b22 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 24 Sep 2014 17:36:49 +0800 Subject: [PATCH] =?UTF-8?q?admin=E7=BC=96=E8=BE=91=E8=A7=92=E8=89=B2?= =?UTF-8?q?=EF=BC=8C=E9=A1=B9=E7=9B=AE=E6=9D=83=E9=99=90=E3=80=81=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E3=80=81=EF=BC=9B=E7=AB=9E=E8=B5=9B=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=88=86=E5=BC=80=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/roles/_form.html.erb | 53 +++++++++++++++++++++++++++++----- lib/redmine.rb | 35 +++++++++++----------- lib/redmine/access_control.rb | 17 ++++++++++- 3 files changed, 78 insertions(+), 27 deletions(-) diff --git a/app/views/roles/_form.html.erb b/app/views/roles/_form.html.erb index d028c2f1c..0e55b0c39 100644 --- a/app/views/roles/_form.html.erb +++ b/app/views/roles/_form.html.erb @@ -18,15 +18,52 @@
<% perms_by_module = @role.setable_permissions.group_by {|p| p.project_module.to_s} %> <% perms_by_module.keys.sort.each do |mod| %> -
<%= mod.blank? ? l(:label_project) : l_or_humanize(mod, :prefix => 'project_module_') %> - <% perms_by_module[mod].each do |permission| %> - - <% end %> + <% if mod.blank? %> +
+ <%= l(:label_project) %> + <% perms_by_module[mod].each do |permission| %> + <% if permission.belong_to_project? %> + + <% end %> + <% end %>
-<% end %> +
+ <%= l(:label_course) %> + <% perms_by_module[mod].each do |permission| %> + <% if permission.belong_to_course? %> + + <% end %> + <% end %> +
+
+ <%= l(:label_contest) %> + <% perms_by_module[mod].each do |permission| %> + <% if permission.belong_to_contest? %> + + <% end %> + <% end %> +
+ <% else %> +
+ <%= l_or_humanize(mod, :prefix => 'project_module_') %> + <% perms_by_module[mod].each do |permission| %> + + <% end %> +
+ <% end %> + <% end %>
<%= check_all_links 'permissions' %> <%= hidden_field_tag 'role[permissions][]', '' %>
diff --git a/lib/redmine.rb b/lib/redmine.rb index 64b39145e..17234b54f 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -89,29 +89,28 @@ end Redmine::AccessControl.map do |map| map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true, :read => true map.permission :search_project, {:search => :index}, :public => true, :read => true - map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin - map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member - map.permission :close_project, {:projects => [:close, :reopen]}, :require => :member, :read => true - map.permission :select_project_modules, {:projects => :modules}, :require => :member - map.permission :select_contest_modules, {:contests => :modules}, :require => :member - map.permission :manage_members, {:projects => :settings, :members => [:index, :show, :create, :update, :destroy, :autocomplete]}, :require => :member - map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member - map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member + map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin ,:belong_to_project => true + map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member ,:belong_to_project => true + map.permission :close_project, {:projects => [:close, :reopen]}, :require => :member, :read => true ,:belong_to_project => true + map.permission :select_project_modules, {:projects => :modules}, :require => :member ,:belong_to_project => true + map.permission :select_contest_modules, {:contests => :modules}, :require => :member ,:belong_to_contest => true + map.permission :manage_members, {:projects => :settings, :members => [:index, :show, :create, :update, :destroy, :autocomplete]}, :require => :member ,:belong_to_project => true + map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member ,:belong_to_project => true + map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member ,:belong_to_project => true map.permission :view_journals_for_messages, {:gantts => [:show, :update]}, :read => true - map.permission :quote_project, {},:require => :member - map.permission :is_manager,{},:require => :member - map.permission :as_teacher,{},:require => :member - map.permission :as_student,{},:require => :member + map.permission :quote_project, {},:require => :member,:belong_to_contest => true + map.permission :is_manager,{},:require => :member ,:belong_to_project => true + map.permission :as_teacher,{},:require => :member ,:belong_to_course => true + map.permission :as_student,{},:require => :member ,:belong_to_course => true #课程权限模块 - #added by nwb map.permission :view_course, {:courses => [:show], :activities => [:index]}, :public => true, :read => true map.permission :search_course, {:search => :index}, :public => true, :read => true - map.permission :add_course, {:courses => [:new, :create]}, :require => :loggedin - map.permission :edit_course, {:courses => [:settings, :edit, :update]}, :require => :member - map.permission :close_course, {:courses => [:close, :reopen]}, :require => :member, :read => true - map.permission :select_course_modules, {:courses => :modules}, :require => :member - map.permission :view_course_journals_for_messages, {:courses => :feedback}, :require => :member,:read => true + map.permission :add_course, {:courses => [:new, :create]}, :require => :loggedin ,:belong_to_course => true + map.permission :edit_course, {:courses => [:settings, :edit, :update]}, :require => :member ,:belong_to_course => true + map.permission :close_course, {:courses => [:close, :reopen]}, :require => :member, :read => true ,:belong_to_course => true + map.permission :select_course_modules, {:courses => :modules}, :require => :member ,:belong_to_course => true + map.permission :view_course_journals_for_messages, {:courses => :feedback}, :require => :member,:read => true ,:belong_to_course => true map.course_module :files do |map| map.permission :manage_files, {:files => [:new, :create]}, :require => :loggedin diff --git a/lib/redmine/access_control.rb b/lib/redmine/access_control.rb index e71c0090a..efcaca627 100644 --- a/lib/redmine/access_control.rb +++ b/lib/redmine/access_control.rb @@ -126,7 +126,9 @@ module Redmine @course_module = options[:course_module] @project_module = options[:project_module] @contest_module = options[:contest_module] - + @belong_to_project = options[:belong_to_project] || false + @belong_to_course = options[:belong_to_course] || false + @belong_to_contest =options[:belong_to_contest] || false hash.each do |controller, actions| if actions.is_a? Array @actions << actions.collect {|action| "#{controller}/#{action}"} @@ -152,6 +154,19 @@ module Redmine def read? @read end + + def belong_to_project? + @belong_to_project + end + + def belong_to_course? + @belong_to_course + end + + def belong_to_contest? + @belong_to_contest + end + end end end