diff --git a/app/views/roles/permissions.html.erb b/app/views/roles/permissions.html.erb
index 1942092cd..2d59c86eb 100644
--- a/app/views/roles/permissions.html.erb
+++ b/app/views/roles/permissions.html.erb
@@ -19,33 +19,127 @@
<% perms_by_module = @permissions.group_by {|p| p.project_module.to_s} %>
<% perms_by_module.keys.sort.each do |mod| %>
- <% unless mod.blank? %>
+ <% if mod.blank? %>
+ <% perms_by_module[mod].select{ |p| !(p.belong_to_project?) && !(p.belong_to_course?) && !(p.belong_to_contest?) }.each do |permission| %>
+
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('.permission-#{permission.name} input')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+ <%= l_or_humanize(permission.name, :prefix => 'permission_') %>
+ |
+ <% @roles.each do |role| %>
+
+ <% if role.setable_permissions.include? permission %>
+ <%= check_box_tag "permissions[#{role.id}][]", permission.name, (role.permissions.include? permission.name), :id => nil, :class => "role-#{role.id}" %>
+ <% end %>
+ |
+ <% end %>
+
+ <% end %>
+
+
+
+
+ <%= l(:label_project) %>
+ |
+ <% @roles.each do |role| %>
+ <%= h(role.name) %> |
+ <% end %>
+
+ <% perms_by_module[mod].select{ |p| p.belong_to_project? }.each do |permission| %>
+
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('.permission-#{permission.name} input')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+ <%= l_or_humanize(permission.name, :prefix => 'permission_') %>
+ |
+ <% @roles.each do |role| %>
+
+ <% if role.setable_permissions.include? permission %>
+ <%= check_box_tag "permissions[#{role.id}][]", permission.name, (role.permissions.include? permission.name), :id => nil, :class => "role-#{role.id}" %>
+ <% end %>
+ |
+ <% end %>
+
+ <% end %>
+
+
+
+ <%= l(:label_course) %>
+ |
+ <% @roles.each do |role| %>
+ <%= h(role.name) %> |
+ <% end %>
+
+ <% perms_by_module[mod].select{ |p| p.belong_to_course? }.each do |permission| %>
+
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('.permission-#{permission.name} input')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+ <%= l_or_humanize(permission.name, :prefix => 'permission_') %>
+ |
+ <% @roles.each do |role| %>
+
+ <% if role.setable_permissions.include? permission %>
+ <%= check_box_tag "permissions[#{role.id}][]", permission.name, (role.permissions.include? permission.name), :id => nil, :class => "role-#{role.id}" %>
+ <% end %>
+ |
+ <% end %>
+
+ <% end %>
+
+
+
+ <%= l(:label_contest) %>
+ |
+ <% @roles.each do |role| %>
+ <%= h(role.name) %> |
+ <% end %>
+
+ <% perms_by_module[mod].select{ |p| p.belong_to_contest? }.each do |permission| %>
+
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('.permission-#{permission.name} input')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+ <%= l_or_humanize(permission.name, :prefix => 'permission_') %>
+ |
+ <% @roles.each do |role| %>
+
+ <% if role.setable_permissions.include? permission %>
+ <%= check_box_tag "permissions[#{role.id}][]", permission.name, (role.permissions.include? permission.name), :id => nil, :class => "role-#{role.id}" %>
+ <% end %>
+ |
+ <% end %>
+
+ <% end %>
+ <% else %>
<%= l_or_humanize(mod, :prefix => 'project_module_') %>
|
<% @roles.each do |role| %>
- <%= h(role.name) %> |
+ <%= h(role.name) %> |
<% end %>
- <% end %>
- <% perms_by_module[mod].each do |permission| %>
-
-
- <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('.permission-#{permission.name} input')",
- :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
- <%= l_or_humanize(permission.name, :prefix => 'permission_') %>
- |
- <% @roles.each do |role| %>
-
- <% if role.setable_permissions.include? permission %>
- <%= check_box_tag "permissions[#{role.id}][]", permission.name, (role.permissions.include? permission.name), :id => nil, :class => "role-#{role.id}" %>
+ <% perms_by_module[mod].each do |permission| %>
+ |
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('.permission-#{permission.name} input')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+ <%= l_or_humanize(permission.name, :prefix => 'permission_') %>
+ |
+ <% @roles.each do |role| %>
+
+ <% if role.setable_permissions.include? permission %>
+ <%= check_box_tag "permissions[#{role.id}][]", permission.name, (role.permissions.include? permission.name), :id => nil, :class => "role-#{role.id}" %>
+ <% end %>
+ |
+ <% end %>
+
<% end %>
-
- <% end %>
-
<% end %>
+
<% end %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 8ba8402ed..d7b7f5421 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -497,6 +497,8 @@ en:
permission_view_real_name: View real name
permission_view_students: View students
permission_export_homeworks: Export homeworks
+ permission_notificationcomment_contestnotifications: Add the notice of contest comments
+
project_module_issue_tracking: Issue tracking
project_module_time_tracking: Time tracking
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 2e6fe6ddb..4201f7119 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -491,7 +491,7 @@ zh:
permission_edit_course: 编辑课程
permission_select_contest_modules: 选择竞赛模块
permission_manage_contestnotifications: 管理竞赛通知
-
+ permission_notificationcomment_contestnotifications: 添加竞赛通知评论
project_module_issue_tracking: 问题跟踪
diff --git a/lib/redmine.rb b/lib/redmine.rb
index 17234b54f..e0a14c7e9 100644
--- a/lib/redmine.rb
+++ b/lib/redmine.rb
@@ -97,7 +97,9 @@ Redmine::AccessControl.map do |map|
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 :view_journals_for_messages, {:gantts => [:show, :update]}, :read => true
+
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
@@ -112,30 +114,33 @@ Redmine::AccessControl.map do |map|
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
- map.permission :view_course_files, {:files => :index, :versions => :download}, :read => true
- end
- map.course_module :news do |map|
- map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy]}, :require => :member
- map.permission :view_course_news, {:news => [:index, :show]}, :public => true, :read => true
- map.permission :comment_news, {:comments => :create}
- end
+ #与项目一致,注释掉
+ #map.course_module :files do |map|
+ # map.permission :manage_files, {:files => [:new, :create]}, :require => :loggedin
+ # map.permission :view_course_files, {:files => :index, :versions => :download}, :read => true
+ #end
+ #新闻权限与项目一致注释掉此处
+ # map.course_module :news do |map|
+ # map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy]}, :require => :member
+ # map.permission :view_course_news, {:news => [:index, :show]}, :public => true, :read => true
+ # map.permission :comment_news, {:comments => :create}
+ # end
#作业模块权限
map.course_module :bids do |map|
- map.permission :view_homework_attaches, {:bids => [:show, :show_project, :revision]}, :read => true
- map.permission :paret_in_homework,{},:require => :member
+ map.permission :view_homework_attaches, {:bids => [:show, :show_project, :revision]}, :read => true,:belong_to_course => true
+ map.permission :paret_in_homework,{},:require => :member ,:belong_to_course => true
end
- map.course_module :boards do |map|
- map.permission :manage_boards, {:boards => [:new, :create, :edit, :update, :destroy]}, :require => :member
- map.permission :view_course_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true, :read => true
- map.permission :add_messages, {:messages => [:new, :reply, :quote]}
- map.permission :edit_messages, {:messages => :edit}, :require => :member
- map.permission :edit_own_messages, {:messages => :edit}, :require => :loggedin
- map.permission :delete_messages, {:messages => :destroy}, :require => :member
- map.permission :delete_own_messages, {:messages => :destroy}, :require => :loggedin
- end
+ #讨论区权限与项目统一,注释掉此课程讨论区权限
+ #map.course_module :boards do |map|
+ # map.permission :manage_boards, {:boards => [:new, :create, :edit, :update, :destroy]}, :require => :member
+ # map.permission :view_course_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true, :read => true
+ # map.permission :add_messages, {:messages => [:new, :reply, :quote]}
+ # map.permission :edit_messages, {:messages => :edit}, :require => :member
+ # map.permission :edit_own_messages, {:messages => :edit}, :require => :loggedin
+ # map.permission :delete_messages, {:messages => :destroy}, :require => :member
+ # map.permission :delete_own_messages, {:messages => :destroy}, :require => :loggedin
+ #end
#end
@@ -188,9 +193,9 @@ Redmine::AccessControl.map do |map|
end
map.contest_module :contestnotifications do |map|
- map.permission :manage_contestnotifications, {:contestnotifications => [:new, :create, :edit, :update, :destroy], :notificationcomments => [:destroy]}, :require => :member
+ map.permission :manage_contestnotifications, {:contestnotifications => [:new, :create, :edit, :update, :destroy], :notificationcomments => [:destroy]}, :require => :member,:belong_to_contest => true
map.permission :view_contestnotifications, {:contestnotifications => [:index, :show]}, :public => true, :read => true
- map.permission :notificationcomment_contestnotifications, {:notificationcomments => :create}
+ map.permission :notificationcomment_contestnotifications, {:notificationcomments => :create},:belong_to_contest => true
end
map.project_module :documents do |map|
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index 1fda63f93..d69ed6171 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -1273,7 +1273,7 @@ a.collapsible.collapsed {background: url(../images/arrow_collapsed.png) no-repea
a#toggle-completed-versions {color:#999;}
/***** Tables *****/
table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
-table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
+table.list th { background-color:#EEEEEE; padding: 4px; white-space:pre-line; }
table.list td { vertical-align: top; padding-right:10px; }
table.list td.id { width: 2%; text-align: center;}
table.list td.checkbox { width: 15px; padding: 2px 0 0 0; }