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 %>
|