diff --git a/ht_booking/assets/i18n/en/main.ftl b/ht_booking/assets/i18n/en/main.ftl index fa93f49..bd09727 100644 --- a/ht_booking/assets/i18n/en/main.ftl +++ b/ht_booking/assets/i18n/en/main.ftl @@ -53,6 +53,7 @@ settings = Settings settings-language = Language settings-theme = Theme view-details = Details +pick-week = Go to week hour-from = From hour-to = Until repeat-weeks = Repeat for (weeks) diff --git a/ht_booking/assets/i18n/sk/main.ftl b/ht_booking/assets/i18n/sk/main.ftl index 762d503..61c7573 100644 --- a/ht_booking/assets/i18n/sk/main.ftl +++ b/ht_booking/assets/i18n/sk/main.ftl @@ -53,6 +53,7 @@ settings = Nastavenia settings-language = Jazyk settings-theme = Téma view-details = Detaily +pick-week = Prejsť na týždeň hour-from = Od hour-to = Do repeat-weeks = Opakovať (počet týždňov) diff --git a/ht_booking/assets/views/admin/booking_form.html b/ht_booking/assets/views/admin/booking_form.html index 579f2d4..8b5d5fd 100644 --- a/ht_booking/assets/views/admin/booking_form.html +++ b/ht_booking/assets/views/admin/booking_form.html @@ -10,7 +10,7 @@

{% if mode == "edit" %}{{ t(key="edit-booking", lang=lang) }}{% else %}{{ t(key="add-booking", lang=lang) }}{% endif %}

- « {{ t(key="back-to-calendar", lang=lang) }} + « {{ t(key="back-to-calendar", lang=lang) }}
@@ -84,7 +84,7 @@
- {{ t(key="cancel", lang=lang) }} + {{ t(key="cancel", lang=lang) }}
diff --git a/ht_booking/assets/views/calendar/week.html b/ht_booking/assets/views/calendar/week.html index 9aba281..82b1ff6 100644 --- a/ht_booking/assets/views/calendar/week.html +++ b/ht_booking/assets/views/calendar/week.html @@ -73,8 +73,12 @@
{{ court_name }} · {{ week_label }}
@@ -190,5 +209,22 @@ }); })(); + {% endif %} {% endblock js %} diff --git a/ht_booking/src/controllers/calendar.rs b/ht_booking/src/controllers/calendar.rs index 27f94b9..3dfd478 100644 --- a/ht_booking/src/controllers/calendar.rs +++ b/ht_booking/src/controllers/calendar.rs @@ -86,6 +86,9 @@ pub struct CalendarPage { pub prev_week: String, pub this_week: String, pub next_week: String, + /// `false` on the public calendar once it reaches the two-week look-back + /// limit, which disables the "previous week" button. Always `true` for admin. + pub can_prev: bool, pub days: Vec, pub rows: Vec, } @@ -185,6 +188,10 @@ pub async fn build_calendar( .unwrap_or_default(); let monday = week_monday(q_week.as_deref()); + // The public calendar may look back at most two weeks; the admin has no limit. + let min_monday = monday_of(Utc::now().date_naive()) - Duration::weeks(2); + let monday = if is_admin { monday } else { monday.max(min_monday) }; + let can_prev = is_admin || monday > min_monday; let sunday = monday + Duration::days(6); let days: Vec = (0..7i64) @@ -269,6 +276,7 @@ pub async fn build_calendar( .format("%Y-%m-%d") .to_string(), next_week: (monday + Duration::days(7)).format("%Y-%m-%d").to_string(), + can_prev, days, rows, })