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 << "<>"
    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
end