diff --git a/modules/webapp/src/main/elm/App/View2.elm b/modules/webapp/src/main/elm/App/View2.elm index 07075ccb..279182c0 100644 --- a/modules/webapp/src/main/elm/App/View2.elm +++ b/modules/webapp/src/main/elm/App/View2.elm @@ -139,13 +139,13 @@ mainContent model = viewRegister texts model UploadPage mid -> - viewUpload mid model + viewUpload texts mid model NewInvitePage -> viewNewInvite texts model ItemDetailPage id -> - viewItemDetail id model + viewItemDetail texts id model ) @@ -476,8 +476,8 @@ viewNewInvite texts model = ] -viewUpload : Maybe String -> Model -> List (Html Msg) -viewUpload mid model = +viewUpload : Messages -> Maybe String -> Model -> List (Html Msg) +viewUpload texts mid model = [ Html.map UploadMsg (Upload.viewSidebar mid @@ -487,7 +487,8 @@ viewUpload mid model = model.uploadModel ) , Html.map UploadMsg - (Upload.viewContent mid + (Upload.viewContent texts.upload + mid model.flags model.uiSettings model.uploadModel @@ -495,21 +496,21 @@ viewUpload mid model = ] -viewItemDetail : String -> Model -> List (Html Msg) -viewItemDetail id model = +viewItemDetail : Messages -> String -> Model -> List (Html Msg) +viewItemDetail texts id model = let inav = Page.Home.Data.itemNav id model.homeModel in [ Html.map ItemDetailMsg - (ItemDetail.viewSidebar + (ItemDetail.viewSidebar texts.itemDetail model.sidebarVisible model.flags model.uiSettings model.itemDetailModel ) , Html.map ItemDetailMsg - (ItemDetail.viewContent + (ItemDetail.viewContent texts.itemDetail inav model.flags model.uiSettings diff --git a/modules/webapp/src/main/elm/Comp/Dropzone.elm b/modules/webapp/src/main/elm/Comp/Dropzone.elm index e8a8b71a..32c96740 100644 --- a/modules/webapp/src/main/elm/Comp/Dropzone.elm +++ b/modules/webapp/src/main/elm/Comp/Dropzone.elm @@ -18,6 +18,7 @@ import File.Select import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (..) +import Messages.DropzoneComp exposing (Texts) import Styles as S import Util.Html exposing (onDragEnter, onDragLeave, onDragOver, onDropFiles) @@ -124,8 +125,8 @@ filterMime model files = --- View2 -view2 : Model -> Html Msg -view2 model = +view2 : Texts -> Model -> Html Msg +view2 texts model = div [ classList [ ( "bg-opacity-100 bg-blue-100 dark:bg-lightblue-800", model.state.hover ) @@ -144,24 +145,23 @@ view2 model = ] [ i [ class "fa fa-mouse-pointer" ] [] , div [ class "ml-3" ] - [ text "Drop files here" + [ text texts.dropFilesHere ] ] , B.horizontalDivider - { label = "Or" + { label = texts.or , topCss = "w-2/3 mb-4 hidden md:inline-flex" , labelCss = "px-4 bg-gray-200 bg-opacity-50" , lineColor = "bg-gray-300 dark:bg-bluegray-600" } , B.primaryBasicButton - { label = "Select ..." + { label = texts.select , icon = "fa fa-folder-open font-thin" , handler = onClick PickFiles , attrs = [ href "#" ] , disabled = not model.state.active } , div [ class "text-center opacity-75 text-sm mt-4" ] - [ text "Choose document files (pdf, docx, txt, html, …). " - , text "Archives (zip and eml) are extracted." + [ text texts.selectInfo ] ] diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail.elm b/modules/webapp/src/main/elm/Comp/ItemDetail.elm index b295c7a9..f35f37ea 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail.elm @@ -13,6 +13,7 @@ import Data.Flags exposing (Flags) import Data.ItemNav exposing (ItemNav) import Data.UiSettings exposing (UiSettings) import Html exposing (..) +import Messages.ItemDetailComp exposing (Texts) import Page exposing (Page(..)) @@ -30,6 +31,6 @@ update = Comp.ItemDetail.Update.update -view2 : ItemNav -> UiSettings -> Model -> Html Msg +view2 : Texts -> ItemNav -> UiSettings -> Model -> Html Msg view2 = Comp.ItemDetail.View2.view diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/AddFilesForm.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/AddFilesForm.elm index bebc9622..fb3e7147 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/AddFilesForm.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/AddFilesForm.elm @@ -3,20 +3,20 @@ module Comp.ItemDetail.AddFilesForm exposing (view) import Comp.Dropzone import Comp.ItemDetail.Model exposing (..) import Comp.Progress -import Data.DropdownStyle import Dict import File exposing (File) import Html exposing (..) import Html.Attributes exposing (..) -import Html.Events exposing (onCheck, onClick, onInput) +import Html.Events exposing (onClick) +import Messages.ItemDetail.AddFilesForm exposing (Texts) import Set import Styles as S import Util.File exposing (makeFileId) import Util.Size -view : Model -> Html Msg -view model = +view : Texts -> Model -> Html Msg +view texts model = div [ classList [ ( "hidden", not model.addFilesOpen ) @@ -28,7 +28,7 @@ view model = [ text "Add more files to this item" ] , Html.map AddFilesMsg - (Comp.Dropzone.view2 model.addFilesModel) + (Comp.Dropzone.view2 texts.dropzone model.addFilesModel) , div [ class "flex flex-row space-x-2 mt-2" ] [ button [ class S.primaryButton diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm index 377f0b16..af3c849e 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm @@ -23,17 +23,18 @@ import Data.UiSettings exposing (UiSettings) import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (onClick) +import Messages.ItemDetailComp exposing (Texts) import Page exposing (Page(..)) import Styles as S import Util.Time -view : ItemNav -> UiSettings -> Model -> Html Msg -view inav settings model = +view : Texts -> ItemNav -> UiSettings -> Model -> Html Msg +view texts inav settings model = div [ class "flex flex-col h-full" ] [ header settings model , menuBar inav settings model - , body inav settings model + , body texts inav settings model , itemModal model ] @@ -194,20 +195,20 @@ menuBar inav settings model = } -body : ItemNav -> UiSettings -> Model -> Html Msg -body inav settings model = +body : Texts -> ItemNav -> UiSettings -> Model -> Html Msg +body texts _ settings model = div [ class "grid gap-2 grid-cols-1 md:grid-cols-3 h-full" ] - [ leftArea settings model + [ leftArea texts settings model , rightArea settings model ] -leftArea : UiSettings -> Model -> Html Msg -leftArea settings model = +leftArea : Texts -> UiSettings -> Model -> Html Msg +leftArea texts settings model = div [ class "w-full md:order-first md:mr-2 flex flex-col" ] [ addDetailForm settings model , sendMailForm settings model - , Comp.ItemDetail.AddFilesForm.view model + , Comp.ItemDetail.AddFilesForm.view texts.addFilesForm model , Comp.ItemDetail.Notes.view model , div [ classList diff --git a/modules/webapp/src/main/elm/Messages.elm b/modules/webapp/src/main/elm/Messages.elm index c2289bcf..c325f228 100644 --- a/modules/webapp/src/main/elm/Messages.elm +++ b/modules/webapp/src/main/elm/Messages.elm @@ -7,8 +7,11 @@ module Messages exposing import Messages.App import Messages.CollectiveSettingsPage +import Messages.ItemDetailPage import Messages.LoginPage +import Messages.NewInvitePage import Messages.RegisterPage +import Messages.UploadPage import UiLanguage exposing (UiLanguage(..)) @@ -23,6 +26,9 @@ type alias Messages = , collectiveSettings : Messages.CollectiveSettingsPage.Texts , login : Messages.LoginPage.Texts , register : Messages.RegisterPage.Texts + , newInvite : Messages.NewInvitePage.Texts + , upload : Messages.UploadPage.Texts + , itemDetail : Messages.ItemDetailPage.Texts } @@ -79,6 +85,9 @@ gb = , collectiveSettings = Messages.CollectiveSettingsPage.gb , login = Messages.LoginPage.gb , register = Messages.RegisterPage.gb + , newInvite = Messages.NewInvitePage.gb + , upload = Messages.UploadPage.gb + , itemDetail = Messages.ItemDetailPage.gb } @@ -92,4 +101,7 @@ de = , collectiveSettings = Messages.CollectiveSettingsPage.de , login = Messages.LoginPage.de , register = Messages.RegisterPage.de + , newInvite = Messages.NewInvitePage.de + , upload = Messages.UploadPage.de + , itemDetail = Messages.ItemDetailPage.de } diff --git a/modules/webapp/src/main/elm/Messages/DropzoneComp.elm b/modules/webapp/src/main/elm/Messages/DropzoneComp.elm new file mode 100644 index 00000000..f7d1f9bd --- /dev/null +++ b/modules/webapp/src/main/elm/Messages/DropzoneComp.elm @@ -0,0 +1,20 @@ +module Messages.DropzoneComp exposing (..) + + +type alias Texts = + { dropFilesHere : String + , or : String + , select : String + , selectInfo : String + } + + +gb : Texts +gb = + { dropFilesHere = "Drop files here" + , or = "Or" + , select = "Select ..." + , selectInfo = + "Choose document files (pdf, docx, txt, html, …). " + ++ "Archives (zip and eml) are extracted." + } diff --git a/modules/webapp/src/main/elm/Messages/ItemDetail/AddFilesForm.elm b/modules/webapp/src/main/elm/Messages/ItemDetail/AddFilesForm.elm new file mode 100644 index 00000000..ec4e0b47 --- /dev/null +++ b/modules/webapp/src/main/elm/Messages/ItemDetail/AddFilesForm.elm @@ -0,0 +1,12 @@ +module Messages.ItemDetail.AddFilesForm exposing (..) + +import Messages.DropzoneComp + + +type alias Texts = + { dropzone : Messages.DropzoneComp.Texts } + + +gb : Texts +gb = + { dropzone = Messages.DropzoneComp.gb } diff --git a/modules/webapp/src/main/elm/Messages/ItemDetailComp.elm b/modules/webapp/src/main/elm/Messages/ItemDetailComp.elm new file mode 100644 index 00000000..30e17929 --- /dev/null +++ b/modules/webapp/src/main/elm/Messages/ItemDetailComp.elm @@ -0,0 +1,14 @@ +module Messages.ItemDetailComp exposing (..) + +import Messages.ItemDetail.AddFilesForm + + +type alias Texts = + { addFilesForm : Messages.ItemDetail.AddFilesForm.Texts + } + + +gb : Texts +gb = + { addFilesForm = Messages.ItemDetail.AddFilesForm.gb + } diff --git a/modules/webapp/src/main/elm/Messages/ItemDetailPage.elm b/modules/webapp/src/main/elm/Messages/ItemDetailPage.elm new file mode 100644 index 00000000..0b8e43bd --- /dev/null +++ b/modules/webapp/src/main/elm/Messages/ItemDetailPage.elm @@ -0,0 +1,21 @@ +module Messages.ItemDetailPage exposing (..) + +import Messages.ItemDetailComp + + +type alias Texts = + { itemDetail : Messages.ItemDetailComp.Texts + , editMetadata : String + } + + +gb : Texts +gb = + { itemDetail = Messages.ItemDetailComp.gb + , editMetadata = "Edit Metadata" + } + + +de : Texts +de = + gb diff --git a/modules/webapp/src/main/elm/Messages/NewInvitePage.elm b/modules/webapp/src/main/elm/Messages/NewInvitePage.elm index 4e10ec5a..1a8e1eb0 100644 --- a/modules/webapp/src/main/elm/Messages/NewInvitePage.elm +++ b/modules/webapp/src/main/elm/Messages/NewInvitePage.elm @@ -31,3 +31,8 @@ gb = Creating an invite requires providing the password from the configuration.""" } + + +de : Texts +de = + gb diff --git a/modules/webapp/src/main/elm/Messages/UploadPage.elm b/modules/webapp/src/main/elm/Messages/UploadPage.elm new file mode 100644 index 00000000..8ca93efa --- /dev/null +++ b/modules/webapp/src/main/elm/Messages/UploadPage.elm @@ -0,0 +1,62 @@ +module Messages.UploadPage exposing (..) + +import Messages.Basics +import Messages.DropzoneComp + + +type alias Texts = + { basics : Messages.Basics.Texts + , dropzone : Messages.DropzoneComp.Texts + , reset : String + , allFilesOneItem : String + , skipExistingFiles : String + , language : String + , languageInfo : String + , uploadErrorMessage : String + , successBox : + { allFilesUploaded : String + , line1 : String + , itemsPage : String + , line2 : String + , processingPage : String + , line3 : String + , resetLine1 : String + , reset : String + , resetLine2 : String + } + , selectedFiles : String + } + + +gb : Texts +gb = + { basics = Messages.Basics.gb + , dropzone = Messages.DropzoneComp.gb + , reset = "Reset" + , allFilesOneItem = "All files are one single item" + , skipExistingFiles = "Skip files already present in docspell" + , language = "Language" + , languageInfo = + "Used for text extraction and analysis. The collective's " + ++ "default language is used if not specified here." + , uploadErrorMessage = "There were errors uploading some files." + , successBox = + { allFilesUploaded = "All files uploaded" + , line1 = + "Your files have been successfully uploaded. " + ++ "They are now being processed. Check the " + , itemsPage = "Items Page" + , line2 = " later where the files will arrive eventually. Or go to the " + , processingPage = "Processing Page" + , line3 = " to view the current processing state." + , resetLine1 = " Click " + , reset = "Reset" + , resetLine2 = " to upload more files." + } + , selectedFiles = "Selected Files" + } + + +de : Texts +de = + gb diff --git a/modules/webapp/src/main/elm/Page/ItemDetail/View2.elm b/modules/webapp/src/main/elm/Page/ItemDetail/View2.elm index 7ac8b9fe..7d5ac3eb 100644 --- a/modules/webapp/src/main/elm/Page/ItemDetail/View2.elm +++ b/modules/webapp/src/main/elm/Page/ItemDetail/View2.elm @@ -11,12 +11,13 @@ import Data.UiSettings exposing (UiSettings) import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (onClick) +import Messages.ItemDetailPage exposing (Texts) import Page.ItemDetail.Data exposing (..) import Styles as S -viewSidebar : Bool -> Flags -> UiSettings -> Model -> Html Msg -viewSidebar visible _ settings model = +viewSidebar : Texts -> Bool -> Flags -> UiSettings -> Model -> Html Msg +viewSidebar texts visible _ settings model = div [ id "sidebar" , class S.sidebar @@ -28,7 +29,7 @@ viewSidebar visible _ settings model = , class "font-bold mt-2" ] [ i [ class "fa fa-pencil-alt mr-2" ] [] - , text "Edit Metadata" + , text texts.editMetadata ] , MB.viewSide { start = @@ -52,12 +53,12 @@ viewSidebar visible _ settings model = ] -viewContent : ItemNav -> Flags -> UiSettings -> Model -> Html Msg -viewContent inav _ settings model = +viewContent : Texts -> ItemNav -> Flags -> UiSettings -> Model -> Html Msg +viewContent texts inav _ settings model = div [ id "content" , class S.content ] [ Html.map ItemDetailMsg - (Comp.ItemDetail.view2 inav settings model.detail) + (Comp.ItemDetail.view2 texts.itemDetail inav settings model.detail) ] diff --git a/modules/webapp/src/main/elm/Page/Upload/View2.elm b/modules/webapp/src/main/elm/Page/Upload/View2.elm index a685c50b..e5dbf50f 100644 --- a/modules/webapp/src/main/elm/Page/Upload/View2.elm +++ b/modules/webapp/src/main/elm/Page/Upload/View2.elm @@ -11,6 +11,7 @@ import File exposing (File) import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (onCheck, onClick) +import Messages.UploadPage exposing (Texts) import Page exposing (Page(..)) import Page.Upload.Data exposing (..) import Styles as S @@ -28,8 +29,8 @@ viewSidebar _ _ _ _ _ = [] -viewContent : Maybe String -> Flags -> UiSettings -> Model -> Html Msg -viewContent mid _ _ model = +viewContent : Texts -> Maybe String -> Flags -> UiSettings -> Model -> Html Msg +viewContent texts mid _ _ model = div [ id "content" , class S.content @@ -37,11 +38,11 @@ viewContent mid _ _ model = [ div [ class "container mx-auto" ] [ div [ class "px-0 flex flex-col" ] [ div [ class "py-4" ] - [ renderForm model + [ renderForm texts model ] , div [ class "py-0" ] [ Html.map DropzoneMsg - (Comp.Dropzone.view2 model.dropzone) + (Comp.Dropzone.view2 texts.dropzone model.dropzone) ] , div [ class "py-4" ] [ a @@ -49,7 +50,7 @@ viewContent mid _ _ model = , href "#" , onClick SubmitUpload ] - [ text "Submit" + [ text texts.basics.submit ] , a [ class S.secondaryButton @@ -57,19 +58,19 @@ viewContent mid _ _ model = , href "#" , onClick Clear ] - [ text "Reset" + [ text texts.reset ] ] ] - , renderErrorMsg model - , renderSuccessMsg (Util.Maybe.nonEmpty mid) model - , renderUploads model + , renderErrorMsg texts model + , renderSuccessMsg texts (Util.Maybe.nonEmpty mid) model + , renderUploads texts model ] ] -renderForm : Model -> Html Msg -renderForm model = +renderForm : Texts -> Model -> Html Msg +renderForm texts model = div [ class "row" ] [ Html.form [ action "#" ] [ div [ class "flex flex-col mb-3" ] @@ -81,7 +82,7 @@ renderForm model = , class S.radioInput ] [] - , span [ class "ml-2" ] [ text "Incoming" ] + , span [ class "ml-2" ] [ text texts.basics.incoming ] ] , label [ class "inline-flex items-center" ] [ input @@ -91,7 +92,7 @@ renderForm model = , class S.radioInput ] [] - , span [ class "ml-2" ] [ text "Outgoing" ] + , span [ class "ml-2" ] [ text texts.basics.outgoing ] ] ] , div [ class "flex flex-col mb-3" ] @@ -104,7 +105,7 @@ renderForm model = ] [] , span [ class "ml-2" ] - [ text "All files are one single item" + [ text texts.allFilesOneItem ] ] ] @@ -118,13 +119,13 @@ renderForm model = ] [] , span [ class "ml-2" ] - [ text "Skip files already present in docspell" + [ text texts.skipExistingFiles ] ] ] , div [ class "flex flex-col mb-3" ] [ label [ class "inline-flex items-center mb-2" ] - [ span [ class "mr-2" ] [ text "Language:" ] + [ span [ class "mr-2" ] [ text (texts.language ++ ":") ] , Html.map LanguageMsg (Comp.FixedDropdown.viewStyled2 (DS.mainStyleWith "w-40") @@ -134,30 +135,29 @@ renderForm model = ) ] , div [ class "text-gray-400 text-xs" ] - [ text "Used for text extraction and analysis. The collective's " - , text "default language is used if not specified here." + [ text texts.languageInfo ] ] ] ] -renderErrorMsg : Model -> Html Msg -renderErrorMsg model = +renderErrorMsg : Texts -> Model -> Html Msg +renderErrorMsg texts model = div [ class "row" , classList [ ( "hidden", not (isDone model && hasErrors model) ) ] ] [ div [ class "mt-4" ] [ div [ class S.errorMessage ] - [ text "There were errors uploading some files." + [ text texts.uploadErrorMessage ] ] ] -renderSuccessMsg : Bool -> Model -> Html Msg -renderSuccessMsg public model = +renderSuccessMsg : Texts -> Bool -> Model -> Html Msg +renderSuccessMsg texts public model = div [ class "row" , classList [ ( "hidden", List.isEmpty model.files || not (isSuccessAll model) ) ] @@ -167,47 +167,46 @@ renderSuccessMsg public model = [ h3 [ class S.header2, class "text-green-800 dark:text-lime-800" ] [ i [ class "fa fa-smile font-thin" ] [] , span [ class "ml-2" ] - [ text "All files uploaded" + [ text texts.successBox.allFilesUploaded ] ] , p [ classList [ ( "hidden", public ) ] ] - [ text "Your files have been successfully uploaded. " - , text "They are now being processed. Check the " + [ text texts.successBox.line1 , a [ class S.successMessageLink , Page.href HomePage ] - [ text "Items page" + [ text texts.successBox.itemsPage ] - , text " later where the files will arrive eventually. Or go to the " + , text texts.successBox.line2 , a [ class S.successMessageLink , Page.href QueuePage ] - [ text "Processing Page" + [ text texts.successBox.processingPage ] - , text " to view the current processing state." + , text texts.successBox.line3 ] , p [] - [ text "Click " + [ text texts.successBox.resetLine1 , a [ class S.successMessageLink , href "#" , onClick Clear ] - [ text "Reset" + [ text texts.successBox.reset ] - , text " to upload more files." + , text texts.successBox.resetLine2 ] ] ] ] -renderUploads : Model -> Html Msg -renderUploads model = +renderUploads : Texts -> Model -> Html Msg +renderUploads texts model = div [ class "mt-4" , classList [ ( "hidden", List.isEmpty model.files || isSuccessAll model ) ] @@ -215,7 +214,7 @@ renderUploads model = [ div [ class "sixteen wide column" ] [ div [ class "ui basic segment" ] [ h2 [ class S.header2 ] - [ text "Selected Files" + [ text texts.selectedFiles ] , div [ class "ui items" ] <| if model.singleItem then