77 lines
3.1 KiB
Ruby
77 lines
3.1 KiB
Ruby
# 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 = 1 AND filename LIKE '%" << name << "%' ")
|
|
result = Attachment.where("attachments.container_type IS NOT NULL AND filename LIKE '%" + name + "%' ").
|
|
reorder("created_on DESC")
|
|
result = result.to_a
|
|
result.map { |res| result.delete(res) if res.container.nil?}
|
|
@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
|