Module: CoreLinkHelper

Defined in:
app/helpers/core_link_helper.rb

Overview

common link generation helpers

Instance Method Summary collapse

Instance Method Details

Show a list of things if the condition is true.



185
186
187
188
189
190
191
192
193
194
195
196
# File 'app/helpers/core_link_helper.rb', line 185

def action_link_tag(condition, path, options = {})
  return unless condition

  confirmation = options[:confirmation] || t('links.action_confirmation')
  confirmation_required = options[:confirmation].present? ? { confirm: confirmation } : {}
  (:a, href: path, class: options[:classes], data: confirmation_required) do
    concat((:i, class: 'material-icons') do
      options[:icon_name] || 'info'
    end)
    concat(options[:label]) if options[:label].present?
  end
end

#action_list_tag(condition, path, options = {}) ⇒ Object

Show a list of things in a pull down list if the condition is true



172
173
174
175
176
177
178
179
180
# File 'app/helpers/core_link_helper.rb', line 172

def action_list_tag(condition, path, options = {})
  return unless condition

  raise('Label Required') if options[:label].blank?

  (:li) do
    action_link_tag(condition, path, options)
  end
end

Add the ‘Add` button



358
359
360
361
362
363
364
365
366
367
368
# File 'app/helpers/core_link_helper.rb', line 358

def add_link_button(path, options)
  options[:title] ||= t('ui_form.actions.add')
  options[:icon] ||= 'add'
  (:a,
              href: path,
              class: 'btn-floating btn-large right',
              style: 'padding: 0;margin: 0px 15px',
              title: options[:title]) do
    concat((:i, class: 'material-icons') { options[:icon] })
  end
end

Add a thingy



347
348
349
350
351
352
353
# File 'app/helpers/core_link_helper.rb', line 347

def add_link_tag(klass, path, options = {})
  return unless can?(:create, klass)

  (:div, class: 'fixed-action-btn horizontal') do
    concat(add_link_button(path, options))
  end
end

#copy_tag(copy_text, options = {}) ⇒ Object

Setup the text as copy text



19
20
21
22
23
24
25
# File 'app/helpers/core_link_helper.rb', line 19

def copy_tag(copy_text, options = {})
  (:div, class: 'clipboard') do
    concat((:span) { copy_text })
    concat(copy_text_tag(copy_text, options))
    concat(download_tag(options[:download_url], options)) if options[:download_url].present?
  end
end

#copy_text_tag(copy_text, options = {}) ⇒ Object

Create a text element that is easy to copy



30
31
32
33
34
35
36
37
# File 'app/helpers/core_link_helper.rb', line 30

def copy_text_tag(copy_text, options = {})
  options[:icon_name] ||= 'content_copy'
  (:a, class: 'copy', href: '#', data: { 'clipboard-text' => copy_text }, onclick: 'return false;') do
    concat((:i, class: 'material-icons') do
      options[:icon_name]
    end)
  end
end

Create a thingy



241
242
243
244
245
246
247
248
249
250
251
# File 'app/helpers/core_link_helper.rb', line 241

def create_link_tag(obj, path, options = {})
  return unless can? :create, obj

  confirmation = options[:confirmation] || t('links.action_confirmation', name: obj.class.to_s.underscore.humanize)
  (:a, href: path, data: { confirm: confirmation }) do
    concat((:i, class: 'material-icons') do
      options[:icon_name] || 'add'
    end)
    concat(options[:label]) if options[:label].present?
  end
end

#create_list_tag(obj, path, options = {}) ⇒ Object

Create a thingy in a pull-down list



229
230
231
232
233
234
235
236
# File 'app/helpers/core_link_helper.rb', line 229

def create_list_tag(obj, path, options = {})
  return unless can? :create, obj

  options[:label] ||= I18n.t('ui_form.actions.create')
  (:li) do
    create_link_tag(obj, path, options)
  end
end

Delete an thingy



213
214
215
216
217
218
219
220
221
222
223
224
# File 'app/helpers/core_link_helper.rb', line 213

def delete_link_tag(obj, path, options = {})
  return unless can? :destroy, obj

  data = { method: :delete,
           confirm: options[:confirm] || t('links.deletion_confirmation', name: obj.class.to_s.underscore.humanize) }
  (:a, href: path, data: data) do
    concat((:i, class: 'material-icons') do
      options[:icon_name] || 'delete'
    end)
    concat(options[:label]) if options[:label].present?
  end
end

#delete_list_tag(obj, path, options = {}) ⇒ Object

Delete a thingy in a pull down list



201
202
203
204
205
206
207
208
# File 'app/helpers/core_link_helper.rb', line 201

def delete_list_tag(obj, path, options = {})
  return unless can? :destroy, obj

  options[:label] ||= I18n.t('ui_form.actions.delete')
  (:li) do
    delete_link_tag(obj, path, options)
  end
end

Demote a publishable kb object



320
321
322
323
324
325
326
327
328
329
# File 'app/helpers/core_link_helper.rb', line 320

def demote_link_tag(obj, path, options = {})
  return unless can? :demote, obj

  (:a, href: path) do
    concat((:i, class: 'material-icons') do
      'file_download'
    end)
    concat(options[:label]) if options[:label].present?
  end
end

#demote_list_tag(obj, path, options = {}) ⇒ Object

Demote a publishable kb object in a pull down list



308
309
310
311
312
313
314
315
# File 'app/helpers/core_link_helper.rb', line 308

def demote_list_tag(obj, path, options = {})
  return unless can? :demote, obj

  options[:label] ||= I18n.t('links.demote')
  (:li) do
    demote_link_tag(obj, path, options)
  end
end

#download_tag(url, options = {}) ⇒ Object

Generate a download link with the download icon



10
11
12
13
14
# File 'app/helpers/core_link_helper.rb', line 10

def download_tag(url, options = {})
  (:a, href: url) do
    concat(materialize_icon(options[:download_icon_name] || 'cloud_download'))
  end
end

Edit a page



334
335
336
337
338
339
340
341
342
# File 'app/helpers/core_link_helper.rb', line 334

def edit_class_link_tag(klass, path)
  return unless can?(:edit, klass)

  (:div, class: 'fixed-action-btn horizontal') do
    concat((:a, href: path, class: 'btn-floating btn-large right', style: 'padding: 0;margin: 0px 15px') do
      concat((:i, class: 'material-icons') { 'edit' })
    end)
  end
end

Edit a thingy



96
97
98
99
100
101
102
103
104
105
106
# File 'app/helpers/core_link_helper.rb', line 96

def edit_link_tag(obj, path, options = {})
  return unless can? :edit, obj

  icon = options[:icon] || 'edit'
  (:a, href: path) do
    concat((:i, class: 'material-icons') do
      icon
    end)
    concat(options[:label]) if options[:label].present?
  end
end

#edit_list_tag(obj, path, options = {}) ⇒ Object

Edit a thingy in a pull down list



84
85
86
87
88
89
90
91
# File 'app/helpers/core_link_helper.rb', line 84

def edit_list_tag(obj, path, options = {})
  return unless can? :edit, obj

  options[:label] ||= I18n.t('ui_form.actions.edit')
  (:li) do
    edit_link_tag(obj, path, options)
  end
end

#edit_modal_tag(obj, path, _options = {}) ⇒ Object



108
109
110
111
112
113
114
# File 'app/helpers/core_link_helper.rb', line 108

def edit_modal_tag(obj, path, _options = {})
  return unless can? :edit, obj

  (:a, href: path, class: 'modal-action') do
    concat(I18n.t('ui_form.actions.edit'))
  end
end

#favorite_tag(favorite) ⇒ Object

Add a favorite tag



55
56
57
58
59
60
# File 'app/helpers/core_link_helper.rb', line 55

def favorite_tag(favorite)
  (:i,
              class: 'material-icons pointer favorite',
              id: favorite.id.to_s,
              type: favorite.favorite_type) { concat('favorite_border') }
end

#form_cancel_button_tag(path, name = 'cancel') ⇒ Object

Form cancel button



373
374
375
376
377
378
# File 'app/helpers/core_link_helper.rb', line 373

def form_cancel_button_tag(path, name = 'cancel')
  options = { class: 'btn-large waves-effect waves-light secondary', href: path }
  (:a, options) do
    concat(t("ui_form.actions.#{name}"))
  end
end

#form_submit_button_tag(condition = true, options = {}) ⇒ Object

Form submit button



383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
# File 'app/helpers/core_link_helper.rb', line 383

def form_submit_button_tag(condition = true, options = {})
  return unless condition

  tag_options = { class: 'btn-large waves-effect waves-light', type: :submit }
  if options[:action].present?
    tag_options[:name] = options[:name] || 'button_action'
    tag_options[:value] = options[:action]
  end
  tag_options[:class] += ' disabled' if options[:disabled]
  tag_options[:class] += ' disabled' if options[:disabled]

  button_text = options[:text] || t('ui_form.actions.save')
  button_icon = options[:icon] || 'save'
  (:button, tag_options) do
    concat(button_text)
    concat((:i, class: 'material-icons right') { button_icon })
  end
end

Details of a thingy



157
158
159
160
161
162
163
164
165
166
167
# File 'app/helpers/core_link_helper.rb', line 157

def info_link_tag(obj, path, options = {})
  return unless can? :read, obj

  icon = options[:icon] || 'info'
  (:a, href: path) do
    concat((:i, class: 'material-icons') do
      icon
    end)
    concat(options[:label]) if options[:label].present?
  end
end

#info_list_tag(obj, path, options = {}) ⇒ Object

Details of a thingy in a pull down list



147
148
149
150
151
152
# File 'app/helpers/core_link_helper.rb', line 147

def info_list_tag(obj, path, options = {})
  options[:label] ||= I18n.t('ui_form.actions.info')
  (:li) do
    info_link_tag(obj, path, options)
  end
end

Generic link tag



74
75
76
77
78
79
# File 'app/helpers/core_link_helper.rb', line 74

def link_tag(title, path, options = {})
  (:a, href: path, class: options[:class]) do
    concat((:i, class: 'material-icons left') { options[:icon_name] }) if options[:icon_name].present?
    concat(title)
  end
end

#materialize_icon(name, options = {}) ⇒ Object

Add a material icon by name



65
66
67
68
69
# File 'app/helpers/core_link_helper.rb', line 65

def materialize_icon(name, options = {})
  classes = %w[material-icons]
  classes += options[:classes] if options[:classes].present?
  (:i, class: classes.join(' '), title: options[:title]) { name }
end

Send notification



268
269
270
271
272
273
274
275
276
277
# File 'app/helpers/core_link_helper.rb', line 268

def notification_link_tag(obj, path, options = {})
  return unless can? :manage, obj

  (:a, href: path) do
    concat((:i, class: 'material-icons') do
      options[:icon_name] || 'email'
    end)
    concat(options[:label]) if options[:label].present?
  end
end

#notification_list_tag(obj, path, options = {}) ⇒ Object

Send notification in a pull down list



256
257
258
259
260
261
262
263
# File 'app/helpers/core_link_helper.rb', line 256

def notification_list_tag(obj, path, options = {})
  return unless can? :manage, obj

  options[:label] ||= I18n.t('customer_account_users.index.reset_password')
  (:li) do
    notification_link_tag(obj, path, options)
  end
end

Promote a publishable kb object



294
295
296
297
298
299
300
301
302
303
# File 'app/helpers/core_link_helper.rb', line 294

def promote_link_tag(obj, path, options = {})
  return unless can? :promote, obj

  (:a, href: path) do
    concat((:i, class: 'material-icons') do
      'file_upload'
    end)
    concat(options[:label]) if options[:label].present?
  end
end

#promote_list_tag(obj, path, options = {}) ⇒ Object

Promote a publishable kb object in a pull down list



282
283
284
285
286
287
288
289
# File 'app/helpers/core_link_helper.rb', line 282

def promote_list_tag(obj, path, options = {})
  return unless can? :promote, obj

  options[:label] ||= I18n.t('links.promote')
  (:li) do
    promote_link_tag(obj, path, options)
  end
end

Restart a thingy



119
120
121
122
123
124
125
126
127
128
129
130
# File 'app/helpers/core_link_helper.rb', line 119

def replay_link_tag(obj, path, options = {})
  return unless can? :edit, obj

  icon_name = options[:icon_name] || 'replay'
  data = { confirm: options[:confirm] || t('links.replay_confirmation', name: obj.class.to_s.underscore.humanize) }
  (:a, href: path, data: data, class: options[:link_classes]) do
    concat((:i, class: 'material-icons') do
      icon_name
    end)
    concat(options[:label]) if options[:label].present?
  end
end

#replay_list_tag(obj, path, options = {}) ⇒ Object

Restart a thingy



135
136
137
138
139
140
141
142
# File 'app/helpers/core_link_helper.rb', line 135

def replay_list_tag(obj, path, options = {})
  return unless can? :edit, obj

  options[:label] ||= I18n.t('ui_form.actions.replay')
  (:li) do
    replay_link_tag(obj, path, options)
  end
end

#table_action_button(action_id, icon_name = 'more_horiz') ⇒ Object

Add the table action button and setup the drop down



42
43
44
45
46
47
48
49
50
# File 'app/helpers/core_link_helper.rb', line 42

def table_action_button(action_id, icon_name = 'more_horiz')
  datum = { target: action_id,
            constrainWidth: false,
            gutter: 28,
            alignment: 'right' }
  (:a, class: 'dropdown-trigger', data: datum) do
    concat(materialize_icon(icon_name))
  end
end