summaryrefslogtreecommitdiff
path: root/elm3/DocEdit.elm
diff options
context:
space:
mode:
Diffstat (limited to 'elm3/DocEdit.elm')
-rw-r--r--elm3/DocEdit.elm107
1 files changed, 0 insertions, 107 deletions
diff --git a/elm3/DocEdit.elm b/elm3/DocEdit.elm
deleted file mode 100644
index 4461c522..00000000
--- a/elm3/DocEdit.elm
+++ /dev/null
@@ -1,107 +0,0 @@
-module DocEdit exposing (main)
-
-import Html exposing (..)
-import Html.Attributes exposing (..)
-import Html.Events exposing (..)
-import Browser
-import Browser.Navigation exposing (load)
-import Json.Encode as JE
-import Lib.Html exposing (..)
-import Lib.Gen as Gen
-import Lib.Api as Api
-import Lib.Ffi as Ffi
-import Lib.Editsum as Editsum
-
-
-main : Program Gen.DocEdit Model Msg
-main = Browser.element
- { init = \e -> (init e, Cmd.none)
- , view = view
- , update = update
- , subscriptions = always Sub.none
- }
-
-
-type alias Model =
- { state : Api.State
- , editsum : Editsum.Model
- , title : String
- , content : String
- , id : Int
- , preview : String
- }
-
-
-init : Gen.DocEdit -> Model
-init d =
- { state = Api.Normal
- , editsum = { authmod = True, editsum = d.editsum, locked = d.locked, hidden = d.hidden }
- , title = d.title
- , content = d.content
- , id = d.id
- , preview = ""
- }
-
-
-encode : Model -> Gen.DocEditSend
-encode model =
- { editsum = model.editsum.editsum
- , hidden = model.editsum.hidden
- , locked = model.editsum.locked
- , title = model.title
- , content = model.content
- }
-
-
-type Msg
- = Editsum Editsum.Msg
- | Submit
- | Submitted Api.Response
- | Title String
- | Content String
- | Preview
- | HandlePreview Api.Response
-
-
-update : Msg -> Model -> (Model, Cmd Msg)
-update msg model =
- case msg of
- Editsum e -> ({ model | editsum = Editsum.update e model.editsum }, Cmd.none)
- Title s -> ({ model | title = s }, Cmd.none)
- Content s -> ({ model | content = s }, Cmd.none)
-
- Submit ->
- let
- path = "/d" ++ String.fromInt model.id ++ "/edit"
- body = Gen.doceditSendEncode (encode model)
- in ({ model | state = Api.Loading }, Api.post path body Submitted)
-
- Submitted (Gen.Changed id rev) -> (model, load <| "/d" ++ String.fromInt id ++ "." ++ String.fromInt rev)
- Submitted r -> ({ model | state = Api.Error r }, Cmd.none)
-
- Preview ->
- ( { model | state = Api.Loading, preview = "" }
- , Api.post "/js/markdown.json" (JE.object [("content", JE.string model.content)]) HandlePreview
- )
-
- HandlePreview (Gen.Content s) -> ({ model | state = Api.Normal, preview = s }, Cmd.none)
- HandlePreview r -> ({ model | state = Api.Error r }, Cmd.none)
-
-
-view : Model -> Html Msg
-view model =
- form_ Submit (model.state == Api.Loading)
- [ card "general" "General" [] <| formGroups
- [ [ label [ for "title" ] [ text "Title" ]
- , inputText "title" model.title Title [required True, maxlength 200]
- ]
- , [ label [ for "content" ] [ text "Content" ]
- , inputTextArea "content" model.content Content [rows 100, required True]
- ]
- , [ button [ type_ "button", class "btn", onClick Preview ] [ text "Preview" ]
- , div [ class "doc", Ffi.innerHtml model.preview ] []
- ]
- ]
- , Html.map Editsum (Editsum.view model.editsum)
- , submitButton "Submit" model.state True False
- ]