Module: Spree::Admin::NavigationHelper
- Defined in:
- app/helpers/spree/admin/navigation_helper.rb
Instance Method Summary collapse
- #button(text, icon_name = nil, button_type = 'submit', options = {}) ⇒ Object
- #button_link_to(text, url, html_options = {}) ⇒ Object
- #configurations_menu_item(link_text, url, description = '') ⇒ Object
- #configurations_sidebar_menu_item(link_text, url, options = {}) ⇒ Object
- #icon(icon_name) ⇒ Object
- #link_to_clone(resource, options = {}) ⇒ Object
- #link_to_delete(resource, options = {}) ⇒ Object
- #link_to_edit(resource, options = {}) ⇒ Object
- #link_to_edit_url(url, options = {}) ⇒ Object
- #link_to_new(resource) ⇒ Object
- #link_to_with_icon(icon_name, text, url, options = {}) ⇒ Object
- #settings_tab_item(link_text, url, options = {}) ⇒ Object
-
#tab(*args, &_block) ⇒ Object
Make an admin tab that coveres one or more resources supplied by symbols Option hash may follow.
Instance Method Details
#button(text, icon_name = nil, button_type = 'submit', options = {}) ⇒ Object
87 88 89 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 87 def (text, icon_name = nil, = 'submit', = {}) (text, .merge(type: , class: "fa fa-#{icon_name} button")) end |
#button_link_to(text, url, html_options = {}) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 91 def (text, url, = {}) = { class: '' }.merge() if [:method] && [:method].to_s.downcase != 'get' && ![:remote] form_tag(url, method: .delete(:method)) do (text, .delete(:icon), nil, ) end else [:class] += ' button' if [:icon] [:class] += " fa fa-#{[:icon]}" end link_to(text, url, ) end end |
#configurations_menu_item(link_text, url, description = '') ⇒ Object
109 110 111 112 113 114 115 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 109 def (link_text, url, description = '') %(<tr> <td>#{link_to(link_text, url)}</td> <td>#{description}</td> </tr> ).html_safe end |
#configurations_sidebar_menu_item(link_text, url, options = {}) ⇒ Object
117 118 119 120 121 122 123 124 125 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 117 def (link_text, url, = {}) is_active = url.ends_with?(controller.controller_name) || url.ends_with?("#{controller.controller_name}/edit") || url.ends_with?("#{controller.controller_name.singularize}/edit") [:class] = is_active ? 'active' : nil content_tag(:li, ) do link_to(link_text, url) end end |
#icon(icon_name) ⇒ Object
83 84 85 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 83 def icon(icon_name) icon_name ? content_tag(:i, '', class: icon_name) : '' end |
#link_to_clone(resource, options = {}) ⇒ Object
45 46 47 48 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 45 def link_to_clone(resource, = {}) [:data] = { action: 'clone' } link_to_with_icon('copy', Spree.t(:clone), clone_object_url(resource), ) end |
#link_to_delete(resource, options = {}) ⇒ Object
66 67 68 69 70 71 72 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 66 def link_to_delete(resource, = {}) url = [:url] || object_url(resource) name = [:name] || Spree.t('actions.delete') [:class] = "delete-resource" [:data] = { confirm: Spree.t(:are_you_sure), action: 'remove' } link_to_with_icon 'trash', name, url, end |
#link_to_edit(resource, options = {}) ⇒ Object
55 56 57 58 59 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 55 def link_to_edit(resource, = {}) url = [:url] || edit_object_url(resource) [:data] = { action: 'edit' } link_to_with_icon('edit', Spree.t('actions.edit'), url, ) end |
#link_to_edit_url(url, options = {}) ⇒ Object
61 62 63 64 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 61 def link_to_edit_url(url, = {}) [:data] = { action: 'edit' } link_to_with_icon('edit', Spree.t('actions.edit'), url, ) end |
#link_to_new(resource) ⇒ Object
50 51 52 53 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 50 def link_to_new(resource) [:data] = { action: 'new' } link_to_with_icon('plus', Spree.t(:new), edit_object_url(resource)) end |
#link_to_with_icon(icon_name, text, url, options = {}) ⇒ Object
74 75 76 77 78 79 80 81 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 74 def link_to_with_icon(icon_name, text, url, = {}) [:class] = ([:class].to_s + " fa fa-#{icon_name} icon_link with-tip").strip [:class] += ' no-text' if [:no_text] [:title] = text if [:no_text] text = [:no_text] ? '' : content_tag(:span, text, class: 'text') .delete(:no_text) link_to(text, url, ) end |
#settings_tab_item(link_text, url, options = {}) ⇒ Object
127 128 129 130 131 132 133 134 135 136 137 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 127 def settings_tab_item(link_text, url, = {}) is_active = url.ends_with?(controller.controller_name) || url.ends_with?("#{controller.controller_name}/edit") || url.ends_with?("#{controller.controller_name.singularize}/edit") [:class] = 'fa' [:class] += ' active' if is_active [:datahook] = "admin_settings_#{link_text.downcase.tr(' ', '_')}" content_tag(:li, ) do link_to(link_text, url) end end |
#tab(*args, &_block) ⇒ Object
Make an admin tab that coveres one or more resources supplied by symbols Option hash may follow. Valid options are
* :label to override link text, otherwise based on the first resource name (translated)
* :route to override automatically determining the default route
* :match_path as an alternative way to control when the tab is active, /products would match /admin/products, /admin/products/5/variants etc.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'app/helpers/spree/admin/navigation_helper.rb', line 9 def tab(*args, &_block) = { label: args.first.to_s } if args.last.is_a?(Hash) = .merge(args.pop) end [:route] ||= "admin_#{args.first}" destination_url = [:url] || spree.send("#{[:route]}_path") label = Spree.t([:label], scope: [:admin, :tab]) css_classes = [] if [:icon] link = link_to_with_icon([:icon], label, destination_url) css_classes << 'tab-with-icon' else link = link_to(label, destination_url) end selected = if [:match_path].is_a? Regexp request.fullpath =~ [:match_path] elsif [:match_path] request.fullpath.starts_with?("#{admin_path}#{[:match_path]}") else request.fullpath.starts_with?(destination_url) || args.include?(controller.controller_name.to_sym) end css_classes << 'selected' if selected if [:css_class] css_classes << [:css_class] end content_tag('li', link + (yield if block_given?), class: css_classes.join(' ') ) end |