Sha256: 9f0fa38a5bfedff4333812bb84f32d0c4072c74542a35d3592d993c731f1d4f3

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

module Refinery
  module Copywriting
    class Phrase < Refinery::Core::BaseModel

      belongs_to :page, :class_name => 'Refinery::Page'
      translates :value if self.respond_to?(:translates)
      validates :name, :presence => true

      attr_accessible :locale, :name, :default, :value, :scope, :page, :page_id, :phrase_type

      if self.respond_to?(:translation_class)
        self.translation_class.send :attr_accessible, :locale
      end

      default_scope order([:scope, :name])

      def self.for(name, options = {})
        options = {:phrase_type => 'text', :scope => 'default'}.merge(options.reject {|k,v| v.blank? })
        options[:name] = name.to_s
        options[:page_id] ||= options[:page].try(:id)

        phrase = self.find_by_name_and_scope_and_page_id(options[:name], options[:scope], options[:page_id]) || self.create(options)
        phrase.update_attributes(options.except(:value, :page, :page_id, :locale))
        phrase.last_access_at = Date.today
        phrase.save if phrase.changed?

        phrase.default_or_value
      end

      def default_or_value
        value.present? ? value : default
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
refinerycms-copywriting-2.0.3 app/models/refinery/copywriting/phrase.rb