Merge branch 'szzh' into develop
This commit is contained in:
commit
e4b4f640a3
|
@ -62,6 +62,16 @@ class AttachmentsController < ApplicationController
|
||||||
render :action => 'file'
|
render :action => 'file'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def pdf?(file)
|
||||||
|
file.downcase.end_with?(".pdf")
|
||||||
|
end
|
||||||
|
|
||||||
|
def direct_download
|
||||||
|
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
|
||||||
|
:type => detect_content_type(@attachment),
|
||||||
|
:disposition => 'attachment' #inline can open in browser
|
||||||
|
end
|
||||||
|
|
||||||
def download
|
def download
|
||||||
# modify by nwb
|
# modify by nwb
|
||||||
# 下载添加权限设置
|
# 下载添加权限设置
|
||||||
|
@ -69,20 +79,30 @@ class AttachmentsController < ApplicationController
|
||||||
if candown || User.current.admin? || User.current.id == @attachment.author_id
|
if candown || User.current.admin? || User.current.id == @attachment.author_id
|
||||||
@attachment.increment_download
|
@attachment.increment_download
|
||||||
if stale?(:etag => @attachment.digest)
|
if stale?(:etag => @attachment.digest)
|
||||||
convered_file = File.join(Rails.root, "files", "convered_office", @attachment.disk_filename + ".html")
|
if params[:force] == 'true'
|
||||||
if File.exist?(convered_file)
|
direct_download
|
||||||
send_file convered_file, :type => 'text/html; charset=utf-8', :disposition => 'inline'
|
|
||||||
else
|
else
|
||||||
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
|
convered_file = @attachment.diskfile
|
||||||
:type => detect_content_type(@attachment),
|
#如果本身不是pdf文件,则先寻找是不是已转换化,如果没有则转化
|
||||||
:disposition => 'attachment' #inline can open in browser
|
unless pdf?(convered_file)
|
||||||
|
convered_file = File.join(Rails.root, "files", "convered_office", @attachment.disk_filename + ".pdf")
|
||||||
|
unless File.exist?(convered_file)
|
||||||
|
office = Trustie::Utils::Office.new(@attachment.diskfile)
|
||||||
|
office.conver(convered_file)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if File.exist?(convered_file) && pdf?(convered_file)
|
||||||
|
send_file convered_file, :type => 'application/pdf; charset=utf-8', :disposition => 'inline'
|
||||||
|
else
|
||||||
|
direct_download
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
render_403 :message => :notice_not_authorized
|
render_403 :message => :notice_not_authorized
|
||||||
end
|
end
|
||||||
rescue => e
|
rescue => e
|
||||||
redirect_to "http: //" + (Setting.host_name.to_s) +"/file_not_found.html"
|
redirect_to "http://" + (Setting.host_name.to_s) +"/file_not_found.html"
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新资源文件类型
|
#更新资源文件类型
|
||||||
|
|
|
@ -72,8 +72,8 @@ class Attachment < ActiveRecord::Base
|
||||||
@@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails")
|
@@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails")
|
||||||
|
|
||||||
before_save :files_to_final_location
|
before_save :files_to_final_location
|
||||||
after_create :office_conver, :be_user_score ,:act_as_forge_activity# user_score
|
after_create :office_conver, :be_user_score,:act_as_forge_activity# user_score
|
||||||
after_update :be_user_score
|
after_update :office_conver, :be_user_score
|
||||||
after_destroy :delete_from_disk,:down_user_score
|
after_destroy :delete_from_disk,:down_user_score
|
||||||
|
|
||||||
# add by nwb
|
# add by nwb
|
||||||
|
@ -259,12 +259,14 @@ class Attachment < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def office_conver
|
def office_conver
|
||||||
saved_path = File.join(Rails.root, "files", "convered_office")
|
# 不在这里做后台转换,换为点击时做转换
|
||||||
unless Dir.exist?(saved_path)
|
# return unless %w(Project Course).include? (self.container_type)
|
||||||
Dir.mkdir(saved_path)
|
# saved_path = File.join(Rails.root, "files", "convered_office")
|
||||||
end
|
# unless Dir.exist?(saved_path)
|
||||||
convered_file = File.join(saved_path, self.disk_filename + ".html")
|
# Dir.mkdir(saved_path)
|
||||||
OfficeConverTask.new.conver(self.diskfile, convered_file)
|
# end
|
||||||
|
# convered_file = File.join(saved_path, self.disk_filename + ".pdf")
|
||||||
|
# OfficeConverTask.new.conver(self.diskfile, convered_file)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Copies the temporary file to its final location
|
# Copies the temporary file to its final location
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= link_to("选入我的课程",quote_resource_show_course_file_path(@course,file),:class => "f_l re_select c_lorange",:remote => true) if has_course?(User.current,file) %>
|
<%= link_to("选入我的课程",quote_resource_show_course_file_path(@course,file),:class => "f_l re_select c_lorange",:remote => true) if has_course?(User.current,file) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<%= link_to '下载',download_named_attachment_path(file.id, file.filename, force: true),class: 'f_l re_open' %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= link_to(l(:label_slected_to_project),quote_resource_show_project_project_file_path(project,file),:class => "f_l re_select",:remote => true) if has_project?(User.current,file) %>
|
<%= link_to(l(:label_slected_to_project),quote_resource_show_project_project_file_path(project,file),:class => "f_l re_select",:remote => true) if has_project?(User.current,file) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<%= link_to '下载',download_named_attachment_path(file.id, file.filename, force: true),class: 'f_l re_open' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
if Rails.env.production?
|
|
||||||
config.cache_store = :redis_store, 'redis://localhost:6379/0/cache', { expires_in: 90.minutes }
|
|
||||||
end
|
|
|
@ -67,6 +67,8 @@ module RedmineApp
|
||||||
# Do not include all helpers
|
# Do not include all helpers
|
||||||
config.action_controller.include_all_helpers = false
|
config.action_controller.include_all_helpers = false
|
||||||
|
|
||||||
|
config.action_view.sanitized_allowed_tags = 'div', 'p', 'span', 'img', 'embed'
|
||||||
|
|
||||||
if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
||||||
instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
|
#coding=utf-8
|
||||||
|
|
||||||
namespace :office do
|
namespace :office do
|
||||||
desc "conver any files to html"
|
desc "conver any files to html"
|
||||||
task :conver => :environment do
|
task :conver => :environment do
|
||||||
all_count = Attachment.count
|
all_count = Attachment.where(["container_type IN (?)", %w(Project Course)]).count
|
||||||
i = 0
|
i = 0
|
||||||
Attachment.find_each do |a|
|
Attachment.where(["container_type IN (?)", %w(Project Course)]).find_each do |a|
|
||||||
i += 1
|
i += 1
|
||||||
puts "process [#{i}/#{all_count}] => id #{a.id}"
|
puts "process [#{i}/#{all_count}] => id #{a.id}"
|
||||||
saved_path = File.join(Rails.root, "files", "convered_office")
|
saved_path = File.join(Rails.root, "files", "convered_office")
|
||||||
unless Dir.exist?(saved_path)
|
unless Dir.exist?(saved_path)
|
||||||
Dir.mkdir(saved_path)
|
Dir.mkdir(saved_path)
|
||||||
end
|
end
|
||||||
convered_file = File.join(saved_path, a.disk_filename + ".html")
|
convered_file = File.join(saved_path, a.disk_filename + ".pdf")
|
||||||
office = Trustie::Utils::Office.new(a.diskfile)
|
office = Trustie::Utils::Office.new(a.diskfile)
|
||||||
if office.conver(convered_file)
|
if office.conver(convered_file)
|
||||||
puts "process ok: #{convered_file} "
|
puts "process ok: #{convered_file} "
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#coding=utf-8
|
||||||
|
|
||||||
module Trustie
|
module Trustie
|
||||||
module Utils
|
module Utils
|
||||||
class Office
|
class Office
|
||||||
|
@ -7,7 +9,7 @@ module Trustie
|
||||||
end
|
end
|
||||||
|
|
||||||
def office?
|
def office?
|
||||||
%w(doc docx ppt pptx xls xlsx pdf).any?{|word| @file.downcase.end_with?(word)}
|
%w(doc docx ppt pptx xls xlsx).any?{|word| @file.downcase.end_with?(word)}
|
||||||
end
|
end
|
||||||
|
|
||||||
def conver(saved_file, force=false)
|
def conver(saved_file, force=false)
|
||||||
|
@ -15,15 +17,19 @@ module Trustie
|
||||||
if File.exist? @file
|
if File.exist? @file
|
||||||
if office?
|
if office?
|
||||||
begin
|
begin
|
||||||
resource = RestClient::Resource.new(
|
# resource = RestClient::Resource.new(
|
||||||
'http://192.168.80.107/Any2HtmlHandler.ashx',
|
# 'http://192.168.80.107/Any2HtmlHandler.ashx',
|
||||||
:timeout => -1,
|
# :timeout => -1,
|
||||||
:open_timeout => -1
|
# :open_timeout => -1
|
||||||
)
|
# )
|
||||||
req = resource.post :txtDes => File.new(@file, 'rb')
|
# req = resource.post :txtDes => File.new(@file, 'rb')
|
||||||
|
req = RestClient.post 'http://192.168.80.107/Any2HtmlHandler.ashx',:txtDes => File.new(@file, 'rb')
|
||||||
|
File.delete(saved_file) if File.exist?(saved_file)
|
||||||
|
if req.body.length > 10 && !req.body.eql?('转换出错')
|
||||||
File.open(saved_file, "wb+") do |f|
|
File.open(saved_file, "wb+") do |f|
|
||||||
f.write(req.body)
|
f.write(req.body)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
return true
|
return true
|
||||||
rescue =>e
|
rescue =>e
|
||||||
puts e.message
|
puts e.message
|
||||||
|
|
Loading…
Reference in New Issue