From 9634046d11fd122b607cf761aa025103dd7d066a Mon Sep 17 00:00:00 2001
From: z9hang
Date: Wed, 9 Jul 2014 16:02:15 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86=E6=9C=BA?=
=?UTF-8?q?=E5=88=B6=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/courses_controller.rb | 9 ++-
app/helpers/courses_helper.rb | 89 +++++++++++++---------
app/views/courses/_course_form.html.erb | 10 +--
config/locales/zh.yml | 17 +++++
db/migrate/20140708023356_add_authority.rb | 7 ++
db/schema.rb | 2 +-
lib/redmine.rb | 2 +
7 files changed, 88 insertions(+), 48 deletions(-)
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index 157de5ce7..27851e435 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -172,7 +172,7 @@ class CoursesController < ApplicationController
## 有角色参数的才是课程,没有的就是项目
@render_file = 'member_list'
@teachers= searchTeacherAndAssistant(@course)
- @canShowCode = isCourseTeacher(User.current.id)
+ @canShowCode = isCourseTeacher(User.current.id,@course)
case params[:role]
when '1'
@subPage_title = l :label_teacher_list
@@ -643,7 +643,7 @@ class CoursesController < ApplicationController
@sort_by = %w(category date title author).include?(params[:sort_by]) ? params[:sort_by] : 'category'
#
@teachers= searchTeacherAndAssistant(@course)
- @canShowRealName = isCourseTeacher(User.current.id)
+ @canShowRealName = isCourseTeacher(User.current.id,@course)
if(User.find_by_id(CourseInfos.find_by_course_id(@course.id).try(:user_id)))
@user = User.find_by_id(CourseInfos.find_by_course_id(@course.id).user_id)
@@ -656,9 +656,10 @@ class CoursesController < ApplicationController
end
#判断指定用户是否为课程教师
- def isCourseTeacher(id)
+ def isCourseTeacher(id,course)
result = false
- if @teachers && @teachers.find_by_user_id(id) != nil
+ user = User.find(id)
+ if user.nil? && user.allowed_to?(:as_teacher,course)#@teachers && @teachers.count != 0 && @teachers.find_by_user_id(id) != nil
result = true
end
result
diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb
index 80beea16c..4b6a84b57 100644
--- a/app/helpers/courses_helper.rb
+++ b/app/helpers/courses_helper.rb
@@ -7,26 +7,27 @@ module CoursesHelper
3. define search by roles
4. define search member function
=end
- TeacherRoles = [3, 4, 7, 9]
- StudentRoles = [5, 10]
- AllPeople = StudentRoles+TeacherRoles
+ #TeacherRoles = [3, 4, 7, 9]
+ #StudentRoles = [5, 10]
+ #AllPeople = StudentRoles+TeacherRoles
## return people count
# 返回x项目成员数量,即roles表中定义的所有成员
def projectCount project
- searchCountByRoles project, AllPeople
+ #searchCountByRoles project, AllPeople
+ project.members.count
end
# 返回教师数量,即roles表中定义的Manager
def teacherCount project
- searchCountByRoles project, TeacherRoles
+ searchTeacherAndAssistant(project).count
# or
# searchTeacherAndAssistant(project).count
end
# 返回学生数量,即roles表中定义的Reporter
def studentCount project
- searchCountByRoles project,StudentRoles
+ searchStudent(project).count
# or
# searchStudent(project).count
end
@@ -133,29 +134,39 @@ module CoursesHelper
# =====================================================================================
# return people list
def searchTeacherAndAssistant project
- searchPeopleByRoles(project, TeacherRoles)
- end
-
- def searchStudent project
- searchPeopleByRoles(project, StudentRoles)
- end
- # =====================================================================================
-
- def searchCountByRoles project, roles_id
- members = searchPeopleByRoles project, roles_id
- members.count
- end
-
- def searchPeopleByRoles project, roles_id
+ #searchPeopleByRoles(project, TeacherRoles)
members = []
- begin
- members = project.members.joins(:member_roles).where("member_roles.role_id IN (:role_id)", {:role_id => roles_id})
- rescue Exception => e
- logger.error "[CoursesHelper] ===> #{e}"
+ project.members.each do |m|
+ members << m if m && m.user && m.user.allowed_to?(:as_teacher,project)
end
members
end
+ def searchStudent project
+ #searchPeopleByRoles(project, StudentRoles)
+ members = []
+ project.members.each do |m|
+ members << m if m && m.user && m.user.allowed_to?(:as_student,project)
+ end
+ members
+ end
+ # =====================================================================================
+
+ #def searchCountByRoles project, roles_id
+ # members = searchPeopleByRoles project, roles_id
+ # members.count
+ #end
+
+ #def searchPeopleByRoles project, roles_id
+ # members = []
+ # begin
+ # members = project.members.joins(:member_roles).where("member_roles.role_id IN (:role_id)", {:role_id => roles_id})
+ # rescue Exception => e
+ # logger.error "[CoursesHelper] ===> #{e}"
+ # end
+ # members
+ #end
+
def sort_courses(state)
content = ''.html_safe
case state
@@ -186,15 +197,15 @@ module CoursesHelper
end
#useless
- def searchMembersByRole project, role_id
- members = []
- begin
- members = project.members.joins(:member_roles).where("member_roles.role_id = :role_id", {:role_id => role_id })
- rescue Exception => e
- logger.error "[CoursesHelper] ===> #{e}"
- end
- members
- end
+ #def searchMembersByRole project, role_id
+ # members = []
+ # begin
+ # members = project.members.joins(:member_roles).where("member_roles.role_id = :role_id", {:role_id => role_id })
+ # rescue Exception => e
+ # logger.error "[CoursesHelper] ===> #{e}"
+ # end
+ # members
+ #end
def sort_course(state, school_id)
content = ''.html_safe
@@ -270,9 +281,10 @@ module CoursesHelper
def find_by_extra_from_project extra
Course.find_by_extra(try(extra))
end
- #判断制定用户是不是当前课程的老师
+ #判断指定用户是不是当前课程的老师
def is_course_teacher (user,course)
- course.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and members.user_id = #{user.id}", {:role_id => TeacherRoles}).count != 0
+ #course.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and members.user_id = #{user.id}", {:role_id => TeacherRoles}).count != 0
+ user.allowed_to?(:as_teacher,course)
#修改为根据用户是否有发布任务的权限来判断用户是否是课程的老师
#is_teacher = false
#@membership = user.memberships.all(:conditions => Project.visible_condition(User.current))
@@ -287,7 +299,8 @@ module CoursesHelper
end
#当前用户是不是指定课程的学生
def is_cur_course_student course
- course.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and members.user_id = #{User.current.id}", {:role_id => StudentRoles}).count != 0
+ #course.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and members.user_id = #{User.current.id}", {:role_id => StudentRoles}).count != 0
+ !(User.current.allowed_to?(:as_teacher,course))
#修改:能新建占位且不能新建任务的角色判定为学生
#is_student = false
#@membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
@@ -329,7 +342,7 @@ module CoursesHelper
#获取作业的互评得分
def student_score_for_homework homework
- member = searchPeopleByRoles(homework.bid.courses.first,TeacherRoles).first
+ member = searchTeacherAndAssistant(homework.bid.courses.first).first#searchPeopleByRoles(homework.bid.courses.first,TeacherRoles).first
student_stars = homework.rates(:quality).where("rater_id <> #{member.user_id}").select("stars")
student_stars_count = 0
student_stars.each do |star|
@@ -340,7 +353,7 @@ module CoursesHelper
#获取作业的教师评分
def teacher_score_for_homework homework
- member = searchPeopleByRoles(homework.bid.courses.first,TeacherRoles).first
+ member = searchTeacherAndAssistant(homework.bid.courses.first).first#searchPeopleByRoles(homework.bid.courses.first,TeacherRoles).first
teacher_stars = homework.rates(:quality).where("rater_id = #{member.user_id}").select("stars").first
return format("%.2f",teacher_stars == nil ? 0 : teacher_stars.stars)
end
diff --git a/app/views/courses/_course_form.html.erb b/app/views/courses/_course_form.html.erb
index 2e7607bbf..77a3fde1b 100644
--- a/app/views/courses/_course_form.html.erb
+++ b/app/views/courses/_course_form.html.erb
@@ -165,7 +165,7 @@
- ".html_safe %>
+ ".html_safe %>
<% elsif @course.time == 2014 %>
<%= l(:label_term) %> * |
@@ -179,7 +179,7 @@
- ".html_safe %>
+ ".html_safe %>
<% elsif @course.time == 2015 %>
<%= l(:label_term) %> * |
@@ -193,7 +193,7 @@
- ".html_safe %>
+ ".html_safe %>
<% elsif @course.time == 2016 %>
<%= l(:label_term) %> * |
@@ -207,7 +207,7 @@
- ".html_safe %>
+ ".html_safe %>
<% elsif @course.time == 2017 %>
<%= l(:label_term) %> * |
@@ -221,7 +221,7 @@
- ".html_safe %>
+ ".html_safe %>
<% else %>
<%= l(:label_term) %> * |
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index dcbd1d6ec..1b3774d65 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -476,6 +476,20 @@ zh:
permission_view_real_name: 查看真名
permission_view_students: 查看成员
permission_export_homeworks: 导出作业
+ permission_quote_project: 引用项目
+ permission_is_manager: 作为管理员
+ permission_as_teacher: 作为教师
+ permission_as_student: 作为学生
+ permission_paret_in_homework: 加入作业
+ permission_view_homework_attaches: 查看作业附件
+ permission_view_course_journals_for_messages: 查看课程留言
+ permission_select_course_modules: 选择课程模块
+ permission_view_course_files: 查看课程资源
+ permission_add_course: 新建课程
+ permission_edit_course: 编辑课程
+ permission_select_contest_modules: 选择竞赛模块
+ permission_manage_contestnotifications: 管理竞赛通知
+
project_module_issue_tracking: 问题跟踪
@@ -1289,6 +1303,9 @@ zh:
permission_add_documents: Add documents
permission_edit_documents: Edit documents
permission_delete_documents: Delete documents
+ permission_add_documents: 新建文档
+ permission_edit_documents: 编辑文档
+ permission_delete_documents: 删除文档
label_gantt_progress_line: Progress line
setting_jsonp_enabled: Enable JSONP support
field_inherit_members: Inherit members
diff --git a/db/migrate/20140708023356_add_authority.rb b/db/migrate/20140708023356_add_authority.rb
index d78f087fc..83c9bd480 100644
--- a/db/migrate/20140708023356_add_authority.rb
+++ b/db/migrate/20140708023356_add_authority.rb
@@ -1,11 +1,18 @@
+# -*coding:utf-8 -*-
class AddAuthority < ActiveRecord::Migration
def change
# 添加课程权限
Role.all.each do |role|
if role.name == '学生'
role.permissions.append(:paret_in_homework)
+ role.permissions.append(:as_student)
elsif role.name == 'Manager'
role.permissions.append(:is_manager)
+ role.permissions.append(:as_teacher)
+ elsif role.name == '助教'
+ role.permissions.append(:as_teacher)
+ elsif role.name == '老师'
+ role.permissions.append(:as_teacher)
end
role.save(:validate => false)
end
diff --git a/db/schema.rb b/db/schema.rb
index 93aa90c44..6e750aa9f 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20140707095213) do
+ActiveRecord::Schema.define(:version => 20140708023356) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
diff --git a/lib/redmine.rb b/lib/redmine.rb
index 3ce0b4d55..e17d657c8 100644
--- a/lib/redmine.rb
+++ b/lib/redmine.rb
@@ -100,6 +100,8 @@ Redmine::AccessControl.map do |map|
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
#课程权限模块
#added by nwb
|