Sha256: 1f15e5345ade1b46fa820aca1712078eac73dd367a2fcde4390d6efcfa82e741

Contents?: true

Size: 1.01 KB

Versions: 71

Compression:

Stored size: 1.01 KB

Contents

module Pageflow
  class EntryDuplicate < Struct.new(:original_entry)
    def create!
      create_entry

      copy_draft
      copy_memberships

      new_entry
    end

    def self.of(entry)
      new(entry)
    end

    private

    attr_reader :new_entry

    def create_entry
      @new_entry = Entry.create!(new_attributes)
    end

    def copy_draft
      original_entry.draft.copy do |revision|
        revision.entry = new_entry
      end
    end

    def copy_memberships
      original_entry.memberships.each do |membership|
        Membership.create(user: membership.user, role: membership.role.to_sym, entity: new_entry)
      end
    end

    def new_attributes
      {
        title: new_title,
        account: original_entry.account,
        theming: original_entry.theming,
        features_configuration: original_entry.features_configuration,

        skip_draft_creation: true
      }
    end

    def new_title
      I18n.t('pageflow.entry.duplicated_title', title: original_entry.title)
    end
  end
end

Version data entries

71 entries across 71 versions & 1 rubygems

Version Path
pageflow-14.5.2 app/models/pageflow/entry_duplicate.rb
pageflow-15.2.2 app/models/pageflow/entry_duplicate.rb
pageflow-15.2.1 app/models/pageflow/entry_duplicate.rb
pageflow-15.2.0 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.2 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.1 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.0 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.0.rc0 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.0.beta6 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.0.beta5 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.0.beta4 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.0.beta3 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.0.beta2 app/models/pageflow/entry_duplicate.rb
pageflow-15.1.0.beta1 app/models/pageflow/entry_duplicate.rb
pageflow-15.0.2 app/models/pageflow/entry_duplicate.rb
pageflow-15.0.1 app/models/pageflow/entry_duplicate.rb
pageflow-15.0.0 app/models/pageflow/entry_duplicate.rb
pageflow-14.5.1 app/models/pageflow/entry_duplicate.rb
pageflow-14.5.0 app/models/pageflow/entry_duplicate.rb
pageflow-15.0.0.rc2 app/models/pageflow/entry_duplicate.rb