This commit is contained in:
Asish Kumar 2026-06-27 18:17:28 +02:00 committed by GitHub
commit 0c8dcc3f90
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 57 additions and 6 deletions

View file

@ -12,10 +12,11 @@ class SchedulesController < ApplicationController
includes: [{ event: %i[event_type speakers submitter] }]
)
unless event_schedules
redirect_to events_conference_schedule_path(@conference.short_title)
return
end
# The +schedule_public+ flag opts a conference into displaying a schedule,
# but the schedule itself only exists once an admin has selected a schedule
# and at least one event has been scheduled. Return 404 to avoid rendering
# a broken page (or crashing) when the schedule has not yet been published.
return not_found if event_schedules.empty?
respond_to do |format|
format.xml do

View file

@ -163,6 +163,23 @@ class Program < ApplicationRecord
(!conference.email_settings.program_schedule_public_subject.blank? && !conference.email_settings.program_schedule_public_body.blank?)
end
##
# Checks if there is a published schedule that should be displayed.
# A schedule is displayable only when the admin has enabled the
# +schedule_public+ flag *and* there is at least one event scheduled,
# either on the conference-wide selected schedule or on the selected
# schedule of any confirmed self-organized track.
#
# ====Returns
# * +true+ -> When the schedule is public and contains at least one event
# * +false+ -> Otherwise
def any_published_schedule?
return false unless schedule_public
return true if selected_schedule&.event_schedules&.exists?
tracks.self_organized.confirmed.any? { |track| track.selected_schedule&.event_schedules&.exists? }
end
def languages_list
languages.split(',').map {|l| ISO_639.find(l).english_name} if languages.present?
end

View file

@ -24,7 +24,7 @@
- if !@conference || @conference != conference
- if conference.splashpage && conference.splashpage.public
= link_to "View Conference", conference_path(conference.short_title), class: 'btn btn-default'
- if conference.program and conference.program.schedule_public
- if conference.program&.any_published_schedule?
= link_to "Schedule", conference_schedule_path(conference.short_title), class: 'btn btn-default'
- if conference.code_of_conduct.present?
= link_to "Code of Conduct", code_of_conduct_conference_path(conference.short_title), class: 'btn btn-default'

View file

@ -24,7 +24,7 @@
- unless booths.blank?
= render 'booths', booths: booths
- if conference.program.try(:schedule_public?)
- if conference.program&.any_published_schedule?
.row
.col-md-12
%p.cta-button.text-center