archive/app/controllers/archives_controller.rb

110 lines
3.0 KiB
Ruby
Raw Normal View History

2014-05-14 11:52:06 +00:00
class ArchivesController < ApplicationController
def index
files_by_cateogry = ArchiveFile.filter_by_categories.filter_by_tags.group_by(&:category)
cats = files_by_cateogry.keys.collect do |cat|
files_by_category_tag = files_by_cateogry[cat].group_by(&:tags)
url_to_edit = OrbitHelper.user_has_cateogry?(cat) ? "/admin/archive_files?filters[category][]=#{cat.id.to_s}" : ""
ts = files_by_category_tag.keys.collect do |t|
archives = files_by_category_tag[t].collect do |archive|
statuses = archive.statuses_with_classname.collect do |status|
{
"status" => status["name"] || "",
"status-class" => "status-#{status['classname']}"
}
2015-07-17 07:29:41 +00:00
end
files = []
archive.archive_file_multiples.order_by(:sort_number=>'asc').each do |file|
if file.choose_lang.include?(I18n.locale.to_s)
title = (file.file_title.blank? ? File.basename(file.file.path) : file.file_title) rescue ""
extension = file.file.file.extension.downcase rescue ""
# url = file.file.url rescue ""
files << {
"file-name" => title,
"file-type" => extension,
"file-url" => "/xhr/archive/download?file=#{file.id}"
}
end
end
{
"archive-title" => archive.title || "",
"statuses" => statuses,
"files" => files
}
2015-07-17 07:29:41 +00:00
end
2014-05-14 11:52:06 +00:00
{
2015-07-17 07:29:41 +00:00
"tag-name" => (t[0].name rescue ""),
"archives" => archives
2015-07-16 09:02:24 +00:00
2014-05-14 11:52:06 +00:00
}
end
if(files_by_category_tag.empty?)
{
"category-title" => "",
"tags" => ts,
2015-07-17 07:29:41 +00:00
"url_to_edit" => url_to_edit
}
else
{
"category-title" => cat.title || "",
"tags" => ts,
"url_to_edit" => url_to_edit
}
end
2014-05-14 11:52:06 +00:00
end
{
2014-07-16 09:11:29 +00:00
"categories" => cats
2014-05-14 11:52:06 +00:00
}
end
2015-03-18 09:59:03 +00:00
def download_file
file_id = params[:file]
file = ArchiveFileMultiple.find(file_id) rescue nil
if !file.nil?
file.download_count = file.download_count + 1
file.save
redirect_to file.file.url and return
end
render :nothing => true
end
def widget
2015-07-17 07:29:41 +00:00
if OrbitHelper.widget_tags.first == "all"
files_by_cateogry = ArchiveFile.filter_by_widget_categories.with_tags(OrbitHelper.widget_module_app.tags.collect{|tag| tag.id.to_s}).group_by(&:category)
else
files_by_cateogry = ArchiveFile.filter_by_widget_categories.with_tags(OrbitHelper.widget_tags).group_by(&:category)
end
cats = files_by_cateogry.keys.collect do |cat|
files_by_category_tag = files_by_cateogry[cat].group_by(&:tags)
2015-07-17 07:29:41 +00:00
ts = files_by_category_tag.keys.collect do |t|
archives = files_by_category_tag[t].collect do |archive|
{
"archive-title" => archive.title,
"archive_url" => OrbitHelper.widget_more_url
}
end
{
2015-07-17 07:29:41 +00:00
"tag-name" => (t[0].name rescue ""),
"archives" => archives
}
end
{
"category-title" => cat.title,
"tags" => ts
}
end
{
"categories" => cats,
2014-05-24 11:37:07 +00:00
"extras" => {"widget-title" => "Archives","more_url"=>OrbitHelper.widget_more_url}
}
end
2014-05-14 11:52:06 +00:00
end