2015-07-20 85 views
3

我想创建Redmine插件,并在该插件中我想上传文件或图像,并在显示操作中显示图像或下载文件。谁能帮我。Redmine如何上传和下载插件内的文件?

在模型

class UserInformation < ActiveRecord::Base 
    unloadable 
    belongs_to :project 

    acts_as_attachable :view_permission => :view_files, 
        :edit_permission => :manage_files, 
        :delete_permission => :manage_files 

在控制器

class UserInformationsController < ApplicationController 
     unloadable 
     require File.dirname(__FILE__) + '/../../../../app/helpers/attachments_helper' 
     include AttachmentsHelper 
     helper :attachments 

在new.html.erb

 <p> <%= render :partial => 'attachments/form' %></p> 

在show.html.erb

<%= link_to_attachments @info, :thumbnails => true %> 

你能帮我是正确的方法?

回答

2

Redmine已经有附件工作类 - 型号Attachment,控制器AttachmentsController和附件视图和助手。

你可以在你自己的课堂上使用它们。

将行后的acts_as_attachable...加上您的模型类的neccesary选项。选项有:

  • 权限选项。例如:view_permission => :view_attachments_permissions,其中view_attachments_permissions是标准或插件许可。如果用户想下载附件,他必须具有该权限的角色,或者该权限必须是公共的(只有插件权限 - 源代码中的公共选项集)。
  • 行为选项(添加,删除等操作)。
  • 也许还有其他选择。

在您的意见中添加<%= render :partial => 'attachments/form' %>

并在您的控制器中保存模型实例时调用save_attachments方法。 或者添加附件,例如保存后手动:

params[:attachments].each do |attachment_param| 
    attachment = Attachment.where('filename = ?', attachment_param[1][:filename]).first 
    unless attachment.nil? 
     attachment.container_type = YourModel.name 
     attachment.container_id = set.id 
     attachment.save 
    end 
end 

附件添加后立即扑救,但没有容器信息


你也可以通过打补丁添加附件,以现有的技术管理平台类。

例如,我修补TimeEntry类:

require_dependency 'time_entry' 

    module TimeEntryPatch 

    def self.included(base) # :nodoc: 
     base.send(:include, InstanceMethods) 

     base.class_eval do 
      unloadable # Send unloadable so it will not be unloaded in development 
      acts_as_attachable :after_add => :attachment_added, :after_remove => :attachment_removed 
     end 
    end 
... 

你可以看一下例子直接在管理平台的代码。

附件使用issueProject和一些其他模型。 我在那里找到了我的问题的答案!


要查看附加图片您可以使用插件,如Lightbox 2。 将插件添加到您的Redmine或将其代码和样式表复制到您的插件。

+0

哇这为我工作。现在我能够上传文件,但如何下载文件。我面临错误您无权访问此页面。现在看到我按照你的建议添加了模型代码 –

+0

我最近添加了附件,并且仍然有相同的错误 我还没有弄清楚,但很可能它是通过编辑init.rb中的权限来解决的'文件: ... project_module:your_plugin做 权限:PERMISSION_NAME,{:your_model => [:actions_array]}:公众=>真正 结束 .... 外观http://www.redmine.org/projects/redmine/wiki/Plugin_Tutorial#Adding-new-permissions –

+0

在添加init权限后面临同样的问题。 –