# Trustie - education management software # Copyright (C) 2013-2014 class StoresController < ApplicationController layout 'base_stores' # menu_item :overview # menu_item :roadmap, :only => :roadmap # menu_item :settings, :only => :settings # include ActsAsTaggableOn::TagsHelper def search name = params[:name] ||= '' # 按文件名搜索 result = Attachment.includes(:project).where("projects.is_public = ? AND filename LIKE '%" << name << "%' ", 1) @searched_attach = result return @searched_attach end LIMIT = 12 unless const_defined?(:LIMIT) def index # @projects_attach = project_classification(0).take(LIMIT) # @courses_attach = project_classification(1).take(LIMIT) @projects_attach = Attachment.includes(:project).where("projects.project_type=? AND projects.is_public = ?", 0, 1). reorder("#{Attachment.table_name}.downloads DESC"). limit(LIMIT) @courses_attach = Attachment.includes(:project).where("projects.project_type=? AND projects.is_public = ?", 1, 1). reorder("#{Attachment.table_name}.downloads DESC"). limit(LIMIT) @homeworks_attach = Attachment.where("container_type = 'HomeworkAttach'"). reorder("created_on DESC"). limit(LIMIT) @memos_attach = Attachment.where("container_type = 'Memo'"). reorder("created_on DESC"). limit(LIMIT) @attach_array = Array.new @attach_array.push(@projects_attach, @courses_attach, @homeworks_attach, @memos_attach) @str_arr = [ l(:label_project_deposit), l(:label_course_practice), l(:label_contest_innovate), l(:label_forum) ] end private def project_classification project_type=0 pro_attach = Attachment.joins("LEFT JOIN projects ON attachments.container_id = projects.id"). where("projects.project_type=#{project_type}"). reorder("downloads DESC"). limit(LIMIT) doc_attach = join_tools_project Document, project_type issue_attach = join_tools_project Issue, project_type mess_attach = []#join_tools_project Message, project_type news_attach = join_tools_project News"news", project_type vers_attach = join_tools_project Version"versions", project_type wiki_attach = []#join_tools_project WikiPage, project_type tmp = pro_attach+doc_attach+issue_attach+mess_attach+news_attach+vers_attach+wiki_attach tmp.sort { |a, b| b.downloads <=> a.downloads } end def join_tools_project tableName, project_type=0 Attachment.joins(str_join_table(tableName)). where("projects.project_type=#{project_type}"). reorder('downloads DESC'). limit(LIMIT) end def str_join_table tableClass str = "LEFT JOIN #{tableClass.table_name} ON attachments.container_id = #{tableClass.table_name}.id LEFT JOIN projects ON #{tableClass.table_name}.project_id = projects.id" str end end