class CalendarSetting include Mongoid::Document include Mongoid::Timestamps field :enable, type: Boolean, default: false field :modes, type: Hash, default: {}, localize: true field :days, type: Array, default: [], localize: true field :sunday_first, type: Boolean, localize: true field :date_type, type: Integer, localize: true, default: 0 field :titleFormat, localize: true All_days = (0...7).to_a ModesInfo = {'day'=>'timeGridDay', 'week'=>'timeGridWeek', 'month'=>'dayGridMonth', 'agenda'=>'agenda'} All_modes = ModesInfo.keys DateTypes = { "zh_tw"=>["[LocaleString]: 2022年7月12日 (週三)", "[en-US format]: weekday, monthname dd, YYYY", "[Locale Numeric]: YYYY/mm/dd (weekday)"], "en"=>["[LocaleString]: weekday, monthname dd, YYYY", "[en-US format]: weekday, monthname dd, YYYY", "[Locale Numeric]: weekday, mm/dd/YYYY"] } def week_title if self.days.present? self.days else (0...7).map{|i| I18n.t("calendar.day.#{i}")} end end def get_week_title(locale) tmp = self.days_translations[locale] if tmp.present? tmp else I18n.with_locale(locale){All_days.map{|i| I18n.t("calendar.day.#{i}")}} end end def sunday_first val = super if val.nil? if I18n.locale == :zh_tw val = false else val = true end end val end def get_sunday_first(locale) val = self.sunday_first_translations[locale] if val.nil? if locale == :zh_tw val = false else val = true end end val end def get_mode(mode, locale) tmp = self.modes_translations[locale] || {} val = tmp[mode] if val.nil? val = I18n.with_locale(locale){I18n.t("calendar.mode.#{mode}")} end val end def get_modes(use_default=false) tmp = self.modes_translations[I18n.locale] if tmp.blank? || use_default All_modes.map{|m| [m, I18n.t("calendar.mode.#{m}")]}.to_h else tmp end end def get_modes_info(use_default=false) tmp = self.get_modes(use_default || !(self.enable)) tmp.map{|m, trans| [trans, ModesInfo[m]]} end def titleFormat tmp = super if tmp.nil? tmp = 'dddd, MMMM D, YYYY' end tmp end end