From 2889927416fd824d9eb5b3528327612b21cc663e Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Sun, 25 Oct 2026 04:05:11 +0100 Subject: [PATCH] change templates --- kontor-gin/cmd/kontor/main.go | 1 - kontor-gin/internal/globals/globals.go | 12 +-- kontor-gin/internal/handlers/comic.go | 11 +-- kontor-gin/internal/handlers/kontor.go | 9 +-- kontor-gin/internal/handlers/media_actor.go | 67 ++++++++++++++-- kontor-gin/internal/handlers/media_lofi.go | 20 ++--- kontor-gin/internal/handlers/mediavideo.go | 6 +- kontor-gin/internal/handlers/publisher.go | 16 ++++ kontor-gin/internal/handlers/webapp.go | 21 ------ kontor-gin/internal/models/media_actor.go | 5 ++ kontor-gin/internal/router/router.go | 11 +-- kontor-gin/templates/pages/lofi_detail.html | 84 +++++---------------- kontor-gin/templates/pages/mediaactor.html | 54 +++++++++++++ kontor-gin/templates/pages/mediaactors.html | 35 ++++++++- kontor-gin/templates/pages/publishers.html | 42 +++++++++++ 15 files changed, 255 insertions(+), 139 deletions(-) delete mode 100644 kontor-gin/internal/handlers/webapp.go create mode 100644 kontor-gin/templates/pages/mediaactor.html create mode 100644 kontor-gin/templates/pages/publishers.html diff --git a/kontor-gin/cmd/kontor/main.go b/kontor-gin/cmd/kontor/main.go index f918fa7..578322d 100644 --- a/kontor-gin/cmd/kontor/main.go +++ b/kontor-gin/cmd/kontor/main.go @@ -55,7 +55,6 @@ func main() { handlers.NewComicsHandler(db), handlers.NewMediaHandler(db), handlers.NewTyscHandler(db), - handlers.NewWebAppHandler(db, []byte(viper.GetString("api_secret"))), ) srv := &http.Server{ diff --git a/kontor-gin/internal/globals/globals.go b/kontor-gin/internal/globals/globals.go index b750d3c..ddfd0a2 100644 --- a/kontor-gin/internal/globals/globals.go +++ b/kontor-gin/internal/globals/globals.go @@ -1,13 +1,14 @@ package globals import ( - "github.com/gin-gonic/gin" + "fmt" + "github.com/gin-gonic/gin" ) var ( Secret = []byte("secret") - Version = "0.4.0" + Version = "unset" Commit = "unset" Date = "unset" ) @@ -16,11 +17,10 @@ const UserKey = "user" func GetDefaultValues(user interface{}, message string) gin.H { values := gin.H{ - "title": "Kontor MediaFiles", - "version": Version, + "title": "Kontor", + "version": fmt.Sprintf("%s %s", Version, Commit), "message": message, - "user": user, + "user": user, } return values } - diff --git a/kontor-gin/internal/handlers/comic.go b/kontor-gin/internal/handlers/comic.go index 62e5c44..5df92b4 100644 --- a/kontor-gin/internal/handlers/comic.go +++ b/kontor-gin/internal/handlers/comic.go @@ -68,11 +68,8 @@ func (handler *ComicHandler) ListPage(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } - c.HTML(http.StatusOK, "comics", gin.H{ - "title": "Kontor Comics", - "version": "0.4.0", - "message": "Comics...", - "comics": comics, - "user": user, - }) + data := globals.GetDefaultValues(user, "Comics...") + data["title"] = "Kontor Comics" + data["comics"] = comics + c.HTML(http.StatusOK, "comics", data) } diff --git a/kontor-gin/internal/handlers/kontor.go b/kontor-gin/internal/handlers/kontor.go index 22b1a07..cf8cb90 100644 --- a/kontor-gin/internal/handlers/kontor.go +++ b/kontor-gin/internal/handlers/kontor.go @@ -24,11 +24,6 @@ func Index(c *gin.Context) { user := session.Get(globals.UserKey) logger := slog.Get(c) logger.Info("IndexGetHandler", globals.UserKey, user) - c.HTML(http.StatusOK, "home", gin.H{ - "title": "Kontor Gin", - "version": "0.4.0", - "message": "This is an index page...", - "user": user, - }) - + data := globals.GetDefaultValues(user, "This is an index page...") + c.HTML(http.StatusOK, "home", data) } diff --git a/kontor-gin/internal/handlers/media_actor.go b/kontor-gin/internal/handlers/media_actor.go index 669cc47..35eec26 100644 --- a/kontor-gin/internal/handlers/media_actor.go +++ b/kontor-gin/internal/handlers/media_actor.go @@ -8,6 +8,7 @@ import ( "net/http" "github.com/gin-contrib/sessions" + "github.com/gin-contrib/slog" "github.com/gin-gonic/gin" "gorm.io/gorm" ) @@ -76,11 +77,63 @@ func (handler *MediaActorHandler) ListPage(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } - c.HTML(http.StatusOK, "mediaactors", gin.H{ - "title": "Kontor MediaActors", - "version": "0.4.0", - "message": "MediaActors...", - "actors": actors, - "user": user, - }) + data := globals.GetDefaultValues(user, "MediaActors...") + data["actors"] = actors + c.HTML(http.StatusOK, "mediaactors", data) +} + +func (handler *MediaActorHandler) EditPage(c *gin.Context) { + session := sessions.Default(c) + user := session.Get(globals.UserKey) + id := c.Param("id") + //logger := slog.Get(c) + actor, err := handler.Service.Get(c.Request.Context(), id) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + data := globals.GetDefaultValues(user, "MediaActors...") + data["actor"] = actor + c.HTML(http.StatusOK, "actor_detail", data) +} + +func (handler *MediaActorHandler) UpdatePage(c *gin.Context) { + session := sessions.Default(c) + user := session.Get(globals.UserKey) + id := c.Param("id") + logger := slog.Get(c) + actor, err := handler.Service.Get(c.Request.Context(), id) + if err != nil { + logger.Info("MediaActorHandler#UpdatePage", "error", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + var form models.MediaActorForm + if err := c.ShouldBind(&form); err != nil { + logger.Info("MediaActorHandler#UpdatePage", "error", err.Error()) + data := globals.GetDefaultValues(user, "MediaActors...") + data["actor"] = actor + data["Form"] = form + data["Errors"] = err.Error() + c.HTML(http.StatusBadRequest, "actor_detail", data) + return + } + logger.Info("MediaActorHandler#UpdatePage", "actor", actor) + //handler.Service.Update(c.Request.Context(), form.ConvertFormToMediaLofiDTO()) + c.Redirect(http.StatusFound, "web/actors") +} + +func (handler *MediaActorHandler) DeletePage(c *gin.Context) { + //session := sessions.Default(c) + //user := session.Get(globals.UserKey) + id := c.Param("id") + logger := slog.Get(c) + //actor, err := handler.Service.Get(c.Request.Context(), id) + // if err != nil { + // logger.Info("MediaActorHandler#DeletePage", "error", err.Error()) + // c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + // return + // } + logger.Info("MediaActorHandler#DeletePage", "actor", id) + c.Redirect(http.StatusFound, "web/actors") } diff --git a/kontor-gin/internal/handlers/media_lofi.go b/kontor-gin/internal/handlers/media_lofi.go index af6e9d5..b3ea881 100644 --- a/kontor-gin/internal/handlers/media_lofi.go +++ b/kontor-gin/internal/handlers/media_lofi.go @@ -136,13 +136,9 @@ func (handler *MediaLoFiHandler) EditPage(c *gin.Context) { return } logger.Info("MediaLoFiHandler#EditPage", "lofi", lofi) - c.HTML(http.StatusOK, "lofi_detail", gin.H{ - "title": "Kontor MediaFLofi", - "version": "0.4.0", - "message": "MediaFiles...", - "lofi": lofi, - "user": user, - }) + data := globals.GetDefaultValues(user, "MediaLofis...") + data["lofi"] = lofi + c.HTML(http.StatusOK, "lofi_detail", data) } func (handler *MediaLoFiHandler) ChangeReviewPage(c *gin.Context) { @@ -166,13 +162,9 @@ func (handler *MediaLoFiHandler) ChangeReviewPage(c *gin.Context) { return } logger.Info("MediaLoFiHandler#ListPage", "lofis count", len(lofis)) - c.HTML(http.StatusOK, "lofi", gin.H{ - "title": "Kontor MediaFiles", - "version": "0.4.0", - "message": "MediaFiles...", - "lofis": lofis, - "user": user, - }) + data := globals.GetDefaultValues(user, "MediaLofis...") + data["lofis"] = lofis + //c.HTML(http.StatusOK, "lofi", data) c.Redirect(http.StatusCreated, "/web/media-lofis") } diff --git a/kontor-gin/internal/handlers/mediavideo.go b/kontor-gin/internal/handlers/mediavideo.go index e2aa58c..c5eb338 100644 --- a/kontor-gin/internal/handlers/mediavideo.go +++ b/kontor-gin/internal/handlers/mediavideo.go @@ -37,13 +37,15 @@ func (handler *MediaVideoHandler) List(c *gin.Context) { func (handler *MediaVideoHandler) ListPage(c *gin.Context) { session := sessions.Default(c) user := session.Get(globals.UserKey) + logger := slog.Get(c) videos, err := handler.Service.List(c.Request.Context()) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } - data := globals.GetDefaultValues(user, "MediaFiles...") - data["title"] = "Kontor MediaFiles" + logger.Info("MediaLoFiHandler#ListPage", "videos count", len(videos)) + data := globals.GetDefaultValues(user, "MediaVideos...") + data["title"] = "Kontor MediaVideos" data["mediavideos"] = videos c.HTML(http.StatusOK, "mediavideos", data) diff --git a/kontor-gin/internal/handlers/publisher.go b/kontor-gin/internal/handlers/publisher.go index 90aa844..ea5e479 100644 --- a/kontor-gin/internal/handlers/publisher.go +++ b/kontor-gin/internal/handlers/publisher.go @@ -1,11 +1,13 @@ package handlers import ( + "kontor-api-gin/internal/globals" "kontor-api-gin/internal/models" "kontor-api-gin/internal/repository" "kontor-api-gin/internal/service" "net/http" + "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" "gorm.io/gorm" ) @@ -28,3 +30,17 @@ func (handler *PublisherHandler) List(c *gin.Context) { dtos := models.ConvertPublishersToDtos(comics) c.JSON(http.StatusOK, dtos) } + +func (handler *PublisherHandler) ListPage(c *gin.Context) { + session := sessions.Default(c) + user := session.Get(globals.UserKey) + publishers, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + data := globals.GetDefaultValues(user, "Publishers...") + data["title"] = "Kontor Comics" + data["publishers"] = publishers + c.HTML(http.StatusOK, "publishers", data) +} diff --git a/kontor-gin/internal/handlers/webapp.go b/kontor-gin/internal/handlers/webapp.go deleted file mode 100644 index 526bd79..0000000 --- a/kontor-gin/internal/handlers/webapp.go +++ /dev/null @@ -1,21 +0,0 @@ -package handlers - -import ( - "kontor-api-gin/internal/repository" - "kontor-api-gin/internal/service" - - "gorm.io/gorm" -) - -type WebAppHandler struct { - AuthHandler *AuthHandler - ComicHandler *ComicHandler -} - -func NewWebAppHandler(db *gorm.DB, secret []byte) *WebAppHandler { - webapp := &WebAppHandler{ - AuthHandler: &AuthHandler{Service: service.NewAuthService(repository.NewProfileRepository(db), secret)}, - ComicHandler: &ComicHandler{Service: service.NewComicService(repository.NewComicRepository(db))}, - } - return webapp -} diff --git a/kontor-gin/internal/models/media_actor.go b/kontor-gin/internal/models/media_actor.go index 10c43a5..6babe60 100644 --- a/kontor-gin/internal/models/media_actor.go +++ b/kontor-gin/internal/models/media_actor.go @@ -21,6 +21,11 @@ func (media_actor *MediaActor) TableName() string { return "media_actor" } +type MediaActorForm struct { + Name string `form:"name" binding:"required"` + Weblink string `form:"weblink" binding:"required"` +} + type MediaActorDTO struct { ID string `json:"id" binding:"required"` CreatedAt helpers.KontorTime `json:"created_date"` diff --git a/kontor-gin/internal/router/router.go b/kontor-gin/internal/router/router.go index 9019f77..1ecfe16 100644 --- a/kontor-gin/internal/router/router.go +++ b/kontor-gin/internal/router/router.go @@ -18,7 +18,7 @@ import ( "github.com/gin-gonic/gin" ) -func New(admin *handlers.AdminHandler, bookshelf *handlers.BookshelfHandler, comics *handlers.ComicsHandler, media *handlers.MediaHandler, tysc *handlers.TyscHandler, webApp *handlers.WebAppHandler) *gin.Engine { +func New(admin *handlers.AdminHandler, bookshelf *handlers.BookshelfHandler, comics *handlers.ComicsHandler, media *handlers.MediaHandler, tysc *handlers.TyscHandler) *gin.Engine { router := gin.New() router.Use(gin.Recovery()) router.Use(gin_slog.SetLogger( @@ -52,22 +52,23 @@ func New(admin *handlers.AdminHandler, bookshelf *handlers.BookshelfHandler, com router.GET("/logout", admin.AuthHandler.LogoutPage) comic := router.Group("/comics") - comic.GET("/comics", webApp.ComicHandler.ListPage) + comic.GET("/comics", comics.ComicHandler.ListPage) + comic.GET("/publishers", comics.PublisherHandler.ListPage) m := router.Group("/web") m.Use(middleware.AuthRequired()) m.GET("/actors", media.MediaActorHandler.ListPage) + m.GET("/actors/:id", media.MediaActorHandler.EditPage) + m.GET("/actors/:id/edit", media.MediaActorHandler.EditPage) + m.POST("/actors/:id/edit", media.MediaActorHandler.UpdatePage) m.GET("/articles", media.MediaFileHandler.ListPage) m.GET("/media-files", media.MediaFileHandler.ListPage) - m.GET("/files", media.MediaFileHandler.ListPage) - m.GET("/videos", media.MediaVideoHandler.ListPage) m.GET("/media-videos", media.MediaVideoHandler.ListPage) m.GET("/media-lofis", media.MediaLoFiHandler.ListPage) m.GET("/media-lofis/:id/edit", media.MediaLoFiHandler.EditPage) m.POST("/media-lofis/:id/edit", media.MediaLoFiHandler.UpdatePage) m.GET("/media-lofis/:id/change-review", media.MediaLoFiHandler.ChangeReviewPage) m.GET("/media-lofis/:id/delete", media.MediaLoFiHandler.DeletePage) - m.GET("/lofis", media.MediaLoFiHandler.ListPage) api := router.Group("/api") api.POST("/login", admin.AuthHandler.Login) diff --git a/kontor-gin/templates/pages/lofi_detail.html b/kontor-gin/templates/pages/lofi_detail.html index 2fdf8e7..717509b 100644 --- a/kontor-gin/templates/pages/lofi_detail.html +++ b/kontor-gin/templates/pages/lofi_detail.html @@ -18,80 +18,34 @@ -
-
- - - - -
- Add Lofi -
-
-
{{ if .Errors }}
{{ .Errors }}
{{ end }}
- {{ if .Errors }} -
{{ .Errors }}
- {{ end }} -
-
-
-
- -
- +
+ +
+ +
+ +
-
-
- -
- +
+ +
+ +
-
-
-
- - +
+
+ + +
-
- + +
{{ template "footer" . }} diff --git a/kontor-gin/templates/pages/mediaactor.html b/kontor-gin/templates/pages/mediaactor.html new file mode 100644 index 0000000..7f3001a --- /dev/null +++ b/kontor-gin/templates/pages/mediaactor.html @@ -0,0 +1,54 @@ +{{ define "actor_detail" }} + + + {{ template "head" . }} + + + {{ template "navbar" . }} +
+
+
+

Media Actor

+

Hier steht der wesentliche Inhalt der Seite.

+
+
+ +
+
+
+ {{ if .Errors }} +
{{ .Errors }}
+ {{ end }} +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + +
+
+
+
+
+
+ {{ template "footer" . }} + + +{{ end }} diff --git a/kontor-gin/templates/pages/mediaactors.html b/kontor-gin/templates/pages/mediaactors.html index 7a4c743..a386114 100644 --- a/kontor-gin/templates/pages/mediaactors.html +++ b/kontor-gin/templates/pages/mediaactors.html @@ -5,10 +5,37 @@ {{ template "navbar" . }} -
-

{{ .message }}

-
- {{ template "footer" . }} +
+
+
+

Media Actors

+

Hier steht der wesentliche Inhalt der Seite.

+
+
+ +
+
+
+
+ + + +
+
+
+ {{ range .actors }} +
+
+
{{.Name}}
+ Read more +
+
+ {{ end }} +
+
{{ end }} diff --git a/kontor-gin/templates/pages/publishers.html b/kontor-gin/templates/pages/publishers.html new file mode 100644 index 0000000..cd1e982 --- /dev/null +++ b/kontor-gin/templates/pages/publishers.html @@ -0,0 +1,42 @@ +{{ define "publishers" }} + + + {{ template "head" . }} + + + {{ template "navbar" . }} +
+
+
+

Comic Publishers

+

Hier steht der wesentliche Inhalt der Seite.

+
+
+ +
+
+
+
+ + + +
+
+
+ {{ range .publishers }} +
+
+
{{.Name}}
+ Read more +
+
+ {{ end }} +
+
+ {{ template "footer" . }} + + +{{ end }}