mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
50 lines
1.2 KiB
Ruby
50 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module LinkHelper
|
|
def link_to_or_disabled(name = nil, options = nil, html_options = nil, &block)
|
|
html_options, options, name = options, name, block if block_given?
|
|
html_options ||= {}
|
|
|
|
if !!html_options.delete(:disabled)
|
|
# https://www.scottohara.me/blog/2021/05/28/disabled-links.html
|
|
html_options.merge!(
|
|
'aria-disabled': true,
|
|
class: (html_options[:class].to_s.split + ["disabled"]).uniq.join(" "),
|
|
role: "link"
|
|
)
|
|
if block_given?
|
|
content_tag("a", name, **html_options, &block)
|
|
else
|
|
content_tag("a", name, **html_options)
|
|
end
|
|
elsif block_given?
|
|
link_to options, html_options, &block
|
|
else
|
|
link_to name, options, html_options
|
|
end
|
|
end
|
|
|
|
def link_to_service(baseurl, name, html_options = {}, &)
|
|
return if name.blank?
|
|
|
|
html_options = html_options.merge target: '_blank'
|
|
link_to(ext_url(baseurl, name), html_options, &)
|
|
end
|
|
|
|
def ext_url(prefix, url)
|
|
if url =~ %r{^https?://}i
|
|
url
|
|
else
|
|
prefix + url
|
|
end
|
|
end
|
|
|
|
def new_tab_option
|
|
if feature?(:open_in_same_tab, spree_current_user)
|
|
{}
|
|
else
|
|
{ target: "_blank" }
|
|
end
|
|
end
|
|
end
|