mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-05 22:55:58 +00:00
Share page skeleton
This commit is contained in:
parent
aa21e7a74c
commit
97922340d9
@ -32,6 +32,7 @@ import Page.ManageData.Data
|
|||||||
import Page.NewInvite.Data
|
import Page.NewInvite.Data
|
||||||
import Page.Queue.Data
|
import Page.Queue.Data
|
||||||
import Page.Register.Data
|
import Page.Register.Data
|
||||||
|
import Page.Share.Data
|
||||||
import Page.Upload.Data
|
import Page.Upload.Data
|
||||||
import Page.UserSettings.Data
|
import Page.UserSettings.Data
|
||||||
import Url exposing (Url)
|
import Url exposing (Url)
|
||||||
@ -52,6 +53,7 @@ type alias Model =
|
|||||||
, uploadModel : Page.Upload.Data.Model
|
, uploadModel : Page.Upload.Data.Model
|
||||||
, newInviteModel : Page.NewInvite.Data.Model
|
, newInviteModel : Page.NewInvite.Data.Model
|
||||||
, itemDetailModel : Page.ItemDetail.Data.Model
|
, itemDetailModel : Page.ItemDetail.Data.Model
|
||||||
|
, shareModel : Page.Share.Data.Model
|
||||||
, navMenuOpen : Bool
|
, navMenuOpen : Bool
|
||||||
, userMenuOpen : Bool
|
, userMenuOpen : Bool
|
||||||
, subs : Sub Msg
|
, subs : Sub Msg
|
||||||
@ -85,6 +87,9 @@ init key url flags_ settings =
|
|||||||
( loginm, loginc ) =
|
( loginm, loginc ) =
|
||||||
Page.Login.Data.init flags (Page.loginPageReferrer page)
|
Page.Login.Data.init flags (Page.loginPageReferrer page)
|
||||||
|
|
||||||
|
( shm, shc ) =
|
||||||
|
Page.Share.Data.init (Page.shareId page) flags
|
||||||
|
|
||||||
homeViewMode =
|
homeViewMode =
|
||||||
if settings.searchMenuVisible then
|
if settings.searchMenuVisible then
|
||||||
Page.Home.Data.SearchView
|
Page.Home.Data.SearchView
|
||||||
@ -106,6 +111,7 @@ init key url flags_ settings =
|
|||||||
, uploadModel = Page.Upload.Data.emptyModel
|
, uploadModel = Page.Upload.Data.emptyModel
|
||||||
, newInviteModel = Page.NewInvite.Data.emptyModel
|
, newInviteModel = Page.NewInvite.Data.emptyModel
|
||||||
, itemDetailModel = Page.ItemDetail.Data.emptyModel
|
, itemDetailModel = Page.ItemDetail.Data.emptyModel
|
||||||
|
, shareModel = shm
|
||||||
, navMenuOpen = False
|
, navMenuOpen = False
|
||||||
, userMenuOpen = False
|
, userMenuOpen = False
|
||||||
, subs = Sub.none
|
, subs = Sub.none
|
||||||
@ -120,6 +126,7 @@ init key url flags_ settings =
|
|||||||
, Cmd.map ManageDataMsg mdc
|
, Cmd.map ManageDataMsg mdc
|
||||||
, Cmd.map CollSettingsMsg csc
|
, Cmd.map CollSettingsMsg csc
|
||||||
, Cmd.map LoginMsg loginc
|
, Cmd.map LoginMsg loginc
|
||||||
|
, Cmd.map ShareMsg shc
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -162,6 +169,7 @@ type Msg
|
|||||||
| UploadMsg Page.Upload.Data.Msg
|
| UploadMsg Page.Upload.Data.Msg
|
||||||
| NewInviteMsg Page.NewInvite.Data.Msg
|
| NewInviteMsg Page.NewInvite.Data.Msg
|
||||||
| ItemDetailMsg Page.ItemDetail.Data.Msg
|
| ItemDetailMsg Page.ItemDetail.Data.Msg
|
||||||
|
| ShareMsg Page.Share.Data.Msg
|
||||||
| Logout
|
| Logout
|
||||||
| LogoutResp (Result Http.Error ())
|
| LogoutResp (Result Http.Error ())
|
||||||
| SessionCheckResp (Result Http.Error AuthResult)
|
| SessionCheckResp (Result Http.Error AuthResult)
|
||||||
|
@ -34,6 +34,8 @@ import Page.Queue.Data
|
|||||||
import Page.Queue.Update
|
import Page.Queue.Update
|
||||||
import Page.Register.Data
|
import Page.Register.Data
|
||||||
import Page.Register.Update
|
import Page.Register.Update
|
||||||
|
import Page.Share.Data
|
||||||
|
import Page.Share.Update
|
||||||
import Page.Upload.Data
|
import Page.Upload.Data
|
||||||
import Page.Upload.Update
|
import Page.Upload.Update
|
||||||
import Page.UserSettings.Data
|
import Page.UserSettings.Data
|
||||||
@ -114,6 +116,9 @@ updateWithSub msg model =
|
|||||||
HomeMsg lm ->
|
HomeMsg lm ->
|
||||||
updateHome lm model
|
updateHome lm model
|
||||||
|
|
||||||
|
ShareMsg lm ->
|
||||||
|
updateShare lm model
|
||||||
|
|
||||||
LoginMsg lm ->
|
LoginMsg lm ->
|
||||||
updateLogin lm model
|
updateLogin lm model
|
||||||
|
|
||||||
@ -313,6 +318,23 @@ applyClientSettings model settings =
|
|||||||
{ model | uiSettings = settings }
|
{ model | uiSettings = settings }
|
||||||
|
|
||||||
|
|
||||||
|
updateShare : Page.Share.Data.Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
||||||
|
updateShare lmsg model =
|
||||||
|
case Page.shareId model.page of
|
||||||
|
Just id ->
|
||||||
|
let
|
||||||
|
result =
|
||||||
|
Page.Share.Update.update model.flags id lmsg model.shareModel
|
||||||
|
in
|
||||||
|
( { model | shareModel = result.model }
|
||||||
|
, Cmd.map ShareMsg result.cmd
|
||||||
|
, Sub.map ShareMsg result.sub
|
||||||
|
)
|
||||||
|
|
||||||
|
Nothing ->
|
||||||
|
( model, Cmd.none, Sub.none )
|
||||||
|
|
||||||
|
|
||||||
updateItemDetail : Page.ItemDetail.Data.Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
updateItemDetail : Page.ItemDetail.Data.Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
||||||
updateItemDetail lmsg model =
|
updateItemDetail lmsg model =
|
||||||
let
|
let
|
||||||
@ -568,3 +590,6 @@ initPage model_ page =
|
|||||||
, updateQueue Page.Queue.Data.StopRefresh
|
, updateQueue Page.Queue.Data.StopRefresh
|
||||||
]
|
]
|
||||||
model
|
model
|
||||||
|
|
||||||
|
SharePage _ ->
|
||||||
|
( model, Cmd.none, Sub.none )
|
||||||
|
@ -27,6 +27,7 @@ import Page.ManageData.View2 as ManageData
|
|||||||
import Page.NewInvite.View2 as NewInvite
|
import Page.NewInvite.View2 as NewInvite
|
||||||
import Page.Queue.View2 as Queue
|
import Page.Queue.View2 as Queue
|
||||||
import Page.Register.View2 as Register
|
import Page.Register.View2 as Register
|
||||||
|
import Page.Share.View as Share
|
||||||
import Page.Upload.View2 as Upload
|
import Page.Upload.View2 as Upload
|
||||||
import Page.UserSettings.View2 as UserSettings
|
import Page.UserSettings.View2 as UserSettings
|
||||||
import Styles as S
|
import Styles as S
|
||||||
@ -41,13 +42,9 @@ view model =
|
|||||||
|
|
||||||
topNavbar : Model -> Html Msg
|
topNavbar : Model -> Html Msg
|
||||||
topNavbar model =
|
topNavbar model =
|
||||||
case model.flags.account of
|
case Data.Flags.getAccount model.flags of
|
||||||
Just acc ->
|
Just acc ->
|
||||||
if acc.success then
|
topNavUser acc model
|
||||||
topNavUser acc model
|
|
||||||
|
|
||||||
else
|
|
||||||
topNavAnon model
|
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
topNavAnon model
|
topNavAnon model
|
||||||
@ -86,7 +83,16 @@ topNavAnon model =
|
|||||||
[ id "top-nav"
|
[ id "top-nav"
|
||||||
, class styleTopNav
|
, class styleTopNav
|
||||||
]
|
]
|
||||||
[ headerNavItem model
|
[ B.genericButton
|
||||||
|
{ label = ""
|
||||||
|
, icon = "fa fa-bars"
|
||||||
|
, handler = onClick ToggleSidebar
|
||||||
|
, disabled = not (Page.hasSidebar model.page)
|
||||||
|
, attrs = [ href "#" ]
|
||||||
|
, baseStyle = "font-bold inline-flex items-center px-4 py-2"
|
||||||
|
, activeStyle = "hover:bg-blue-200 dark:hover:bg-bluegray-800 w-12"
|
||||||
|
}
|
||||||
|
, headerNavItem model
|
||||||
, div [ class "flex flex-grow justify-end" ]
|
, div [ class "flex flex-grow justify-end" ]
|
||||||
[ langMenu model
|
[ langMenu model
|
||||||
, a
|
, a
|
||||||
@ -157,6 +163,9 @@ mainContent model =
|
|||||||
|
|
||||||
ItemDetailPage id ->
|
ItemDetailPage id ->
|
||||||
viewItemDetail texts id model
|
viewItemDetail texts id model
|
||||||
|
|
||||||
|
SharePage id ->
|
||||||
|
viewShare texts id model
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -411,6 +420,24 @@ dropdownMenu =
|
|||||||
" absolute right-0 bg-white dark:bg-bluegray-800 border dark:border-bluegray-700 dark:text-bluegray-300 shadow-lg opacity-1 transition duration-200 min-w-max "
|
" absolute right-0 bg-white dark:bg-bluegray-800 border dark:border-bluegray-700 dark:text-bluegray-300 shadow-lg opacity-1 transition duration-200 min-w-max "
|
||||||
|
|
||||||
|
|
||||||
|
viewShare : Messages -> String -> Model -> List (Html Msg)
|
||||||
|
viewShare texts shareId model =
|
||||||
|
[ Html.map ShareMsg
|
||||||
|
(Share.viewSidebar texts.share
|
||||||
|
model.sidebarVisible
|
||||||
|
model.flags
|
||||||
|
model.uiSettings
|
||||||
|
model.shareModel
|
||||||
|
)
|
||||||
|
, Html.map ShareMsg
|
||||||
|
(Share.viewContent texts.share
|
||||||
|
model.flags
|
||||||
|
model.uiSettings
|
||||||
|
model.shareModel
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
viewHome : Messages -> Model -> List (Html Msg)
|
viewHome : Messages -> Model -> List (Html Msg)
|
||||||
viewHome texts model =
|
viewHome texts model =
|
||||||
[ Html.map HomeMsg
|
[ Html.map HomeMsg
|
||||||
|
@ -9,7 +9,9 @@ module Data.Flags exposing
|
|||||||
( Config
|
( Config
|
||||||
, Flags
|
, Flags
|
||||||
, accountString
|
, accountString
|
||||||
|
, getAccount
|
||||||
, getToken
|
, getToken
|
||||||
|
, isAuthenticated
|
||||||
, withAccount
|
, withAccount
|
||||||
, withoutAccount
|
, withoutAccount
|
||||||
)
|
)
|
||||||
@ -43,6 +45,24 @@ type alias Flags =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
isAuthenticated : Flags -> Bool
|
||||||
|
isAuthenticated flags =
|
||||||
|
getAccount flags /= Nothing
|
||||||
|
|
||||||
|
|
||||||
|
getAccount : Flags -> Maybe AuthResult
|
||||||
|
getAccount flags =
|
||||||
|
Maybe.andThen
|
||||||
|
(\ar ->
|
||||||
|
if ar.success then
|
||||||
|
Just ar
|
||||||
|
|
||||||
|
else
|
||||||
|
Nothing
|
||||||
|
)
|
||||||
|
flags.account
|
||||||
|
|
||||||
|
|
||||||
getToken : Flags -> Maybe String
|
getToken : Flags -> Maybe String
|
||||||
getToken flags =
|
getToken flags =
|
||||||
flags.account
|
flags.account
|
||||||
|
@ -21,6 +21,7 @@ import Messages.Page.ManageData
|
|||||||
import Messages.Page.NewInvite
|
import Messages.Page.NewInvite
|
||||||
import Messages.Page.Queue
|
import Messages.Page.Queue
|
||||||
import Messages.Page.Register
|
import Messages.Page.Register
|
||||||
|
import Messages.Page.Share
|
||||||
import Messages.Page.Upload
|
import Messages.Page.Upload
|
||||||
import Messages.Page.UserSettings
|
import Messages.Page.UserSettings
|
||||||
import Messages.UiLanguage exposing (UiLanguage(..))
|
import Messages.UiLanguage exposing (UiLanguage(..))
|
||||||
@ -44,6 +45,7 @@ type alias Messages =
|
|||||||
, userSettings : Messages.Page.UserSettings.Texts
|
, userSettings : Messages.Page.UserSettings.Texts
|
||||||
, manageData : Messages.Page.ManageData.Texts
|
, manageData : Messages.Page.ManageData.Texts
|
||||||
, home : Messages.Page.Home.Texts
|
, home : Messages.Page.Home.Texts
|
||||||
|
, share : Messages.Page.Share.Texts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -109,6 +111,7 @@ gb =
|
|||||||
, userSettings = Messages.Page.UserSettings.gb
|
, userSettings = Messages.Page.UserSettings.gb
|
||||||
, manageData = Messages.Page.ManageData.gb
|
, manageData = Messages.Page.ManageData.gb
|
||||||
, home = Messages.Page.Home.gb
|
, home = Messages.Page.Home.gb
|
||||||
|
, share = Messages.Page.Share.gb
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -129,4 +132,5 @@ de =
|
|||||||
, userSettings = Messages.Page.UserSettings.de
|
, userSettings = Messages.Page.UserSettings.de
|
||||||
, manageData = Messages.Page.ManageData.de
|
, manageData = Messages.Page.ManageData.de
|
||||||
, home = Messages.Page.Home.de
|
, home = Messages.Page.Home.de
|
||||||
|
, share = Messages.Page.Share.de
|
||||||
}
|
}
|
||||||
|
22
modules/webapp/src/main/elm/Messages/Page/Share.elm
Normal file
22
modules/webapp/src/main/elm/Messages/Page/Share.elm
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{-
|
||||||
|
Copyright 2020 Eike K. & Contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
module Messages.Page.Share exposing (..)
|
||||||
|
|
||||||
|
|
||||||
|
type alias Texts =
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
gb : Texts
|
||||||
|
gb =
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
de : Texts
|
||||||
|
de =
|
||||||
|
{}
|
@ -21,6 +21,7 @@ module Page exposing
|
|||||||
, pageName
|
, pageName
|
||||||
, pageToString
|
, pageToString
|
||||||
, set
|
, set
|
||||||
|
, shareId
|
||||||
, uploadId
|
, uploadId
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -59,6 +60,7 @@ type Page
|
|||||||
| UploadPage (Maybe String)
|
| UploadPage (Maybe String)
|
||||||
| NewInvitePage
|
| NewInvitePage
|
||||||
| ItemDetailPage String
|
| ItemDetailPage String
|
||||||
|
| SharePage String
|
||||||
|
|
||||||
|
|
||||||
isSecured : Page -> Bool
|
isSecured : Page -> Bool
|
||||||
@ -94,6 +96,9 @@ isSecured page =
|
|||||||
ItemDetailPage _ ->
|
ItemDetailPage _ ->
|
||||||
True
|
True
|
||||||
|
|
||||||
|
SharePage _ ->
|
||||||
|
False
|
||||||
|
|
||||||
|
|
||||||
{-| Currently, all secured pages have a sidebar, except UploadPage.
|
{-| Currently, all secured pages have a sidebar, except UploadPage.
|
||||||
-}
|
-}
|
||||||
@ -103,6 +108,9 @@ hasSidebar page =
|
|||||||
UploadPage _ ->
|
UploadPage _ ->
|
||||||
False
|
False
|
||||||
|
|
||||||
|
SharePage _ ->
|
||||||
|
True
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
isSecured page
|
isSecured page
|
||||||
|
|
||||||
@ -160,6 +168,9 @@ pageName page =
|
|||||||
ItemDetailPage _ ->
|
ItemDetailPage _ ->
|
||||||
"Item"
|
"Item"
|
||||||
|
|
||||||
|
SharePage _ ->
|
||||||
|
"Share"
|
||||||
|
|
||||||
|
|
||||||
loginPageReferrer : Page -> LoginData
|
loginPageReferrer : Page -> LoginData
|
||||||
loginPageReferrer page =
|
loginPageReferrer page =
|
||||||
@ -171,6 +182,16 @@ loginPageReferrer page =
|
|||||||
emptyLoginData
|
emptyLoginData
|
||||||
|
|
||||||
|
|
||||||
|
shareId : Page -> Maybe String
|
||||||
|
shareId page =
|
||||||
|
case page of
|
||||||
|
SharePage id ->
|
||||||
|
Just id
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
Nothing
|
||||||
|
|
||||||
|
|
||||||
uploadId : Page -> Maybe String
|
uploadId : Page -> Maybe String
|
||||||
uploadId page =
|
uploadId page =
|
||||||
case page of
|
case page of
|
||||||
@ -224,6 +245,9 @@ pageToString page =
|
|||||||
ItemDetailPage id ->
|
ItemDetailPage id ->
|
||||||
"/app/item/" ++ id
|
"/app/item/" ++ id
|
||||||
|
|
||||||
|
SharePage id ->
|
||||||
|
"/app/share/" ++ id
|
||||||
|
|
||||||
|
|
||||||
pageFromString : String -> Maybe Page
|
pageFromString : String -> Maybe Page
|
||||||
pageFromString str =
|
pageFromString str =
|
||||||
@ -280,6 +304,7 @@ parser =
|
|||||||
, Parser.map (UploadPage Nothing) (s pathPrefix </> s "upload")
|
, Parser.map (UploadPage Nothing) (s pathPrefix </> s "upload")
|
||||||
, Parser.map NewInvitePage (s pathPrefix </> s "newinvite")
|
, Parser.map NewInvitePage (s pathPrefix </> s "newinvite")
|
||||||
, Parser.map ItemDetailPage (s pathPrefix </> s "item" </> string)
|
, Parser.map ItemDetailPage (s pathPrefix </> s "item" </> string)
|
||||||
|
, Parser.map SharePage (s pathPrefix </> s "share" </> string)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
32
modules/webapp/src/main/elm/Page/Share/Data.elm
Normal file
32
modules/webapp/src/main/elm/Page/Share/Data.elm
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{-
|
||||||
|
Copyright 2020 Eike K. & Contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
module Page.Share.Data exposing (Model, Msg, init)
|
||||||
|
|
||||||
|
import Data.Flags exposing (Flags)
|
||||||
|
|
||||||
|
|
||||||
|
type alias Model =
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
init : Maybe String -> Flags -> ( Model, Cmd Msg )
|
||||||
|
init shareId flags =
|
||||||
|
case shareId of
|
||||||
|
Just id ->
|
||||||
|
let
|
||||||
|
_ =
|
||||||
|
Debug.log "share" id
|
||||||
|
in
|
||||||
|
( {}, Cmd.none )
|
||||||
|
|
||||||
|
Nothing ->
|
||||||
|
( {}, Cmd.none )
|
||||||
|
|
||||||
|
|
||||||
|
type Msg
|
||||||
|
= Msg
|
23
modules/webapp/src/main/elm/Page/Share/Update.elm
Normal file
23
modules/webapp/src/main/elm/Page/Share/Update.elm
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{-
|
||||||
|
Copyright 2020 Eike K. & Contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
module Page.Share.Update exposing (UpdateResult, update)
|
||||||
|
|
||||||
|
import Data.Flags exposing (Flags)
|
||||||
|
import Page.Share.Data exposing (..)
|
||||||
|
|
||||||
|
|
||||||
|
type alias UpdateResult =
|
||||||
|
{ model : Model
|
||||||
|
, cmd : Cmd Msg
|
||||||
|
, sub : Sub Msg
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
update : Flags -> String -> Msg -> Model -> UpdateResult
|
||||||
|
update flags shareId msg model =
|
||||||
|
UpdateResult model Cmd.none Sub.none
|
38
modules/webapp/src/main/elm/Page/Share/View.elm
Normal file
38
modules/webapp/src/main/elm/Page/Share/View.elm
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{-
|
||||||
|
Copyright 2020 Eike K. & Contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
module Page.Share.View exposing (viewContent, viewSidebar)
|
||||||
|
|
||||||
|
import Data.Flags exposing (Flags)
|
||||||
|
import Data.UiSettings exposing (UiSettings)
|
||||||
|
import Html exposing (..)
|
||||||
|
import Html.Attributes exposing (..)
|
||||||
|
import Messages.Page.Share exposing (Texts)
|
||||||
|
import Page.Share.Data exposing (..)
|
||||||
|
import Styles as S
|
||||||
|
|
||||||
|
|
||||||
|
viewSidebar : Texts -> Bool -> Flags -> UiSettings -> Model -> Html Msg
|
||||||
|
viewSidebar _ visible _ _ _ =
|
||||||
|
div
|
||||||
|
[ id "sidebar"
|
||||||
|
, classList [ ( "hidden", not visible ) ]
|
||||||
|
]
|
||||||
|
[ text "sidebar" ]
|
||||||
|
|
||||||
|
|
||||||
|
viewContent : Texts -> Flags -> UiSettings -> Model -> Html Msg
|
||||||
|
viewContent texts flags _ model =
|
||||||
|
div
|
||||||
|
[ id "content"
|
||||||
|
, class "h-full flex flex-col"
|
||||||
|
, class S.content
|
||||||
|
]
|
||||||
|
[ h1 [ class S.header1 ]
|
||||||
|
[ text "Share Page!"
|
||||||
|
]
|
||||||
|
]
|
Loading…
x
Reference in New Issue
Block a user