28 lines
628 B
Ruby
28 lines
628 B
Ruby
# frozen_string_literal: true
|
|
|
|
module DiscourseCalendar
|
|
class CalendarValidator
|
|
def initialize(post)
|
|
@post = post
|
|
end
|
|
|
|
def validate_calendar
|
|
extracted_calendars = DiscourseCalendar::Calendar.extract(@post)
|
|
|
|
return false if extracted_calendars.count == 0
|
|
|
|
if extracted_calendars.count > 1
|
|
@post.errors.add(:base, I18n.t("discourse_calendar.more_than_one_calendar"))
|
|
return false
|
|
end
|
|
|
|
if !@post.is_first_post?
|
|
@post.errors.add(:base, I18n.t("discourse_calendar.calendar_must_be_in_first_post"))
|
|
return false
|
|
end
|
|
|
|
true
|
|
end
|
|
end
|
|
end
|