|
- #encoding: utf-8
- # Redmine - project management software
- # Copyright (C) 2006-2013 Jean-Philippe Lang
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License
- # as published by the Free Software Foundation; either version 2
- # of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- class FilesController < ApplicationController
- layout 'base_projects' #by young
-
- menu_item :files
- before_filter :auth_login1, :only => [:index]
- before_filter :logged_user_by_apptoken,:only => [:index]
- before_filter :find_project_by_project_id#, :except => [:getattachtype]
- before_filter :authorize, :except => [:create,:getattachtype,:quote_resource_show,:search,:searchone4reload,:search_project,:quote_resource_show_project,
- :search_tag_attachment,:subfield_upload_file,:search_org_subfield_tag_attachment,
- :search_tag_attachment,:quote_resource_show_org_subfield,:find_org_subfield_attache,
- :search_files_in_subfield,:upload_files_menu,:file_hidden,:republish_file,:update_file_description, :edit_file_description]
-
- helper :sort
- include SortHelper
- include FilesHelper
- helper :project_score
- include CoursesHelper
- include ApplicationHelper
-
- def show_attachments obj
- @attachments = []
- obj.each do |container|
- @attachments += container.attachments
- end
- @all_attachments = User.current.admin? ? @attachments : visable_attachemnts(@attachments)
- @limit = 10
- @feedback_count = @all_attachments.count
- if @feedback_count <= (params['page'].to_i - 1) * 10
- params['page'] = 1
- end
- @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- @offset ||= @feedback_pages.offset
- #@curse_attachments_all = @all_attachments[@offset, @limit]
- @obj_attachments = paginateHelper @all_attachments,10
- end
-
- def searchone4reload
- attachment = Attachment.find_by_id(params[:fileid]);
- respond_to do |format|
- format.html{render :layout => nil,:locals=>{:file=>attachment,:course=>@course}}
- end
- end
-
- def search
- sort = ""
- @sort = ""
- @order = ""
- @is_remote = true
- @curr_page = params[:page] ? params[:page].to_i : 1
- @q = params[:name].strip
- if params[:sort]
- order_by = params[:sort].split(":")
- @sort = order_by[0]
- if order_by.count > 1
- @order = order_by[1]
- end
- sort = "#{@sort} #{@order}"
- end
- # show_attachments [@course]
- begin
- q = "%#{params[:name].strip}%"
- #(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
- if params[:insite]
- if q == "%%"
- @result = []
- # @searched_attach = paginateHelper @result,10
- else
- @result = find_public_attache q,sort
- @result = visable_attachemnts_insite @result,@course
- # @searched_attach = paginateHelper @result,10
- end
- else
- @result = find_course_attache q,@course,sort
- @result = visable_attachemnts @result
- # @searched_attach = paginateHelper @result,10
- @tag_list = get_course_tag_list @course
- end
- @all_attachments = @result
- get_attachment_for_tip(@all_attachments)
- @limit = 10
- @feedback_count = @all_attachments.count
- @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- @offset ||= @feedback_pages.offset
- #@curse_attachments_all = @all_attachments[@offset, @limit]
- @obj_attachments = paginateHelper @all_attachments,10
- #rescue Exception => e
- # #render 'stores'
- # redirect_to search_course_files_url
- end
- end
-
- def file_hidden
- @file = Attachment.find params[:id]
- @course = Course.find params[:course_id]
- respond_to do |format|
- format.js
- end
- end
-
- def republish_file
- @file = Attachment.find params[:id]
- @course = Course.find params[:course_id]
- if params[:publish_time]
- unless params[:publish_time] == ""
- @file.publish_time = params[:publish_time]
- end
- end
- if @file.publish_time > Time.now
- @file.is_publish = 0
- else
- @file.is_publish = 1
- end
- @file.save
- respond_to do |format|
- format.js
- end
- end
-
- def search_project
- sort = ""
- @sort = ""
- @order = ""
- @is_remote = true
- @q = params[:name].strip
- if params[:sort]
- order_by = params[:sort].split(":")
- @sort = order_by[0]
- if order_by.count > 1
- @order = order_by[1]
- end
- sort = "#{@sort} #{@order}"
- end
- # show_attachments [@course]
- begin
- q = "%#{params[:name].strip}%"
- #(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
- if params[:insite]
- if q == "%%"
- @project_attachment_result = []
- # @searched_attach = paginateHelper @project_attachment_result, 10
- else
- @project_attachment_result = find_public_attache q,sort
- @project_attachment_result = visable_attachemnts_insite @project_attachment_result, @project
- # @searched_attach = paginateHelper @project_attachment_result, 10
- end
- else
- @project_attachment_result = find_project_attache q, @project,sort
- @project_attachment_result = visable_attachemnts @project_attachment_result
- # @searched_attach = paginateHelper @project_attachment_result,10
- @tag_list = get_project_tag_list @project
- end
-
- @all_attachments = @project_attachment_result
- get_attachment_for_tip(@all_attachments)
- @limit = 10
- @feedback_count = @all_attachments.count
- @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- @offset ||= @feedback_pages.offset
- #@curse_attachments_all = @all_attachments[@offset, @limit]
- @obj_attachments = paginateHelper @all_attachments,10
- #rescue Exception => e
- # #render 'stores'
- # redirect_to search_course_files_url
- end
- end
-
- def search_files_in_subfield
- sort = ""
- @sort = ""
- @order = ""
- @is_remote = true
- @q = params[:name].strip
- if params[:sort]
- order_by = params[:sort].split(":")
- @sort = order_by[0]
- if order_by.count > 1
- @order = order_by[1]
- end
- sort = "#{@sort} #{@order}"
- end
- # show_attachments [@course]
- begin
- q = "%#{params[:name].strip}%"
- #(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
- if params[:insite]
- if q == "%%"
- @result = []
- @searched_attach = paginateHelper @result,10
- else
- @result = find_public_attache q,sort
- @result = visable_attachemnts_insite @result,@org_subfield
- @searched_attach = paginateHelper @result,10
- end
- else
- @result = find_org_subfield_attache q,@org_subfield,sort
- @result = visable_attachemnts @result
- @searched_attach = paginateHelper @result,10
- @tag_list = attachment_tag_list @result
- end
- #rescue Exception => e
- # #render 'stores'
- # redirect_to search_course_files_url
- end
- @page = params[:page] || 1
- end
-
- def find_course_attache keywords,course,sort = ""
- if sort == ""
- sort = "created_on DESC"
- end
- if keywords != "%%"
- resultSet = Attachment.where("attachments.container_type = 'Course' And attachments.container_id = '#{course.id}' AND filename LIKE :like ", like: "%#{keywords}%").reorder(sort)
- else
- resultSet = Attachment.where("attachments.container_type = 'Course' And attachments.container_id = '#{course.id}' "). reorder(sort)
- end
- #resultSet = Attachment.find_by_sql("SELECT `attachments`.* FROM `attachments` LEFT OUTER JOIN `homework_attaches` ON `attachments`.container_type = 'HomeworkAttach' AND `attachments`.container_id = `homework_attaches`.id LEFT OUTER JOIN `homework_for_courses` ON `homework_attaches`.bid_id = `homework_for_courses`.bid_id LEFT OUTER JOIN `homework_for_courses` AS H_C ON `attachments`.container_type = 'Bid' AND `attachments`.container_id = H_C.bid_id WHERE (`homework_for_courses`.course_id = 117 OR H_C.course_id = 117 OR (`attachments`.container_type = 'Course' AND `attachments`.container_id = 117)) AND `attachments`.filename LIKE '%#{keywords}%'").reorder("created_on DESC")
- end
-
- def find_org_subfield_attache keywords,org_subfield,sort = ""
- if sort == ""
- sort = "created_on DESC"
- end
- if keywords != "%%"
- resultSet = Attachment.where("attachments.container_type = 'OrgSubfield' And attachments.container_id = '#{org_subfield.id}' AND filename LIKE :like ", like: "%#{keywords}%").
- reorder(sort)
- else
- resultSet = Attachment.where("attachments.container_type = 'OrgSubfield' And attachments.container_id = '#{org_subfield.id}' "). reorder(sort)
- end
- #resultSet = Attachment.find_by_sql("SELECT `attachments`.* FROM `attachments` LEFT OUTER JOIN `homework_attaches` ON `attachments`.container_type = 'HomeworkAttach' AND `attachments`.container_id = `homework_attaches`.id LEFT OUTER JOIN `homework_for_courses` ON `homework_attaches`.bid_id = `homework_for_courses`.bid_id LEFT OUTER JOIN `homework_for_courses` AS H_C ON `attachments`.container_type = 'Bid' AND `attachments`.container_id = H_C.bid_id WHERE (`homework_for_courses`.course_id = 117 OR H_C.course_id = 117 OR (`attachments`.container_type = 'Course' AND `attachments`.container_id = 117)) AND `attachments`.filename LIKE '%#{keywords}%'").reorder("created_on DESC")
- end
-
- def find_project_attache keywords,project,sort = ""
- if sort == ""
- sort = "created_on DESC"
- end
- if keywords != "%%"
- resultSet = Attachment.where("attachments.container_type = 'Project' And attachments.container_id = '#{project.id}' AND filename LIKE :like ", like: "%#{keywords}%").reorder(sort)
- else
- resultSet = Attachment.where("attachments.container_type = 'Project' And attachments.container_id = '#{project.id}' "). reorder(sort)
- end
- end
-
- def find_public_attache keywords,sort = ""
- # StoresController#search 将每条文件都查出来,再次进行判断过滤。---> resultSet.to_a.map
- # 此时内容不多速度还可,但文件增长,每条判断多则进行3-4次表连接。
- # 现在还木有思路 药丸
- if sort == ""
- sort = "created_on DESC"
- end
- resultSet = Attachment.where("attachments.container_type IS NOT NULL AND attachments.copy_from IS NULL AND filename LIKE :like ", like: "%#{keywords}%").
- reorder(sort)
- end
-
- def index
- # 顶部导航
- @project_menu_type = 4
-
- @flag = params[:flag] || false
- sort = ""
- @sort = ""
- @order = ""
- @is_remote = false
- @curr_page = params[:page] ? params[:page].to_i : 1
- if params[:project_id]
- set_nav_status(NavStatues::PROJECT)
- # 更新资源申请消息为已读
- # ar_ids = ApplyResource.where("user_id =? and container_id =? and container_type =?", User.current.id, params[:project_id].to_i, "Project").map{|ar| ar.id}
- # cms = CourseMessage.where("course_message_type =? and user_id =? and course_message_id in (#{ar_ids.empty? ? '0': ar_ids.join(',')})", "ApplyResource", User.current.id)
- # cms.each do |cm|
- # cm.update_column(:viewed, true)
- # end
- # over
- @page = params[:page] ? params[:page].to_i + 1 : 2
- @container_type = 0
- if params[:sort]
- params[:sort].split(",").each do |sort_type|
- order_by = sort_type.split(":")
- case order_by[0]
- when "filename"
- attribute = "filename"
- when "size"
- attribute = "filesize"
- when "attach_type"
- attribute = "attachtype"
- when "content_type"
- attribute = "created_on"
- when "field_file_dense"
- attribute = "is_public"
- when "downloads"
- attribute = "downloads"
- when "created_on"
- attribute = "created_on"
- when "quotes"
- attribute = "quotes"
- else
- attribute = "created_on"
- end
- @sort = order_by[0]
- @order = order_by[1]
- if order_by.count == 1 && attribute
- sort += "#{Attachment.table_name}.#{attribute} asc "
- if sort_type != params[:sort].split(",").last
- sort += ","
- end
- elsif order_by.count == 2 && order_by[1]
- sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} "
- if sort_type != params[:sort].split(",").last
- sort += ","
- end
- end
- end
- else
- sort = "#{Attachment.table_name}.created_on desc"
- end
- # @containers = [ Project.includes(:attachments).find(@project.id)]
- # @containers += @project.versions.includes(:attachments).all
-
- @containers = [ Project.includes(:attachments).reorder(sort).find(@project.id)]
-
- show_attachments @containers
- get_attachment_for_tip(@all_attachments)
-
- @tag_list = attachment_tag_list @all_attachments
-
- render :layout => 'base_projects'
- elsif params[:course_id]
- set_nav_status(NavStatues::COURSE)
- @container_type = 1
- @page = params[:page] ? params[:page].to_i + 1 : 2
- if params[:sort]
- params[:sort].split(",").each do |sort_type|
- order_by = sort_type.split(":")
-
- case order_by[0]
- when "filename"
- attribute = "filename"
- when "size"
- attribute = "filesize"
- when "attach_type"
- attribute = "attachtype"
- when "content_type"
- attribute = "created_on"
- when "field_file_dense"
- attribute = "is_public"
- when "downloads"
- attribute = "downloads"
- when "created_on"
- attribute = "created_on"
- when "quotes"
- attribute = "quotes"
- else
- attribute = "created_on"
- end
- @sort = order_by[0]
- @order = order_by[1]
- if order_by.count == 1 && attribute
- sort += "#{Attachment.table_name}.#{attribute} asc "
- if sort_type != params[:sort].split(",").last
- sort += ","
- end
- elsif order_by.count == 2 && order_by[1]
- sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} "
- if sort_type != params[:sort].split(",").last
- sort += ","
- end
- end
- end
- else
- sort = "#{Attachment.table_name}.created_on desc"
- end
-
- @containers = [ Course.includes(:attachments).reorder(sort).find(@course.id)]
-
- show_attachments @containers
- get_attachment_for_tip(@all_attachments)
-
- @tag_list = attachment_tag_list @all_attachments
-
- @left_nav_type = 5
- render :layout => 'base_courses'
- elsif params[:org_subfield_id]
- if params[:sort]
- params[:sort].split(",").each do |sort_type|
- order_by = sort_type.split(":")
-
- case order_by[0]
- when "filename"
- attribute = "filename"
- when "size"
- attribute = "filesize"
- when "attach_type"
- attribute = "attachtype"
- when "content_type"
- attribute = "created_on"
- when "field_file_dense"
- attribute = "is_public"
- when "downloads"
- attribute = "downloads"
- when "created_on"
- attribute = "created_on"
- when "quotes"
- attribute = "quotes"
- else
- attribute = "created_on"
- end
- @sort = order_by[0]
- @order = order_by[1]
- if order_by.count == 1 && attribute
- sort += "#{Attachment.table_name}.#{attribute} asc "
- if sort_type != params[:sort].split(",").last
- sort += ","
- end
- elsif order_by.count == 2 && order_by[1]
- sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} "
- if sort_type != params[:sort].split(",").last
- sort += ","
- end
- end
- end
- else
- sort = "#{Attachment.table_name}.created_on desc"
- end
- @container_type = 2
- @containers = [ OrgSubfield.includes(:attachments).reorder(sort).find(@org_subfield.id)]
- @organization = Organization.find(@containers.first.organization_id)
- if @organization.is_public? or User.current.admin? or User.current.member_of_org?(@organization)
- show_attachments @containers
- @tag_list = attachment_tag_list @all_attachments
- @page = params[:page] || 1
- render :layout => 'base_org'
- else
- render_403
- end
- # @subfield = params[:org_subfield_id]
- end
-
- end
-
- # 获取提示中私有、公开总数信息
- def get_attachment_for_tip all_attachment
-
- @tip_all_public_attachments = all_attachment.select{|attach| attach.is_public == 1}.count
- if params[:project_id]
- if User.current.member_of?(@project) || User.current.admin?
- @tip_all_attachments = all_attachment.count
- @tip_all_private_attachments = all_attachment.select{|attach| attach.is_public == 0}.count
- else
- if params[:tag_name]
- @tip_all_attachments = all_attachment.count
- @tip_all_private_attachments = 0
- else
- @tip_all_attachments = Attachment.where(:container_id => params[:project_id], :container_type => "Project").count
- @tip_all_private_attachments = Attachment.where(:container_id => params[:project_id], :container_type => "Project", :is_public => 0).count
- end
- end
- elsif params[:course_id]
- if User.current.member_of_course?(@course) || User.current.admin?
- @tip_all_attachments = all_attachment.count
- @tip_all_private_attachments = all_attachment.select{|attach| attach.is_public == 0}.count
- else
- if params[:tag_name]
- @tip_all_attachments = all_attachment.count
- @tip_all_private_attachments = 0
- else
- @tip_all_attachments = Attachment.where(:container_id => params[:course_id], :container_type => "Course").count
- @tip_all_private_attachments = Attachment.where(:container_id => params[:course_id], :container_type => "Course", :is_public => 0).count
- end
- end
- end
- end
-
- def quote_resource_show
- @file = Attachment.find(params[:id])
- @can_quote = attachment_candown @file
- end
-
- def quote_resource_show_project
- @file = Attachment.find(params[:id])
- @can_quote = attachment_candown @file
- end
-
- def quote_resource_show_org_subfield
- @file = Attachment.find(params[:id])
- @org_subfield = OrgSubfield.find(params[:org_subfield_id])
- @can_quote = attachment_candown @file
- end
-
- def new
- @versions = @project.versions.sort
- @course_tag = @project.project_type
- if @project.project_type == 1
- @left_nav_type = 5
- render :layout => 'base_courses'
- end
- end
-
- def create
- if params[:add_tag]
- @addTag=true
- #render :back
- tag_saveEx
- #render :text =>"success"
- respond_to do |format|
- format.js
- end
- else
- #modify by nwb
- if @project
- @addTag=false
- if params[:in_project_toolbar]
- @in_project_toolbar = params[:in_project_toolbar]
- end
- attachments = Attachment.attach_filesex(@project, params[:attachments], params[:attachment_type])
- if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added')
- # 发送邮件
- # Mailer.run.attachments_added(attachments[:files])
- # 生成动态
- attachments[:files].each do |file|
- ForgeActivity.create(:user_id => User.current.id, :project_id => @project.id, :forge_act_id => file.id, :forge_act_type => "Attachment")
- end
- # 更新资源总数, 根据上传的附件数累加
- @project.project_score.update_attribute(:attach_num, @project.project_score.attach_num + attachments[:files].count) unless @project.project_score.nil?
- end
- # end
- if params[:project_attachment_type] && params[:project_attachment_type].is_a?(Array)
- params[:project_attachment_type].each do |type|
- tag_name = get_project_tag_name_by_type_nmuber type
- if !attachments.empty? && attachments[:files] && tag_name != ""
- attachments[:files].each do |attachment|
- attachment.tag_list.add(tag_name)
- attachment.description = params[:description]
- attachment.save
- end
- end
- end
- else
- if params[:project_attachment_type] && params[:project_attachment_type] != "6"
- tag_name = get_project_tag_name_by_type_nmuber params[:project_attachment_type]
- if !attachments.empty? && attachments[:files] && tag_name != ""
- attachments[:files].each do |attachment|
- attachment.tag_list.add(tag_name)
- attachment.description = params[:description]
- attachment.save
- end
- end
- end
- end
- # TODO: 临时用 nyan
- sort_init 'created_on', 'desc'
- sort_update 'created_on' => "#{Attachment.table_name}.created_on",
- 'filename' => "#{Attachment.table_name}.filename",
- 'size' => "#{Attachment.table_name}.filesize",
- 'downloads' => "#{Attachment.table_name}.downloads"
-
- @containers = [Project.includes(:attachments).reorder("#{Attachment.table_name}.created_on DESC").find(@project.id)]
- show_attachments @containers
- @tag_list = attachment_tag_list @all_attachments
- @attachtype = 0
- @contenttype = 0
- respond_to do |format|
- format.js
- format.html {
- redirect_to project_files_url(@project)
- }
- end
- elsif @course
- @addTag=false
- if params[:in_course_toolbar]
- @in_course_toolbar = params[:in_course_toolbar]
- end
- attachments = Attachment.attach_filesex(@course, params[:attachments], params[:attachment_type])
-
- # if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added')
- # # Mailer.run.attachments_added(attachments[:files])
- # end
- if !attachments.empty? && attachments[:files]
- attachments[:files].each do |attachment|
- if params[:publish_time]
- if params[:publish_time] == ""
- attachment.publish_time = Time.now
- else
- attachment.publish_time = params[:publish_time]
- attachment.is_publish = 0
- end
- else
- attachment.publish_time = Time.now
- end
- attachment.description = params[:description]
- attachment.save
- end
- end
- if params[:course_attachment_type] && params[:course_attachment_type].is_a?(Array)
- params[:course_attachment_type].each do |type|
- tag_name = get_tag_name_by_type_number type
- if !attachments.empty? && attachments[:files] && tag_name != ""
- attachments[:files].each do |attachment|
- attachment.tag_list.add(tag_name)
- attachment.save
- end
- end
- end
- else
- if params[:course_attachment_type] && params[:course_attachment_type] != "5"
- tag_name = get_tag_name_by_type_number params[:course_attachment_type]
- if !attachments.empty? && attachments[:files] && tag_name != ""
- attachments[:files].each do |attachment|
- attachment.tag_list.add(tag_name)
- attachment.save
- end
- end
- end
- end
- # 更新课程英雄榜得分
- course_member_score(@course.id, attachments[:files].first.author_id, "Attachment")
- # end
- # end
- # TODO: 临时用 nyan
- sort_init 'created_on', 'desc'
- sort_update 'created_on' => "#{Attachment.table_name}.created_on",
- 'filename' => "#{Attachment.table_name}.filename",
- 'size' => "#{Attachment.table_name}.filesize",
- 'downloads' => "#{Attachment.table_name}.downloads"
-
- @containers = [Course.includes(:attachments).reorder("#{Attachment.table_name}.created_on DESC").find(@course.id)]
-
- show_attachments @containers
- @tag_list = attachment_tag_list @all_attachments
-
- @attachtype = 0
- @contenttype = 0
-
- respond_to do |format|
- format.js
- format.html {
- redirect_to course_files_url(@course)
- }
- end
- elsif @org_subfield
- @addTag=false
- attachments = Attachment.attach_filesex(@org_subfield, params[:attachments], params[:org_subfield_attachment_type])
-
- if params[:org_subfield_attachment_type] && params[:org_subfield_attachment_type].is_a?(Array)
- params[:org_subfield_attachment_type].each do |type|
- tag_name = get_tag_name_by_type_number type
- if !attachments.empty? && attachments[:files] && tag_name != ""
- attachments[:files].each do |attachment|
- attachment.tag_list.add(tag_name)
- attachment.description = params[:description]
- attachment.save
- end
- end
- end
- else
- if params[:org_subfield_attachment_type] && params[:org_subfield_attachment_type] != "5"
- tag_name = get_tag_name_by_type_number params[:org_subfield_attachment_type]
- if !attachments.empty? && attachments[:files] && tag_name != ""
- attachments[:files].each do |attachment|
- attachment.tag_list.add(tag_name)
- attachment.description = params[:description]
- attachment.save
- end
- end
- end
- end
-
- # TODO: 临时用 nyan
- sort_init 'created_on', 'desc'
- sort_update 'created_on' => "#{Attachment.table_name}.created_on",
- 'filename' => "#{Attachment.table_name}.filename",
- 'size' => "#{Attachment.table_name}.filesize",
- 'downloads' => "#{Attachment.table_name}.downloads"
-
- @containers = [OrgSubfield.includes(:attachments).reorder("#{Attachment.table_name}.created_on DESC").find(@org_subfield.id)]
-
- show_attachments @containers
- @tag_list = attachment_tag_list @all_attachments
- @attachtype = 0
- @contenttype = 0
-
- respond_to do |format|
- format.js
- # format.html {
- # redirect_to org_subfield_files_url(@org_subfield)
- # }
- end
- # 组织添加附件,为了修改图片
- elsif params[:organization_id]
- @organization = Organization.find(params[:organization_id])
- @addTag=false
- # atttchment_type = 0为logo 1为banner
- if params[:logo]
- attachments = Attachment.attach_filesex(@organization, params[:attachments], false)
- else
- attachments = Attachment.attach_filesex(@organization, params[:attachments], true)
- end
- # TODO: 临时用 nyan
- sort_init 'created_on', 'desc'
- sort_update 'created_on' => "#{Attachment.table_name}.created_on",
- 'filename' => "#{Attachment.table_name}.filename",
- 'size' => "#{Attachment.table_name}.filesize",
- 'downloads' => "#{Attachment.table_name}.downloads"
-
- @containers = [Organization.includes(:attachments).reorder("#{Attachment.table_name}.created_on DESC").find(@organization.id)]
-
- show_attachments @containers
- @tag_list = attachment_tag_list @all_attachments
- @attachtype = 0
- @contenttype = 0
-
- respond_to do |format|
- format.js
- # format.html {
- # redirect_to org_subfield_files_url(@org_subfield)
- # }
- end
- end
- end
- end
-
- def get_project_tag_name_by_type_nmuber type
- case type
- when "1"
- tag_name = "软件版本"
- when "2"
- tag_name = "文档"
- when "3"
- tag_name = "代码"
- when "4"
- tag_name = "媒体"
- when "5"
- tag_name = "论文"
- when "6"
- tag_name = "其它"
- else
- tag_name = ""
- end
- end
-
- def get_tag_name_by_type_number type
- case type
- when "1"
- tag_name = l(:label_courseware)
- when "2"
- tag_name = l(:label_software)
- when "3"
- tag_name = l(:label_media)
- when "4"
- tag_name = l(:label_code)
- when "6"
- tag_name = "论文"
- else
- tag_name = ""
- end
- end
-
- def tag_saveEx
- @tags = params[:tag_name][:name]
- @obj_id = params[:object_id]
- @obj_flag = params[:object_flag]
-
- case @obj_flag
- when '1' then
- @obj = User.find_by_id(@obj_id)
- when '2' then
- @obj = Project.find_by_id(@obj_id)
- when '3' then
- @obj = Issue.find_by_id(@obj_id)
- when '4' then
- @obj = Bid.find_by_id(@obj_id)
- when '5' then
- @obj = Forum.find_by_id(@obj_id)
- when '6'
- @obj = Attachment.find_by_id(@obj_id)
- when '7' then
- @obj = Contest.find_by_id(@obj_id)
- when '8'
- @obj = OpenSourceProject.find_by_id(@obj_id)
- when '9'
- @obj = Course.find_by_id(@obj_id)
- else
- @obj = nil
- end
- unless @obj.nil?
- @obj.tag_list.add(@tags.split(","))
- else
- return
- end
- if @obj.save
- ## 执行成功的操作。
- else
- #捕获异常
- end
- end
-
- # 返回指定资源类型的资源列表
- # added by nwb
- def getattachtype
- sort_init 'created_on', 'desc'
- sort_update 'created_on' => "#{Attachment.table_name}.created_on",
- 'filename' => "#{Attachment.table_name}.filename",
- 'size' => "#{Attachment.table_name}.filesize",
- 'downloads' => "#{Attachment.table_name}.downloads"
- sort=''
-
- if params[:sort]
- params[:sort].split(",").each do |sort_type|
- order_by = sort_type.split(":")
-
- case order_by[0]
- when "filename"
- attribute = "filename"
- when "size"
- attribute = "filesize"
- when "attach_type"
- attribute = "attachtype"
- when "content_type"
- attribute = "created_on"
- when "field_file_dense"
- attribute = "is_public"
- when "downloads"
- attribute = "downloads"
- when "created_on"
- attribute = "created_on"
- end
-
- if order_by.count == 1
- sort += "#{Attachment.table_name}.#{attribute} asc "
- elsif order_by.count == 2
- sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} "
- end
- if sort_type != params[:sort].split(",").last
- sort += ","
- end
- end
- end
-
- if @project
- @isproject = true
- @containers = [ Project.includes(:attachments).reorder("#{Attachment.table_name}.created_on DESC").find(@project.id)]
- @containers += @project.versions.includes(:attachments).reorder(sort).all
- show_attachments @containers
- @attachtype = params[:type].to_i
- @contenttype = params[:contentType].to_s
- respond_to do |format|
- format.js
- format.html {
- render :layout => 'base_projects'
- }
- end
-
- elsif @course
- @isproject = false
- @containers = [ Course.includes(:attachments).reorder(sort).find(@course.id)]
- show_attachments @containers
- @attachtype = params[:type].to_i
- @contenttype = params[:contentType].to_s
- # render layout: 'base_courses'
- @left_nav_type = 5
- respond_to do |format|
- format.js
- format.html {
- render :layout => 'base_courses'
- }
- end
- else
- show_attachments @containers
- @attachtype = params[:type].to_i
- @contenttype = params[:contentType].to_s
-
- respond_to do |format|
- format.js
- format.html
- end
- end
- end
-
- #查找指定TAG的按条件过滤的资源列表,只有课程内搜索有此功能
- def search_tag_attachment
- @q,@tag_name,@order = params[:q],params[:tag_name]
- @is_remote = true
- if params[:sort]
- order_by = params[:sort].split(":")
- @sort = order_by[0]
- if order_by.count > 1
- @order = order_by[1]
- end
- sort = "#{@sort} #{@order}"
- end
-
- q = "%#{@q.strip}%"
- if @project
- @result = find_project_attache q, @project,sort
- else
- @result = find_course_attache q,@course,sort
- end
- @result = visable_attachemnts @result
- if params[:other]
- if @project
- @result = @result.select{|attachment| !attachment.tag_list.include?('软件版本') && !attachment.tag_list.include?('文档') && !attachment.tag_list.include?('代码') && !attachment.tag_list.include?('媒体') && !attachment.tag_list.include?('论文') }
- else
- @result = @result.select{|attachment|
- !attachment.tag_list.include?('课件') &&
- !attachment.tag_list.include?('软件') &&
- !attachment.tag_list.include?('媒体') &&
- !attachment.tag_list.include?('代码') &&
- !attachment.tag_list.include?('论文') }
- end
- else
- @result = @result.select{|attachment| attachment.tag_list.include?(@tag_name)} unless @tag_name.blank?
- end
-
- @all_attachments = @result
- get_attachment_for_tip(@all_attachments)
- @limit = 10
- @feedback_count = @all_attachments.count
- @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- @offset ||= @feedback_pages.offset
- #@curse_attachments_all = @all_attachments[@offset, @limit]
- @obj_attachments = paginateHelper @all_attachments,10
-
-
- # @searched_attach = paginateHelper @result,10
- if @project
- @tag_list = get_project_tag_list @project
- @result_search_project = @result
- else
- @tag_list = get_course_tag_list @course
- end
- respond_to do |format|
- format.js
- # format.html
- end
- end
-
- #搜索资源栏目的指定TAG的资源列表
- def search_org_subfield_tag_attachment
- @q,@tag_name,@order = params[:q],params[:tag_name]
- @is_remote = true
- if params[:sort]
- order_by = params[:sort].split(":")
- @sort = order_by[0]
- if order_by.count > 1
- @order = order_by[1]
- end
- sort = "#{@sort} #{@order}"
- end
-
- q = "%#{@q.strip}%"
- @result = find_org_subfield_attache q,@org_subfield,sort
- @result = visable_attachemnts @result
- if params[:other]
- @result = @result.select{|attachment|
- attachment.tag_list.index{|tag|tag != '软件' and tag != '媒体' and tag != '代码'}.present?
- }
- else
- @result = @result.select{|attachment| attachment.tag_list.include?(@tag_name)} unless @tag_name.blank?
- end
- @searched_attach = paginateHelper @result,10
- @tag_list = get_org_subfield_tag_list @org_subfield
-
- respond_to do |format|
- format.js
- # format.html
- end
- end
-
- def subfield_upload_file
- @org_subfield = OrgSubfield.find(params[:org_subfield_id])
- end
-
- def upload_files_menu
-
- end
-
- def edit_file_description
- @attachment = Attachment.find(params[:id])
- @attachment.description = params[:file_description_edit]
- @attachment.save
- end
-
- def update_file_description
- @attachment = Attachment.find(params[:id])
- @attachment.description = params[:description]
- @attachment.save
- end
- end
|