FEATURE: Add user preferences field to select region (#44)

This commit is contained in:
Dan Ungureanu 2020-06-18 11:29:08 +03:00 committed by GitHub
parent 13be89627a
commit b832232268
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 798 additions and 4 deletions

View File

@ -0,0 +1,25 @@
import { action } from "@ember/object";
import { TIME_ZONE_TO_REGION } from "discourse/plugins/discourse-calendar/lib/regions";
export default {
setupComponent(args, component) {
component.setProperties({
@action
onChange(value) {
this.model.set("custom_fields.holidays-region", value);
},
@action
useCurrentRegion() {
this.model.set(
"custom_fields.holidays-region",
TIME_ZONE_TO_REGION[moment.tz.guess()] || "us"
);
}
});
},
shouldRender(args, component) {
return component.siteSettings.calendar_enabled;
}
};

View File

@ -0,0 +1,28 @@
import { computed } from "@ember/object";
import { HOLIDAY_REGIONS } from "discourse/plugins/discourse-calendar/lib/regions";
import I18n from "I18n";
import ComboBoxComponent from "select-kit/components/combo-box";
export default ComboBoxComponent.extend({
pluginApiIdentifiers: ["timezone-input"],
classNames: ["timezone-input"],
selectKitOptions: {
filterable: true,
allowAny: false
},
content: computed(function() {
const localeNames = {};
JSON.parse(this.siteSettings.available_locales).forEach(locale => {
localeNames[locale.value] = locale.name;
});
return HOLIDAY_REGIONS.map(region => {
return {
name: I18n.t(`discourse_calendar.region.names.${region}`),
id: region
};
});
})
});

View File

@ -0,0 +1,454 @@
// DO NOT EDIT THIS FILE!!!
// Update it by running `rake javascript:update_constants`
export const HOLIDAY_REGIONS = [
"ar",
"at",
"au",
"au_nsw",
"au_vic",
"au_qld",
"au_nt",
"au_act",
"au_sa",
"au_wa",
"au_tas",
"au_tas_south",
"au_qld_cairns",
"au_qld_brisbane",
"au_tas_north",
"au_vic_melbourne",
"be_fr",
"be_nl",
"br",
"bg_en",
"bg_bg",
"ca",
"ca_qc",
"ca_ab",
"ca_sk",
"ca_on",
"ca_bc",
"ca_nb",
"ca_mb",
"ca_ns",
"ca_pe",
"ca_nl",
"ca_nt",
"ca_nu",
"ca_yt",
"us",
"ch_zh",
"ch_be",
"ch_lu",
"ch_ur",
"ch_sz",
"ch_ow",
"ch_nw",
"ch_gl",
"ch_zg",
"ch_fr",
"ch_so",
"ch_bs",
"ch_bl",
"ch_sh",
"ch_ar",
"ch_ai",
"ch_sg",
"ch_gr",
"ch_ag",
"ch_tg",
"ch_ti",
"ch_vd",
"ch_ne",
"ch_ge",
"ch_ju",
"ch_vs",
"ch",
"cl",
"co",
"cr",
"cz",
"dk",
"de",
"de_bw",
"de_by",
"de_he",
"de_nw",
"de_rp",
"de_sl",
"de_sn_sorbian",
"de_th_cath",
"de_sn",
"de_st",
"de_be",
"de_by_cath",
"de_by_augsburg",
"de_bb",
"de_mv",
"de_th",
"de_hb",
"de_hh",
"de_ni",
"de_sh",
"ee",
"el",
"es_pv",
"es_na",
"es_an",
"es_ib",
"es_cm",
"es_mu",
"es_m",
"es_ar",
"es_cl",
"es_cn",
"es_lo",
"es_ga",
"es_ce",
"es_o",
"es_ex",
"es",
"es_ct",
"es_v",
"es_vc",
"fi",
"fr_a",
"fr_m",
"fr",
"gb",
"gb_eng",
"gb_wls",
"gb_eaw",
"gb_nir",
"je",
"gb_jsy",
"gg",
"gb_gsy",
"gb_sct",
"gb_con",
"im",
"gb_iom",
"ge",
"hr",
"hk",
"hu",
"ie",
"is",
"it",
"it_ve",
"it_tv",
"it_vr",
"it_pd",
"it_fi",
"it_ge",
"it_to",
"it_rm",
"it_vi",
"it_bl",
"it_ro",
"kr",
"li",
"lt",
"lv",
"ma",
"mt_mt",
"mt_en",
"mx",
"mx_pue",
"nl",
"lu",
"no",
"nyse",
"nz",
"nz_sl",
"nz_we",
"nz_ak",
"nz_nl",
"nz_ne",
"nz_ot",
"nz_ta",
"nz_sc",
"nz_hb",
"nz_mb",
"nz_ca",
"nz_ch",
"nz_wl",
"pe",
"ph",
"pl",
"pt",
"pt_li",
"pt_po",
"ro",
"rs_cyrl",
"rs_la",
"ru",
"se",
"tn",
"tr",
"ua",
"us_fl",
"us_la",
"us_ct",
"us_de",
"us_gu",
"us_hi",
"us_in",
"us_ky",
"us_nj",
"us_nc",
"us_nd",
"us_pr",
"us_tn",
"us_ms",
"us_id",
"us_ar",
"us_tx",
"us_dc",
"us_md",
"us_va",
"us_vt",
"us_ak",
"us_ca",
"us_me",
"us_ma",
"us_al",
"us_ga",
"us_ne",
"us_mo",
"us_sc",
"us_wv",
"us_vi",
"us_ut",
"us_ri",
"us_az",
"us_co",
"us_il",
"us_mt",
"us_nm",
"us_ny",
"us_oh",
"us_pa",
"us_mi",
"us_mn",
"us_nv",
"us_or",
"us_sd",
"us_wa",
"us_wi",
"us_wy",
"us_ia",
"us_ks",
"us_nh",
"us_ok",
"za",
"ve",
"sk",
"si",
"jp",
"vi",
"sg",
"my",
"th",
];
export const TIME_ZONE_TO_REGION = {
"America/Argentina/Buenos_Aires": "ar",
"America/Argentina/Cordoba": "ar",
"America/Argentina/Salta": "ar",
"America/Argentina/Jujuy": "ar",
"America/Argentina/Tucuman": "ar",
"America/Argentina/Catamarca": "ar",
"America/Argentina/La_Rioja": "ar",
"America/Argentina/San_Juan": "ar",
"America/Argentina/Mendoza": "ar",
"America/Argentina/San_Luis": "ar",
"America/Argentina/Rio_Gallegos": "ar",
"America/Argentina/Ushuaia": "ar",
"Europe/Vienna": "at",
"Australia/Lord_Howe": "au",
"Antarctica/Macquarie": "au",
"Australia/Hobart": "au",
"Australia/Currie": "au",
"Australia/Melbourne": "au",
"Australia/Sydney": "au",
"Australia/Broken_Hill": "au",
"Australia/Brisbane": "au",
"Australia/Lindeman": "au",
"Australia/Adelaide": "au",
"Australia/Darwin": "au",
"Australia/Perth": "au",
"Australia/Eucla": "au",
"America/Noronha": "br",
"America/Belem": "br",
"America/Fortaleza": "br",
"America/Recife": "br",
"America/Araguaina": "br",
"America/Maceio": "br",
"America/Bahia": "br",
"America/Sao_Paulo": "br",
"America/Campo_Grande": "br",
"America/Cuiaba": "br",
"America/Santarem": "br",
"America/Porto_Velho": "br",
"America/Boa_Vista": "br",
"America/Manaus": "br",
"America/Eirunepe": "br",
"America/Rio_Branco": "br",
"America/St_Johns": "ca",
"America/Halifax": "ca",
"America/Glace_Bay": "ca",
"America/Moncton": "ca",
"America/Goose_Bay": "ca",
"America/Blanc-Sablon": "ca",
"America/Toronto": "ca",
"America/Nipigon": "ca",
"America/Thunder_Bay": "ca",
"America/Iqaluit": "ca",
"America/Pangnirtung": "ca",
"America/Atikokan": "ca",
"America/Winnipeg": "ca",
"America/Rainy_River": "ca",
"America/Resolute": "ca",
"America/Rankin_Inlet": "ca",
"America/Regina": "ca",
"America/Swift_Current": "ca",
"America/Edmonton": "ca",
"America/Cambridge_Bay": "ca",
"America/Yellowknife": "ca",
"America/Inuvik": "ca",
"America/Creston": "ca",
"America/Dawson_Creek": "ca",
"America/Fort_Nelson": "ca",
"America/Vancouver": "ca",
"America/Whitehorse": "ca",
"America/Dawson": "ca",
"Europe/Zurich": "ch",
"America/Santiago": "cl",
"America/Punta_Arenas": "cl",
"Pacific/Easter": "cl",
"America/Bogota": "co",
"America/Costa_Rica": "cr",
"Europe/Prague": "cz",
"Europe/Berlin": "de",
"Europe/Copenhagen": "dk",
"Europe/Tallinn": "ee",
"Europe/Madrid": "es",
"Africa/Ceuta": "es",
"Atlantic/Canary": "es",
"Europe/Helsinki": "fi",
"Europe/Paris": "fr",
"Europe/London": "gb",
"Asia/Tbilisi": "ge",
"Asia/Hong_Kong": "hk",
"Europe/Budapest": "hu",
"Europe/Dublin": "ie",
"Atlantic/Reykjavik": "is",
"Europe/Rome": "it",
"Asia/Tokyo": "jp",
"Asia/Seoul": "kr",
"Europe/Vilnius": "lt",
"Europe/Luxembourg": "lu",
"Europe/Riga": "lv",
"Africa/Casablanca": "ma",
"America/Mexico_City": "mx",
"America/Cancun": "mx",
"America/Merida": "mx",
"America/Monterrey": "mx",
"America/Matamoros": "mx",
"America/Mazatlan": "mx",
"America/Chihuahua": "mx",
"America/Ojinaga": "mx",
"America/Hermosillo": "mx",
"America/Tijuana": "mx",
"America/Bahia_Banderas": "mx",
"Asia/Kuala_Lumpur": "my",
"Asia/Kuching": "my",
"Europe/Amsterdam": "nl",
"Europe/Oslo": "no",
"Pacific/Auckland": "nz",
"Pacific/Chatham": "nz",
"America/Lima": "pe",
"Asia/Manila": "ph",
"Europe/Warsaw": "pl",
"Europe/Lisbon": "pt",
"Atlantic/Madeira": "pt",
"Atlantic/Azores": "pt",
"Europe/Bucharest": "ro",
"Europe/Kaliningrad": "ru",
"Europe/Moscow": "ru",
"Europe/Simferopol": "ru",
"Europe/Kirov": "ru",
"Europe/Astrakhan": "ru",
"Europe/Volgograd": "ru",
"Europe/Saratov": "ru",
"Europe/Ulyanovsk": "ru",
"Europe/Samara": "ru",
"Asia/Yekaterinburg": "ru",
"Asia/Omsk": "ru",
"Asia/Novosibirsk": "ru",
"Asia/Barnaul": "ru",
"Asia/Tomsk": "ru",
"Asia/Novokuznetsk": "ru",
"Asia/Krasnoyarsk": "ru",
"Asia/Irkutsk": "ru",
"Asia/Chita": "ru",
"Asia/Yakutsk": "ru",
"Asia/Khandyga": "ru",
"Asia/Vladivostok": "ru",
"Asia/Ust-Nera": "ru",
"Asia/Magadan": "ru",
"Asia/Sakhalin": "ru",
"Asia/Srednekolymsk": "ru",
"Asia/Kamchatka": "ru",
"Asia/Anadyr": "ru",
"Europe/Stockholm": "se",
"Asia/Singapore": "sg",
"Asia/Bangkok": "th",
"Africa/Tunis": "tn",
"Europe/Istanbul": "tr",
"Europe/Kiev": "ua",
"Europe/Uzhgorod": "ua",
"Europe/Zaporozhye": "ua",
"America/New_York": "us",
"America/Detroit": "us",
"America/Kentucky/Louisville": "us",
"America/Kentucky/Monticello": "us",
"America/Indiana/Indianapolis": "us",
"America/Indiana/Vincennes": "us",
"America/Indiana/Winamac": "us",
"America/Indiana/Marengo": "us",
"America/Indiana/Petersburg": "us",
"America/Indiana/Vevay": "us",
"America/Chicago": "us",
"America/Indiana/Tell_City": "us",
"America/Indiana/Knox": "us",
"America/Menominee": "us",
"America/North_Dakota/Center": "us",
"America/North_Dakota/New_Salem": "us",
"America/North_Dakota/Beulah": "us",
"America/Denver": "us",
"America/Boise": "us",
"America/Phoenix": "us",
"America/Los_Angeles": "us",
"America/Anchorage": "us",
"America/Juneau": "us",
"America/Sitka": "us",
"America/Metlakatla": "us",
"America/Yakutat": "us",
"America/Nome": "us",
"America/Adak": "us",
"Pacific/Honolulu": "us",
"America/Caracas": "ve",
"Africa/Johannesburg": "za",
"Europe/Busingen": "de",
"Europe/Guernsey": "gg",
"Europe/Zagreb": "hr",
"Europe/Isle_of_Man": "im",
"Europe/Jersey": "je",
"Europe/Vaduz": "li",
"Europe/Ljubljana": "si",
"Europe/Bratislava": "sk",
"America/St_Thomas": "vi",
};

View File

@ -0,0 +1,11 @@
<div class="control-group">
<label class="control-label">{{i18n 'discourse_calendar.region.title'}}</label>
<div class="controls">
{{region-input
value=model.custom_fields.holidays-region
onChange=(action "onChange")
class="input-xxlarge"
}}
</div>
{{d-button icon="globe" label="discourse_calendar.region.use_current_region" action=(action "useCurrentRegion") }}
</div>

View File

@ -11,10 +11,262 @@ en:
on_holiday: "On Holiday"
holiday: "Holiday"
add_to_calendar: "Add to Google Calendar"
timezone:
title: "Timezone"
instructions: "Your current timezone is %{timezone}."
none: "Select a timezone..."
region:
title: "Region"
none: "Select a region..."
use_current_region: "Use Current Region"
names:
ar: "Argentina"
at: "Austria"
au_act: "Australia (au_act)"
au_nsw: "Australia (au_nsw)"
au_nt: "Australia (au_nt)"
au_qld_brisbane: "Australia (au_qld_brisbane)"
au_qld_cairns: "Australia (au_qld_cairns)"
au_qld: "Australia (au_qld)"
au_sa: "Australia (au_sa)"
au_tas_north: "Australia (au_tas_north)"
au_tas_south: "Australia (au_tas_south)"
au_tas: "Australia (au_tas)"
au_vic_melbourne: "Australia (au_vic_melbourne)"
au_vic: "Australia (au_vic)"
au_wa: "Australia (au_wa)"
au: "Australia"
be_fr: "Belgium (be_fr)"
be_nl: "Belgium (be_nl)"
bg_bg: "Bulgaria (bg_bg)"
bg_en: "Bulgaria (bg_en)"
br: "Brazil"
ca_ab: "Canada (ca_ab)"
ca_bc: "Canada (ca_bc)"
ca_mb: "Canada (ca_mb)"
ca_nb: "Canada (ca_nb)"
ca_nl: "Canada (ca_nl)"
ca_ns: "Canada (ca_ns)"
ca_nt: "Canada (ca_nt)"
ca_nu: "Canada (ca_nu)"
ca_on: "Canada (ca_on)"
ca_pe: "Canada (ca_pe)"
ca_qc: "Canada (ca_qc)"
ca_sk: "Canada (ca_sk)"
ca_yt: "Canada (ca_yt)"
ca: "Canada"
ch_ag: "Switzerland (ch_ag)"
ch_ai: "Switzerland (ch_ai)"
ch_ar: "Switzerland (ch_ar)"
ch_be: "Switzerland (ch_be)"
ch_bl: "Switzerland (ch_bl)"
ch_bs: "Switzerland (ch_bs)"
ch_fr: "Switzerland (ch_fr)"
ch_ge: "Switzerland (ch_ge)"
ch_gl: "Switzerland (ch_gl)"
ch_gr: "Switzerland (ch_gr)"
ch_ju: "Switzerland (ch_ju)"
ch_lu: "Switzerland (ch_lu)"
ch_ne: "Switzerland (ch_ne)"
ch_nw: "Switzerland (ch_nw)"
ch_ow: "Switzerland (ch_ow)"
ch_sg: "Switzerland (ch_sg)"
ch_sh: "Switzerland (ch_sh)"
ch_so: "Switzerland (ch_so)"
ch_sz: "Switzerland (ch_sz)"
ch_tg: "Switzerland (ch_tg)"
ch_ti: "Switzerland (ch_ti)"
ch_ur: "Switzerland (ch_ur)"
ch_vd: "Switzerland (ch_vd)"
ch_vs: "Switzerland (ch_vs)"
ch_zg: "Switzerland (ch_zg)"
ch_zh: "Switzerland (ch_zh)"
ch: "Switzerland"
cl: "Chile"
co: "Colombia"
cr: "Costa Rica"
cz: "Czech Republic"
de_bb: "Germany (de_bb)"
de_be: "Germany (de_be)"
de_bw: "Germany (de_bw)"
de_by_augsburg: "Germany (de_by_augsburg)"
de_by_cath: "Germany (de_by_cath)"
de_by: "Germany (de_by)"
de_hb: "Germany (de_hb)"
de_he: "Germany (de_he)"
de_hh: "Germany (de_hh)"
de_mv: "Germany (de_mv)"
de_ni: "Germany (de_ni)"
de_nw: "Germany (de_nw)"
de_rp: "Germany (de_rp)"
de_sh: "Germany (de_sh)"
de_sl: "Germany (de_sl)"
de_sn_sorbian: "Germany (de_sn_sorbian)"
de_sn: "Germany (de_sn)"
de_st: "Germany (de_st)"
de_th_cath: "Germany (de_th_cath)"
de_th: "Germany (de_th)"
de: "Germany"
dk: "Denmark"
ee: "Estonia"
el: "Greece"
es_an: "Spain (es_an)"
es_ar: "Spain (es_ar)"
es_ce: "Spain (es_ce)"
es_cl: "Spain (es_cl)"
es_cm: "Spain (es_cm)"
es_cn: "Spain (es_cn)"
es_ct: "Spain (es_ct)"
es_ex: "Spain (es_ex)"
es_ga: "Spain (es_ga)"
es_ib: "Spain (es_ib)"
es_lo: "Spain (es_lo)"
es_m: "Spain (es_m)"
es_mu: "Spain (es_mu)"
es_na: "Spain (es_na)"
es_o: "Spain (es_o)"
es_pv: "Spain (es_pv)"
es_v: "Spain (es_v)"
es_vc: "Spain (es_vc)"
es: "Spain"
fi: "Finland"
fr_a: "France (fr_a)"
fr_m: "France (fr_m)"
fr: "France"
gb_con: "United Kingdom (gb_con)"
gb_eaw: "United Kingdom (gb_eaw)"
gb_eng: "United Kingdom (gb_eng)"
gb_gsy: "United Kingdom (gb_gsy)"
gb_iom: "United Kingdom (gb_iom)"
gb_jsy: "United Kingdom (gb_jsy)"
gb_nir: "United Kingdom (gb_nir)"
gb_sct: "United Kingdom (gb_sct)"
gb_wls: "United Kingdom (gb_wls)"
gb: "United Kingdom"
ge: "Georgia"
gg: "Guernsey"
hk: "Hong Kong"
hr: "Croatia"
hu: "Hungary"
ie: "Ireland"
im: "Isle of Man"
is: "Iceland"
it_bl: "Italy (it_bl)"
it_fi: "Italy (it_fi)"
it_ge: "Italy (it_ge)"
it_pd: "Italy (it_pd)"
it_rm: "Italy (it_rm)"
it_ro: "Italy (it_ro)"
it_to: "Italy (it_to)"
it_tv: "Italy (it_tv)"
it_ve: "Italy (it_ve)"
it_vi: "Italy (it_vi)"
it_vr: "Italy (it_vr)"
it: "Italy"
je: "Jersey"
jp: "Japan"
kr: "Korea (Republic of)"
li: "Liechtenstein"
lt: "Lithuania"
lu: "Luxembourg"
lv: "Latvia"
ma: "Morocco"
mt_en: "Malta (mt_en)"
mt_mt: "Malta (mt_mt)"
mx_pue: "Mexico (mx_pue)"
mx: "Mexico"
my: "Malaysia"
ng: "Nigeria"
nl: "Netherlands"
no: "Norway"
nz_ak: "New Zealand (nz_ak)"
nz_ca: "New Zealand (nz_ca)"
nz_ch: "New Zealand (nz_ch)"
nz_hb: "New Zealand (nz_hb)"
nz_mb: "New Zealand (nz_mb)"
nz_ne: "New Zealand (nz_ne)"
nz_nl: "New Zealand (nz_nl)"
nz_ot: "New Zealand (nz_ot)"
nz_sc: "New Zealand (nz_sc)"
nz_sl: "New Zealand (nz_sl)"
nz_ta: "New Zealand (nz_ta)"
nz_we: "New Zealand (nz_we)"
nz_wl: "New Zealand (nz_wl)"
nz: "New Zealand"
pe: "Peru"
ph: "Philippines"
pl: "Poland"
pt_li: "Portugal (pt_li)"
pt_po: "Portugal (pt_po)"
pt: "Portugal"
ro: "Romania"
rs_cyrl: "Serbia (rs_cyrl)"
rs_la: "Serbia (rs_la)"
ru: "Russian Federation"
se: "Sweden"
sg: "Singapore"
si: "Slovenia"
sk: "Slovakia"
th: "Thailand"
tn: "Tunisia"
tr: "Turkey"
ua: "Ukraine"
unitednations: " (unitednations)"
ups: " (ups)"
us_ak: "United States (us_ak)"
us_al: "United States (us_al)"
us_ar: "United States (us_ar)"
us_az: "United States (us_az)"
us_ca: "United States (us_ca)"
us_co: "United States (us_co)"
us_ct: "United States (us_ct)"
us_dc: "United States (us_dc)"
us_de: "United States (us_de)"
us_fl: "United States (us_fl)"
us_ga: "United States (us_ga)"
us_gu: "United States (us_gu)"
us_hi: "United States (us_hi)"
us_ia: "United States (us_ia)"
us_id: "United States (us_id)"
us_il: "United States (us_il)"
us_in: "United States (us_in)"
us_ks: "United States (us_ks)"
us_ky: "United States (us_ky)"
us_la: "United States (us_la)"
us_ma: "United States (us_ma)"
us_md: "United States (us_md)"
us_me: "United States (us_me)"
us_mi: "United States (us_mi)"
us_mn: "United States (us_mn)"
us_mo: "United States (us_mo)"
us_ms: "United States (us_ms)"
us_mt: "United States (us_mt)"
us_nc: "United States (us_nc)"
us_nd: "United States (us_nd)"
us_ne: "United States (us_ne)"
us_nh: "United States (us_nh)"
us_nj: "United States (us_nj)"
us_nm: "United States (us_nm)"
us_nv: "United States (us_nv)"
us_ny: "United States (us_ny)"
us_oh: "United States (us_oh)"
us_ok: "United States (us_ok)"
us_or: "United States (us_or)"
us_pa: "United States (us_pa)"
us_pr: "United States (us_pr)"
us_ri: "United States (us_ri)"
us_sc: "United States (us_sc)"
us_sd: "United States (us_sd)"
us_tn: "United States (us_tn)"
us_tx: "United States (us_tx)"
us_ut: "United States (us_ut)"
us_va: "United States (us_va)"
us_vi: "United States (us_vi)"
us_vt: "United States (us_vt)"
us_wa: "United States (us_wa)"
us_wi: "United States (us_wi)"
us_wv: "United States (us_wv)"
us_wy: "United States (us_wy)"
us: "United States"
ve: "Venezuela"
vi: "Virgin Islands (U.S.)"
za: "South Africa"
group_timezones:
search: "Search..."
group_availability: "%{group} availability"

21
lib/tasks/javascript.rake Normal file
View File

@ -0,0 +1,21 @@
TIMEZONES_DEFINITIONS = 'https://raw.githubusercontent.com/moment/moment-timezone/develop/data/meta/latest.json'
UNUSED_REGIONS = ["ecbtarget", "federalreserve", "federalreservebanks", "fedex", "nerc", "unitednations", "ups"]
task 'javascript:update_constants' => :environment do
require 'holidays'
holiday_regions = Holidays.available_regions.map(&:to_s) - UNUSED_REGIONS
time_zone_to_region = {}
data = JSON.parse(URI.open(TIMEZONES_DEFINITIONS).read)
data['zones'].each do |timezone, timezone_data|
country_code = timezone_data['countries'].first.downcase
next if !holiday_regions.include?(country_code)
time_zone_to_region[timezone] = country_code
end
write_template("../../../plugins/discourse-calendar/assets/javascripts/lib/regions.js.es6", <<~JS)
export const HOLIDAY_REGIONS = #{holiday_regions.to_json};
export const TIME_ZONE_TO_REGION = #{time_zone_to_region.to_json};
JS
end

View File

@ -240,6 +240,9 @@ after_initialize do
register_user_custom_field_type(DiscourseCalendar::HOLIDAY_CUSTOM_FIELD, :boolean)
whitelist_staff_user_custom_field(DiscourseCalendar::HOLIDAY_CUSTOM_FIELD)
register_editable_user_custom_field(DiscourseCalendar::REGION_CUSTOM_FIELD)
whitelist_staff_user_custom_field(DiscourseCalendar::REGION_CUSTOM_FIELD)
on(:site_setting_changed) do |name, old_value, new_value|
next unless [:all_day_event_start_time, :all_day_event_end_time].include? name