Sha256: 858b2dbabe49627361e32503e3717f707512f09437c22430445679d33cb91c21

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

module Lit
  class LocalizationKey < ActiveRecord::Base

    ## SCOPES
    scope :completed, where(:is_completed=>true)
    scope :not_completed, where(:is_completed=>false)
    scope :starred, where(:is_starred=>true)
    scope :ordered, order('localization_key asc')

    ## ASSOCIATIONS
    has_many :localizations, :dependent=>:destroy

    ## VALIDATIONS
    validates :localization_key,
              :presence=>true,
              :uniqueness=>true

    ## ACCESSIBLE
    attr_accessible :localization_key

    def to_s
      self.localization_key
    end

    def clone_localizations
      first_localization = self.localizations.first
      new_created = false
      Lit::Locale.find_each do |locale|
        self.localizations.where(:locale_id=>locale.id).first_or_create do |l|
          l.default_value = first_localization.get_value
          new_created = true
        end
      end
      if new_created
        Lit::LocalizationKey.update_all ['is_completed=?', false], ['id=? and is_completed=?', self.id, false]
      end
    end

    def mark_completed
      self.is_completed = self.localizations.changed.count(:id) == self.localizations.count
    end

    def mark_completed!
      self.save if self.mark_completed
    end

    def mark_all_completed!
      self.localizations.update_all(['is_changed=?', true])
      mark_completed!
    end

    def self.search(options={})
      s = scoped.ordered
      if options[:key_prefix].present?
        q = "#{options[:key_prefix]}%"
        s = s.where('lit_localization_keys.localization_key like ?', q)
      end
      if options[:key].present?
        q = "%#{options[:key]}%"
        s = s.joins([:localizations]).where('lit_localization_keys.localization_key like ? or lit_localizations.default_value like ? or lit_localizations.translated_value like ?', q, q, q)
      end
      if not options[:include_completed].to_i==1
        s = s.not_completed
      end
      s
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lit-0.0.3.1 app/models/lit/localization_key.rb
lit-0.0.3 app/models/lit/localization_key.rb