Sha256: 1b972c6dcb93eb8dcc00f05a6731611f6763455d30282d7d1a61207b8350f189

Contents?: true

Size: 1.4 KB

Versions: 2

Compression:

Stored size: 1.4 KB

Contents

module TranslationCenter
  class Category < ActiveRecord::Base
    has_many :translation_keys, dependent: :destroy

    alias_method :keys, :translation_keys

    # validations
    validates :name, presence: true, uniqueness: true

    # gets how much complete translation of category is in a certain language
    def complete_percentage_in(lang)
      if self.keys.empty?
        100
      else
        accepted_keys = accepted_keys(lang)
        100 * accepted_keys.count / self.keys.count
      end
    end

    # gets the keys accepted in a certain language that belong to a category
    def accepted_keys(lang)
      self.keys.translated(lang)
    end
    alias_method :translated_keys, :accepted_keys

    # gets the keys that have no translations in the language
    def untranslated_keys(lang)
      self.keys.untranslated(lang)
    end

    # gets the keys that have no translations in the language
    def pending_keys(lang)
      self.keys.pending(lang)
    end

    def all_keys(lang)
      self.keys
    end

    # returns a name that is better for presentation
    def view_name
      self.name.titleize
    end

    def get_pages
      response = []
      self.keys.each do |k|
        response << k.name.split('.')[1] unless (k.name.split('.').length < 1)
      end
      response.uniq!
    end

    def get_translations_for_page(page_name)
      self.keys.where("name LIKE ? ", "%#{page_name}%")
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
afalkear_translation_center-1.8.4 app/models/translation_center/category.rb
afalkear_translation_center-1.8.3 app/models/translation_center/category.rb