diff --git a/app/helpers/schedule_helper.rb b/app/helpers/schedule_helper.rb new file mode 100644 index 0000000..3317b59 --- /dev/null +++ b/app/helpers/schedule_helper.rb @@ -0,0 +1,15 @@ +module ScheduleHelper + KIND_DISPLAY_OVERRIDES = { "lightning" => "Lightning Talks" }.freeze + + def kind_display_label(kind) + return nil if kind.blank? + KIND_DISPLAY_OVERRIDES[kind.to_s] || kind.to_s.humanize + end + + def visible_filter_kinds(user) + ScheduleItem.kinds.keys.reject do |kind| + kind == "reception" || + (kind == "volunteer" && !(user&.volunteer? || user&.admin?)) + end.sort_by { |kind| kind_display_label(kind) } + end +end diff --git a/app/views/admin/schedule_items/index.html.erb b/app/views/admin/schedule_items/index.html.erb index bbb8368..107dd25 100644 --- a/app/views/admin/schedule_items/index.html.erb +++ b/app/views/admin/schedule_items/index.html.erb @@ -41,7 +41,7 @@ <% if item.kind.present? %> - <%= item.kind.humanize %> + <%= kind_display_label(item.kind) %> <% else %> unknown (<%= item.read_attribute_before_type_cast(:kind) %>) <% end %> diff --git a/app/views/schedule/_session_item.html.erb b/app/views/schedule/_session_item.html.erb index da8cc22..7004294 100644 --- a/app/views/schedule/_session_item.html.erb +++ b/app/views/schedule/_session_item.html.erb @@ -1,14 +1,5 @@ <% - kind_label = { - "talk" => "Talk", - "lightning" => "Lightning", - "embassy" => "Embassy", - "activity" => "Activity", - "reception" => "Reception", - "meal" => "Meal", - "community" => "Community", - "volunteer" => "Volunteer" - }[item.kind] + kind_label = kind_display_label(item.kind) flexible_classes = item.flexible? ? "schedule-item--flexible" : "" existing_plan = current_user.plan_items.find_by(schedule_item: item) if planned diff --git a/app/views/shared/_kind_filter.html.erb b/app/views/shared/_kind_filter.html.erb index 2118eb2..1010356 100644 --- a/app/views/shared/_kind_filter.html.erb +++ b/app/views/shared/_kind_filter.html.erb @@ -11,8 +11,8 @@ base_path + (qp_clear.any? ? "?#{qp_clear.to_query}" : ""), class: "kind-filter__btn #{'kind-filter__btn--active' if selected_kind.blank?}" %> - <% ScheduleItem.kinds.each_key do |kind| %> - <%= link_to kind.humanize, + <% visible_filter_kinds(current_user).each do |kind| %> + <%= link_to kind_display_label(kind), base_path + "?#{request.query_parameters.merge(kind: kind).to_query}", class: "kind-filter__btn #{'kind-filter__btn--active' if selected_kind == kind}" %> <% end %>