mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-28 21:07:16 +00:00
77 lines
2.3 KiB
Ruby
77 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module ShopHelper
|
|
def oc_select_options(order_cycles)
|
|
order_cycles.map { |oc| { time: pickup_time(oc), id: oc.id } }
|
|
end
|
|
|
|
def require_customer?
|
|
@require_customer ||= current_distributor.require_login? && !user_is_related_to_distributor?
|
|
end
|
|
|
|
def user_is_related_to_distributor?
|
|
spree_current_user.present? && (
|
|
spree_current_user.admin? ||
|
|
spree_current_user.enterprises.include?(current_distributor) ||
|
|
spree_current_user.customer_of(current_distributor)
|
|
)
|
|
end
|
|
|
|
def shop_tabs
|
|
[
|
|
{ name: 'home', title: t(:shopping_tabs_home), show: show_home_tab?,
|
|
default: show_home_tab? },
|
|
{ name: 'shop', title: t(:shopping_tabs_shop), show: !require_customer?,
|
|
default: !show_home_tab?, shop: true },
|
|
{ name: 'about', title: t(:shopping_tabs_about), show: true },
|
|
{ name: 'producers', title: t(:shopping_tabs_producers), show: true },
|
|
{ name: 'contact', title: t(:shopping_tabs_contact), show: true },
|
|
{ name: 'groups', title: t(:shopping_tabs_groups), show: show_groups_tabs? },
|
|
custom_tab,
|
|
].select{ |tab| tab[:show] }
|
|
end
|
|
|
|
def custom_tab
|
|
{
|
|
name: "custom_#{current_distributor.custom_tab&.title&.parameterize}",
|
|
title: current_distributor.custom_tab&.title,
|
|
show: current_distributor.custom_tab.present?,
|
|
custom: true,
|
|
}
|
|
end
|
|
|
|
def show_home_tab?
|
|
require_customer? || current_distributor.preferred_shopfront_message.present?
|
|
end
|
|
|
|
def shopfront_closed_message?(order_cycles)
|
|
no_open_order_cycles?(order_cycles) &&
|
|
current_distributor.preferred_shopfront_closed_message.present?
|
|
end
|
|
|
|
def no_open_order_cycles?(order_cycles)
|
|
@no_open_order_cycles ||= order_cycles&.empty?
|
|
end
|
|
|
|
def show_shopping_cta?
|
|
return false if current_page?(main_app.shops_path) && current_distributor.blank?
|
|
|
|
return false if current_distributor.present? &&
|
|
current_page?(main_app.enterprise_shop_path(current_distributor))
|
|
|
|
true
|
|
end
|
|
|
|
def shop_tab_class(tab)
|
|
return unless (tab == "home" && show_home_tab?) || current_order(false)&.order_cycle.nil?
|
|
|
|
"with-darker-background"
|
|
end
|
|
|
|
private
|
|
|
|
def show_groups_tabs?
|
|
!current_distributor.hide_groups_tab? && current_distributor.groups.any?
|
|
end
|
|
end
|