Sha256: dfbc7d7b442f75df61cfb3471c35647ca43d8b81050706ce07e30052f3130b3b

Contents?: true

Size: 1.95 KB

Versions: 63

Compression:

Stored size: 1.95 KB

Contents

class Pulitzer::CloneVersion
  include Pulitzer::Engine.routes.url_helpers

  def initialize(version)
    @version = version
    @post = @version.post
    Rails.logger.info("Pulitzer::CloneVersion !!! ")
    Rails.logger.info($0)
  end

  def call
    new_version = @post.processing_version
    cloning_errors = []
    new_version.processed_element_count = 0
    @version.content_elements.each do |ce|
      begin
        cloned_content_element = ce.clone_me
        new_version.content_elements << cloned_content_element
      rescue ActiveRecord::RecordInvalid => invalid
        cloning_errors.push "ContentElement #{ce.id} could not be cloned: #{invalid.record.errors.full_messages.join(', ')}"
      end
      new_version.processed_element_count += 1
      new_version.broadcast_change if defined? ForeignOffice
    end
    @version.free_form_sections.each do |ffs|
      begin
        cloned_ffs = ffs.clone_me
        new_version.free_form_sections << cloned_ffs
      rescue ActiveRecord::RecordInvalid => invalid
        cloning_errors.push "Free Form Section #{ffs.id} could not be cloned: #{invalid.record.errors.full_messages.join(', ')}"
      end
      new_version.processed_element_count += 1
      new_version.broadcast_change if defined? ForeignOffice
    end
    @version.post_tags.each do |pt|
      new_version.post_tags << pt.clone_me
      new_version.processed_element_count += 1
      new_version.broadcast_change if defined? ForeignOffice
    end
    if cloning_errors.any?
      new_version.update(status: :processing_failed, cloning_errors: cloning_errors)
    else
      new_version.update(status: :preview)
      new_version.processed_element_count += 1
      new_version.broadcast_change if defined? ForeignOffice
    end
    @post.new_preview_version = edit_version_path(new_version)
    new_version.processed_element_count += 1
    new_version.broadcast_change if defined? ForeignOffice
    @post.broadcast_change if defined? ForeignOffice
    new_version
  end

end

Version data entries

63 entries across 63 versions & 1 rubygems

Version Path
pulitzer-0.15.10 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.9 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.8 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.7 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.6 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.5 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.4 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.3 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.2 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.1 app/interactions/pulitzer/clone_version.rb
pulitzer-0.15.0 app/interactions/pulitzer/clone_version.rb
pulitzer-0.14.4 app/interactions/pulitzer/clone_version.rb
pulitzer-0.14.3 app/interactions/pulitzer/clone_version.rb
pulitzer-0.14.2 app/interactions/pulitzer/clone_version.rb
pulitzer-0.14.1 app/interactions/pulitzer/clone_version.rb
pulitzer-0.14.0 app/interactions/pulitzer/clone_version.rb
pulitzer-0.13.1 app/interactions/pulitzer/clone_version.rb
pulitzer-0.12.5 app/interactions/pulitzer/clone_version.rb
pulitzer-0.13.0 app/interactions/pulitzer/clone_version.rb
pulitzer-0.12.4 app/interactions/pulitzer/clone_version.rb