mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-11 18:26:50 +00:00
Release announcements: * https://www.ruby-lang.org/en/news/2025/07/24/ruby-3-2-9-released/ * https://www.ruby-lang.org/en/news/2025/03/26/ruby-3-2-8-released/ * https://www.ruby-lang.org/en/news/2025/02/04/ruby-3-2-7-released/ * https://www.ruby-lang.org/en/news/2024/10/30/ruby-3-2-6-released/ * https://www.ruby-lang.org/en/news/2024/07/26/ruby-3-2-5-released/ * https://www.ruby-lang.org/en/news/2024/04/23/ruby-3-2-4-released/ * https://www.ruby-lang.org/en/news/2024/01/18/ruby-3-2-3-released/ * https://www.ruby-lang.org/en/news/2023/03/30/ruby-3-2-2-released/ * https://www.ruby-lang.org/en/news/2023/02/08/ruby-3-2-1-released/ * https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/ Also autocorrect new offenses.
79 lines
2.3 KiB
Ruby
79 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module ApplicationHelper
|
|
include RawParams
|
|
include Pagy::Frontend
|
|
|
|
def error_message_on(object, method, options = {})
|
|
object = convert_to_model(object)
|
|
obj = object.respond_to?(:errors) ? object : instance_variable_get("@#{object}")
|
|
|
|
return "" unless obj && obj.errors[method].present?
|
|
|
|
errors = obj.errors[method].map { |err| h(err) }.join('<br />').html_safe # rubocop:disable Rails/OutputSafety
|
|
|
|
if options[:standalone]
|
|
content_tag(
|
|
:div,
|
|
content_tag(:span, errors, class: 'formError standalone'),
|
|
class: 'checkout-input'
|
|
)
|
|
else
|
|
content_tag(:span, errors, class: 'formError')
|
|
end
|
|
end
|
|
|
|
# Checks weather a feature is enabled for any of the given actors.
|
|
def feature?(feature, *actors)
|
|
OpenFoodNetwork::FeatureToggle.enabled?(feature, *actors)
|
|
end
|
|
|
|
def language_meta_tags
|
|
return if I18n.available_locales.one?
|
|
|
|
I18n.available_locales.map do |locale|
|
|
tag.link(
|
|
hreflang: locale.to_s.gsub("_", "-").downcase,
|
|
href: "#{request.protocol}#{request.host_with_port}/locales/#{locale}"
|
|
)
|
|
end.join("\n").html_safe # rubocop:disable Rails/OutputSafety
|
|
end
|
|
|
|
def ng_form_for(name, *args, &)
|
|
options = args.extract_options!
|
|
|
|
form_for(name, *(args << options.merge(builder: AngularFormBuilder)), &)
|
|
end
|
|
|
|
def respond_to_missing?(method_name, include_private = false)
|
|
(method_name.to_s.end_with?('_path',
|
|
'_url') && spree.respond_to?(method_name, include_private)) || super
|
|
end
|
|
|
|
# Pass URL helper calls on to spree where applicable so that we don't need to use
|
|
# spree.foo_path in any view rendered from non-spree-namespaced controllers.
|
|
def method_missing(method, *, &)
|
|
if method.to_s.end_with?('_path', '_url') && spree.respond_to?(method)
|
|
spree.public_send(method, *)
|
|
else
|
|
super
|
|
end
|
|
end
|
|
|
|
def body_classes(hide_menu, shopfront_layout)
|
|
classes = []
|
|
classes << "off-canvas" unless hide_menu
|
|
classes << shopfront_layout
|
|
end
|
|
|
|
def cache_with_locale(key = nil, options = {}, &block)
|
|
cache(cache_key_with_locale(key, I18n.locale), options) do
|
|
yield(block)
|
|
end
|
|
end
|
|
|
|
def cache_key_with_locale(key, locale)
|
|
Array.wrap(key) + [locale.to_s, I18nDigests.for_locale(locale)]
|
|
end
|
|
end
|