Redmine >= 3.0 required

This commit is contained in:
Karel Pičman 2015-07-29 13:59:40 +02:00
parent 1d2b123ba1
commit 3956def6bd
7 changed files with 84 additions and 199 deletions

View File

@ -35,31 +35,15 @@ class DmsfFile < ActiveRecord::Base
belongs_to :project
belongs_to :folder, :class_name => 'DmsfFolder', :foreign_key => 'dmsf_folder_id'
belongs_to :deleted_by_user, :class_name => 'User', :foreign_key => 'deleted_by_user_id'
if (Rails::VERSION::MAJOR > 3)
has_many :revisions, -> { order("#{DmsfFileRevision.table_name}.major_version DESC, #{DmsfFileRevision.table_name}.minor_version DESC, #{DmsfFileRevision.table_name}.updated_at DESC") },
:class_name => 'DmsfFileRevision', :foreign_key => 'dmsf_file_id',
:dependent => :destroy
has_many :locks, -> { where(entity_type: 0).order("#{DmsfLock.table_name}.updated_at DESC") },
:class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy
has_many :referenced_links, -> { where target_type: DmsfFile.model_name.to_s},
:class_name => 'DmsfLink', :foreign_key => 'target_id', :dependent => :destroy
accepts_nested_attributes_for :revisions, :locks, :referenced_links, :project
else
has_many :revisions, :class_name => 'DmsfFileRevision', :foreign_key => 'dmsf_file_id',
:order => "#{DmsfFileRevision.table_name}.major_version DESC, #{DmsfFileRevision.table_name}.minor_version DESC, #{DmsfFileRevision.table_name}.updated_at DESC",
:dependent => :destroy
has_many :locks, :class_name => 'DmsfLock', :foreign_key => 'entity_id',
:order => "#{DmsfLock.table_name}.updated_at DESC",
:conditions => {:entity_type => 0},
:dependent => :destroy
has_many :referenced_links, :class_name => 'DmsfLink', :foreign_key => 'target_id',
:conditions => {:target_type => DmsfFile.model_name.to_s}, :dependent => :destroy
end
if (Rails::VERSION::MAJOR > 3)
accepts_nested_attributes_for :revisions, :locks, :referenced_links
end
has_many :revisions, -> { order("#{DmsfFileRevision.table_name}.major_version DESC, #{DmsfFileRevision.table_name}.minor_version DESC, #{DmsfFileRevision.table_name}.updated_at DESC") },
:class_name => 'DmsfFileRevision', :foreign_key => 'dmsf_file_id',
:dependent => :destroy
has_many :locks, -> { where(entity_type: 0).order("#{DmsfLock.table_name}.updated_at DESC") },
:class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy
has_many :referenced_links, -> { where target_type: DmsfFile.model_name.to_s},
:class_name => 'DmsfLink', :foreign_key => 'target_id', :dependent => :destroy
accepts_nested_attributes_for :revisions, :locks, :referenced_links, :project
scope :visible, lambda { |*args|
where(deleted: false)
@ -78,31 +62,18 @@ class DmsfFile < ActiveRecord::Base
existing_file = DmsfFile.visible.find_file_by_name(self.project, self.folder, self.name)
errors.add(:name, l('activerecord.errors.messages.taken')) unless
existing_file.nil? || existing_file.id == self.id
end
if (Rails::VERSION::MAJOR <= 3)
attr_accessor :event_description
end
end
acts_as_event :title => Proc.new { |o| o.name },
:description => Proc.new { |o|
if (Rails::VERSION::MAJOR > 3)
desc = Redmine::Search.cache_store.fetch("DmsfFile-#{o.id}")
if desc
Redmine::Search.cache_store.delete("DmsfFile-#{o.id}")
else
desc = o.description
desc += ' / ' if o.description.present? && o.last_revision.comment.present?
desc += o.last_revision.comment if o.last_revision.comment.present?
end
:description => Proc.new { |o|
desc = Redmine::Search.cache_store.fetch("DmsfFile-#{o.id}")
if desc
Redmine::Search.cache_store.delete("DmsfFile-#{o.id}")
else
desc = o.event_description
unless desc.present?
desc = o.description
desc += ' / ' if o.description.present? && o.last_revision.comment.present?
desc += o.last_revision.comment if o.last_revision.comment.present?
end
end
desc = o.description
desc += ' / ' if o.description.present? && o.last_revision.comment.present?
desc += o.last_revision.comment if o.last_revision.comment.present?
end
desc
},
:url => Proc.new { |o| {:controller => 'dmsf_files', :action => 'show', :id => o} },
@ -404,13 +375,9 @@ class DmsfFile < ActiveRecord::Base
if dmsf_file
if user.allowed_to?(:view_dmsf_files, dmsf_file.project) &&
(project_ids.blank? || (project_ids.include?(dmsf_file.project.id)))
if (Rails::VERSION::MAJOR > 3)
(project_ids.blank? || (project_ids.include?(dmsf_file.project.id)))
Redmine::Search.cache_store.write("DmsfFile-#{dmsf_file.id}",
dochash['sample'].force_encoding('UTF-8')) if dochash['sample']
else
dmsf_file.event_description = dochash['sample'].force_encoding('UTF-8') if dochash['sample']
end
dochash['sample'].force_encoding('UTF-8')) if dochash['sample']
break if(!options[:limit].blank? && results.count >= options[:limit])
results << dmsf_file
end

View File

@ -27,21 +27,14 @@ class DmsfFileRevision < ActiveRecord::Base
belongs_to :folder, :class_name => 'DmsfFolder', :foreign_key => 'dmsf_folder_id'
belongs_to :deleted_by_user, :class_name => 'User', :foreign_key => 'deleted_by_user_id'
has_many :access, :class_name => 'DmsfFileRevisionAccess', :foreign_key => 'dmsf_file_revision_id', :dependent => :destroy
has_many :dmsf_workflow_step_assignment, :dependent => :destroy
if (Rails::VERSION::MAJOR > 3)
accepts_nested_attributes_for :access, :dmsf_workflow_step_assignment, :file, :user
end
has_many :dmsf_workflow_step_assignment, :dependent => :destroy
accepts_nested_attributes_for :access, :dmsf_workflow_step_assignment, :file, :user
attr_accessible :file, :title, :name, :description, :comment
# Returns a list of revisions that are not deleted here, or deleted at parent level either
if (Rails::VERSION::MAJOR > 3)
scope :visible, -> { where(deleted: false) }
scope :deleted, -> { where(deleted: true) }
else
scope :visible, where(:deleted => false)
scope :deleted, where(:deleted => true)
end
scope :visible, -> { where(deleted: false) }
scope :deleted, -> { where(deleted: true) }
acts_as_customizable
acts_as_event :title => Proc.new {|o| "#{l(:label_dmsf_updated)}: #{o.file.dmsf_path_str}"},
@ -49,28 +42,16 @@ class DmsfFileRevision < ActiveRecord::Base
:datetime => Proc.new {|o| o.updated_at },
:description => Proc.new {|o| o.comment },
:author => Proc.new {|o| o.user }
if (Rails::VERSION::MAJOR > 3)
acts_as_activity_provider :type => 'dmsf_file_revisions',
:timestamp => "#{DmsfFileRevision.table_name}.updated_at",
:author_key => "#{DmsfFileRevision.table_name}.user_id",
:permission => :view_dmsf_file_revisions,
:scope => select("#{DmsfFileRevision.table_name}.*").
joins(
"INNER JOIN #{DmsfFile.table_name} ON #{DmsfFileRevision.table_name}.dmsf_file_id = #{DmsfFile.table_name}.id " +
"INNER JOIN #{Project.table_name} ON #{DmsfFile.table_name}.project_id = #{Project.table_name}.id").
where("#{DmsfFile.table_name}.deleted = :false", {:false => false})
else
acts_as_activity_provider :type => 'dmsf_file_revisions',
:timestamp => "#{DmsfFileRevision.table_name}.updated_at",
:author_key => "#{DmsfFileRevision.table_name}.user_id",
:permission => :view_dmsf_file_revisions,
:find_options => {:select => "#{DmsfFileRevision.table_name}.*",
:joins =>
"INNER JOIN #{DmsfFile.table_name} ON #{DmsfFileRevision.table_name}.dmsf_file_id = #{DmsfFile.table_name}.id " +
"INNER JOIN #{Project.table_name} ON #{DmsfFile.table_name}.project_id = #{Project.table_name}.id",
:conditions => ["#{DmsfFile.table_name}.deleted = :false", {:false => false}]
}
end
acts_as_activity_provider :type => 'dmsf_file_revisions',
:timestamp => "#{DmsfFileRevision.table_name}.updated_at",
:author_key => "#{DmsfFileRevision.table_name}.user_id",
:permission => :view_dmsf_file_revisions,
:scope => select("#{DmsfFileRevision.table_name}.*").
joins(
"INNER JOIN #{DmsfFile.table_name} ON #{DmsfFileRevision.table_name}.dmsf_file_id = #{DmsfFile.table_name}.id " +
"INNER JOIN #{Project.table_name} ON #{DmsfFile.table_name}.project_id = #{Project.table_name}.id").
where("#{DmsfFile.table_name}.deleted = :false", {:false => false})
validates :title, :name, :presence => true
validates_format_of :name, :with => DmsfFolder.invalid_characters,

View File

@ -21,10 +21,8 @@ class DmsfFileRevisionAccess < ActiveRecord::Base
belongs_to :revision, :class_name => 'DmsfFileRevision', :foreign_key => 'dmsf_file_revision_id'
belongs_to :user
delegate :project, :to => :revision, :allow_nil => false
delegate :file, :to => :revision, :allow_nil => false
if (Rails::VERSION::MAJOR > 3)
accepts_nested_attributes_for :user, :revision
end
delegate :file, :to => :revision, :allow_nil => false
accepts_nested_attributes_for :user, :revision
DownloadAction = 0
EmailAction = 1
@ -34,29 +32,16 @@ class DmsfFileRevisionAccess < ActiveRecord::Base
:datetime => Proc.new {|o| o.updated_at },
:description => Proc.new {|o| o.revision.comment },
:author => Proc.new {|o| o.user }
if (Rails::VERSION::MAJOR > 3)
acts_as_activity_provider :type => 'dmsf_file_revision_accesses',
:timestamp => "#{DmsfFileRevisionAccess.table_name}.updated_at",
:author_key => "#{DmsfFileRevisionAccess.table_name}.user_id",
:permission => :view_dmsf_file_revision_accesses,
:scope => select("#{DmsfFileRevisionAccess.table_name}.*").
joins(
"INNER JOIN #{DmsfFileRevision.table_name} ON #{DmsfFileRevisionAccess.table_name}.dmsf_file_revision_id = #{DmsfFileRevision.table_name}.id " +
"INNER JOIN #{DmsfFile.table_name} ON #{DmsfFileRevision.table_name}.dmsf_file_id = #{DmsfFile.table_name}.id " +
"INNER JOIN #{Project.table_name} ON #{DmsfFile.table_name}.project_id = #{Project.table_name}.id").
where("#{DmsfFile.table_name}.deleted = :false", {:false => false})
else
acts_as_activity_provider :type => 'dmsf_file_revision_accesses',
:timestamp => "#{DmsfFileRevisionAccess.table_name}.updated_at",
:author_key => "#{DmsfFileRevisionAccess.table_name}.user_id",
:permission => :view_dmsf_file_revision_accesses,
:find_options => {:select => "#{DmsfFileRevisionAccess.table_name}.*",
:joins =>
"INNER JOIN #{DmsfFileRevision.table_name} ON #{DmsfFileRevisionAccess.table_name}.dmsf_file_revision_id = #{DmsfFileRevision.table_name}.id " +
"INNER JOIN #{DmsfFile.table_name} ON #{DmsfFileRevision.table_name}.dmsf_file_id = #{DmsfFile.table_name}.id " +
"INNER JOIN #{Project.table_name} ON #{DmsfFile.table_name}.project_id = #{Project.table_name}.id",
:conditions => ["#{DmsfFile.table_name}.deleted = :false", {:false => false}]
}
end
acts_as_activity_provider :type => 'dmsf_file_revision_accesses',
:timestamp => "#{DmsfFileRevisionAccess.table_name}.updated_at",
:author_key => "#{DmsfFileRevisionAccess.table_name}.user_id",
:permission => :view_dmsf_file_revision_accesses,
:scope => select("#{DmsfFileRevisionAccess.table_name}.*").
joins(
"INNER JOIN #{DmsfFileRevision.table_name} ON #{DmsfFileRevisionAccess.table_name}.dmsf_file_revision_id = #{DmsfFileRevision.table_name}.id " +
"INNER JOIN #{DmsfFile.table_name} ON #{DmsfFileRevision.table_name}.dmsf_file_id = #{DmsfFile.table_name}.id " +
"INNER JOIN #{Project.table_name} ON #{DmsfFile.table_name}.project_id = #{Project.table_name}.id").
where("#{DmsfFile.table_name}.deleted = :false", {:false => false})
end

View File

@ -35,33 +35,18 @@ class DmsfFolder < ActiveRecord::Base
has_many :subfolders, :class_name => 'DmsfFolder', :foreign_key => 'dmsf_folder_id',
:dependent => :destroy
has_many :files, :class_name => 'DmsfFile', :foreign_key => 'dmsf_folder_id',
:dependent => :destroy
if (Rails::VERSION::MAJOR > 3)
has_many :folder_links, -> { where :target_type => 'DmsfFolder' },
:class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id', :dependent => :destroy
has_many :file_links, -> { where :target_type => 'DmsfFile' },
:class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id', :dependent => :destroy
has_many :url_links, -> { where :target_type => 'DmsfUrl' },
:class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id', :dependent => :destroy
has_many :referenced_links, -> { where :target_type => 'DmsfFolder' },
:class_name => 'DmsfLink', :foreign_key => 'target_id', :dependent => :destroy
has_many :locks, -> { where(entity_type: 1).order("#{DmsfLock.table_name}.updated_at DESC") },
:class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy
accepts_nested_attributes_for :user, :project, :folder, :subfolders, :files, :folder_links, :file_links, :url_links, :referenced_links, :locks
else
has_many :folder_links, :class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id',
:conditions => { :target_type => 'DmsfFolder' }, :dependent => :destroy
has_many :file_links, :class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id',
:conditions => { :target_type => 'DmsfFile' }, :dependent => :destroy
has_many :url_links, :class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id',
:conditions => { :target_type => 'DmsfUrl' }, :dependent => :destroy
has_many :referenced_links, :class_name => 'DmsfLink', :foreign_key => 'target_id',
:conditions => { :target_type => 'DmsfFolder' }, :dependent => :destroy
has_many :locks, :class_name => 'DmsfLock', :foreign_key => 'entity_id',
:order => "#{DmsfLock.table_name}.updated_at DESC",
:conditions => {:entity_type => 1},
:dependent => :destroy
end
:dependent => :destroy
has_many :folder_links, -> { where :target_type => 'DmsfFolder' },
:class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id', :dependent => :destroy
has_many :file_links, -> { where :target_type => 'DmsfFile' },
:class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id', :dependent => :destroy
has_many :url_links, -> { where :target_type => 'DmsfUrl' },
:class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id', :dependent => :destroy
has_many :referenced_links, -> { where :target_type => 'DmsfFolder' },
:class_name => 'DmsfLink', :foreign_key => 'target_id', :dependent => :destroy
has_many :locks, -> { where(entity_type: 1).order("#{DmsfLock.table_name}.updated_at DESC") },
:class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy
accepts_nested_attributes_for :user, :project, :folder, :subfolders, :files, :folder_links, :file_links, :url_links, :referenced_links, :locks
scope :visible, lambda { |*args|
where(deleted: false)
@ -71,20 +56,12 @@ class DmsfFolder < ActiveRecord::Base
}
acts_as_customizable
if (Rails::VERSION::MAJOR > 3)
acts_as_searchable :columns => ["#{self.table_name}.title", "#{self.table_name}.description"],
:project_key => 'project_id',
:date_column => 'updated_at',
:permission => :view_dmsf_files,
:scope => self.joins(:project)
else
acts_as_searchable :columns => ["#{self.table_name}.title", "#{self.table_name}.description"],
:project_key => 'project_id',
:date_column => 'updated_at',
:permission => :view_dmsf_files,
:include => :project
end
acts_as_searchable :columns => ["#{self.table_name}.title", "#{self.table_name}.description"],
:project_key => 'project_id',
:date_column => 'updated_at',
:permission => :view_dmsf_files,
:scope => self.joins(:project)
acts_as_event :title => Proc.new {|o| o.title},
:description => Proc.new {|o| o.description },

View File

@ -41,14 +41,9 @@ class DmsfLink < ActiveRecord::Base
end
end
end
if (Rails::VERSION::MAJOR > 3)
scope :visible, -> { where(deleted: false) }
scope :deleted, -> { where(deleted: true) }
else
scope :visible, where(:deleted => false)
scope :deleted, where(:deleted => true)
end
scope :visible, -> { where(deleted: false) }
scope :deleted, -> { where(deleted: true) }
def target_folder_id
if self.target_type == DmsfFolder.model_name.to_s

View File

@ -18,12 +18,9 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class DmsfWorkflow < ActiveRecord::Base
if (Rails::VERSION::MAJOR > 3)
has_many :dmsf_workflow_steps, -> { order 'step ASC, operator DESC' }, :dependent => :destroy
else
has_many :dmsf_workflow_steps, :dependent => :destroy, :order => 'step ASC, operator DESC'
end
class DmsfWorkflow < ActiveRecord::Base
has_many :dmsf_workflow_steps, -> { order 'step ASC, operator DESC' }, :dependent => :destroy
attr_accessible :name

View File

@ -31,36 +31,19 @@ module RedmineDmsf
base.class_eval do
unloadable
alias_method_chain :copy, :dmsf
if (Rails::VERSION::MAJOR > 3)
has_many :dmsf_files, -> { where dmsf_folder_id: nil},
:class_name => 'DmsfFile', :foreign_key => 'project_id', :dependent => :destroy
has_many :dmsf_folders, -> {where dmsf_folder_id: nil},
:class_name => 'DmsfFolder', :foreign_key => 'project_id',
:dependent => :destroy
has_many :dmsf_workflows, :dependent => :destroy
has_many :folder_links, -> { where dmsf_folder_id: nil, target_type: 'DmsfFolder' },
:class_name => 'DmsfLink', :foreign_key => 'project_id', :dependent => :destroy
has_many :file_links, -> { where dmsf_folder_id: nil, target_type: 'DmsfFile' },
:class_name => 'DmsfLink', :foreign_key => 'project_id', :dependent => :destroy
has_many :url_links, -> { where dmsf_folder_id: nil, target_type: 'DmsfUrl' },
:class_name => 'DmsfLink', :foreign_key => 'project_id', :dependent => :destroy
else
has_many :dmsf_files, :class_name => 'DmsfFile', :foreign_key => 'project_id',
:conditions => { :dmsf_folder_id => nil }, :dependent => :destroy
has_many :dmsf_folders, :class_name => 'DmsfFolder', :foreign_key => 'project_id',
:conditions => {:dmsf_folder_id => nil}, :dependent => :destroy
has_many :dmsf_workflows, :dependent => :destroy
has_many :folder_links, :class_name => 'DmsfLink', :foreign_key => 'project_id',
:conditions => { :dmsf_folder_id => nil, :target_type => 'DmsfFolder' },
:dependent => :destroy
has_many :file_links, :class_name => 'DmsfLink', :foreign_key => 'project_id',
:conditions => { :dmsf_folder_id => nil, :target_type => 'DmsfFile' },
:dependent => :destroy
has_many :url_links, :class_name => 'DmsfLink', :foreign_key => 'project_id',
:conditions => { :dmsf_folder_id => nil, :target_type => 'DmsfUrl' },
:dependent => :destroy
end
has_many :dmsf_files, -> { where dmsf_folder_id: nil},
:class_name => 'DmsfFile', :foreign_key => 'project_id', :dependent => :destroy
has_many :dmsf_folders, -> {where dmsf_folder_id: nil},
:class_name => 'DmsfFolder', :foreign_key => 'project_id',
:dependent => :destroy
has_many :dmsf_workflows, :dependent => :destroy
has_many :folder_links, -> { where dmsf_folder_id: nil, target_type: 'DmsfFolder' },
:class_name => 'DmsfLink', :foreign_key => 'project_id', :dependent => :destroy
has_many :file_links, -> { where dmsf_folder_id: nil, target_type: 'DmsfFile' },
:class_name => 'DmsfLink', :foreign_key => 'project_id', :dependent => :destroy
has_many :url_links, -> { where dmsf_folder_id: nil, target_type: 'DmsfUrl' },
:class_name => 'DmsfLink', :foreign_key => 'project_id', :dependent => :destroy
end
end