add EditMode enum to adapter, basic CMS list
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmKZiJAACgkQO3+8IhRO Y5i86Q/+M3IREn72NrsFnm7MgxsW2j3jgtWDcWBr94mJZ9hjx37HGNGhkdsESNSp edoifpl/30kL0pGZdVkQ7Wh0EOMO5/5NxAiFR+LfSFViJjnRpkuPvsXz8jqBL8iZ ozmBtpzlA0WjDQoSYs4A7gV87IexvnajBag84JIT2INpaMAFYFr5Gt96KhvcqYij 2oPJtV2tK7NB25A8Vbi2aU7kDgUM/MnbDN+VgZIfH3zLtx7sZA1Kyow2C9+xSKAI N4LObQcdJCM9he3l/06X1uQdwDAh8N0wlBc79c9Oec0WBPlE+xx68papOgCoebFn UkYF8ViFoUltZ6pgtVQwbL0DygtZs86ZX30gNlBB9oZIxzW5pTBdkb43mLiWRmH3 5uZfZ4aNI3XwqYP/bkG2HdPPapRTNNPb7xNNkzWTFDZ4durbh3nTRfb41iScS/+g vjI3g4VVpPgcNmNiG/7EJAvzyCBH01CftJetNnb0S7UWrMY6JrrcC7/bdgP8T/Ql dlrXV68DVSl5I1TQZ/pmhkFMcAbX6tM6514+CuS+AFbPyJfWoVC1wnGB9cL2Hcvg bS2FLIwGdD2sKnTcT/9J9Czj8VI8SeePpBNS1tBBtefizNaloFvmijBVk8/BSI20 rRALRy6XUcXYsSW0atTydDDkTFs255FbDE+E6RIAn/+lJE8Omps= =HebP -----END PGP SIGNATURE-----
6 files changed,
46 insertions(+),
3 deletions(-)
M
archetype/adapter.go
→
archetype/adapter.go
@@ -1,8 +1,16 @@
package archetype +type EditMode int + +const ( + EditModeLiteralTextArea EditMode = iota + EditModeEscapedContentEditable +) + type Adapter interface { Init(cfg *Config) Name() string + EditMode() EditMode GetConfig(key string) (interface{}, error) SetConfig(key string, value interface{}) error ListPages() map[string]string
M
archetype/eureka.go
→
archetype/eureka.go
@@ -27,6 +27,10 @@ func (self *EurekaAdapter) Name() string {
return "eureka" } +func (self *EurekaAdapter) EditMode() EditMode { + return EditModeLiteralTextArea +} + func (self *EurekaAdapter) GetConfig(key string) (interface{}, error) { return nil, nil }
A
lfo/middleware.go
@@ -0,0 +1,17 @@
+package lfo + +import ( + "context" + "net/http" + core "nilfm.cc/git/nirvash/archetype" +) + +func WithAdapter(next http.Handler, adapter core.Adapter) http.Handler { + handlerFunc := func(w http.ResponseWriter, req *http.Request) { + *req = *req.WithContext(context.WithValue(req.Context(), "adapter", adapter)) + next.ServeHTTP(w, req) + } + + return http.HandlerFunc(handlerFunc) +} +
M
nirvash.go
→
nirvash.go
@@ -3,6 +3,7 @@
import ( "net/http" core "nilfm.cc/git/nirvash/archetype" + shell "nilfm.cc/git/nirvash/lfo" "nilfm.cc/git/quartzgun/indentalUserDB" "nilfm.cc/git/quartzgun/middleware" "nilfm.cc/git/quartzgun/renderer"@@ -38,10 +39,11 @@
rtr.Post("/login", middleware.Authorize("/", udb, "/login?tryagain=1")) rtr.Get("/", middleware.Protected( + shell.WithAdapter( renderer.Template( "templates/cms_list.html", "templates/header.html", - "templates/footer.html"), http.MethodGet, udb, "/login")) + "templates/footer.html"), cfg.Adapter), http.MethodGet, udb, "/login")) http.ListenAndServe(":8080", rtr) }
M
templates/cms_list.html
→
templates/cms_list.html
@@ -1,3 +1,15 @@
+{{ $pages := ((.Context).Value "adapter").ListPages }} + {{ template "header" .}} -<h1>It works!</h1> +<div class="page-list"> + <a class="new-page-button" href="/new/">New Page</a> + <ul> + {{ range $slug, $title := $pages }} + <li><a href="/edit/{{$slug}}">{{$title}}</a></li> + {{ end }} + </ul> +</div> + +<div class="static-files-list"> +</div> {{ template "footer" .}}
M
templates/header.html
→
templates/header.html
@@ -5,7 +5,7 @@ <head>
<meta charset='utf-8'> <meta name='description' content='Nirvash CMS'/> <meta name='viewport' content='width=device-width,initial-scale=1'> - <title>Nirvash — Test</title> + <title>Nirvash — CMS</title> </head> <body> {{end}}