在redmine中添加服务器文件备份功能
来源:互联网 发布:落一叶而知秋 编辑:程序博客网 时间:2024/05/29 21:28
根据项目需要,需将redmine中重要的文件进行备份,备份目录在redmine服务器上。
主要修改了两大部分:第一,添加备份按钮,实现备份功能;第二,为该功能添加权限设置。
首先记录第一点的实现:
(1)修改/usr/local/redmine/redmine-1.1.0/app/views/files/index.html.erb,添加
<td align="left">
<%= link_to(image_tag('move.png'), {:controller => 'attachments', :action => 'copy', :id => file}, :confirm => l(:text_are_you_sure)) if copy_allowed %>
</td>
此处是添加copy图片,使用copy方法实现。
(2)修改/usr/local/redmine/redmine-1.1.0/app/controllers/attchaments_controller.rb,添加copy方法
require 'ftools'
require 'fileutils'(注意大小写)
def copy
#if @attachment.container.is_a?(Version) || @attachment.container.is_a?(Project)
diskfilename = @attachment.diskfile
filename = filename_for_content_disposition(@attachment.filename)
FileUtils.cp "#{diskfilename}", "../../../../home/xxx/tt/#{filename}"
redirect_to :back
rescue ::ActionController::RedirectBackError
redirect_to :controller => 'projects', :action => 'show', :id => @project
end
注:#{diskfilename}的路径是/redmine/files中的文件名,被redmine处理过的文件名;#{filename}才是文件真正的名字
此处是将redmine/files中指定的文件拷贝到../../../../home/xxx/tt/#{filename},之所以只用"../../../../",是因为此处默认的路径是#{RAILS_ROOT}。
注意:目标路径要更改权限:sudo chown www-data:www-data ../../../../home/xxx/tt
第二点的实现:
(1)修改/usr/local/redmine/redmine-1.1.0/app/views/files/index.html.erb,添加
<% copy_allowed = User.current.allowed_to?(:copy_files, @project) %>
此处是根据copy_files的设定与否来决定是否显示copy功能。
(2)修改 /usr/local/redmine/redmine-1.1.0/lib/redmine.rb
map.project_module :files do |map|
map.permission :manage_files, {:files => [:new, :create]}, :require => :loggedin
map.permission :view_files, :files => :index, :versions => :download
map.permission :copy_files, :files => :index, :require => :loggedin
实现在权限报表中权限设置功能。
注:usr/local/redmine/redmine-1.1.0/test/fixtures/roles.yml与lib/redmine/default_data/loader.rb中不缺定是否要修改。但是上述功能已实现。
- 在redmine中添加服务器文件备份功能
- 在右键菜单中添加复制文件路径功能
- 如何在生成CHM文件中添加搜索功能
- 在Menu中添加功能
- 在Redmine中实现在线视频
- 部署Feature时报功能未安装在此服务器场中,无法添加到该范围
- 在blog中添加万年历功能
- 在桌面程序中添加GPS功能
- 在VC2010中添加预编译功能
- 在程序中添加Game Center功能
- 在状态栏中添加一个时钟功能
- 在网页中添加百度分享功能
- 在DedeCMS中添加分享功能
- 在VS2008中添加toolbar按钮功能
- 在eclipse中添加open explorer功能
- 如何在页面中添加打印功能
- 在Myeclipse中添加代码提示功能
- 在WebView中添加定位功能
- 百度向360索赔1亿元 双方庭前调解协商未果
- SQLite: sqlite_master
- 《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer多张张表中导入数据
- linux oracle数据库操作
- AssemblyInfo.cs文件中的程序集属性
- 在redmine中添加服务器文件备份功能
- KVO/KVC总结
- 深入了解OpenOffice.org(一)-- OpenOffice.org简介
- 开发中关于Fragment异常的两个问题
- Box2D资源
- Could not instantiate class named NSLayoutConstraint
- 杂学杂记(六)智能指针简介(强指针、弱指针)
- 使用ADO智能指针_ConnectionPtr,_CommandPtr及_RecordsetPtr
- 360旗下APP再遭苹果下架 巨头频遭“一刀切”