diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index a7c001ce..76c9cd9a 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -90,9 +90,9 @@ class DmsfFile < ActiveRecord::Base return false end if Setting.plugin_redmine_dmsf["dmsf_really_delete_files"] - CustomValue.find(:all, :conditions => "customized_id = " + self.id.to_s).each do |v| - v.destroy - end + CustomValue.find(:all, :conditions => "customized_id = " + self.id.to_s).each do |v| + v.destroy + end self.revisions.each {|r| r.delete(true)} self.destroy else @@ -189,21 +189,21 @@ class DmsfFile < ActiveRecord::Base end projects end - - # Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields - def available_custom_fields - search_project = nil - if self.project.present? - search_project = self.project - elsif self.project_id.present? - search_project = Project.find(self.project_id) - end - if search_project - search_project.all_dmsf_custom_fields - else - DmsfFileRevisionCustomField.all - end - end + + # Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields + def available_custom_fields + search_project = nil + if self.project.present? + search_project = self.project + elsif self.project_id.present? + search_project = Project.find(self.project_id) + end + if search_project + search_project.all_dmsf_custom_fields + else + DmsfFileRevisionCustomField.all + end + end def move_to(project, folder) if self.locked_for_user? @@ -215,19 +215,19 @@ class DmsfFile < ActiveRecord::Base new_revision.folder = folder ? folder : nil new_revision.project = folder ? folder.project : project - new_revision.comment = l(:comment_moved_from, :source => "#{self.project.identifier}:#{self.dmsf_path_str}") + new_revision.comment = l(:comment_moved_from, :source => "#{self.project.identifier}:#{self.dmsf_path_str}") - new_revision.custom_values = [] - temp_custom_values = self.last_revision.custom_values.select{|cv| new_revision.project.all_dmsf_custom_fields.include?(cv.custom_field)}.map(&:clone) - new_revision.custom_values = temp_custom_values - - #add default value for CFs not existing - present_custom_fields = new_revision.custom_values.collect(&:custom_field).uniq - Project.find(new_revision.project_id).all_dmsf_custom_fields.each do |cf| - unless present_custom_fields.include?(cf) - new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value}) - end - end + new_revision.custom_values = [] + temp_custom_values = self.last_revision.custom_values.select{|cv| new_revision.project.all_dmsf_custom_fields.include?(cv.custom_field)}.map(&:clone) + new_revision.custom_values = temp_custom_values + + #add default value for CFs not existing + present_custom_fields = new_revision.custom_values.collect(&:custom_field).uniq + Project.find(new_revision.project_id).all_dmsf_custom_fields.each do |cf| + unless present_custom_fields.include?(cf) + new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value}) + end + end self.folder = new_revision.folder self.project = new_revision.project @@ -242,29 +242,29 @@ class DmsfFile < ActiveRecord::Base file.name = self.name file.notification = !Setting.plugin_redmine_dmsf["dmsf_default_notifications"].blank? - if file.save - new_revision = self.last_revision.clone - - new_revision.file = file - new_revision.folder = folder ? folder : nil - new_revision.project = folder ? folder.project : project - new_revision.comment = l(:comment_copied_from, :source => "#{self.project.identifier}: #{self.dmsf_path_str}") - - new_revision.custom_values = [] - temp_custom_values = self.last_revision.custom_values.select{|cv| new_revision.project.all_dmsf_custom_fields.include?(cv.custom_field)}.map(&:clone) - new_revision.custom_values = temp_custom_values - - #add default value for CFs not existing - present_custom_fields = new_revision.custom_values.collect(&:custom_field).uniq - new_revision.project.all_dmsf_custom_fields.each do |cf| - unless present_custom_fields.include?(cf) - new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value}) - end - end - - unless new_revision.save - file.delete - end + if file.save + new_revision = self.last_revision.clone + + new_revision.file = file + new_revision.folder = folder ? folder : nil + new_revision.project = folder ? folder.project : project + new_revision.comment = l(:comment_copied_from, :source => "#{self.project.identifier}: #{self.dmsf_path_str}") + + new_revision.custom_values = [] + temp_custom_values = self.last_revision.custom_values.select{|cv| new_revision.project.all_dmsf_custom_fields.include?(cv.custom_field)}.map(&:clone) + new_revision.custom_values = temp_custom_values + + #add default value for CFs not existing + present_custom_fields = new_revision.custom_values.collect(&:custom_field).uniq + new_revision.project.all_dmsf_custom_fields.each do |cf| + unless present_custom_fields.include?(cf) + new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value}) + end + end + + unless new_revision.save + file.delete + end end return file @@ -350,8 +350,7 @@ class DmsfFile < ActiveRecord::Base next if dmsf_attrs[1].blank? next unless results.select{|f| f.id.to_s == dmsf_attrs[1]}.empty? - find_conditions = DmsfFile.merge_conditions(limit_options[:conditions], :id => dmsf_attrs[1], :deleted => false ) - dmsf_file = DmsfFile.find(:first, :conditions => find_conditions ) + dmsf_file = DmsfFile.where(limit_options[:conditions]).where(:id => dmsf_attrs[1], :deleted => false).first if !dmsf_file.nil? if options[:offset]