diff --git a/modules/common/src/main/scala/docspell/common/EmptyTrashArgs.scala b/modules/common/src/main/scala/docspell/common/EmptyTrashArgs.scala index d0436bb7..8e76d2d5 100644 --- a/modules/common/src/main/scala/docspell/common/EmptyTrashArgs.scala +++ b/modules/common/src/main/scala/docspell/common/EmptyTrashArgs.scala @@ -33,7 +33,7 @@ object EmptyTrashArgs { val taskName = Ident.unsafe("empty-trash") - val defaultSchedule = CalEvent.unsafe("*-*-1/7 03:00:00") + val defaultSchedule = CalEvent.unsafe("*-*-1/7 03:00:00 UTC") def periodicTaskId(coll: Ident): Ident = Ident.unsafe(s"docspell") / taskName / coll diff --git a/modules/common/src/main/scala/docspell/common/Timestamp.scala b/modules/common/src/main/scala/docspell/common/Timestamp.scala index c056c2a8..e72ada64 100644 --- a/modules/common/src/main/scala/docspell/common/Timestamp.scala +++ b/modules/common/src/main/scala/docspell/common/Timestamp.scala @@ -6,10 +6,8 @@ package docspell.common -import java.time.LocalDateTime -import java.time.ZonedDateTime import java.time.temporal.ChronoUnit -import java.time.{Instant, LocalDate, ZoneId} +import java.time.{Duration => _, _} import cats.effect.Sync @@ -57,7 +55,7 @@ case class Timestamp(value: Instant) { } object Timestamp { - val UTC = ZoneId.of("UTC") + val UTC: ZoneId = ZoneOffset.UTC val Epoch = Timestamp(Instant.EPOCH) diff --git a/modules/joex/src/main/resources/reference.conf b/modules/joex/src/main/resources/reference.conf index 5bb7bacf..8516c916 100644 --- a/modules/joex/src/main/resources/reference.conf +++ b/modules/joex/src/main/resources/reference.conf @@ -144,7 +144,7 @@ docspell.joex { # When the house keeping tasks execute. Default is to run every # week. - schedule = "Sun *-*-* 00:00:00" + schedule = "Sun *-*-* 00:00:00 UTC" # This task removes invitation keys that have been created but not # used. The timespan here must be greater than the `invite-time' @@ -209,8 +209,9 @@ docspell.joex { test-run = false # When the update check should execute. Default is to run every - # week. - schedule = "Sun *-*-* 00:00:00" + # week. You can specify a time zone identifier, like + # 'Europe/Berlin' at the end. + schedule = "Sun *-*-* 00:00:00 UTC" # An account id in form of `collective/user` (or just `user` if # collective and user name are the same). This user account must diff --git a/modules/webapp/elm.json b/modules/webapp/elm.json index 79183300..2d5a8a4a 100644 --- a/modules/webapp/elm.json +++ b/modules/webapp/elm.json @@ -22,6 +22,7 @@ "elm/url": "1.0.0", "elm-explorations/markdown": "1.0.0", "justinmimbs/date": "3.1.2", + "justinmimbs/timezone-data": "5.1.2", "norpan/elm-html5-drag-drop": "3.1.4", "pablohirafuji/elm-qrcode": "4.0.1", "ryannhg/date-format": "2.3.0", diff --git a/modules/webapp/src/main/elm/App/Update.elm b/modules/webapp/src/main/elm/App/Update.elm index d2cc9b5f..e052010f 100644 --- a/modules/webapp/src/main/elm/App/Update.elm +++ b/modules/webapp/src/main/elm/App/Update.elm @@ -68,7 +68,7 @@ updateWithSub : Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) updateWithSub msg model = let texts = - Messages.get <| App.Data.getUiLanguage model + Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone in case msg of ToggleSidebar -> @@ -566,7 +566,7 @@ updateCollSettings texts lmsg model = let ( lm, lc, ls ) = Page.CollectiveSettings.Update.update texts.collectiveSettings - model.flags + (modelEnv model) lmsg model.collSettingsModel in @@ -648,7 +648,7 @@ initPage model_ page = { model_ | page = page } texts = - Messages.get <| App.Data.getUiLanguage model + Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone noop = ( model, Cmd.none, Sub.none ) diff --git a/modules/webapp/src/main/elm/App/View2.elm b/modules/webapp/src/main/elm/App/View2.elm index 6913438e..3aae360c 100644 --- a/modules/webapp/src/main/elm/App/View2.elm +++ b/modules/webapp/src/main/elm/App/View2.elm @@ -59,7 +59,7 @@ topNavUser : AuthResult -> Model -> Html Msg topNavUser auth model = let texts = - Messages.get <| App.Data.getUiLanguage model + Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone in nav [ id "top-nav" @@ -161,7 +161,7 @@ mainContent : Model -> Html Msg mainContent model = let texts = - Messages.get <| App.Data.getUiLanguage model + Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone in div [ id "main" @@ -227,12 +227,12 @@ langMenu : Model -> Html Msg langMenu model = let texts = - Messages.get <| App.Data.getUiLanguage model + Messages.get (App.Data.getUiLanguage model) model.uiSettings.timeZone langItem lang = let langMsg = - Messages.get lang + Messages.get lang model.uiSettings.timeZone in a [ classList diff --git a/modules/webapp/src/main/elm/Comp/CalEventInput.elm b/modules/webapp/src/main/elm/Comp/CalEventInput.elm index 6cd881ef..24cb0121 100644 --- a/modules/webapp/src/main/elm/Comp/CalEventInput.elm +++ b/modules/webapp/src/main/elm/Comp/CalEventInput.elm @@ -18,6 +18,7 @@ import Api.Model.CalEventCheck exposing (CalEventCheck) import Api.Model.CalEventCheckResult exposing (CalEventCheckResult) import Data.CalEvent exposing (CalEvent) import Data.Flags exposing (Flags) +import Data.TimeZone exposing (TimeZone) import Data.Validated exposing (Validated(..)) import Html exposing (..) import Html.Attributes exposing (..) @@ -109,8 +110,8 @@ isCheckError model = False -update : Flags -> Maybe CalEvent -> Msg -> Model -> ( Model, Cmd Msg, Maybe CalEvent ) -update flags mev msg model = +update : Flags -> TimeZone -> Maybe CalEvent -> Msg -> Model -> ( Model, Cmd Msg, Maybe CalEvent ) +update flags tz mev msg model = let ev = Maybe.withDefault model.inner mev @@ -153,7 +154,7 @@ update flags mev msg model = ( m , Cmd.none , if res.success then - Just event + Just { event | timeZone = tz } else Nothing diff --git a/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm b/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm index cac96061..f4dd6129 100644 --- a/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm +++ b/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm @@ -26,6 +26,7 @@ import Data.DropdownStyle as DS import Data.Flags exposing (Flags) import Data.ListType exposing (ListType) import Data.TagOrder +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (UiSettings) import Html exposing (..) import Html.Attributes exposing (..) @@ -111,8 +112,8 @@ getSettings model = model.schedule -update : Flags -> Msg -> Model -> ( Model, Cmd Msg ) -update flags msg model = +update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg ) +update flags tz msg model = case msg of GetTagsResp (Ok tl) -> let @@ -123,7 +124,7 @@ update flags msg model = lm = Comp.Dropdown.SetOptions categories in - update flags (CategoryListMsg lm) model + update flags tz (CategoryListMsg lm) model GetTagsResp (Err _) -> ( model, Cmd.none ) @@ -133,6 +134,7 @@ update flags msg model = ( cm, cc, ce ) = Comp.CalEventInput.update flags + tz model.schedule lmsg model.scheduleModel diff --git a/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm b/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm index f1bf41a9..43bf6259 100644 --- a/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm +++ b/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm @@ -26,6 +26,7 @@ import Comp.StringListInput import Data.DropdownStyle as DS import Data.Flags exposing (Flags) import Data.Language exposing (Language) +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (UiSettings) import Html exposing (..) import Html.Attributes exposing (..) @@ -143,8 +144,8 @@ type Msg | PasswordMsg Comp.StringListInput.Msg -update : Flags -> Msg -> Model -> ( Model, Cmd Msg, Maybe CollectiveSettings ) -update flags msg model = +update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg, Maybe CollectiveSettings ) +update flags tz msg model = case msg of LangDropdownMsg m -> let @@ -207,7 +208,7 @@ update flags msg model = ClassifierSettingMsg lmsg -> let ( cm, cc ) = - Comp.ClassifierSettingsForm.update flags lmsg model.classifierModel + Comp.ClassifierSettingsForm.update flags tz lmsg model.classifierModel in ( { model | classifierModel = cm @@ -219,7 +220,7 @@ update flags msg model = EmptyTrashMsg lmsg -> let ( cm, cc ) = - Comp.EmptyTrashForm.update flags lmsg model.emptyTrashModel + Comp.EmptyTrashForm.update flags tz lmsg model.emptyTrashModel in ( { model | emptyTrashModel = cm diff --git a/modules/webapp/src/main/elm/Comp/DueItemsTaskForm.elm b/modules/webapp/src/main/elm/Comp/DueItemsTaskForm.elm index fe9268ce..fa32908d 100644 --- a/modules/webapp/src/main/elm/Comp/DueItemsTaskForm.elm +++ b/modules/webapp/src/main/elm/Comp/DueItemsTaskForm.elm @@ -29,6 +29,7 @@ import Data.CalEvent exposing (CalEvent) import Data.DropdownStyle as DS import Data.Flags exposing (Flags) import Data.TagOrder +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (UiSettings) import Data.Validated exposing (Validated(..)) import Html exposing (..) @@ -237,8 +238,8 @@ withValidSettings mkcmd model = ) -update : Flags -> Msg -> Model -> ( Model, Action, Cmd Msg ) -update flags msg model = +update : Flags -> TimeZone -> Msg -> Model -> ( Model, Action, Cmd Msg ) +update flags tz msg model = case msg of ChannelMsg lm -> let @@ -254,6 +255,7 @@ update flags msg model = let ( cm, cc, cs ) = Comp.CalEventInput.update flags + tz model.schedule lmsg model.scheduleModel diff --git a/modules/webapp/src/main/elm/Comp/DueItemsTaskManage.elm b/modules/webapp/src/main/elm/Comp/DueItemsTaskManage.elm index 346482e2..fea5f130 100644 --- a/modules/webapp/src/main/elm/Comp/DueItemsTaskManage.elm +++ b/modules/webapp/src/main/elm/Comp/DueItemsTaskManage.elm @@ -20,6 +20,7 @@ import Comp.DueItemsTaskForm import Comp.DueItemsTaskList import Comp.MenuBar as MB import Data.Flags exposing (Flags) +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (UiSettings) import Html exposing (..) import Html.Attributes exposing (..) @@ -81,8 +82,8 @@ init flags = --- Update -update : Flags -> Msg -> Model -> ( Model, Cmd Msg ) -update flags msg model = +update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg ) +update flags tz msg model = case msg of GetDataResp (Ok items) -> ( { model @@ -126,7 +127,7 @@ update flags msg model = Just dm -> let ( mm, action, mc ) = - Comp.DueItemsTaskForm.update flags lm dm + Comp.DueItemsTaskForm.update flags tz lm dm ( model_, cmd_ ) = case action of diff --git a/modules/webapp/src/main/elm/Comp/EmptyTrashForm.elm b/modules/webapp/src/main/elm/Comp/EmptyTrashForm.elm index a65fcc89..89237a5f 100644 --- a/modules/webapp/src/main/elm/Comp/EmptyTrashForm.elm +++ b/modules/webapp/src/main/elm/Comp/EmptyTrashForm.elm @@ -19,6 +19,7 @@ import Comp.CalEventInput import Comp.IntField import Data.CalEvent exposing (CalEvent) import Data.Flags exposing (Flags) +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (UiSettings) import Html exposing (..) import Html.Attributes exposing (..) @@ -81,14 +82,15 @@ getSettings model = model.minAgeDays -update : Flags -> Msg -> Model -> ( Model, Cmd Msg ) -update flags msg model = +update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg ) +update flags tz msg model = case msg of ScheduleMsg lmsg -> let ( cm, cc, ce ) = Comp.CalEventInput.update flags + tz model.schedule lmsg model.scheduleModel diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm index 40094489..acc8d06a 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm @@ -225,7 +225,7 @@ menuBar texts inav env model = [ { icon = foldSelected (i [ class "fa fa-check-square dark:text-lime-400 text-lime-600" ] []) - (i [ class "fa fa-tasks" ] []) + (i [ class "fa-regular fa-plus" ] []) , label = foldSelected texts.deselectItem texts.selectItem , disabled = False , attrs = @@ -316,7 +316,7 @@ menuBar texts inav env model = ] [ foldSelected (i [ class "fa fa-square-check" ] []) - (i [ class "fa fa-list-check" ] []) + (i [ class "fa fa-plus" ] []) ] , MB.CustomElement <| a diff --git a/modules/webapp/src/main/elm/Comp/PeriodicQueryTaskForm.elm b/modules/webapp/src/main/elm/Comp/PeriodicQueryTaskForm.elm index c6fa1ee8..90d861af 100644 --- a/modules/webapp/src/main/elm/Comp/PeriodicQueryTaskForm.elm +++ b/modules/webapp/src/main/elm/Comp/PeriodicQueryTaskForm.elm @@ -25,6 +25,7 @@ import Comp.MenuBar as MB import Comp.PowerSearchInput import Data.CalEvent exposing (CalEvent) import Data.Flags exposing (Flags) +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (UiSettings) import Data.Validated exposing (Validated(..)) import Html exposing (..) @@ -254,13 +255,14 @@ withValidSettings mkcmd model = } -update : Flags -> Msg -> Model -> UpdateResult -update flags msg model = +update : Flags -> TimeZone -> Msg -> Model -> UpdateResult +update flags tz msg model = case msg of CalEventMsg lmsg -> let ( cm, cc, cs ) = Comp.CalEventInput.update flags + tz model.schedule lmsg model.scheduleModel diff --git a/modules/webapp/src/main/elm/Comp/PeriodicQueryTaskManage.elm b/modules/webapp/src/main/elm/Comp/PeriodicQueryTaskManage.elm index 5f2192ca..91855b7d 100644 --- a/modules/webapp/src/main/elm/Comp/PeriodicQueryTaskManage.elm +++ b/modules/webapp/src/main/elm/Comp/PeriodicQueryTaskManage.elm @@ -20,6 +20,7 @@ import Comp.MenuBar as MB import Comp.PeriodicQueryTaskForm import Comp.PeriodicQueryTaskList import Data.Flags exposing (Flags) +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (UiSettings) import Html exposing (..) import Html.Attributes exposing (..) @@ -81,8 +82,8 @@ init flags = --- Update -update : Flags -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) -update flags msg model = +update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) +update flags tz msg model = case msg of GetDataResp (Ok items) -> ( { model @@ -130,7 +131,7 @@ update flags msg model = let --( mm, action, mc ) = result = - Comp.PeriodicQueryTaskForm.update flags lm dm + Comp.PeriodicQueryTaskForm.update flags tz lm dm ( model_, cmd_ ) = case result.action of diff --git a/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm b/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm index 2c12cc58..2bd9ff2d 100644 --- a/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm +++ b/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm @@ -40,6 +40,7 @@ import Data.Flags exposing (Flags) import Data.FolderOrder import Data.Language exposing (Language) import Data.TagOrder +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (UiSettings) import Data.Validated exposing (Validated(..)) import Html exposing (..) @@ -183,7 +184,7 @@ initWith flags s = |> Maybe.withDefault [] ( nm, _, nc ) = - update flags (ConnMsg (Comp.Dropdown.SetSelection imap)) im + update flags Data.TimeZone.utc (ConnMsg (Comp.Dropdown.SetSelection imap)) im newSchedule = Data.CalEvent.fromEvent s.schedule @@ -354,13 +355,14 @@ withValidSettings mkAction model = ) -update : Flags -> Msg -> Model -> ( Model, Action, Cmd Msg ) -update flags msg model = +update : Flags -> TimeZone -> Msg -> Model -> ( Model, Action, Cmd Msg ) +update flags tz msg model = case msg of CalEventMsg lmsg -> let ( cm, cc, cs ) = Comp.CalEventInput.update flags + tz model.schedule lmsg model.scheduleModel @@ -585,8 +587,8 @@ update flags msg model = ( a, NoAction, b ) in Util.Update.andThen1 - [ update flags (FolderDropdownMsg opts) >> removeAction - , update flags (FolderDropdownMsg (Comp.Dropdown.SetSelection sel)) >> removeAction + [ update flags tz (FolderDropdownMsg opts) >> removeAction + , update flags tz (FolderDropdownMsg (Comp.Dropdown.SetSelection sel)) >> removeAction ] model_ |> addNoAction diff --git a/modules/webapp/src/main/elm/Comp/ScanMailboxManage.elm b/modules/webapp/src/main/elm/Comp/ScanMailboxManage.elm index 88c7d998..3720f8c1 100644 --- a/modules/webapp/src/main/elm/Comp/ScanMailboxManage.elm +++ b/modules/webapp/src/main/elm/Comp/ScanMailboxManage.elm @@ -21,6 +21,7 @@ import Comp.MenuBar as MB import Comp.ScanMailboxForm import Comp.ScanMailboxList import Data.Flags exposing (Flags) +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (UiSettings) import Html exposing (..) import Html.Attributes exposing (..) @@ -82,8 +83,8 @@ init flags = --- Update -update : Flags -> Msg -> Model -> ( Model, Cmd Msg ) -update flags msg model = +update : Flags -> TimeZone -> Msg -> Model -> ( Model, Cmd Msg ) +update flags tz msg model = case msg of GetDataResp (Ok res) -> ( { model @@ -127,7 +128,7 @@ update flags msg model = Just dm -> let ( mm, action, mc ) = - Comp.ScanMailboxForm.update flags lm dm + Comp.ScanMailboxForm.update flags tz lm dm ( model_, cmd_ ) = case action of diff --git a/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm b/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm index 87ef2f75..2c8106c6 100644 --- a/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm +++ b/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm @@ -19,6 +19,7 @@ import Api import Api.Model.TagList exposing (TagList) import Comp.BasicSizeField import Comp.ColorTagger +import Comp.Dropdown import Comp.FieldListSelect import Comp.FixedDropdown import Comp.IntField @@ -32,6 +33,7 @@ import Data.Flags exposing (Flags) import Data.ItemTemplate as IT exposing (ItemTemplate) import Data.Pdf exposing (PdfMode) import Data.TagOrder +import Data.TimeZone exposing (TimeZone) import Data.UiSettings exposing (ItemPattern, StoredUiSettings, UiSettings) import Dict exposing (Dict) import Html exposing (..) @@ -74,6 +76,7 @@ type alias Model = , powerSearchEnabled : Bool , uiLangModel : Comp.FixedDropdown.Model UiLanguage , uiLang : UiLanguage + , timezoneDropdown : Comp.Dropdown.Model String , openTabs : Set String , defaults : UiSettings } @@ -169,6 +172,11 @@ initModel flags storedSettings defaults = , uiLang = settings.uiLang , uiLangModel = Comp.FixedDropdown.init Messages.UiLanguage.all + , timezoneDropdown = + Comp.Dropdown.makeSingleList + { options = Data.TimeZone.listAll + , selected = Just (Data.TimeZone.toName settings.timeZone) + } , openTabs = Set.empty , defaults = defaults } @@ -208,6 +216,7 @@ type Msg | TogglePowerSearch | UiLangMsg (Comp.FixedDropdown.Msg UiLanguage) | PdfModeMsg (Comp.FixedDropdown.Msg PdfMode) + | TimeZoneMsg (Comp.Dropdown.Msg String) | ToggleAllTabs | ResetTab AkkordionTab @@ -598,6 +607,27 @@ update flags sett msg model = in ( { nm | openTabs = model.openTabs }, Just newSettings ) + TimeZoneMsg lm -> + let + ( tm, tcmd ) = + Comp.Dropdown.update lm model.timezoneDropdown + + tz = + if Comp.Dropdown.isDropdownChangeMsg lm then + Comp.Dropdown.getSelected tm |> List.head + + else + sett.timeZone + + newSett = + if sett.timeZone == tz then + Nothing + + else + Just { sett | timeZone = tz } + in + ( { model | timezoneDropdown = tm }, newSett ) + --- View2 @@ -646,8 +676,8 @@ settingFormTabs : Texts -> Flags -> StoredUiSettings -> Model -> List (Comp.Tabs settingFormTabs texts flags _ model = let langCfg = - { display = \lang -> Messages.get lang |> .label - , icon = \lang -> Just (Messages.get lang |> .flagIcon) + { display = \lang -> Messages.get lang Data.TimeZone.utc |> .label + , icon = \lang -> Just (Messages.get lang Data.TimeZone.utc |> .flagIcon) , style = DS.mainStyle , selectPlaceholder = texts.basics.selectPlaceholder } @@ -669,6 +699,9 @@ settingFormTabs texts flags _ model = [ i [ class "fa fa-eraser mr-1" ] [] , text texts.resetLabel ] + + uiSettings = + Data.UiSettings.defaults in [ { name = akkordionTabName GeneralTab , title = texts.general @@ -694,6 +727,22 @@ settingFormTabs texts flags _ model = model.uiLangModel ) ] + , div [ class "mb-4" ] + [ label [ class S.inputLabel ] [ text "Timezone" ] + , Html.map TimeZoneMsg + (Comp.Dropdown.view2 + { makeOption = \s -> { text = s, additional = "" } + , placeholder = "" + , labelColor = \_ -> \_ -> "" + , style = DS.mainStyle + } + uiSettings + model.timezoneDropdown + ) + , span [ class "opacity-75 text-sm" ] + [ text "Used to format date-time values." + ] + ] ] } , { name = akkordionTabName SearchTab diff --git a/modules/webapp/src/main/elm/Data/CalEvent.elm b/modules/webapp/src/main/elm/Data/CalEvent.elm index db9307f1..6453f703 100644 --- a/modules/webapp/src/main/elm/Data/CalEvent.elm +++ b/modules/webapp/src/main/elm/Data/CalEvent.elm @@ -12,6 +12,7 @@ module Data.CalEvent exposing , makeEvent ) +import Data.TimeZone exposing (TimeZone) import Util.Maybe @@ -22,12 +23,13 @@ type alias CalEvent = , day : String , hour : String , minute : String + , timeZone : TimeZone } everyMonth : CalEvent everyMonth = - CalEvent Nothing "*" "*" "01" "00" "00" + CalEvent Nothing "*" "*" "01" "00" "00" Data.TimeZone.utc makeEvent : CalEvent -> String @@ -43,6 +45,8 @@ makeEvent ev = ++ ev.hour ++ ":" ++ ev.minute + ++ " " + ++ Data.TimeZone.toName ev.timeZone in case ev.weekday of Just wd -> @@ -60,18 +64,40 @@ fromEvent str = parts = String.split " " str + + foldChanges : List (CalEvent -> Maybe CalEvent) -> Maybe CalEvent + foldChanges list = + List.foldl (\fmc -> \c -> Maybe.andThen fmc c) (Just init) list in case parts of - wd :: date :: time :: [] -> - Maybe.andThen - (fromDate date) - (fromTime time init) - |> Maybe.map (withWeekday wd) + wd :: date :: time :: tz :: [] -> + foldChanges + [ fromWeekDays wd + , fromDate date + , fromTime time + , fromTimeZone tz + ] + + a :: b :: c :: [] -> + if startsWithWeekday a then + foldChanges + [ fromWeekDays a + , fromDate b + , fromTime c + ] + + else + foldChanges + [ fromDate a + , fromTime b + , fromTimeZone c + ] date :: time :: [] -> - Maybe.andThen - (fromDate date) - (fromTime time init) + foldChanges + [ fromDate date + , fromTime time + ] _ -> Nothing @@ -109,6 +135,31 @@ fromTime time ev = Nothing +fromTimeZone : String -> CalEvent -> Maybe CalEvent +fromTimeZone tzStr ev = + Data.TimeZone.get tzStr + |> Maybe.map (\tz -> { ev | timeZone = tz }) + + +fromWeekDays : String -> CalEvent -> Maybe CalEvent +fromWeekDays str ce = + if startsWithWeekday str then + Just (withWeekday str ce) + + else + Nothing + + withWeekday : String -> CalEvent -> CalEvent withWeekday wd ev = { ev | weekday = Util.Maybe.fromString wd } + + +weekDays : List String +weekDays = + [ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ] + + +startsWithWeekday : String -> Bool +startsWithWeekday str = + List.any (\a -> String.startsWith a str) weekDays diff --git a/modules/webapp/src/main/elm/Data/TimeZone.elm b/modules/webapp/src/main/elm/Data/TimeZone.elm new file mode 100644 index 00000000..1a5ff5fc --- /dev/null +++ b/modules/webapp/src/main/elm/Data/TimeZone.elm @@ -0,0 +1,47 @@ +{- + Copyright 2020 Eike K. & Contributors + + SPDX-License-Identifier: AGPL-3.0-or-later +-} + + +module Data.TimeZone exposing (TimeZone, get, listAll, toName, toZone, utc) + +import Dict +import Time exposing (Zone) +import TimeZone as TZ + + +type TimeZone + = TimeZone ( String, Zone ) + + +get : String -> Maybe TimeZone +get name = + case String.toLower name of + "utc" -> + Just utc + + _ -> + Dict.get name TZ.zones + |> Maybe.map (\z -> TimeZone ( name, z () )) + + +toName : TimeZone -> String +toName (TimeZone ( name, _ )) = + name + + +toZone : TimeZone -> Zone +toZone (TimeZone ( _, zone )) = + zone + + +utc : TimeZone +utc = + TimeZone ( "UTC", Time.utc ) + + +listAll : List String +listAll = + "UTC" :: Dict.keys TZ.zones diff --git a/modules/webapp/src/main/elm/Data/UiSettings.elm b/modules/webapp/src/main/elm/Data/UiSettings.elm index 34446a3b..08fe61dc 100644 --- a/modules/webapp/src/main/elm/Data/UiSettings.elm +++ b/modules/webapp/src/main/elm/Data/UiSettings.elm @@ -40,6 +40,7 @@ import Data.Flags exposing (Flags) import Data.ItemArrange exposing (ItemArrange) import Data.ItemTemplate exposing (ItemTemplate) import Data.Pdf exposing (PdfMode) +import Data.TimeZone exposing (TimeZone) import Data.UiTheme exposing (UiTheme) import Dict exposing (Dict) import Html exposing (Attribute, Html, embed, iframe) @@ -80,6 +81,7 @@ type alias StoredUiSettings = , uiLang : Maybe String , itemSearchShowGroups : Maybe Bool , itemSearchArrange : Maybe String + , timeZone : Maybe String } @@ -105,6 +107,7 @@ emptyStoredSettings = , uiLang = Nothing , itemSearchShowGroups = Nothing , itemSearchArrange = Nothing + , timeZone = Nothing } @@ -141,6 +144,7 @@ storedUiSettingsDecoder = |> P.optional "uiLang" maybeString Nothing |> P.optional "itemSearchShowGroups" maybeBool Nothing |> P.optional "itemSearchArrange" maybeString Nothing + |> P.optional "timeZone" maybeString Nothing storedUiSettingsEncode : StoredUiSettings -> Encode.Value @@ -173,6 +177,7 @@ storedUiSettingsEncode value = , maybeEnc "uiLang" Encode.string value.uiLang , maybeEnc "itemSearchShowGroups" Encode.bool value.itemSearchShowGroups , maybeEnc "itemSearchArrange" Encode.string value.itemSearchArrange + , maybeEnc "timeZone" Encode.string value.timeZone ] @@ -205,6 +210,7 @@ type alias UiSettings = , uiLang : UiLanguage , itemSearchShowGroups : Bool , itemSearchArrange : ItemArrange + , timeZone : TimeZone } @@ -248,6 +254,7 @@ defaults = , uiLang = Messages.UiLanguage.English , itemSearchShowGroups = True , itemSearchArrange = Data.ItemArrange.Cards + , timeZone = Data.TimeZone.utc } @@ -306,6 +313,9 @@ merge given fallback = , itemSearchArrange = Maybe.andThen Data.ItemArrange.fromString given.itemSearchArrange |> Maybe.withDefault fallback.itemSearchArrange + , timeZone = + Maybe.andThen Data.TimeZone.get given.timeZone + |> Maybe.withDefault fallback.timeZone } @@ -344,6 +354,7 @@ convert settings = , uiLang = Just <| Messages.toIso2 settings.uiLang , itemSearchShowGroups = Just settings.itemSearchShowGroups , itemSearchArrange = Data.ItemArrange.asString settings.itemSearchArrange |> Just + , timeZone = Data.TimeZone.toName settings.timeZone |> Just } diff --git a/modules/webapp/src/main/elm/Messages.elm b/modules/webapp/src/main/elm/Messages.elm index d395eada..49bdc475 100644 --- a/modules/webapp/src/main/elm/Messages.elm +++ b/modules/webapp/src/main/elm/Messages.elm @@ -12,6 +12,7 @@ module Messages exposing , toIso2 ) +import Data.TimeZone exposing (TimeZone) import Messages.App import Messages.Page.CollectiveSettings import Messages.Page.Dashboard @@ -33,6 +34,7 @@ import Messages.UiLanguage exposing (UiLanguage(..)) -} type alias Messages = { lang : UiLanguage + , timeZone : TimeZone , iso2 : String , label : String , flagIcon : String @@ -53,21 +55,21 @@ type alias Messages = } -get : UiLanguage -> Messages -get lang = +get : UiLanguage -> TimeZone -> Messages +get lang tz = case lang of English -> - gb + gb tz German -> - de + de tz {-| Get a ISO-3166-1 code of the given lanugage. -} toIso2 : UiLanguage -> String toIso2 lang = - get lang |> .iso2 + get lang Data.TimeZone.utc |> .iso2 {-| Return the UiLanguage from given iso2 code. If the iso2 code is not @@ -98,47 +100,49 @@ fromIso2 iso = -- use two classes: flag-icon flag-icon-xx where xx is the two-letter country code -gb : Messages -gb = +gb : TimeZone -> Messages +gb tz = { lang = English + , timeZone = tz , iso2 = "gb" , label = "English" , flagIcon = "flag-icon flag-icon-gb" , app = Messages.App.gb - , collectiveSettings = Messages.Page.CollectiveSettings.gb + , collectiveSettings = Messages.Page.CollectiveSettings.gb tz , login = Messages.Page.Login.gb , register = Messages.Page.Register.gb , newInvite = Messages.Page.NewInvite.gb , upload = Messages.Page.Upload.gb - , itemDetail = Messages.Page.ItemDetail.gb - , queue = Messages.Page.Queue.gb - , userSettings = Messages.Page.UserSettings.gb - , manageData = Messages.Page.ManageData.gb - , search = Messages.Page.Search.gb - , share = Messages.Page.Share.gb - , shareDetail = Messages.Page.ShareDetail.gb - , dashboard = Messages.Page.Dashboard.gb + , itemDetail = Messages.Page.ItemDetail.gb tz + , queue = Messages.Page.Queue.gb tz + , userSettings = Messages.Page.UserSettings.gb tz + , manageData = Messages.Page.ManageData.gb tz + , search = Messages.Page.Search.gb tz + , share = Messages.Page.Share.gb tz + , shareDetail = Messages.Page.ShareDetail.gb tz + , dashboard = Messages.Page.Dashboard.gb tz } -de : Messages -de = +de : TimeZone -> Messages +de tz = { lang = German + , timeZone = tz , iso2 = "de" , label = "Deutsch" , flagIcon = "flag-icon flag-icon-de" , app = Messages.App.de - , collectiveSettings = Messages.Page.CollectiveSettings.de + , collectiveSettings = Messages.Page.CollectiveSettings.de tz , login = Messages.Page.Login.de , register = Messages.Page.Register.de , newInvite = Messages.Page.NewInvite.de , upload = Messages.Page.Upload.de - , itemDetail = Messages.Page.ItemDetail.de - , queue = Messages.Page.Queue.de - , userSettings = Messages.Page.UserSettings.de - , manageData = Messages.Page.ManageData.de - , search = Messages.Page.Search.de - , share = Messages.Page.Share.de - , shareDetail = Messages.Page.ShareDetail.de - , dashboard = Messages.Page.Dashboard.de + , itemDetail = Messages.Page.ItemDetail.de tz + , queue = Messages.Page.Queue.de tz + , userSettings = Messages.Page.UserSettings.de tz + , manageData = Messages.Page.ManageData.de tz + , search = Messages.Page.Search.de tz + , share = Messages.Page.Share.de tz + , shareDetail = Messages.Page.ShareDetail.de tz + , dashboard = Messages.Page.Dashboard.de tz } diff --git a/modules/webapp/src/main/elm/Messages/Comp/AttachmentMeta.elm b/modules/webapp/src/main/elm/Messages/Comp/AttachmentMeta.elm index 4661fc3a..a32b448a 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/AttachmentMeta.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/AttachmentMeta.elm @@ -11,6 +11,7 @@ module Messages.Comp.AttachmentMeta exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -35,8 +36,8 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , httpError = Messages.Comp.HttpError.gb , extractedMetadata = "Extracted Meta Data" @@ -49,12 +50,12 @@ gb = , concerningEquipment = "Concerning Equipment" , itemDate = "Item Date" , itemDueDate = "Item Due Date" - , formatDateShort = DF.formatDateShort Messages.UiLanguage.English + , formatDateShort = DF.formatDateShort Messages.UiLanguage.English tz } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , httpError = Messages.Comp.HttpError.de , extractedMetadata = "Extrahierte Metadaten" @@ -67,5 +68,5 @@ de = , concerningEquipment = "Betreffende Ausstattung" , itemDate = "Datum" , itemDueDate = "Fälligkeitsdatum" - , formatDateShort = DF.formatDateShort Messages.UiLanguage.German + , formatDateShort = DF.formatDateShort Messages.UiLanguage.German tz } diff --git a/modules/webapp/src/main/elm/Messages/Comp/BoxQueryView.elm b/modules/webapp/src/main/elm/Messages/Comp/BoxQueryView.elm index ab9ff4e9..0a8871c0 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/BoxQueryView.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/BoxQueryView.elm @@ -8,6 +8,7 @@ module Messages.Comp.BoxQueryView exposing (Texts, de, gb) import Data.ItemTemplate as IT +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -27,30 +28,30 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { httpError = Messages.Comp.HttpError.gb , errorOccurred = "Error retrieving data." , basics = Messages.Basics.gb , noResults = "No items found." , templateCtx = - { dateFormatLong = DF.formatDateLong Messages.UiLanguage.English - , dateFormatShort = DF.formatDateShort Messages.UiLanguage.English + { dateFormatLong = DF.formatDateLong Messages.UiLanguage.English tz + , dateFormatShort = DF.formatDateShort Messages.UiLanguage.English tz , directionLabel = Messages.Data.Direction.gb } , itemColumn = Messages.Data.ItemColumn.gb } -de : Texts -de = +de : TimeZone -> Texts +de tz = { httpError = Messages.Comp.HttpError.de , errorOccurred = "Fehler beim Laden der Daten." , basics = Messages.Basics.de , noResults = "Keine Dokumente gefunden." , templateCtx = - { dateFormatLong = DF.formatDateLong Messages.UiLanguage.German - , dateFormatShort = DF.formatDateShort Messages.UiLanguage.German + { dateFormatLong = DF.formatDateLong Messages.UiLanguage.German tz + , dateFormatShort = DF.formatDateShort Messages.UiLanguage.German tz , directionLabel = Messages.Data.Direction.de } , itemColumn = Messages.Data.ItemColumn.de diff --git a/modules/webapp/src/main/elm/Messages/Comp/BoxView.elm b/modules/webapp/src/main/elm/Messages/Comp/BoxView.elm index d4bbfa1d..0ddb0a8f 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/BoxView.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/BoxView.elm @@ -7,6 +7,7 @@ module Messages.Comp.BoxView exposing (Texts, de, gb) +import Data.TimeZone exposing (TimeZone) import Messages.Comp.BoxQueryView import Messages.Comp.BoxStatsView import Messages.Comp.BoxUploadView @@ -19,17 +20,17 @@ type alias Texts = } -gb : Texts -gb = - { queryView = Messages.Comp.BoxQueryView.gb +gb : TimeZone -> Texts +gb tz = + { queryView = Messages.Comp.BoxQueryView.gb tz , statsView = Messages.Comp.BoxStatsView.gb , uploadView = Messages.Comp.BoxUploadView.gb } -de : Texts -de = - { queryView = Messages.Comp.BoxQueryView.de +de : TimeZone -> Texts +de tz = + { queryView = Messages.Comp.BoxQueryView.de tz , statsView = Messages.Comp.BoxStatsView.de , uploadView = Messages.Comp.BoxUploadView.de } diff --git a/modules/webapp/src/main/elm/Messages/Comp/CalEventInput.elm b/modules/webapp/src/main/elm/Messages/Comp/CalEventInput.elm index 65577f4a..d3a4d455 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/CalEventInput.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/CalEventInput.elm @@ -11,6 +11,7 @@ module Messages.Comp.CalEventInput exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Comp.HttpError import Messages.DateFormat as DF @@ -32,8 +33,8 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { weekday = "Weekday" , year = "Year" , month = "Month" @@ -43,13 +44,13 @@ gb = , error = "Error" , schedule = "Schedule" , next = "Next" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz , httpError = Messages.Comp.HttpError.gb } -de : Texts -de = +de : TimeZone -> Texts +de tz = { weekday = "Wochentag" , year = "Jahr" , month = "Monat" @@ -59,6 +60,6 @@ de = , error = "Fehler" , schedule = "Zeitplan" , next = "Nächste Zeiten" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz , httpError = Messages.Comp.HttpError.de } diff --git a/modules/webapp/src/main/elm/Messages/Comp/ClassifierSettingsForm.elm b/modules/webapp/src/main/elm/Messages/Comp/ClassifierSettingsForm.elm index b306e6bd..d3594285 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ClassifierSettingsForm.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ClassifierSettingsForm.elm @@ -11,6 +11,7 @@ module Messages.Comp.ClassifierSettingsForm exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Comp.CalEventInput @@ -28,10 +29,10 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , calEventInput = Messages.Comp.CalEventInput.gb + , calEventInput = Messages.Comp.CalEventInput.gb tz , autoTaggingText = """ @@ -53,10 +54,10 @@ Use an empty whitelist to disable auto tagging. } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , calEventInput = Messages.Comp.CalEventInput.de + , calEventInput = Messages.Comp.CalEventInput.de tz , autoTaggingText = """ diff --git a/modules/webapp/src/main/elm/Messages/Comp/CollectiveSettingsForm.elm b/modules/webapp/src/main/elm/Messages/Comp/CollectiveSettingsForm.elm index ea6248f1..78a93b39 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/CollectiveSettingsForm.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/CollectiveSettingsForm.elm @@ -12,6 +12,7 @@ module Messages.Comp.CollectiveSettingsForm exposing ) import Data.Language exposing (Language) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.ClassifierSettingsForm @@ -49,11 +50,11 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , classifierSettingsForm = Messages.Comp.ClassifierSettingsForm.gb - , emptyTrashForm = Messages.Comp.EmptyTrashForm.gb + , classifierSettingsForm = Messages.Comp.ClassifierSettingsForm.gb tz + , emptyTrashForm = Messages.Comp.EmptyTrashForm.gb tz , httpError = Messages.Comp.HttpError.gb , save = "Save" , saveSettings = "Save Settings" @@ -84,11 +85,11 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , classifierSettingsForm = Messages.Comp.ClassifierSettingsForm.de - , emptyTrashForm = Messages.Comp.EmptyTrashForm.de + , classifierSettingsForm = Messages.Comp.ClassifierSettingsForm.de tz + , emptyTrashForm = Messages.Comp.EmptyTrashForm.de tz , httpError = Messages.Comp.HttpError.de , save = "Speichern" , saveSettings = "Einstellungen speichern" diff --git a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldManage.elm b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldManage.elm index b1b44c89..0c60e49e 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldManage.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldManage.elm @@ -11,6 +11,7 @@ module Messages.Comp.CustomFieldManage exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Comp.CustomFieldForm import Messages.Comp.CustomFieldTable @@ -25,21 +26,21 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , fieldForm = Messages.Comp.CustomFieldForm.gb - , fieldTable = Messages.Comp.CustomFieldTable.gb + , fieldTable = Messages.Comp.CustomFieldTable.gb tz , addCustomField = "Add a new custom field" , newCustomField = "New custom field" } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , fieldForm = Messages.Comp.CustomFieldForm.de - , fieldTable = Messages.Comp.CustomFieldTable.de + , fieldTable = Messages.Comp.CustomFieldTable.de tz , addCustomField = "Ein neues Benutzerfeld anlegen" , newCustomField = "Neues Benutzerfeld" } diff --git a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldTable.elm b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldTable.elm index 2949234a..6bd4da14 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldTable.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldTable.elm @@ -11,6 +11,7 @@ module Messages.Comp.CustomFieldTable exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.DateFormat as DF import Messages.UiLanguage @@ -25,21 +26,21 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , nameLabel = "Name/Label" , format = "Format" , usageCount = "#Usage" - , formatDateShort = DF.formatDateShort Messages.UiLanguage.English + , formatDateShort = DF.formatDateShort Messages.UiLanguage.English tz } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , nameLabel = "Name/Label" , format = "Format" , usageCount = "#Nutzung" - , formatDateShort = DF.formatDateShort Messages.UiLanguage.German + , formatDateShort = DF.formatDateShort Messages.UiLanguage.German tz } diff --git a/modules/webapp/src/main/elm/Messages/Comp/DashboardView.elm b/modules/webapp/src/main/elm/Messages/Comp/DashboardView.elm index 53f292a0..6277732a 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/DashboardView.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/DashboardView.elm @@ -7,6 +7,7 @@ module Messages.Comp.DashboardView exposing (Texts, de, gb) +import Data.TimeZone exposing (TimeZone) import Messages.Comp.BoxView @@ -15,13 +16,13 @@ type alias Texts = } -gb : Texts -gb = - { boxView = Messages.Comp.BoxView.gb +gb : TimeZone -> Texts +gb tz = + { boxView = Messages.Comp.BoxView.gb tz } -de : Texts -de = - { boxView = Messages.Comp.BoxView.de +de : TimeZone -> Texts +de tz = + { boxView = Messages.Comp.BoxView.de tz } diff --git a/modules/webapp/src/main/elm/Messages/Comp/DueItemsTaskForm.elm b/modules/webapp/src/main/elm/Messages/Comp/DueItemsTaskForm.elm index 33bd1533..582200cf 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/DueItemsTaskForm.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/DueItemsTaskForm.elm @@ -11,6 +11,7 @@ module Messages.Comp.DueItemsTaskForm exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.CalEventInput @@ -57,10 +58,10 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , calEventInput = Messages.Comp.CalEventInput.gb + , calEventInput = Messages.Comp.CalEventInput.gb tz , httpError = Messages.Comp.HttpError.gb , channelForm = Messages.Comp.ChannelForm.gb , tagDropdown = Messages.Comp.TagDropdown.gb @@ -98,10 +99,10 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , calEventInput = Messages.Comp.CalEventInput.de + , calEventInput = Messages.Comp.CalEventInput.de tz , httpError = Messages.Comp.HttpError.de , channelForm = Messages.Comp.ChannelForm.de , tagDropdown = Messages.Comp.TagDropdown.de diff --git a/modules/webapp/src/main/elm/Messages/Comp/DueItemsTaskManage.elm b/modules/webapp/src/main/elm/Messages/Comp/DueItemsTaskManage.elm index 8cdbca7e..4f315aef 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/DueItemsTaskManage.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/DueItemsTaskManage.elm @@ -11,6 +11,7 @@ module Messages.Comp.DueItemsTaskManage exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.DueItemsTaskForm @@ -34,10 +35,10 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , notificationForm = Messages.Comp.DueItemsTaskForm.gb + , notificationForm = Messages.Comp.DueItemsTaskForm.gb tz , notificationTable = Messages.Comp.DueItemsTaskList.gb , httpError = Messages.Comp.HttpError.gb , channelType = Messages.Data.ChannelType.gb @@ -50,10 +51,10 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , notificationForm = Messages.Comp.DueItemsTaskForm.de + , notificationForm = Messages.Comp.DueItemsTaskForm.de tz , notificationTable = Messages.Comp.DueItemsTaskList.de , httpError = Messages.Comp.HttpError.de , channelType = Messages.Data.ChannelType.de diff --git a/modules/webapp/src/main/elm/Messages/Comp/EmptyTrashForm.elm b/modules/webapp/src/main/elm/Messages/Comp/EmptyTrashForm.elm index 5e1d4c83..26dc9d4a 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/EmptyTrashForm.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/EmptyTrashForm.elm @@ -11,6 +11,7 @@ module Messages.Comp.EmptyTrashForm exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Comp.CalEventInput @@ -24,20 +25,20 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , calEventInput = Messages.Comp.CalEventInput.gb + , calEventInput = Messages.Comp.CalEventInput.gb tz , schedule = "Schedule" , minAge = "Minimum Age (Days)" , minAgeInfo = "The minimum age in days of an items to be removed. The last-update time is used." } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , calEventInput = Messages.Comp.CalEventInput.de + , calEventInput = Messages.Comp.CalEventInput.de tz , schedule = "Zeitplan" , minAge = "Mindestalter (Tage)" , minAgeInfo = "Das Mindestalter (in Tagen) der Dokumente, die gelöscht werden. Es wird das Datum der letzten Veränderung verwendet." diff --git a/modules/webapp/src/main/elm/Messages/Comp/FolderManage.elm b/modules/webapp/src/main/elm/Messages/Comp/FolderManage.elm index 8dcc888d..8632d3f4 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/FolderManage.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/FolderManage.elm @@ -11,6 +11,7 @@ module Messages.Comp.FolderManage exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Comp.FolderDetail import Messages.Comp.FolderTable @@ -26,22 +27,22 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , folderDetail = Messages.Comp.FolderDetail.gb - , folderTable = Messages.Comp.FolderTable.gb + , folderTable = Messages.Comp.FolderTable.gb tz , showOwningFoldersOnly = "Show owning folders only" , createNewFolder = "Create a new folder" , newFolder = "New Folder" } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , folderDetail = Messages.Comp.FolderDetail.de - , folderTable = Messages.Comp.FolderTable.de + , folderTable = Messages.Comp.FolderTable.de tz , showOwningFoldersOnly = "Nur besitzende Ordner anzeigen" , createNewFolder = "Neuen Ordner anlegen" , newFolder = "Neuer Ordner" diff --git a/modules/webapp/src/main/elm/Messages/Comp/FolderTable.elm b/modules/webapp/src/main/elm/Messages/Comp/FolderTable.elm index 4c8da143..9033026b 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/FolderTable.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/FolderTable.elm @@ -11,6 +11,7 @@ module Messages.Comp.FolderTable exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.DateFormat as DF import Messages.UiLanguage @@ -24,19 +25,19 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , memberCount = "#Member" - , formatDateShort = DF.formatDateShort Messages.UiLanguage.English + , formatDateShort = DF.formatDateShort Messages.UiLanguage.English tz , owner = "Owner" } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , memberCount = "#Mitglieder" - , formatDateShort = DF.formatDateShort Messages.UiLanguage.German + , formatDateShort = DF.formatDateShort Messages.UiLanguage.German tz , owner = "Besitzer" } diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemCard.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemCard.elm index 878fbf60..58a19bef 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ItemCard.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ItemCard.elm @@ -12,6 +12,7 @@ module Messages.Comp.ItemCard exposing ) import Data.Direction exposing (Direction) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Data.Direction import Messages.DateFormat @@ -31,29 +32,29 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , dueOn = "Due on" , new = "New" , openAttachmentFile = "Open attachment file" , gotoDetail = "Go to detail view" , cycleAttachments = "Cycle attachments" - , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English - , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English + , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English tz + , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English tz , directionLabel = Messages.Data.Direction.gb } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , dueOn = "Fällig am" , new = "Neu" , openAttachmentFile = "Anhang öffnen" , gotoDetail = "Detailansicht" , cycleAttachments = "Anhänge durchschalten" - , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German - , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German + , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German tz + , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German tz , directionLabel = Messages.Data.Direction.de } diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemCardList.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemCardList.elm index 841230fd..6bb17e3d 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ItemCardList.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ItemCardList.elm @@ -11,6 +11,7 @@ module Messages.Comp.ItemCardList exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Comp.ItemCard @@ -19,13 +20,13 @@ type alias Texts = } -gb : Texts -gb = - { itemCard = Messages.Comp.ItemCard.gb +gb : TimeZone -> Texts +gb tz = + { itemCard = Messages.Comp.ItemCard.gb tz } -de : Texts -de = - { itemCard = Messages.Comp.ItemCard.de +de : TimeZone -> Texts +de tz = + { itemCard = Messages.Comp.ItemCard.de tz } diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail.elm index 11a315e8..70f05386 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail.elm @@ -11,6 +11,7 @@ module Messages.Comp.ItemDetail exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Comp.DetailEdit import Messages.Comp.HttpError @@ -62,12 +63,12 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { addFilesForm = Messages.Comp.ItemDetail.AddFilesForm.gb - , itemInfoHeader = Messages.Comp.ItemDetail.ItemInfoHeader.gb - , singleAttachment = Messages.Comp.ItemDetail.SingleAttachment.gb - , sentMails = Messages.Comp.SentMails.gb + , itemInfoHeader = Messages.Comp.ItemDetail.ItemInfoHeader.gb tz + , singleAttachment = Messages.Comp.ItemDetail.SingleAttachment.gb tz + , sentMails = Messages.Comp.SentMails.gb tz , notes = Messages.Comp.ItemDetail.Notes.gb , itemMail = Messages.Comp.ItemMail.gb , detailEdit = Messages.Comp.DetailEdit.gb @@ -91,7 +92,7 @@ gb = , createdOn = "Created on" , lastUpdateOn = "Last update on" , sendingMailNow = "Sending e-mail…" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz , mailSendSuccessful = "Mail sent." , showQrCode = "Show URL as QR code" , close = "Close" @@ -100,12 +101,12 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { addFilesForm = Messages.Comp.ItemDetail.AddFilesForm.de - , itemInfoHeader = Messages.Comp.ItemDetail.ItemInfoHeader.de - , singleAttachment = Messages.Comp.ItemDetail.SingleAttachment.de - , sentMails = Messages.Comp.SentMails.de + , itemInfoHeader = Messages.Comp.ItemDetail.ItemInfoHeader.de tz + , singleAttachment = Messages.Comp.ItemDetail.SingleAttachment.de tz + , sentMails = Messages.Comp.SentMails.de tz , notes = Messages.Comp.ItemDetail.Notes.de , itemMail = Messages.Comp.ItemMail.de , detailEdit = Messages.Comp.DetailEdit.de @@ -129,7 +130,7 @@ de = , createdOn = "Erstellt am" , lastUpdateOn = "Letzte Aktualisierung" , sendingMailNow = "E-Mail wird gesendet…" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz , mailSendSuccessful = "E-Mail wurde versendet." , showQrCode = "Link als QR code anzeigen" , close = "Schließen" diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/EditForm.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/EditForm.elm index 34563e76..cc7983b6 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/EditForm.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/EditForm.elm @@ -12,6 +12,7 @@ module Messages.Comp.ItemDetail.EditForm exposing ) import Data.Direction exposing (Direction) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Comp.CustomFieldMultiInput import Messages.Comp.TagDropdown @@ -43,8 +44,8 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , customFieldInput = Messages.Comp.CustomFieldMultiInput.gb , tagDropdown = Messages.Comp.TagDropdown.gb @@ -62,13 +63,13 @@ gb = , editEquipment = "Edit equipment" , suggestions = "Suggestions" , noSuggestions = "No suggestions" - , formatDate = DF.formatDateLong Messages.UiLanguage.English + , formatDate = DF.formatDateLong Messages.UiLanguage.English tz , direction = Messages.Data.Direction.gb } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , customFieldInput = Messages.Comp.CustomFieldMultiInput.de , tagDropdown = Messages.Comp.TagDropdown.de @@ -86,6 +87,6 @@ de = , editEquipment = "Ausstattung ändern" , suggestions = "Vorschläge" , noSuggestions = "Keine Vorschläge" - , formatDate = DF.formatDateLong Messages.UiLanguage.German + , formatDate = DF.formatDateLong Messages.UiLanguage.German tz , direction = Messages.Data.Direction.de } diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ItemInfoHeader.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ItemInfoHeader.elm index 6d70dee9..9dbc59b8 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ItemInfoHeader.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ItemInfoHeader.elm @@ -11,6 +11,7 @@ module Messages.Comp.ItemDetail.ItemInfoHeader exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.DateFormat as DF import Messages.UiLanguage @@ -26,23 +27,23 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , itemDate = "Item Date" , dueDate = "Due Date" , source = "Source" , new = "New" - , formatDate = DF.formatDateLong Messages.UiLanguage.English + , formatDate = DF.formatDateLong Messages.UiLanguage.English tz } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , itemDate = "Datum" , dueDate = "Fälligkeitsdatum" , source = "Quelle" , new = "Neu" - , formatDate = DF.formatDateLong Messages.UiLanguage.German + , formatDate = DF.formatDateLong Messages.UiLanguage.German tz } diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/SingleAttachment.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/SingleAttachment.elm index 07a1c5f5..64487867 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/SingleAttachment.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/SingleAttachment.elm @@ -11,6 +11,7 @@ module Messages.Comp.ItemDetail.SingleAttachment exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Comp.AttachmentMeta import Messages.Comp.ItemDetail.ConfirmModal @@ -35,9 +36,9 @@ type alias Texts = } -gb : Texts -gb = - { attachmentMeta = Messages.Comp.AttachmentMeta.gb +gb : TimeZone -> Texts +gb tz = + { attachmentMeta = Messages.Comp.AttachmentMeta.gb tz , confirmModal = Messages.Comp.ItemDetail.ConfirmModal.gb , noName = "No name" , openFileInNewTab = "Open file in new tab" @@ -56,9 +57,9 @@ gb = } -de : Texts -de = - { attachmentMeta = Messages.Comp.AttachmentMeta.de +de : TimeZone -> Texts +de tz = + { attachmentMeta = Messages.Comp.AttachmentMeta.de tz , confirmModal = Messages.Comp.ItemDetail.ConfirmModal.de , noName = "Kein Name" , openFileInNewTab = "Anhang im neuen Tab öffnen" diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemMerge.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemMerge.elm index f1bd1dde..4c95bed7 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ItemMerge.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ItemMerge.elm @@ -11,6 +11,7 @@ module Messages.Comp.ItemMerge exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -35,15 +36,15 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , httpError = Messages.Comp.HttpError.gb , title = "Merge Items" , infoText = "When merging items the first item in the list acts as the target. Every other items metadata is copied into the target item. If the property is a single value (like correspondent), it is only set if not already present. Tags, custom fields and attachments are added. The items can be reordered using drag&drop." , deleteWarn = "Note that all items but the first one is deleted after a successful merge!" - , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English - , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English + , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English tz + , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English tz , submitMerge = "Merge" , submitMergeTitle = "Merge the documents now" , cancelMerge = "Cancel" @@ -53,15 +54,15 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , httpError = Messages.Comp.HttpError.de , title = "Dokumente zusammenführen" , infoText = "Beim Zusammenführen der Dokumente, wird das erste in der Liste als Zieldokument verwendet. Die Metadaten der anderen Dokumente werden der Reihe nach auf des Zieldokument geschrieben. Metadaten die nur einen Wert haben, werden nur gesetzt falls noch kein Wert existiert. Tags, Benutzerfelder und Anhänge werden zu dem Zieldokument hinzugefügt. Die Einträge können mit Drag&Drop umgeordnet werden." , deleteWarn = "Bitte beachte, dass nach erfolgreicher Zusammenführung alle anderen Dokumente gelöscht werden!" - , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German - , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German + , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German tz + , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German tz , submitMerge = "Zusammenführen" , submitMergeTitle = "Dokumente jetzt zusammenführen" , cancelMerge = "Abbrechen" diff --git a/modules/webapp/src/main/elm/Messages/Comp/OtpSetup.elm b/modules/webapp/src/main/elm/Messages/Comp/OtpSetup.elm index 3c4112d8..fe0348ef 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/OtpSetup.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/OtpSetup.elm @@ -11,6 +11,7 @@ module Messages.Comp.OtpSetup exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Comp.HttpError import Messages.DateFormat @@ -43,10 +44,10 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { httpError = Messages.Comp.HttpError.gb - , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English + , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English tz , errorTitle = "Error" , stateErrorInfoText = "There was a problem determining the current state of your two factor authentication scheme:" , errorGeneratingQR = "Error generating QR Code" @@ -70,10 +71,10 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { httpError = Messages.Comp.HttpError.de - , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German + , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German tz , errorTitle = "Fehler" , stateErrorInfoText = "Es gab ein Problem, den Status der Zwei-Faktor-Authentifizierung zu ermittlen:" , errorGeneratingQR = "Fehler beim Generieren des QR-Code" diff --git a/modules/webapp/src/main/elm/Messages/Comp/PeriodicQueryTaskForm.elm b/modules/webapp/src/main/elm/Messages/Comp/PeriodicQueryTaskForm.elm index 7f9afbf1..249d8f96 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/PeriodicQueryTaskForm.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/PeriodicQueryTaskForm.elm @@ -11,6 +11,7 @@ module Messages.Comp.PeriodicQueryTaskForm exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.BookmarkDropdown @@ -49,10 +50,10 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , calEventInput = Messages.Comp.CalEventInput.gb + , calEventInput = Messages.Comp.CalEventInput.gb tz , channelForm = Messages.Comp.ChannelForm.gb , httpError = Messages.Comp.HttpError.gb , bookmarkDropdown = Messages.Comp.BookmarkDropdown.gb @@ -83,10 +84,10 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , calEventInput = Messages.Comp.CalEventInput.de + , calEventInput = Messages.Comp.CalEventInput.de tz , channelForm = Messages.Comp.ChannelForm.de , httpError = Messages.Comp.HttpError.de , bookmarkDropdown = Messages.Comp.BookmarkDropdown.de diff --git a/modules/webapp/src/main/elm/Messages/Comp/PeriodicQueryTaskManage.elm b/modules/webapp/src/main/elm/Messages/Comp/PeriodicQueryTaskManage.elm index f811f2f8..d927f299 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/PeriodicQueryTaskManage.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/PeriodicQueryTaskManage.elm @@ -11,6 +11,7 @@ module Messages.Comp.PeriodicQueryTaskManage exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -38,10 +39,10 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , notificationForm = Messages.Comp.PeriodicQueryTaskForm.gb + , notificationForm = Messages.Comp.PeriodicQueryTaskForm.gb tz , notificationTable = Messages.Comp.PeriodicQueryTaskList.gb , httpError = Messages.Comp.HttpError.gb , channelType = Messages.Data.ChannelType.gb @@ -58,10 +59,10 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , notificationForm = Messages.Comp.PeriodicQueryTaskForm.de + , notificationForm = Messages.Comp.PeriodicQueryTaskForm.de tz , notificationTable = Messages.Comp.PeriodicQueryTaskList.de , httpError = Messages.Comp.HttpError.de , channelType = Messages.Data.ChannelType.de diff --git a/modules/webapp/src/main/elm/Messages/Comp/PublishItems.elm b/modules/webapp/src/main/elm/Messages/Comp/PublishItems.elm index b23703a8..ae67a5c3 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/PublishItems.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/PublishItems.elm @@ -11,6 +11,7 @@ module Messages.Comp.PublishItems exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -43,17 +44,17 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , httpError = Messages.Comp.HttpError.gb , shareForm = Messages.Comp.ShareForm.gb - , shareView = Messages.Comp.ShareView.gb + , shareView = Messages.Comp.ShareView.gb tz , shareMail = Messages.Comp.ShareMail.gb , title = "Publish Items" , infoText = "Publishing items creates a cryptic link, which can be used by everyone to see the selected documents. This link cannot be guessed, but is public! It exists for a certain amount of time and can be further protected using a password." - , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English - , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English + , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.English tz + , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.English tz , submitPublish = "Publish" , submitPublishTitle = "Publish the documents now" , cancelPublish = "Cancel" @@ -66,17 +67,17 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , httpError = Messages.Comp.HttpError.de , shareForm = Messages.Comp.ShareForm.de - , shareView = Messages.Comp.ShareView.de + , shareView = Messages.Comp.ShareView.de tz , shareMail = Messages.Comp.ShareMail.de , title = "Dokumente publizieren" , infoText = "Beim Publizieren der Dokumente wird ein kryptischer Link erzeugt, mit welchem jeder die dahinter publizierten Dokumente einsehen kann. Dieser Link kann nicht erraten werden, ist aber öffentlich. Er ist zeitlich begrenzt und kann zusätzlich mit einem Passwort geschützt werden." - , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German - , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German + , formatDateLong = Messages.DateFormat.formatDateLong Messages.UiLanguage.German tz + , formatDateShort = Messages.DateFormat.formatDateShort Messages.UiLanguage.German tz , submitPublish = "Publizieren" , submitPublishTitle = "Dokumente jetzt publizieren" , cancelPublish = "Abbrechen" diff --git a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxForm.elm b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxForm.elm index 9a8dd69f..17d59fb2 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxForm.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxForm.elm @@ -11,6 +11,7 @@ module Messages.Comp.ScanMailboxForm exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.CalEventInput @@ -80,10 +81,10 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , calEventInput = Messages.Comp.CalEventInput.gb + , calEventInput = Messages.Comp.CalEventInput.gb tz , httpError = Messages.Comp.HttpError.gb , tagDropdown = Messages.Comp.TagDropdown.gb , reallyDeleteTask = "Really delete this scan mailbox task?" @@ -165,10 +166,10 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , calEventInput = Messages.Comp.CalEventInput.de + , calEventInput = Messages.Comp.CalEventInput.de tz , httpError = Messages.Comp.HttpError.de , tagDropdown = Messages.Comp.TagDropdown.de , reallyDeleteTask = "Den Auftrag wirklich löschen?" diff --git a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxManage.elm b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxManage.elm index f466c85a..4129e251 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxManage.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxManage.elm @@ -11,6 +11,7 @@ module Messages.Comp.ScanMailboxManage exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -32,10 +33,10 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tb = { basics = Messages.Basics.gb - , form = Messages.Comp.ScanMailboxForm.gb + , form = Messages.Comp.ScanMailboxForm.gb tb , table = Messages.Comp.ScanMailboxTable.gb , httpError = Messages.Comp.HttpError.gb , newTask = "New Task" @@ -47,10 +48,10 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , form = Messages.Comp.ScanMailboxForm.de + , form = Messages.Comp.ScanMailboxForm.de tz , table = Messages.Comp.ScanMailboxTable.de , httpError = Messages.Comp.HttpError.de , newTask = "Neuer Auftrag" diff --git a/modules/webapp/src/main/elm/Messages/Comp/SentMails.elm b/modules/webapp/src/main/elm/Messages/Comp/SentMails.elm index e95acd7f..34ecf026 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/SentMails.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/SentMails.elm @@ -11,6 +11,7 @@ module Messages.Comp.SentMails exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.DateFormat as DF import Messages.UiLanguage @@ -26,25 +27,25 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { from = "From" , date = "Date" , recipients = "Recipients" , subject = "Subject" , sent = "Sent" , sender = "Sender" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz } -de : Texts -de = +de : TimeZone -> Texts +de tz = { from = "Von" , date = "Datum" , recipients = "Empfänger" , subject = "Betreff" , sent = "Gesendet" , sender = "Absender" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz } diff --git a/modules/webapp/src/main/elm/Messages/Comp/ShareManage.elm b/modules/webapp/src/main/elm/Messages/Comp/ShareManage.elm index 9de0104e..b34e2775 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ShareManage.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ShareManage.elm @@ -11,6 +11,7 @@ module Messages.Comp.ShareManage exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -44,13 +45,13 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , httpError = Messages.Comp.HttpError.gb - , shareTable = Messages.Comp.ShareTable.gb + , shareTable = Messages.Comp.ShareTable.gb tz , shareForm = Messages.Comp.ShareForm.gb - , shareView = Messages.Comp.ShareView.gb + , shareView = Messages.Comp.ShareView.gb tz , shareMail = Messages.Comp.ShareMail.gb , newShare = "New share" , copyToClipboard = "Copy to clipboard" @@ -69,12 +70,12 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , shareTable = Messages.Comp.ShareTable.de + , shareTable = Messages.Comp.ShareTable.de tz , shareForm = Messages.Comp.ShareForm.de - , shareView = Messages.Comp.ShareView.de + , shareView = Messages.Comp.ShareView.de tz , httpError = Messages.Comp.HttpError.de , shareMail = Messages.Comp.ShareMail.de , newShare = "Neue Freigabe" diff --git a/modules/webapp/src/main/elm/Messages/Comp/ShareTable.elm b/modules/webapp/src/main/elm/Messages/Comp/ShareTable.elm index 170876ff..fe802679 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ShareTable.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ShareTable.elm @@ -11,6 +11,7 @@ module Messages.Comp.ShareTable exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.DateFormat as DF import Messages.UiLanguage @@ -25,20 +26,20 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz , active = "Active" , publishUntil = "Publish Until" , user = "User" } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz , active = "Aktiv" , publishUntil = "Publiziert bis" , user = "Benutzer" diff --git a/modules/webapp/src/main/elm/Messages/Comp/ShareView.elm b/modules/webapp/src/main/elm/Messages/Comp/ShareView.elm index 86f15c07..2e44452c 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/ShareView.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/ShareView.elm @@ -11,6 +11,7 @@ module Messages.Comp.ShareView exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.DateFormat as DF import Messages.UiLanguage @@ -32,10 +33,10 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , date = DF.formatDateLong Messages.UiLanguage.English + , date = DF.formatDateLong Messages.UiLanguage.English tz , qrCodeError = "Error generating QR Code." , expiredInfo = "This share has expired." , disabledInfo = "This share is disabled." @@ -49,10 +50,10 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , date = DF.formatDateLong Messages.UiLanguage.German + , date = DF.formatDateLong Messages.UiLanguage.German tz , qrCodeError = "Fehler beim Erzeugen des QR-Codes." , expiredInfo = "Diese Freigabe ist abgelaufen." , disabledInfo = "Diese Freigae ist nicht aktiv." diff --git a/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm b/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm index 5f1fd5f2..9de653a7 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm @@ -11,6 +11,7 @@ module Messages.Comp.UserManage exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -38,9 +39,9 @@ type alias Texts = } -gb : Texts -gb = - { userTable = Messages.Comp.UserTable.gb +gb : TimeZone -> Texts +gb tz = + { userTable = Messages.Comp.UserTable.gb tz , userForm = Messages.Comp.UserForm.gb , basics = Messages.Basics.gb , httpError = Messages.Comp.HttpError.gb @@ -59,9 +60,9 @@ gb = } -de : Texts -de = - { userTable = Messages.Comp.UserTable.de +de : TimeZone -> Texts +de tz = + { userTable = Messages.Comp.UserTable.de tz , userForm = Messages.Comp.UserForm.de , basics = Messages.Basics.de , httpError = Messages.Comp.HttpError.de diff --git a/modules/webapp/src/main/elm/Messages/Comp/UserTable.elm b/modules/webapp/src/main/elm/Messages/Comp/UserTable.elm index 34a4688e..36240a3d 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/UserTable.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/UserTable.elm @@ -11,6 +11,7 @@ module Messages.Comp.UserTable exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.DateFormat as DF import Messages.UiLanguage @@ -28,8 +29,8 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , login = "Login" , state = "State" @@ -37,12 +38,12 @@ gb = , email = "E-Mail" , logins = "Logins" , lastLogin = "Last Login" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , login = "Benutzername" , state = "Status" @@ -50,5 +51,5 @@ de = , email = "E-Mail" , logins = "Anmeldungen" , lastLogin = "Letzte Anmeldung" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz } diff --git a/modules/webapp/src/main/elm/Messages/DateFormat.elm b/modules/webapp/src/main/elm/Messages/DateFormat.elm index 6b247b8f..23584132 100644 --- a/modules/webapp/src/main/elm/Messages/DateFormat.elm +++ b/modules/webapp/src/main/elm/Messages/DateFormat.elm @@ -11,8 +11,10 @@ module Messages.DateFormat exposing , formatDateShort , formatDateTimeLong , formatDateTimeShort + , formatIsoDateTimeUtc ) +import Data.TimeZone exposing (TimeZone) import DateFormat exposing (Token) import DateFormat.Language as DL import Messages.UiLanguage exposing (UiLanguage(..)) @@ -20,6 +22,7 @@ import Time exposing ( Month(..) , Weekday(..) + , Zone ) @@ -42,8 +45,8 @@ get lang = de -format : UiLanguage -> (DateTimeMsg -> List Token) -> Int -> String -format lang pattern millis = +format : UiLanguage -> TimeZone -> (DateTimeMsg -> List Token) -> Int -> String +format lang zone pattern millis = let msg = get lang @@ -51,27 +54,50 @@ format lang pattern millis = fmt = DateFormat.formatWithLanguage msg.lang (pattern msg) in - fmt Time.utc (Time.millisToPosix millis) + fmt (Data.TimeZone.toZone zone) (Time.millisToPosix millis) -formatDateTimeLong : UiLanguage -> Int -> String -formatDateTimeLong lang millis = - format lang .dateTimeLong millis +formatDateTimeLong : UiLanguage -> TimeZone -> Int -> String +formatDateTimeLong lang zone millis = + format lang zone .dateTimeLong millis -formatDateLong : UiLanguage -> Int -> String -formatDateLong lang millis = - format lang .dateLong millis +formatDateLong : UiLanguage -> TimeZone -> Int -> String +formatDateLong lang zone millis = + format lang zone .dateLong millis -formatDateShort : UiLanguage -> Int -> String -formatDateShort lang millis = - format lang .dateShort millis +formatDateShort : UiLanguage -> TimeZone -> Int -> String +formatDateShort lang zone millis = + format lang zone .dateShort millis -formatDateTimeShort : UiLanguage -> Int -> String -formatDateTimeShort lang millis = - format lang .dateTimeShort millis +formatDateTimeShort : UiLanguage -> TimeZone -> Int -> String +formatDateTimeShort lang zone millis = + format lang zone .dateTimeShort millis + + +isoDateTimeFormatter : List Token +isoDateTimeFormatter = + [ DateFormat.yearNumber + , DateFormat.text "-" + , DateFormat.monthFixed + , DateFormat.text "-" + , DateFormat.dayOfMonthFixed + , DateFormat.text "T" + , DateFormat.hourMilitaryNumber + , DateFormat.text ":" + , DateFormat.minuteFixed + , DateFormat.text ":" + , DateFormat.secondFixed + , DateFormat.text "Z" + ] + + +formatIsoDateTimeUtc : Int -> String +formatIsoDateTimeUtc millis = + Time.millisToPosix millis + |> DateFormat.format isoDateTimeFormatter Time.utc diff --git a/modules/webapp/src/main/elm/Messages/Page/CollectiveSettings.elm b/modules/webapp/src/main/elm/Messages/Page/CollectiveSettings.elm index 45a5caa3..f41c12a4 100644 --- a/modules/webapp/src/main/elm/Messages/Page/CollectiveSettings.elm +++ b/modules/webapp/src/main/elm/Messages/Page/CollectiveSettings.elm @@ -11,6 +11,7 @@ module Messages.Page.CollectiveSettings exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.CollectiveSettingsForm @@ -39,13 +40,13 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , userManage = Messages.Comp.UserManage.gb - , collectiveSettingsForm = Messages.Comp.CollectiveSettingsForm.gb + , userManage = Messages.Comp.UserManage.gb tz + , collectiveSettingsForm = Messages.Comp.CollectiveSettingsForm.gb tz , sourceManage = Messages.Comp.SourceManage.gb - , shareManage = Messages.Comp.ShareManage.gb + , shareManage = Messages.Comp.ShareManage.gb tz , httpError = Messages.Comp.HttpError.gb , collectiveSettings = "Collective Settings" , insights = "Insights" @@ -59,13 +60,13 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , userManage = Messages.Comp.UserManage.de - , collectiveSettingsForm = Messages.Comp.CollectiveSettingsForm.de + , userManage = Messages.Comp.UserManage.de tz + , collectiveSettingsForm = Messages.Comp.CollectiveSettingsForm.de tz , sourceManage = Messages.Comp.SourceManage.de - , shareManage = Messages.Comp.ShareManage.de + , shareManage = Messages.Comp.ShareManage.de tz , httpError = Messages.Comp.HttpError.de , collectiveSettings = "Kollektiveinstellungen" , insights = "Statistiken" diff --git a/modules/webapp/src/main/elm/Messages/Page/Dashboard.elm b/modules/webapp/src/main/elm/Messages/Page/Dashboard.elm index 5b35714f..a0330a0a 100644 --- a/modules/webapp/src/main/elm/Messages/Page/Dashboard.elm +++ b/modules/webapp/src/main/elm/Messages/Page/Dashboard.elm @@ -7,6 +7,7 @@ module Messages.Page.Dashboard exposing (Texts, de, gb) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Comp.BookmarkChooser import Messages.Comp.DashboardManage @@ -55,21 +56,21 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , bookmarkChooser = Messages.Comp.BookmarkChooser.gb , notificationHookManage = Messages.Comp.NotificationHookManage.gb - , periodicQueryManage = Messages.Comp.PeriodicQueryTaskManage.gb + , periodicQueryManage = Messages.Comp.PeriodicQueryTaskManage.gb tz , sourceManage = Messages.Comp.SourceManage.gb - , shareManage = Messages.Comp.ShareManage.gb + , shareManage = Messages.Comp.ShareManage.gb tz , organizationManage = Messages.Comp.OrgManage.gb , personManage = Messages.Comp.PersonManage.gb , equipManage = Messages.Comp.EquipmentManage.gb , tagManage = Messages.Comp.TagManage.gb - , folderManage = Messages.Comp.FolderManage.gb + , folderManage = Messages.Comp.FolderManage.gb tz , uploadForm = Messages.Comp.UploadForm.gb - , dashboard = Messages.Comp.DashboardView.gb + , dashboard = Messages.Comp.DashboardView.gb tz , dashboardManage = Messages.Comp.DashboardManage.gb , defaultDashboard = Messages.Page.DefaultDashboard.gb , accountScope = Messages.Data.AccountScope.gb @@ -86,21 +87,21 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , bookmarkChooser = Messages.Comp.BookmarkChooser.de , notificationHookManage = Messages.Comp.NotificationHookManage.de - , periodicQueryManage = Messages.Comp.PeriodicQueryTaskManage.de + , periodicQueryManage = Messages.Comp.PeriodicQueryTaskManage.de tz , sourceManage = Messages.Comp.SourceManage.de - , shareManage = Messages.Comp.ShareManage.de + , shareManage = Messages.Comp.ShareManage.de tz , organizationManage = Messages.Comp.OrgManage.de , personManage = Messages.Comp.PersonManage.de , equipManage = Messages.Comp.EquipmentManage.de , tagManage = Messages.Comp.TagManage.de - , folderManage = Messages.Comp.FolderManage.de + , folderManage = Messages.Comp.FolderManage.de tz , uploadForm = Messages.Comp.UploadForm.de - , dashboard = Messages.Comp.DashboardView.de + , dashboard = Messages.Comp.DashboardView.de tz , dashboardManage = Messages.Comp.DashboardManage.de , defaultDashboard = Messages.Page.DefaultDashboard.de , accountScope = Messages.Data.AccountScope.de diff --git a/modules/webapp/src/main/elm/Messages/Page/ItemDetail.elm b/modules/webapp/src/main/elm/Messages/Page/ItemDetail.elm index a5013fff..9edc3eda 100644 --- a/modules/webapp/src/main/elm/Messages/Page/ItemDetail.elm +++ b/modules/webapp/src/main/elm/Messages/Page/ItemDetail.elm @@ -11,6 +11,7 @@ module Messages.Page.ItemDetail exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Comp.ItemDetail import Messages.Comp.ItemDetail.EditForm @@ -23,19 +24,19 @@ type alias Texts = } -gb : Texts -gb = - { itemDetail = Messages.Comp.ItemDetail.gb - , editForm = Messages.Comp.ItemDetail.EditForm.gb +gb : TimeZone -> Texts +gb tz = + { itemDetail = Messages.Comp.ItemDetail.gb tz + , editForm = Messages.Comp.ItemDetail.EditForm.gb tz , editMetadata = "Edit Metadata" , collapseExpand = "Collapse/Expand" } -de : Texts -de = - { itemDetail = Messages.Comp.ItemDetail.de - , editForm = Messages.Comp.ItemDetail.EditForm.de +de : TimeZone -> Texts +de tz = + { itemDetail = Messages.Comp.ItemDetail.de tz + , editForm = Messages.Comp.ItemDetail.EditForm.de tz , editMetadata = "Metadaten ändern" , collapseExpand = "Aus-/Einklappen" } diff --git a/modules/webapp/src/main/elm/Messages/Page/ManageData.elm b/modules/webapp/src/main/elm/Messages/Page/ManageData.elm index feda298b..2e479618 100644 --- a/modules/webapp/src/main/elm/Messages/Page/ManageData.elm +++ b/modules/webapp/src/main/elm/Messages/Page/ManageData.elm @@ -11,6 +11,7 @@ module Messages.Page.ManageData exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Comp.BookmarkManage import Messages.Comp.CustomFieldManage @@ -35,30 +36,30 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , tagManage = Messages.Comp.TagManage.gb , equipmentManage = Messages.Comp.EquipmentManage.gb , orgManage = Messages.Comp.OrgManage.gb , personManage = Messages.Comp.PersonManage.gb - , folderManage = Messages.Comp.FolderManage.gb - , customFieldManage = Messages.Comp.CustomFieldManage.gb + , folderManage = Messages.Comp.FolderManage.gb tz + , customFieldManage = Messages.Comp.CustomFieldManage.gb tz , bookmarkManage = Messages.Comp.BookmarkManage.gb , manageData = "Manage Data" , bookmarks = "Bookmarks" } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , tagManage = Messages.Comp.TagManage.de , equipmentManage = Messages.Comp.EquipmentManage.de , orgManage = Messages.Comp.OrgManage.de , personManage = Messages.Comp.PersonManage.de - , folderManage = Messages.Comp.FolderManage.de - , customFieldManage = Messages.Comp.CustomFieldManage.de + , folderManage = Messages.Comp.FolderManage.de tz + , customFieldManage = Messages.Comp.CustomFieldManage.de tz , bookmarkManage = Messages.Comp.BookmarkManage.de , manageData = "Daten verwalten" , bookmarks = "Bookmarks" diff --git a/modules/webapp/src/main/elm/Messages/Page/Queue.elm b/modules/webapp/src/main/elm/Messages/Page/Queue.elm index c01a3343..12e977d3 100644 --- a/modules/webapp/src/main/elm/Messages/Page/Queue.elm +++ b/modules/webapp/src/main/elm/Messages/Page/Queue.elm @@ -11,6 +11,7 @@ module Messages.Page.Queue exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -44,8 +45,8 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , httpError = Messages.Comp.HttpError.gb , currentlyRunning = "Currently Running" @@ -66,13 +67,13 @@ gb = , retries = "Retries" , changePriority = "Change priority of this job" , prio = "Prio" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.English tz , sidebarTitle = "Processing" } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , httpError = Messages.Comp.HttpError.de , currentlyRunning = "Wird ausgeführt" @@ -93,6 +94,6 @@ de = , retries = "Versuche" , changePriority = "Priorität des Jobs ändern" , prio = "Prio" - , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German + , formatDateTime = DF.formatDateTimeLong Messages.UiLanguage.German tz , sidebarTitle = "Verarbeitung" } diff --git a/modules/webapp/src/main/elm/Messages/Page/Search.elm b/modules/webapp/src/main/elm/Messages/Page/Search.elm index 2bde1975..da8729a6 100644 --- a/modules/webapp/src/main/elm/Messages/Page/Search.elm +++ b/modules/webapp/src/main/elm/Messages/Page/Search.elm @@ -11,6 +11,7 @@ module Messages.Page.Search exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Comp.BookmarkQueryManage import Messages.Comp.ItemCardList @@ -61,14 +62,14 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb - , itemCardList = Messages.Comp.ItemCardList.gb + , itemCardList = Messages.Comp.ItemCardList.gb tz , searchStatsView = Messages.Comp.SearchStatsView.gb , sideMenu = Messages.Page.SearchSideMenu.gb - , itemMerge = Messages.Comp.ItemMerge.gb - , publishItems = Messages.Comp.PublishItems.gb + , itemMerge = Messages.Comp.ItemMerge.gb tz + , publishItems = Messages.Comp.PublishItems.gb tz , bookmarkManage = Messages.Comp.BookmarkQueryManage.gb , contentSearch = "Content search…" , searchInNames = "Search in names…" @@ -103,14 +104,14 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de - , itemCardList = Messages.Comp.ItemCardList.de + , itemCardList = Messages.Comp.ItemCardList.de tz , searchStatsView = Messages.Comp.SearchStatsView.de , sideMenu = Messages.Page.SearchSideMenu.de - , itemMerge = Messages.Comp.ItemMerge.de - , publishItems = Messages.Comp.PublishItems.de + , itemMerge = Messages.Comp.ItemMerge.de tz + , publishItems = Messages.Comp.PublishItems.de tz , bookmarkManage = Messages.Comp.BookmarkQueryManage.de , contentSearch = "Volltextsuche…" , searchInNames = "Suche in Namen…" diff --git a/modules/webapp/src/main/elm/Messages/Page/Share.elm b/modules/webapp/src/main/elm/Messages/Page/Share.elm index f68cc423..3779093c 100644 --- a/modules/webapp/src/main/elm/Messages/Page/Share.elm +++ b/modules/webapp/src/main/elm/Messages/Page/Share.elm @@ -7,6 +7,7 @@ module Messages.Page.Share exposing (..) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -32,11 +33,11 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { searchMenu = Messages.Comp.SearchMenu.gb , basics = Messages.Basics.gb - , itemCardList = Messages.Comp.ItemCardList.gb + , itemCardList = Messages.Comp.ItemCardList.gb tz , passwordForm = Messages.Comp.SharePasswordForm.gb , authFailed = "This share does not exist." , httpError = Messages.Comp.HttpError.gb @@ -50,11 +51,11 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { searchMenu = Messages.Comp.SearchMenu.de , basics = Messages.Basics.de - , itemCardList = Messages.Comp.ItemCardList.de + , itemCardList = Messages.Comp.ItemCardList.de tz , passwordForm = Messages.Comp.SharePasswordForm.de , authFailed = "Diese Freigabe existiert nicht." , httpError = Messages.Comp.HttpError.de diff --git a/modules/webapp/src/main/elm/Messages/Page/ShareDetail.elm b/modules/webapp/src/main/elm/Messages/Page/ShareDetail.elm index 33408d3f..abaca7a2 100644 --- a/modules/webapp/src/main/elm/Messages/Page/ShareDetail.elm +++ b/modules/webapp/src/main/elm/Messages/Page/ShareDetail.elm @@ -8,6 +8,7 @@ module Messages.Page.ShareDetail exposing (..) import Data.Fields exposing (Field) +import Data.TimeZone exposing (TimeZone) import Http import Messages.Basics import Messages.Comp.HttpError @@ -31,13 +32,13 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { passwordForm = Messages.Comp.SharePasswordForm.gb , basics = Messages.Basics.gb , field = Messages.Data.Fields.gb - , formatDateLong = Messages.DateFormat.formatDateLong English - , formatDateShort = Messages.DateFormat.formatDateShort English + , formatDateLong = Messages.DateFormat.formatDateLong English tz + , formatDateShort = Messages.DateFormat.formatDateShort English tz , authFailed = "This share does not exist." , httpError = Messages.Comp.HttpError.gb , tagsAndFields = "Tags & Fields" @@ -46,13 +47,13 @@ gb = } -de : Texts -de = +de : TimeZone -> Texts +de tz = { passwordForm = Messages.Comp.SharePasswordForm.de , basics = Messages.Basics.de , field = Messages.Data.Fields.de - , formatDateLong = Messages.DateFormat.formatDateLong German - , formatDateShort = Messages.DateFormat.formatDateShort German + , formatDateLong = Messages.DateFormat.formatDateLong German tz + , formatDateShort = Messages.DateFormat.formatDateShort German tz , authFailed = "Diese Freigabe existiert nicht." , httpError = Messages.Comp.HttpError.de , tagsAndFields = "Tags & Felder" diff --git a/modules/webapp/src/main/elm/Messages/Page/UserSettings.elm b/modules/webapp/src/main/elm/Messages/Page/UserSettings.elm index e030fdda..cb791093 100644 --- a/modules/webapp/src/main/elm/Messages/Page/UserSettings.elm +++ b/modules/webapp/src/main/elm/Messages/Page/UserSettings.elm @@ -11,6 +11,7 @@ module Messages.Page.UserSettings exposing , gb ) +import Data.TimeZone exposing (TimeZone) import Messages.Basics import Messages.Comp.ChangePasswordForm import Messages.Comp.DueItemsTaskManage @@ -58,19 +59,19 @@ type alias Texts = } -gb : Texts -gb = +gb : TimeZone -> Texts +gb tz = { basics = Messages.Basics.gb , changePasswordForm = Messages.Comp.ChangePasswordForm.gb , uiSettingsManage = Messages.Comp.UiSettingsManage.gb , emailSettingsManage = Messages.Comp.EmailSettingsManage.gb , imapSettingsManage = Messages.Comp.ImapSettingsManage.gb - , notificationManage = Messages.Comp.DueItemsTaskManage.gb - , scanMailboxManage = Messages.Comp.ScanMailboxManage.gb + , notificationManage = Messages.Comp.DueItemsTaskManage.gb tz + , scanMailboxManage = Messages.Comp.ScanMailboxManage.gb tz , notificationHookManage = Messages.Comp.NotificationHookManage.gb - , periodicQueryTask = Messages.Comp.PeriodicQueryTaskManage.gb + , periodicQueryTask = Messages.Comp.PeriodicQueryTaskManage.gb tz , channelManage = Messages.Comp.NotificationChannelManage.gb - , otpSetup = Messages.Comp.OtpSetup.gb + , otpSetup = Messages.Comp.OtpSetup.gb tz , userSettings = "User Settings" , uiSettings = "UI Settings" , notifications = "Notifications" @@ -121,19 +122,19 @@ must be created before. } -de : Texts -de = +de : TimeZone -> Texts +de tz = { basics = Messages.Basics.de , changePasswordForm = Messages.Comp.ChangePasswordForm.de , uiSettingsManage = Messages.Comp.UiSettingsManage.de , emailSettingsManage = Messages.Comp.EmailSettingsManage.de , imapSettingsManage = Messages.Comp.ImapSettingsManage.de - , notificationManage = Messages.Comp.DueItemsTaskManage.de - , scanMailboxManage = Messages.Comp.ScanMailboxManage.de + , notificationManage = Messages.Comp.DueItemsTaskManage.de tz + , scanMailboxManage = Messages.Comp.ScanMailboxManage.de tz , notificationHookManage = Messages.Comp.NotificationHookManage.de - , periodicQueryTask = Messages.Comp.PeriodicQueryTaskManage.de + , periodicQueryTask = Messages.Comp.PeriodicQueryTaskManage.de tz , channelManage = Messages.Comp.NotificationChannelManage.de - , otpSetup = Messages.Comp.OtpSetup.de + , otpSetup = Messages.Comp.OtpSetup.de tz , userSettings = "Benutzereinstellung" , uiSettings = "Oberfläche" , notifications = "Benachrichtigungen" diff --git a/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm b/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm index 519971c0..49f376eb 100644 --- a/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm +++ b/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm @@ -12,13 +12,14 @@ import Comp.CollectiveSettingsForm import Comp.ShareManage import Comp.SourceManage import Comp.UserManage -import Data.Flags exposing (Flags) +import Data.Environment as Env +import Data.Flags import Messages.Page.CollectiveSettings exposing (Texts) import Page.CollectiveSettings.Data exposing (..) -update : Texts -> Flags -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) -update texts flags msg model = +update : Texts -> Env.Update -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) +update texts env msg model = case msg of SetTab t -> let @@ -27,45 +28,45 @@ update texts flags msg model = in case t of SourceTab -> - update texts flags (SourceMsg Comp.SourceManage.LoadSources) m + update texts env (SourceMsg Comp.SourceManage.LoadSources) m UserTab -> - update texts flags (UserMsg Comp.UserManage.LoadUsers) m + update texts env (UserMsg Comp.UserManage.LoadUsers) m InsightsTab -> - update texts flags Init m + update texts env Init m SettingsTab -> - update texts flags Init m + update texts env Init m ShareTab -> - update texts flags (ShareMsg Comp.ShareManage.loadShares) m + update texts env (ShareMsg Comp.ShareManage.loadShares) m SourceMsg m -> let ( m2, c2 ) = - Comp.SourceManage.update flags m model.sourceModel + Comp.SourceManage.update env.flags m model.sourceModel in ( { model | sourceModel = m2 }, Cmd.map SourceMsg c2, Sub.none ) ShareMsg lm -> let ( sm, sc, ss ) = - Comp.ShareManage.update texts.shareManage flags lm model.shareModel + Comp.ShareManage.update texts.shareManage env.flags lm model.shareModel in ( { model | shareModel = sm }, Cmd.map ShareMsg sc, Sub.map ShareMsg ss ) UserMsg m -> let ( m2, c2 ) = - Comp.UserManage.update flags m model.userModel + Comp.UserManage.update env.flags m model.userModel in ( { model | userModel = m2 }, Cmd.map UserMsg c2, Sub.none ) SettingsFormMsg m -> let ( m2, c2, msett ) = - Comp.CollectiveSettingsForm.update flags m model.settingsModel + Comp.CollectiveSettingsForm.update env.flags env.settings.timeZone m model.settingsModel cmd = case msett of @@ -73,7 +74,7 @@ update texts flags msg model = Cmd.none Just sett -> - Api.setCollectiveSettings flags sett SubmitResp + Api.setCollectiveSettings env.flags sett SubmitResp in ( { model | settingsModel = m2, formState = InitialState } , Cmd.batch [ cmd, Cmd.map SettingsFormMsg c2 ] @@ -83,8 +84,8 @@ update texts flags msg model = Init -> ( { model | formState = InitialState } , Cmd.batch - [ Api.getInsights flags GetInsightsResp - , Api.getCollectiveSettings flags CollectiveSettingsResp + [ Api.getInsights env.flags GetInsightsResp + , Api.getCollectiveSettings env.flags CollectiveSettingsResp ] , Sub.none ) @@ -98,7 +99,7 @@ update texts flags msg model = CollectiveSettingsResp (Ok data) -> let ( cm, cc ) = - Comp.CollectiveSettingsForm.init flags data + Comp.CollectiveSettingsForm.init env.flags data in ( { model | settingsModel = cm } , Cmd.map SettingsFormMsg cc diff --git a/modules/webapp/src/main/elm/Page/Dashboard/DefaultDashboard.elm b/modules/webapp/src/main/elm/Page/Dashboard/DefaultDashboard.elm index 29ecb6ad..08d44c4f 100644 --- a/modules/webapp/src/main/elm/Page/Dashboard/DefaultDashboard.elm +++ b/modules/webapp/src/main/elm/Page/Dashboard/DefaultDashboard.elm @@ -41,7 +41,7 @@ getDefaultDashboard flags settings = Data.UiSettings.getUiLanguage flags settings Messages.UiLanguage.English texts = - Messages.get lang + Messages.get lang settings.timeZone in value texts.dashboard.defaultDashboard diff --git a/modules/webapp/src/main/elm/Page/Dashboard/Update.elm b/modules/webapp/src/main/elm/Page/Dashboard/Update.elm index f0988cc5..a4e1072b 100644 --- a/modules/webapp/src/main/elm/Page/Dashboard/Update.elm +++ b/modules/webapp/src/main/elm/Page/Dashboard/Update.elm @@ -270,7 +270,7 @@ update texts settings navKey flags msg model = PeriodicQuery pqm -> let ( pqm_, pqc, pqs ) = - Comp.PeriodicQueryTaskManage.update flags lm pqm + Comp.PeriodicQueryTaskManage.update flags settings.timeZone lm pqm in ( { model | content = PeriodicQuery pqm_ } , Cmd.map PeriodicQueryMsg pqc diff --git a/modules/webapp/src/main/elm/Page/Queue/View2.elm b/modules/webapp/src/main/elm/Page/Queue/View2.elm index e772bd22..e426c1d4 100644 --- a/modules/webapp/src/main/elm/Page/Queue/View2.elm +++ b/modules/webapp/src/main/elm/Page/Queue/View2.elm @@ -20,7 +20,6 @@ import Html.Events exposing (onClick) import Messages.Page.Queue exposing (Texts) import Page.Queue.Data exposing (..) import Styles as S -import Util.Time exposing (formatIsoDateTime) viewSidebar : Texts -> Bool -> Flags -> UiSettings -> Model -> Html Msg @@ -91,7 +90,7 @@ viewSidebar texts visible _ _ model = viewContent : Texts -> Flags -> UiSettings -> Model -> Html Msg -viewContent texts _ _ model = +viewContent texts _ settings model = let gridStyle = "grid gap-4 grid-cols-1 md:grid-cols-2" @@ -109,7 +108,7 @@ viewContent texts _ _ model = ] [ case model.showLog of Just job -> - renderJobLog job + renderJobLog texts settings job Nothing -> span [ class "hidden" ] [] @@ -120,7 +119,7 @@ viewContent texts _ _ model = else div [ class "flex flex-col space-y-2" ] - (List.map (renderProgressCard texts model) model.state.progress) + (List.map (renderProgressCard texts settings model) model.state.progress) QueueAll -> if List.isEmpty model.state.completed && List.isEmpty model.state.completed then @@ -187,8 +186,8 @@ filterJobDetails list state = List.filter isState list -renderJobLog : JobDetail -> Html Msg -renderJobLog job = +renderJobLog : Texts -> UiSettings -> JobDetail -> Html Msg +renderJobLog texts settings job = div [ class " absolute top-12 left-0 w-full h-full-12 z-40 flex flex-col items-center px-4 py-2 " , class "bg-white bg-opacity-80 dark:bg-black dark:bg-slate-900 dark:bg-opacity-90" @@ -209,13 +208,13 @@ renderJobLog job = ] ] , div [ class styleJobLog ] - (List.map renderLogLine job.logs) + (List.map (renderLogLine texts settings) job.logs) ] ] -renderProgressCard : Texts -> Model -> JobDetail -> Html Msg -renderProgressCard texts model job = +renderProgressCard : Texts -> UiSettings -> Model -> JobDetail -> Html Msg +renderProgressCard texts settings model job = div [ class (S.box ++ "px-2 flex flex-col") ] [ Comp.Progress.topAttachedIndicating job.progress , Html.map (DimmerMsg job) @@ -248,7 +247,7 @@ renderProgressCard texts model job = ] , div [ class "py-2", id "joblog" ] [ div [ class styleJobLog ] - (List.map renderLogLine job.logs) + (List.map (renderLogLine texts settings) job.logs) ] , div [ class "py-2 flex flex-row justify-end" ] [ button [ class S.secondaryButton, onClick (RequestCancelJob job) ] @@ -263,8 +262,8 @@ styleJobLog = "bg-gray-900 text-xs leading-5 px-2 py-1 font-mono text-gray-100 overflow-auto max-h-96 rounded" -renderLogLine : JobLogEvent -> Html Msg -renderLogLine log = +renderLogLine : Texts -> UiSettings -> JobLogEvent -> Html Msg +renderLogLine texts settings log = let lineStyle = case String.toLower log.level of @@ -284,7 +283,7 @@ renderLogLine log = "" in span [ class lineStyle ] - [ formatIsoDateTime log.time |> text + [ texts.formatDateTime log.time |> text , text ": " , text log.message , br [] [] diff --git a/modules/webapp/src/main/elm/Page/UserSettings/Update.elm b/modules/webapp/src/main/elm/Page/UserSettings/Update.elm index eec01a4e..8810593b 100644 --- a/modules/webapp/src/main/elm/Page/UserSettings/Update.elm +++ b/modules/webapp/src/main/elm/Page/UserSettings/Update.elm @@ -161,7 +161,7 @@ update flags settings msg model = NotificationMsg lm -> let ( m2, c2 ) = - Comp.DueItemsTaskManage.update flags lm model.notificationModel + Comp.DueItemsTaskManage.update flags settings.timeZone lm model.notificationModel in { model = { model | notificationModel = m2 } , cmd = Cmd.map NotificationMsg c2 @@ -172,7 +172,7 @@ update flags settings msg model = ScanMailboxMsg lm -> let ( m2, c2 ) = - Comp.ScanMailboxManage.update flags lm model.scanMailboxModel + Comp.ScanMailboxManage.update flags settings.timeZone lm model.scanMailboxModel in { model = { model | scanMailboxModel = m2 } , cmd = Cmd.map ScanMailboxMsg c2 @@ -227,7 +227,7 @@ update flags settings msg model = PeriodicQueryMsg lm -> let ( pqm, pqc, pqs ) = - Comp.PeriodicQueryTaskManage.update flags lm model.periodicQueryModel + Comp.PeriodicQueryTaskManage.update flags settings.timeZone lm model.periodicQueryModel in { model = { model | periodicQueryModel = pqm } , cmd = Cmd.map PeriodicQueryMsg pqc diff --git a/modules/webapp/src/main/elm/Util/Time.elm b/modules/webapp/src/main/elm/Util/Time.elm deleted file mode 100644 index a0d6c6c7..00000000 --- a/modules/webapp/src/main/elm/Util/Time.elm +++ /dev/null @@ -1,39 +0,0 @@ -{- - Copyright 2020 Eike K. & Contributors - - SPDX-License-Identifier: AGPL-3.0-or-later --} - - -module Util.Time exposing (formatIsoDateTime) - -import DateFormat -import Time exposing (Posix, Zone, utc) - - -isoDateTimeFormatter : Zone -> Posix -> String -isoDateTimeFormatter = - DateFormat.format - [ DateFormat.yearNumber - , DateFormat.text "-" - , DateFormat.monthFixed - , DateFormat.text "-" - , DateFormat.dayOfMonthFixed - , DateFormat.text "T" - , DateFormat.hourMilitaryNumber - , DateFormat.text ":" - , DateFormat.minuteFixed - , DateFormat.text ":" - , DateFormat.secondFixed - ] - - -timeZone : Zone -timeZone = - utc - - -formatIsoDateTime : Int -> String -formatIsoDateTime millis = - Time.millisToPosix millis - |> isoDateTimeFormatter timeZone diff --git a/nix/module-joex.nix b/nix/module-joex.nix index b387df16..ca7bbfc4 100644 --- a/nix/module-joex.nix +++ b/nix/module-joex.nix @@ -48,7 +48,7 @@ let wakeup-period = "10 minutes"; }; house-keeping = { - schedule = "Sun *-*-* 00:00:00"; + schedule = "Sun *-*-* 00:00:00 UTC"; cleanup-invites = { enabled = true; older-than = "30 days"; @@ -70,7 +70,7 @@ let update-check = { enabled = false; test-run = false; - schedule = "Sun *-*-* 00:00:00"; + schedule = "Sun *-*-* 00:00:00 UTC"; sender-account = ""; smtp-id = ""; recipients = []; diff --git a/tools/start-local/start-local.sh b/tools/start-local/start-local.sh index be2ff816..f04b123f 100755 --- a/tools/start-local/start-local.sh +++ b/tools/start-local/start-local.sh @@ -114,7 +114,7 @@ docspell.joex { retry-delay = "10 seconds" } house-keeping { - schedule = "*-*-* 01:00:00" + schedule = "*-*-* 01:00:00 UTC" cleanup-invites = { older-than = "10 days" }