Sha256: d4503d0a7c195ed99c559e555eb3217f82f73474566a7c8992fd77a90ee3e508

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 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
      Rails.logger.info("ForeignOffice defined? #{defined?(ForeignOffice)}")
      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

1 entries across 1 versions & 1 rubygems

Version Path
pulitzer-0.3.2 app/interactions/pulitzer/clone_version.rb