diff --git a/src/MyWebLog/Handlers/Helpers.fs b/src/MyWebLog/Handlers/Helpers.fs
index 70e91bd..fda3f6d 100644
--- a/src/MyWebLog/Handlers/Helpers.fs
+++ b/src/MyWebLog/Handlers/Helpers.fs
@@ -69,7 +69,8 @@ open Giraffe.Htmx
open Giraffe.ViewEngine
/// htmx script tag
-let private htmxScript = RenderView.AsString.htmlNode Htmx.Script.minified
+let private htmxScript (webLog: WebLog) =
+ $""""""
/// Get the current user messages, and commit the session so that they are preserved
let private getCurrentMessages ctx = task {
@@ -91,7 +92,7 @@ let private generateViewContext messages viewCtx (ctx: HttpContext) =
CurrentPage = ctx.Request.Path.Value[1..]
Messages = messages
Generator = ctx.Generator
- HtmxScript = htmxScript
+ HtmxScript = htmxScript ctx.WebLog
IsAuthor = ctx.HasAccessLevel Author
IsEditor = ctx.HasAccessLevel Editor
IsWebLogAdmin = ctx.HasAccessLevel WebLogAdmin
@@ -188,7 +189,7 @@ let viewForTheme themeId template next ctx (viewCtx: AppViewContext) = task {
let forLayout = { updated with Content = Template.render contentTemplate updated ctx.Data }
// ...then render that content with its layout
match! Template.Cache.get themeId (if isHtmx ctx then "layout-partial" else "layout") ctx.Data with
- | Ok layoutTemplate -> return! htmlString (Template.render layoutTemplate forLayout ctx.Data) next ctx
+ | Ok layoutTemplate -> return! htmlString (Template.render layoutTemplate forLayout ctx.Data) next ctx
| Error message -> return! Error.server message next ctx
| Error message -> return! Error.server message next ctx
}
diff --git a/src/MyWebLog/Template.fs b/src/MyWebLog/Template.fs
index 3b1a7f2..feab8f1 100644
--- a/src/MyWebLog/Template.fs
+++ b/src/MyWebLog/Template.fs
@@ -164,9 +164,12 @@ let options () =
let picker (value: FluidValue) =
let item = value.ToObjectValue() :?> MetaItem
if item.Name = name then Some item.Value else None
- (input :?> ArrayValue).Values
- |> Seq.tryPick picker
- |> Option.defaultValue $"-- {name} not found --"
+ match input with
+ | :? NilValue -> $"-- {name} not found --"
+ | it ->
+ (it :?> ArrayValue).Values
+ |> Seq.tryPick picker
+ |> Option.defaultValue $"-- {name} not found --"
|> sValue)
it
@@ -220,13 +223,11 @@ let parser =
writer.WriteLine(feedLink app.WebLog.Name $"tag/{slug}/{app.WebLog.Rss.FeedName}")
if app.IsPost then
- let post = (* context.Environments[0].["model"] *) obj() :?> PostDisplay
- let url = app.WebLog.AbsoluteUrl(Permalink post.Posts[0].Permalink)
+ let url = app.WebLog.AbsoluteUrl(Permalink app.Posts.Posts[0].Permalink)
writer.WriteLine $"""{s}"""
if app.IsPage then
- let page = (* context.Environments[0].["page"] *) obj() :?> DisplayPage
- let url = app.WebLog.AbsoluteUrl(Permalink page.Permalink)
+ let url = app.WebLog.AbsoluteUrl(Permalink app.Page.Permalink)
writer.WriteLine $"""{s}"""
ok ())
diff --git a/src/MyWebLog/ViewContext.fs b/src/MyWebLog/ViewContext.fs
index 1f2ddbe..ee85af6 100644
--- a/src/MyWebLog/ViewContext.fs
+++ b/src/MyWebLog/ViewContext.fs
@@ -97,6 +97,10 @@ type AppViewContext = {
/// The payload for this page as a PostDisplay
member this.Posts =
this.Payload :?> PostDisplay
+
+ /// The model for this view (prior versions used model for the v3 payload)
+ member this.Model =
+ this.Payload
/// An empty view context
static member Empty =