From af217df987469c21a3d2c4869de0fb1bc59d5a7c Mon Sep 17 00:00:00 2001 From: Connor van Spronssen Date: Sat, 25 Jan 2025 13:27:49 +0100 Subject: [PATCH] feat: Add a base route for a Contentstack dashboard extension --- cmd/server/handle-routes.go | 4 ++ cmd/server/routes/dashboard-entries-tree.go | 48 +++++++++++++++++++ .../dashboard-entries-tree.html.tmpl | 35 ++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 cmd/server/routes/dashboard-entries-tree.go create mode 100644 cmd/server/routes/templates/dashboard-entries-tree.html.tmpl diff --git a/cmd/server/handle-routes.go b/cmd/server/handle-routes.go index 659fa43..9e08841 100644 --- a/cmd/server/handle-routes.go +++ b/cmd/server/handle-routes.go @@ -23,6 +23,10 @@ func HandleRoutes(mux *http.ServeMux, apiPath string) { apiRoute(mux, apiPath, "/translations", "GET", v1.GetTranslations) apiRoute(mux, apiPath, "/sitemap-data", "GET", v1.GetSitemapData) apiRoute(mux, apiPath, "/sync", "POST", v1.Sync) + + mux.HandleFunc("GET /dashboard-entries-tree", func(w http.ResponseWriter, r *http.Request) { + routes.DashboardEntriesTree(w, r) + }) } func apiRoute( diff --git a/cmd/server/routes/dashboard-entries-tree.go b/cmd/server/routes/dashboard-entries-tree.go new file mode 100644 index 0000000..7408410 --- /dev/null +++ b/cmd/server/routes/dashboard-entries-tree.go @@ -0,0 +1,48 @@ +package routes + +import ( + "bytes" + "embed" + "fmt" + "io/fs" + "net/http" + "text/template" + + "github.com/Dobefu/csb/cmd/logger" +) + +type FS interface { + fs.FS + ReadDir(string) ([]fs.DirEntry, error) + ReadFile(string) ([]byte, error) +} + +//go:embed templates/* +var content embed.FS +var getFs = func() FS { return content } + +func DashboardEntriesTree(w http.ResponseWriter, r *http.Request) { + w.Header().Add("Content-Type", "text/html") + w.Header().Add("X-Content-Type-Options", "nosniff") + + data := make(map[string]interface{}) + + templates := []string{ + "templates/dashboard-entries-tree.html.tmpl", + } + + tpl := template.Must(template.ParseFS(getFs(), templates...)) + var buf bytes.Buffer + err := tpl.Execute(&buf, data) + + if err != nil { + logger.Error(err.Error()) + http.NotFound(w, r) + return + } + + w.WriteHeader(http.StatusOK) + + output := buf.Bytes() + fmt.Fprint(w, string(output)) +} diff --git a/cmd/server/routes/templates/dashboard-entries-tree.html.tmpl b/cmd/server/routes/templates/dashboard-entries-tree.html.tmpl new file mode 100644 index 0000000..adca540 --- /dev/null +++ b/cmd/server/routes/templates/dashboard-entries-tree.html.tmpl @@ -0,0 +1,35 @@ + + + + + + + + + Entries Tree View + + + + + + + + PLACEHOLDER + + +