module ApplicationHelper def title(*args) res = content_tag :h1, class: 'page-title' do if args.first.is_a?(Symbol) && (args[1].respond_to?(:model_name) || args[1].class.respond_to?(:model_name)) model = args[1].respond_to?(:model_name) ? args[1] : args[1].class if args.first == :index t('action.index.label', models: model.model_name.human_plural) else t("action.#{args.first}.label", model: model.model_name.human) end else args.first end end content_for :page_title, res res end # overwrite i18n l, to handle nil values def l(*args) return '' unless args.first super(*args) end def user_dynamic_data_host case Rails.env when 'test' then "$data_host = data_host = 'http://#{request.host}:#{request.port}';".html_safe when 'development' then "$data_host = data_host = 'http://localhost:3000';".html_safe else '' end end def user_dynamic_root_url case Rails.env when 'test' then "$root_url = 'http://#{request.host}:#{request.port}/user';".html_safe when 'development' then "$root_url = 'http://localhost:3000/user';".html_safe else '' end end def are_you_sure?(record = nil) t('helpers.links.are_you_sure') end def active_list active_list_object end def application_title 'Qwaiter' end # Helper for displaying HTML currency values def currency(amount, opts={}) amount ||= 0.0 amount = amount.to_f #prefix = case company.currency # when 'GBP' then '£ ' # when 'USD' then '$ ' # else '€ ' # end prefix = '€ ' return (prefix + ("%.2f" % amount)).html_safe # Rails native is ambiguous since is uses translation hashes options = {:unit => '€'}.merge(opts) number_to_currency(amount, options) end def list_open? active_list_id.present? end def active_list_id current_user.try(:active_list_id) end def week_days @week_days ||= %w[sunday monday tuesday wednesday thursday friday saturday].freeze # Do not allow changing this value end def current_supplier #@current_supplier ||= ActiveDecorator::Decorator.instance.decorate(super) @current_supplier ||= super ActiveDecorator::Decorator.instance.decorate @current_supplier @current_supplier end def no_content_given(model) content_tag(:p, t('helpers.list.no_records'), data: {t: 'helpers.list.no_records'}) end def slider_image image_tag('spinner.gif') end def spinner image_tag('spinner.gif') end def show_boolean(bool) t("general.boolean.boolean_#{bool.present? ? 'yes' : 'no'}") end def facebook_link link_to 'Facebook', 'https://www.facebook.com/Qwaiter', target: :_blank end def twitter_link link_to 'Twitter', 'https://www.twitter.com/Qwaiter', target: :_blank end # Add a script call to be executed when the dom is loaded. # When called without a script it will return the total added script content # - onload_javascript 'var a=1' # - onload_javascript 'var b=3' # = onload_javascript #=> var a=1;var b=3 def onload_javascript(script = nil) if block_given? script = script.to_s value = nil buffer = with_output_buffer { value = yield } script += (buffer.presence || value).to_s end script = script.call if script.respond_to?(:call) script.sub!(/^]+>/,'') if script script.sub!(/<\/script>$/, '') if script script.present? ? (@onload_javascripts ||= []) << script : (@onload_javascripts || []).join(';').html_safe end def mustache_template(template) render(template, handlers: [:mustache]) end def top_bar(options = {}, &block) title = options[:title] title = title.present? ? content_tag(:h3, t("user.#{title}"), class: 'title', data: {t: title}) : '' content_tag :div, class: 'top-button-bar' do content_tag :div, class: 'button-bar-inner' do content_tag :div, class: 'button-bar-content' do (title + capture(&block)).html_safe end end end end def page_path(record) str = case record when Page then record.name else record end go_to_path(str, locale: I18n.locale) end def find_page(name) Page.find_by_name_and_locale(name, I18n.locale) end def locale_root_path I18n.locale == I18n.default_locale ? '/' : "/#{I18n.locale}" end def link_to_function(title, function, options={}) options[:onclick] = function link_to title, 'javascript:void(0)', options end end