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 << "
" 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 << "NO PROJECT" 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 seems_rateable_rate = HomeworkAttach.find_by_sql("SELECT * FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = #{homework.id} AND rater_id = #{user.id}") seems_rateable_rate.nil? || seems_rateable_rate.count == 0 ? 0:seems_rateable_rate[0].stars 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