Module: TmlRails::ActionControllerExtension::InstanceMethods

Defined in:
lib/tml_rails/extensions/action_controller_extension.rb

Instance Method Summary collapse

Instance Method Details

#tml_browser_accepted_localesObject



52
53
54
# File 'lib/tml_rails/extensions/action_controller_extension.rb', line 52

def tml_browser_accepted_locales
  @tml_browser_accepted_locales ||= Tml::Utils.browser_accepted_locales(request)
end

#tml_init_client_sdkObject



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/tml_rails/extensions/action_controller_extension.rb', line 71

def tml_init_client_sdk
  return if Tml.config.disabled?

  @tml_started_at = Time.now

  tml_session_params = {
    :source => tml_source
  }

  if Tml.config.current_user_method
    begin
      tml_session_params.merge!(:user => self.send(Tml.config.current_user_method))
    rescue
      # Tml.logger.error('Current user method is specified but not provided')
    end
  end

  if Tml.config.current_locale_method
    begin
      tml_session_params.merge!(:locale => self.send(Tml.config.current_locale_method))
    rescue
      # Tml.logger.error('Current locale method is specified but not provided')
    end
  end

  unless tml_session_params[:locale]
    tml_session_params.merge!(:cookies => cookies)
    tml_session_params.merge!(:change_locale => true) if params[:locale]
    tml_session_params.merge!(:locale => params[:locale] || tml_user_preferred_locale)
  end

  Tml.session.init(tml_session_params)

  # if user sets locale manually, update the cookie for future use
  if tml_session_params[:change_locale]
    cookies[Tml.session.cookie_name] = Tml::Utils.encode(Tml.session.cookie_params)
  end

  if I18n.backend.class.name == 'I18n::Backend::Tml'
    if defined? I18n.enforce_available_locales
      I18n.enforce_available_locales = false
    end
    I18n.locale = Tml.session.current_language.locale
  end
end

#tml_reset_client_sdkObject



117
118
119
120
121
122
123
124
# File 'lib/tml_rails/extensions/action_controller_extension.rb', line 117

def tml_reset_client_sdk
  return if Tml.config.disabled?
  @tml_finished_at = Time.now
  tml_application.submit_missing_keys
  Tml.session.reset
  Tml.cache.reset_version
  Tml.logger.info("Request took #{@tml_finished_at - @tml_started_at} mls") if @tml_started_at
end

#tml_sourceObject

Overwrite this method in a controller to assign a custom source for all views



65
66
67
68
69
# File 'lib/tml_rails/extensions/action_controller_extension.rb', line 65

def tml_source
  "/#{controller_name}/#{action_name}"
rescue
  self.class.name
end

#tml_user_preferred_localeObject



56
57
58
59
60
61
62
# File 'lib/tml_rails/extensions/action_controller_extension.rb', line 56

def tml_user_preferred_locale
  tml_browser_accepted_locales.each do |locale|
    next unless Tml.session.application and Tml.session.application.locales.include?(locale)
    return locale
  end
  Tml.config.default_locale
end