module ApplicationHelper def body_attrs attrs = {} class_name = [location_name,I18n.locale,ENV['RAILS_ENV']] class_name << 'signup_process' if signup_location? class_name << 'admin' if admin_location? class_name << 'static' if static_pages? class_name << (logged_in? ? 'logged_in' : 'logged_out') attrs[:location] = location_name attrs[:controller] = controller.controller_name attrs[:action] = action_name attrs[:class] = class_name.join ' ' attrs[:query] = controller.controller_name if admin_location? attrs end def content_attrs class_name = if content_for?(:extra) && content_for?(:column) 'content_wrap_extra' elsif content_for? :extra 'content_single_extra' elsif content_for? :column 'content_wrap' else 'content_single' end attrs = {} attrs[:class] = class_name attrs end def asset_dir admin_location? ? :admin : :application end def admin_location? location_match? 'admin' end def signup_location? location_name? 'new_users' end def location_name?(*names) names.any?{ |name| name == location_name } end def location_name "#{action_name}_#{controller.controller_name}" end def location_match?(*names) names.any?{ |name| controller.controller_path.match(/#{name}/) } end def static_pages? pages = %w{about_pages} location_name? *pages end def ascii partial 'layouts/ascii' end def head partial '%head', 'layouts/head' end def content partial 'layouts/content' end def extra return unless content_for? :extra partial ['.extra_wrap','.extra'], 'layouts/extra' end def column return unless content_for? :column partial '.column.expand', 'layouts/column' end def header partial ['.header_wrap','.header'], 'layouts/header' end def footer partial ['.footer_wrap','.footer'], 'layouts/footer' end def google_analytics javascript_include_tag 'lib/analytics' end end