117 lines
4.4 KiB
Ruby
117 lines
4.4 KiB
Ruby
module HomeworkAttachHelper
|
|
#判断是否具有删除的权限
|
|
def attach_delete(project)
|
|
if User.current.logged? && (User.current.admin? || (!Member.where('user_id = ? and project_id = ?', User.current.id, project.bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, project.bid.courses.first.id).first.roles&Role.where('id = ? or id = ?', 3, 7)).size >0) || project.user_id == User.current.id)
|
|
true
|
|
else
|
|
false
|
|
end
|
|
end
|
|
#作业添加、编辑界面的tab页
|
|
def homework_settings_tabs f
|
|
@f = f
|
|
tabs = [{:name => 'info', :partial => 'homework_attach/edit_homework', :label => :label_information_plural},
|
|
{:name => 'members', :partial => 'homework_attach/homework_member', :label => :label_member_plural}
|
|
]
|
|
end
|
|
|
|
#作业可选成员列表分页
|
|
def render_new_members_for_homework members
|
|
#scope = Principal.active.sorted.not_member_of(project).like(params[:q])
|
|
#scope = project.members
|
|
#principals = paginateHelper members,10
|
|
#principals = members
|
|
#principal_count = members.count
|
|
#limit = 10
|
|
#principal_pages = Redmine::Pagination::Paginator.new principal_count, limit, params['page'] #by young
|
|
#offset ||= principal_pages.offset
|
|
#principals = members[offset, limit]
|
|
users = members.map(&:user)
|
|
s = content_tag('div', member_check_box_tags_ex('membership[user_ids][]', users), :id => 'principals')
|
|
links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false) {|text, parameters, options|
|
|
link_to text, get_homework_member_list_homework_attach_index_path( parameters.merge(:q => params[:q], bid_id: params[:id]||@homework)), :remote => true }
|
|
return s + content_tag('div', content_tag('ul', links), :class => 'pagination_new')
|
|
end
|
|
|
|
#扩展的checkbox生成
|
|
def member_check_box_tags_ex(name, principals)
|
|
s = ''
|
|
principals.each do |member|
|
|
s << "<label>#{ check_box_tag name, member.id, false, :id => nil } #{h member.name }</label><br/>"
|
|
end
|
|
s.html_safe
|
|
end
|
|
|
|
def paginateHelper obj, pre_size=20
|
|
@obj_count = obj.count
|
|
@obj_pages = Redmine::Pagination::Paginator.new @obj_count, pre_size, params['page']
|
|
if obj.kind_of? ActiveRecord::Base or obj.kind_of? ActiveRecord::Relation
|
|
obj.limit(@obj_pages.per_page).offset(@obj_pages.offset)
|
|
elsif obj.kind_of? Array
|
|
obj[@obj_pages.offset, @obj_pages.per_page]
|
|
else
|
|
logger.error "[ApplicationController] Error : application_controller#paginateHelper ===> unknow category: #{obj.class}"
|
|
raise RuntimeError, 'unknow type, Please input you type into this helper.'
|
|
end
|
|
end
|
|
|
|
def user_projects_option
|
|
cond = Project.visible_condition(User.current) + " AND projects.project_type <> 1"
|
|
memberships = User.current.memberships.all(:conditions => cond)
|
|
projects = memberships.map(&:project)
|
|
not_have_project = []
|
|
not_have_project << Setting.please_chose
|
|
not_have_project << 0
|
|
type = []
|
|
type << not_have_project
|
|
projects.each do |project|
|
|
if project != nil
|
|
option = []
|
|
option << project.name
|
|
option << project.id
|
|
type << option
|
|
end
|
|
end
|
|
type
|
|
end
|
|
|
|
#判断指定用户是不是已经赞过该作业
|
|
def is_praise_homework user_id, obj_id
|
|
PraiseTread.where("user_id = #{user_id} AND praise_tread_object_id = #{obj_id} AND praise_tread_object_type = 'HomeworkAttach'").empty?
|
|
end
|
|
|
|
#获取赞的总数
|
|
def praise_homework_count obj_id
|
|
PraiseTread.where("praise_tread_object_id = #{obj_id} AND praise_tread_object_type = 'HomeworkAttach'").count
|
|
end
|
|
|
|
#获取用户对作业的评分
|
|
def get_homework_score user, homework
|
|
temp = HomeworkAttach.find_by_sql("SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = #{homework.id} AND rater_id = #{user.id}").first
|
|
@m_score = temp.nil? ? 0:temp.stars.to_i
|
|
end
|
|
|
|
def convert_array array
|
|
ary = "("
|
|
if array.nil? || array.count == 0
|
|
return "()"
|
|
end
|
|
array.length.times do |i|
|
|
if i == array.length - 1
|
|
ary += array[i].id.to_s + ")"
|
|
else
|
|
if !(array[i].nil? || array[i].id.nil? || array[i].id.to_s == "")
|
|
ary += array[i].id.to_s + ","
|
|
end
|
|
end
|
|
end
|
|
#array.each do |member|
|
|
# if member == array.last
|
|
# ary += member.id.to_s + ")"
|
|
# else
|
|
# ary += member.id.to_s + ","
|
|
# end
|
|
#end
|
|
ary
|
|
end
|
|
end |