Sha256: a715a6e67ffab690604f6cf1a227975411f671623cb6b46f41ffaa8dfe25eaa8

Contents?: true

Size: 1.91 KB

Versions: 8

Compression:

Stored size: 1.91 KB

Contents

module Pageflow
  class EntryTemplate < ApplicationRecord
    include ThemeReferencer
    include SerializedConfiguration
    serialize :default_share_providers, JSON
    belongs_to :account
    delegate :enabled_feature_names, to: :account
    has_many :widgets, as: :subject, dependent: :destroy

    validates :account, presence: true
    validates :entry_type_name, presence: true
    validates :entry_type_name,
              uniqueness: {
                scope: :account
              }

    def entry_type
      Pageflow.config.entry_types.find_by_name!(entry_type_name)
    end

    def translated_entry_type_name
      I18n.t("activerecord.values.pageflow/entry.type_names.#{entry_type_name}")
    end

    def resolve_widgets(options = {})
      widgets.resolve(Pageflow.config_for(self), options)
    end

    def copy_defaults_to(revision)
      widgets.copy_all_to(revision)
      copy_attributes_to(revision)
    end

    def share_providers=(share_providers)
      self.default_share_providers = share_providers
    end

    def share_providers
      default_share_providers
    end

    def default_share_providers
      self[:default_share_providers].presence ||
        hashify_provider_array(Pageflow.config.default_share_providers)
    end

    private

    def copy_attributes_to(revision)
      revision.update(
        author: default_author.presence || Pageflow.config.default_author_meta_tag,
        publisher: default_publisher.presence || Pageflow.config.default_publisher_meta_tag,
        keywords: default_keywords.presence || Pageflow.config.default_keywords_meta_tag,
        share_providers: default_share_providers,
        theme_name: theme_name,
        configuration: configuration,
        locale: default_locale
      )
    end

    def available_themes
      Pageflow.config_for(self).themes
    end

    def hashify_provider_array(arr)
      Hash[arr.reject(&:blank?).map { |v| [v.to_s, true] }]
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pageflow-15.8.0 app/models/pageflow/entry_template.rb
pageflow-15.7.1 app/models/pageflow/entry_template.rb
pageflow-15.7.0 app/models/pageflow/entry_template.rb
pageflow-15.6.1 app/models/pageflow/entry_template.rb
pageflow-15.6.0 app/models/pageflow/entry_template.rb
pageflow-15.5.0 app/models/pageflow/entry_template.rb
pageflow-15.4.0 app/models/pageflow/entry_template.rb
pageflow-15.3.0 app/models/pageflow/entry_template.rb