class Tml::Decorators::Html

Public Instance Methods

decorate(translated_label, translation_language, target_language, translation_key, options = {}) click to toggle source
# File lib/tml/decorators/html.rb, line 35
def decorate(translated_label, translation_language, target_language, translation_key, options = {})
  #Tml.logger.info("Decorating #{translated_label} of #{translation_language.locale} to #{target_language.locale}")

  return translated_label unless enabled?(options)

  # if translation key language is the same as target language - skip decorations
  if translation_key.application.feature_enabled?(:lock_original_content) and translation_key.language == target_language
    return translated_label
  end

  classes = %w(tml_translatable)

  if options[:locked]
    # must be a manager and enabling locking feature
    # return translated_label unless Tml.session.current_translator.feature_enabled?(:show_locked_keys)
    classes << 'tml_locked'
  elsif translation_language == translation_key.language
    if options[:pending]
      classes << 'tml_pending'
    else
      classes << 'tml_not_translated'
    end
  elsif translation_language == target_language
    classes << 'tml_translated'
  else
    classes << 'tml_fallback'
  end

  element = decoration_element('tml:label', options)

  html = "<#{element} class='#{classes.join(' ')}' data-translation_key='#{translation_key.key}' data-target_locale='#{target_language.locale}'>"
  html << translated_label
  html << "</#{element}>"
  html
end
decorate_element(token, value, options = {}) click to toggle source
# File lib/tml/decorators/html.rb, line 118
def decorate_element(token, value, options = {})
  return value unless enabled?(options)

  element = decoration_element('tml:element', options)

  html = "<#{element}>"
  html << value
  html << "</#{element}>"
  html
end
decorate_language_case(language_case, rule, original, transformed, options = {}) click to toggle source
# File lib/tml/decorators/html.rb, line 71
def decorate_language_case(language_case, rule, original, transformed, options = {})
  return transformed unless enabled?(options)

  data = {
    'keyword'       => language_case.keyword,
    'language_name' => language_case.language.english_name,
    'latin_name'    => language_case.latin_name,
    'native_name'   => language_case.native_name,
    'conditions'    => (rule ? rule.conditions : ''),
    'operations'    => (rule ? rule.operations : ''),
    'original'      => original,
    'transformed'   => transformed
  }

  attrs = []
  {
    'class'             => 'tml_language_case',
    'data-locale'       => language_case.language.locale,
    'data-rule'         => CGI::escape(Base64.encode64(data.to_json).gsub("\n", ''))
  }.each do |key, value|
    attrs << "#{key}=\"#{value.to_s.gsub('"', "\"")}\""
  end

  element = decoration_element('tml:case', options)

  html = "<#{element} #{attrs.join(' ')}>"
  html << transformed
  html << "</#{element}>"
  html
end
decorate_token(token, value, options = {}) click to toggle source
# File lib/tml/decorators/html.rb, line 102
def decorate_token(token, value, options = {})
  return value unless enabled?(options)

  element = decoration_element('tml:token', options)

  classes = ['tml_token', "tml_token_#{token.decoration_name}"]

  html = "<#{element} class='#{classes.join(' ')}' data-name='#{token.name}'"
  html << " data-context='#{token.context_keys.join(',')}'" if token.context_keys.any?
  html << " data-case='#{token.case_keys.join(',')}'" if token.case_keys.any?
  html << '>'
  html << value
  html << "</#{element}>"
  html
end