Add person add/edit/delete in settings (#17)
This commit is contained in:
@@ -399,6 +399,103 @@ let feedEdit (model: EditCustomFeedModel) (ratings: MetaItem list) (mediums: Met
|
||||
]
|
||||
|
||||
|
||||
/// Edit form for a person
|
||||
let personEdit (model: EditPersonModel) (app: AppViewContext) = [
|
||||
h5 [ _class "my-3" ] [ txt app.PageTitle ]
|
||||
form [ _hxPost (relUrl app "admin/settings/person/save"); _method "post"; _hxBoost; _class "container"
|
||||
hxInherited (_hxTarget "#person_panel"); _hxSwap $"{HxSwap.OuterHtml} show:top showTarget:top" ] [
|
||||
antiCsrf app
|
||||
input [ _type "hidden"; _name "Id"; _value model.Id ]
|
||||
div [ _class "row mb-3" ] [
|
||||
div [ _class "col-12 col-sm-8 offset-sm-2 col-lg-4 offset-lg-0 mb-3" ] [
|
||||
textField [ _autofocus; _required ] (nameof model.Name) "Name" model.Name []
|
||||
]
|
||||
div [ _class "col-12 col-lg-4 mb-3" ] [
|
||||
textField [] (nameof model.ProfileUrl) "Profile URL" model.ProfileUrl [
|
||||
span [ _class "form-text fst-italic" ] [
|
||||
raw "relative URL will be served from this web log"
|
||||
]
|
||||
]
|
||||
]
|
||||
div [ _class "col-12 col-lg-4 mb-3" ] [
|
||||
textField [] (nameof model.ImageUrl) "Image URL" model.ImageUrl [
|
||||
span [ _class "form-text fst-italic" ] [
|
||||
raw "relative URL will be served from this web log"
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
div [ _class "row mb-3" ] [
|
||||
div [ _class "col text-center" ] [
|
||||
saveButton; raw " "
|
||||
a [ _href (relUrl app "admin/settings/people"); _hxBoost; _class "btn btn-sm btn-secondary ms-3" ] [
|
||||
raw "Cancel"
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
/// A list of people for this web log
|
||||
let personList (ppl: Person list) app =
|
||||
let personDetail (psn: Person) =
|
||||
let url = relUrl app $"admin/settings/person/{psn.Id}"
|
||||
div [ _class "row mwl-table-detail"; _id $"person_{psn.Id}" ] [
|
||||
div [ _class "col-12 col-md-4 no-wrap" ] [
|
||||
txt psn.Name; br []
|
||||
small [] [
|
||||
a [ _href $"{url}/edit"; _hxBoost; _hxTarget $"#person_{psn.Id}"
|
||||
_hxSwap $"{HxSwap.InnerHtml} show:top showTarget:#person_{psn.Id}" ] [
|
||||
raw "Edit"
|
||||
]; actionSpacer
|
||||
a [ _href url; _hxDelete url; _hxPushUrl "false"; _class "text-danger"
|
||||
_hxConfirm $"Are you sure you want to delete the person “{psn.Name}”? This action cannot be undone." ] [
|
||||
raw "Delete"
|
||||
]
|
||||
]
|
||||
]
|
||||
div [ _class "col-12 col-md-8" ] [
|
||||
if psn.Url.IsSome then
|
||||
a [ _href (absoluteUrl psn.Url.Value app.WebLog); _target "_blank" ] [ txt psn.Url.Value ]
|
||||
else
|
||||
raw "N/A"
|
||||
if psn.ImageUrl.IsSome then
|
||||
br []
|
||||
small [ _class "text-muted" ] [
|
||||
raw "Image: "
|
||||
a [ _href (absoluteUrl psn.ImageUrl.Value app.WebLog); _target "_blank" ] [
|
||||
txt psn.ImageUrl.Value
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
div [ _id "person_panel" ] [
|
||||
a [ _href (relUrl app "admin/settings/person/new/edit"); _hxBoost; _hxTarget "#person_new"
|
||||
_class "btn btn-primary btn-sm mb-3" ] [
|
||||
raw "Add a New Person"
|
||||
]
|
||||
if List.isEmpty ppl then
|
||||
div [ _id "person_new" ] [
|
||||
p [ _class "text-muted text-center fst-italic" ] [ raw "This web log has no people defined" ]
|
||||
]
|
||||
else
|
||||
div [ _class "container g-0" ] [
|
||||
div [ _class "row mwl-table-heading" ] [
|
||||
div [ _class "col-12 col-md-4" ] [ raw "Name" ]
|
||||
div [ _class "col-12 col-md-8" ] [ raw "URLs" ]
|
||||
]
|
||||
]
|
||||
div [ _id "personList" ] [
|
||||
div [ _class "row mwl-table-detail"; _id "person_new" ] []
|
||||
List.map personDetail ppl
|
||||
|> div [ _class "container g-0"; hxInherited (_hxTarget "#person_panel")
|
||||
hxInherited (_hxSwap $"{HxSwap.OuterHtml} show:top showTarget:body") ]
|
||||
]
|
||||
]
|
||||
|> List.singleton
|
||||
|
||||
|
||||
/// Redirect Rule edit form
|
||||
let redirectEdit (model: EditRedirectRuleModel) app = [
|
||||
let url = relUrl app $"admin/settings/redirect-rules/{model.RuleId}"
|
||||
@@ -822,6 +919,11 @@ let webLogSettings
|
||||
span [ _hxGet (relUrl app "admin/settings/users"); _hxTarget "this"; _hxTrigger HxTrigger.Load
|
||||
_hxSwap HxSwap.OuterHtml ] []
|
||||
]
|
||||
fieldset [ _id "people"; _class "container mb-3 pb-0" ] [
|
||||
legend [] [ raw "People" ]
|
||||
span [ _hxGet (relUrl app "admin/settings/people"); _hxTarget "this"; _hxTrigger HxTrigger.Load
|
||||
_hxSwap HxSwap.OuterHtml ] []
|
||||
]
|
||||
fieldset [ _id "rss-settings"; _class "container mb-3 pb-0" ] [
|
||||
legend [] [ raw "RSS Settings" ]
|
||||
form [ _action (relUrl app "admin/settings/rss"); _method "post"; _hxBoost; _class "container g-0" ] [
|
||||
|
||||
Reference in New Issue
Block a user