module Mobu::DetectMobile

Constants

MOBILE_USER_AGENTS

List of mobile agents from mobile_fu: github.com/brendanlim/mobile-fu/blob/master/lib/mobile_fu.rb

TABLET_USER_AGENTS

Private Instance Methods

_view_url(preference) click to toggle source

preference: m, f (mobile, full)

# File lib/mobu/detect_mobile.rb, line 51
def _view_url(preference)
  uri = URI(request.url)
  query = Rack::Utils.parse_nested_query(uri.query)
  query["prefer"] = preference
  uri.query = query.to_param
  uri.to_s
end
check_mobile_site() click to toggle source
# File lib/mobu/detect_mobile.rb, line 87
def check_mobile_site
  case params.delete(:prefer)
  when "f"
    session[:prefer_full_site] = 1
  when "m"
    session.delete :prefer_full_site
  end

  if mobile_request?
    prepend_view_path mobile_views_path
  elsif tablet_request?
    prepend_view_path tablet_views_path
  end
end
force_full_site() click to toggle source
# File lib/mobu/detect_mobile.rb, line 59
def force_full_site
  session[:prefer_full_site]
end
mobile_browser?() click to toggle source
# File lib/mobu/detect_mobile.rb, line 71
def mobile_browser?
  user_agent_matches(MOBILE_USER_AGENTS)
end
mobile_request?() click to toggle source
# File lib/mobu/detect_mobile.rb, line 63
def mobile_request?
  if defined?(@mobile_request)
    @mobile_request
  else
    @mobile_request = !force_full_site && !tablet_request? && mobile_browser?
  end
end
mobile_views_path() click to toggle source
# File lib/mobu/detect_mobile.rb, line 34
def mobile_views_path
  @@mobile_views_path ||= Rails.root + 'app' + 'views_mobile'
end
prefer_full_site_url() click to toggle source
# File lib/mobu/detect_mobile.rb, line 42
def prefer_full_site_url
  _view_url "f"
end
prefer_mobile_site_url() click to toggle source
# File lib/mobu/detect_mobile.rb, line 46
def prefer_mobile_site_url
  _view_url "m"
end
tablet_browser?() click to toggle source
# File lib/mobu/detect_mobile.rb, line 83
def tablet_browser?
  user_agent_matches(TABLET_USER_AGENTS)
end
tablet_request?() click to toggle source
# File lib/mobu/detect_mobile.rb, line 75
def tablet_request?
  if defined?(@tablet_request)
    @tablet_request
  else
    @tablet_request = tablet_browser?
  end
end
tablet_views_path() click to toggle source
# File lib/mobu/detect_mobile.rb, line 38
def tablet_views_path
  @@tablet_views_path ||= Rails.root + 'app' + 'views_tablet'
end
user_agent_matches(regex) click to toggle source
# File lib/mobu/detect_mobile.rb, line 102
def user_agent_matches(regex)
  !!( request.user_agent.to_s.downcase =~ /(#{regex})/ )
end