Module: Workarea::Admin::ApplicationHelper
- Defined in:
- app/helpers/workarea/admin/application_helper.rb
Instance Method Summary collapse
- #avatar_for(user, additional_css_class = '') ⇒ Object
- #card_classes(type, active = nil) ⇒ Object
- #duration_in_words(duration) ⇒ Object
- #flash_messages ⇒ Object
- #generic_summary_type(model) ⇒ Object
- #hash_display_value(value) ⇒ Object
- #hash_editing_value(value) ⇒ Object
- #page_title ⇒ Object
- #pagination_path_for(page: 1) ⇒ Object
- #path_with_query_string(path, query_string_params = {}) ⇒ Object
- #relative_weekday(date) ⇒ Object
- #render_aux_navigation_for(model, options = {}) ⇒ Object
- #render_cards_for(model, active = nil) ⇒ Object
- #render_message(type, message = nil, &block) ⇒ Object
- #render_summary_for(model) ⇒ Object
- #s3? ⇒ Boolean
- #show_filters_reset? ⇒ Boolean
- #sort_options(model) ⇒ Object
- #toggle_button_for(object_name, condition, options = {}, &block) ⇒ Object
- #user_name_type(user) ⇒ Object
- #workarea_release_notes_url(version) ⇒ Object
Instance Method Details
#avatar_for(user, additional_css_class = '') ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 85 def avatar_for(user, additional_css_class = '') if user.blank? return content_tag( :span, t('workarea.admin.application_helper.not_applicable'), class: "avatar #{additional_css_class}" ) end image_tag( user.avatar_image_url, class: "avatar #{additional_css_class}", width: 40, alt: t('workarea.admin.layout.avatar_title', name: user.name) ) end |
#card_classes(type, active = nil) ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 59 def card_classes(type, active = nil) classes = [] classes << "card--#{type.to_s.dasherize}" classes << 'card--active' if type == active classes << 'card--button' if active.present? classes.join(' ') end |
#duration_in_words(duration) ⇒ Object
169 170 171 172 173 174 175 176 177 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 169 def duration_in_words(duration) parts = duration.parts return t('workarea.duration.seconds', count: 0) if parts.empty? parts .sort_by { |unit, _ | ActiveSupport::Duration::PARTS.index(unit) } .map { |unit, val| t("workarea.duration.#{unit}", count: val) } .to_sentence end |
#flash_messages ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 131 def flash.keys.inject('') do |memo, name| msg = flash[name] if msg.is_a?(Enumerable) msg.each do || if .is_a?(String) memo << (name, ) end end elsif msg.is_a?(String) memo << (name, msg) end flash.delete(name) memo end.html_safe end |
#generic_summary_type(model) ⇒ Object
34 35 36 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 34 def generic_summary_type(model) model.class.name.gsub(/Workarea::/, '').gsub(/::/, ' ') end |
#hash_display_value(value) ⇒ Object
24 25 26 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 24 def hash_display_value(value) CSV.generate_line(Array(value).flatten, col_sep: ', ').strip end |
#hash_editing_value(value) ⇒ Object
20 21 22 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 20 def hash_editing_value(value) CSV.generate_line(Array(value).flatten).strip end |
#page_title ⇒ Object
4 5 6 7 8 9 10 11 12 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 4 def page_title title = @page_title.presence || 'Workarea' unless Rails.env.in?(%w(test development production)) title = "[#{Rails.env.upcase}] #{title}" end title end |
#pagination_path_for(page: 1) ⇒ Object
155 156 157 158 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 155 def pagination_path_for(page: 1) new_query_string_params = request.query_parameters.merge(page: page) "#{request.path}?#{new_query_string_params.to_query}" end |
#path_with_query_string(path, query_string_params = {}) ⇒ Object
80 81 82 83 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 80 def path_with_query_string(path, query_string_params = {}) return path if query_string_params.blank? "#{path}?#{query_string_params.to_query}" end |
#relative_weekday(date) ⇒ Object
102 103 104 105 106 107 108 109 110 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 102 def relative_weekday(date) if date == Date.current t('workarea.admin.application_helper.today') elsif (Date.current - date) == 1 t('workarea.admin.application_helper.yesterday') else date.strftime('%A') end end |
#render_aux_navigation_for(model, options = {}) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 49 def (model, = {}) render( "workarea/admin/#{model.model_name.route_key}/aux_navigation", .merge(model: model) ) rescue ActionView::MissingTemplate # It's ok if there isn't any auxilliary nav to render end |
#render_cards_for(model, active = nil) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 38 def render_cards_for(model, active = nil) render( "workarea/admin/#{model.model_name.route_key}/cards", model: model, active: active ) rescue ActionView::MissingTemplate # It's ok if there aren't any cards to render end |
#render_message(type, message = nil, &block) ⇒ Object
150 151 152 153 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 150 def (type, = nil, &block) = capture(&block) if block_given? render('workarea/admin/shared/message', type: type.systemize, message: ) end |
#render_summary_for(model) ⇒ Object
28 29 30 31 32 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 28 def render_summary_for(model) render "workarea/admin/#{model.model_name.route_key}/summary", model: model rescue ActionView::MissingTemplate render "workarea/admin/shared/summary", model: model end |
#s3? ⇒ Boolean
160 161 162 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 160 def s3? Configuration::S3.configured? end |
#show_filters_reset? ⇒ Boolean
76 77 78 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 76 def show_filters_reset? params.except(:controller, :action, :utf8, :sort).present? end |
#sort_options(model) ⇒ Object
14 15 16 17 18 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 14 def (model) model.sorts.map do |sort| [sort.name, sort.slug] end end |
#toggle_button_for(object_name, condition, options = {}, &block) ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 112 def (object_name, condition, = {}, &block) block = capture(&block) if block_given? # TODO: v4 reduce size (lolwat) render( 'workarea/admin/shared/toggle_button', input_name: object_name, condition: condition, label_true: [:label_true].presence || t('workarea.admin.true'), label_false: [:label_false].presence || t('workarea.admin.false'), title_true: [:title_true].presence || t('workarea.admin.true'), title_false: [:title_false].presence || t('workarea.admin.false'), block: block, data: [:data], disabled: [:disabled], dom_id: object_name.systemize.chomp('_') + ([:id].present? ? "_#{options[:id]}" : '') ) end |
#user_name_type(user) ⇒ Object
68 69 70 71 72 73 74 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 68 def user_name_type(user) if user.name == user.email t('workarea.admin.users.name_types.email') else t('workarea.admin.users.name_types.name') end end |
#workarea_release_notes_url(version) ⇒ Object
164 165 166 167 |
# File 'app/helpers/workarea/admin/application_helper.rb', line 164 def workarea_release_notes_url(version) version_path = "workarea-#{version.gsub('.', '-')}.html" "https://developer.workarea.com/release-notes/#{version_path}" end |