change templates
This commit is contained in:
@@ -55,7 +55,6 @@ func main() {
|
|||||||
handlers.NewComicsHandler(db),
|
handlers.NewComicsHandler(db),
|
||||||
handlers.NewMediaHandler(db),
|
handlers.NewMediaHandler(db),
|
||||||
handlers.NewTyscHandler(db),
|
handlers.NewTyscHandler(db),
|
||||||
handlers.NewWebAppHandler(db, []byte(viper.GetString("api_secret"))),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
srv := &http.Server{
|
srv := &http.Server{
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
package globals
|
package globals
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"fmt"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
Secret = []byte("secret")
|
Secret = []byte("secret")
|
||||||
|
|
||||||
Version = "0.4.0"
|
Version = "unset"
|
||||||
Commit = "unset"
|
Commit = "unset"
|
||||||
Date = "unset"
|
Date = "unset"
|
||||||
)
|
)
|
||||||
@@ -16,11 +17,10 @@ const UserKey = "user"
|
|||||||
|
|
||||||
func GetDefaultValues(user interface{}, message string) gin.H {
|
func GetDefaultValues(user interface{}, message string) gin.H {
|
||||||
values := gin.H{
|
values := gin.H{
|
||||||
"title": "Kontor MediaFiles",
|
"title": "Kontor",
|
||||||
"version": Version,
|
"version": fmt.Sprintf("%s %s", Version, Commit),
|
||||||
"message": message,
|
"message": message,
|
||||||
"user": user,
|
"user": user,
|
||||||
}
|
}
|
||||||
return values
|
return values
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,11 +68,8 @@ func (handler *ComicHandler) ListPage(c *gin.Context) {
|
|||||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.HTML(http.StatusOK, "comics", gin.H{
|
data := globals.GetDefaultValues(user, "Comics...")
|
||||||
"title": "Kontor Comics",
|
data["title"] = "Kontor Comics"
|
||||||
"version": "0.4.0",
|
data["comics"] = comics
|
||||||
"message": "Comics...",
|
c.HTML(http.StatusOK, "comics", data)
|
||||||
"comics": comics,
|
|
||||||
"user": user,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,11 +24,6 @@ func Index(c *gin.Context) {
|
|||||||
user := session.Get(globals.UserKey)
|
user := session.Get(globals.UserKey)
|
||||||
logger := slog.Get(c)
|
logger := slog.Get(c)
|
||||||
logger.Info("IndexGetHandler", globals.UserKey, user)
|
logger.Info("IndexGetHandler", globals.UserKey, user)
|
||||||
c.HTML(http.StatusOK, "home", gin.H{
|
data := globals.GetDefaultValues(user, "This is an index page...")
|
||||||
"title": "Kontor Gin",
|
c.HTML(http.StatusOK, "home", data)
|
||||||
"version": "0.4.0",
|
|
||||||
"message": "This is an index page...",
|
|
||||||
"user": user,
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/gin-contrib/sessions"
|
"github.com/gin-contrib/sessions"
|
||||||
|
"github.com/gin-contrib/slog"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
@@ -76,11 +77,63 @@ func (handler *MediaActorHandler) ListPage(c *gin.Context) {
|
|||||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.HTML(http.StatusOK, "mediaactors", gin.H{
|
data := globals.GetDefaultValues(user, "MediaActors...")
|
||||||
"title": "Kontor MediaActors",
|
data["actors"] = actors
|
||||||
"version": "0.4.0",
|
c.HTML(http.StatusOK, "mediaactors", data)
|
||||||
"message": "MediaActors...",
|
}
|
||||||
"actors": actors,
|
|
||||||
"user": user,
|
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")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,13 +136,9 @@ func (handler *MediaLoFiHandler) EditPage(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
logger.Info("MediaLoFiHandler#EditPage", "lofi", lofi)
|
logger.Info("MediaLoFiHandler#EditPage", "lofi", lofi)
|
||||||
c.HTML(http.StatusOK, "lofi_detail", gin.H{
|
data := globals.GetDefaultValues(user, "MediaLofis...")
|
||||||
"title": "Kontor MediaFLofi",
|
data["lofi"] = lofi
|
||||||
"version": "0.4.0",
|
c.HTML(http.StatusOK, "lofi_detail", data)
|
||||||
"message": "MediaFiles...",
|
|
||||||
"lofi": lofi,
|
|
||||||
"user": user,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (handler *MediaLoFiHandler) ChangeReviewPage(c *gin.Context) {
|
func (handler *MediaLoFiHandler) ChangeReviewPage(c *gin.Context) {
|
||||||
@@ -166,13 +162,9 @@ func (handler *MediaLoFiHandler) ChangeReviewPage(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
logger.Info("MediaLoFiHandler#ListPage", "lofis count", len(lofis))
|
logger.Info("MediaLoFiHandler#ListPage", "lofis count", len(lofis))
|
||||||
c.HTML(http.StatusOK, "lofi", gin.H{
|
data := globals.GetDefaultValues(user, "MediaLofis...")
|
||||||
"title": "Kontor MediaFiles",
|
data["lofis"] = lofis
|
||||||
"version": "0.4.0",
|
//c.HTML(http.StatusOK, "lofi", data)
|
||||||
"message": "MediaFiles...",
|
|
||||||
"lofis": lofis,
|
|
||||||
"user": user,
|
|
||||||
})
|
|
||||||
c.Redirect(http.StatusCreated, "/web/media-lofis")
|
c.Redirect(http.StatusCreated, "/web/media-lofis")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,13 +37,15 @@ func (handler *MediaVideoHandler) List(c *gin.Context) {
|
|||||||
func (handler *MediaVideoHandler) ListPage(c *gin.Context) {
|
func (handler *MediaVideoHandler) ListPage(c *gin.Context) {
|
||||||
session := sessions.Default(c)
|
session := sessions.Default(c)
|
||||||
user := session.Get(globals.UserKey)
|
user := session.Get(globals.UserKey)
|
||||||
|
logger := slog.Get(c)
|
||||||
videos, err := handler.Service.List(c.Request.Context())
|
videos, err := handler.Service.List(c.Request.Context())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
data := globals.GetDefaultValues(user, "MediaFiles...")
|
logger.Info("MediaLoFiHandler#ListPage", "videos count", len(videos))
|
||||||
data["title"] = "Kontor MediaFiles"
|
data := globals.GetDefaultValues(user, "MediaVideos...")
|
||||||
|
data["title"] = "Kontor MediaVideos"
|
||||||
data["mediavideos"] = videos
|
data["mediavideos"] = videos
|
||||||
|
|
||||||
c.HTML(http.StatusOK, "mediavideos", data)
|
c.HTML(http.StatusOK, "mediavideos", data)
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"kontor-api-gin/internal/globals"
|
||||||
"kontor-api-gin/internal/models"
|
"kontor-api-gin/internal/models"
|
||||||
"kontor-api-gin/internal/repository"
|
"kontor-api-gin/internal/repository"
|
||||||
"kontor-api-gin/internal/service"
|
"kontor-api-gin/internal/service"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/gin-contrib/sessions"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
@@ -28,3 +30,17 @@ func (handler *PublisherHandler) List(c *gin.Context) {
|
|||||||
dtos := models.ConvertPublishersToDtos(comics)
|
dtos := models.ConvertPublishersToDtos(comics)
|
||||||
c.JSON(http.StatusOK, dtos)
|
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)
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -21,6 +21,11 @@ func (media_actor *MediaActor) TableName() string {
|
|||||||
return "media_actor"
|
return "media_actor"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MediaActorForm struct {
|
||||||
|
Name string `form:"name" binding:"required"`
|
||||||
|
Weblink string `form:"weblink" binding:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
type MediaActorDTO struct {
|
type MediaActorDTO struct {
|
||||||
ID string `json:"id" binding:"required"`
|
ID string `json:"id" binding:"required"`
|
||||||
CreatedAt helpers.KontorTime `json:"created_date"`
|
CreatedAt helpers.KontorTime `json:"created_date"`
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import (
|
|||||||
"github.com/gin-gonic/gin"
|
"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 := gin.New()
|
||||||
router.Use(gin.Recovery())
|
router.Use(gin.Recovery())
|
||||||
router.Use(gin_slog.SetLogger(
|
router.Use(gin_slog.SetLogger(
|
||||||
@@ -52,22 +52,23 @@ func New(admin *handlers.AdminHandler, bookshelf *handlers.BookshelfHandler, com
|
|||||||
router.GET("/logout", admin.AuthHandler.LogoutPage)
|
router.GET("/logout", admin.AuthHandler.LogoutPage)
|
||||||
|
|
||||||
comic := router.Group("/comics")
|
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 := router.Group("/web")
|
||||||
m.Use(middleware.AuthRequired())
|
m.Use(middleware.AuthRequired())
|
||||||
m.GET("/actors", media.MediaActorHandler.ListPage)
|
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("/articles", media.MediaFileHandler.ListPage)
|
||||||
m.GET("/media-files", 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-videos", media.MediaVideoHandler.ListPage)
|
||||||
m.GET("/media-lofis", media.MediaLoFiHandler.ListPage)
|
m.GET("/media-lofis", media.MediaLoFiHandler.ListPage)
|
||||||
m.GET("/media-lofis/:id/edit", media.MediaLoFiHandler.EditPage)
|
m.GET("/media-lofis/:id/edit", media.MediaLoFiHandler.EditPage)
|
||||||
m.POST("/media-lofis/:id/edit", media.MediaLoFiHandler.UpdatePage)
|
m.POST("/media-lofis/:id/edit", media.MediaLoFiHandler.UpdatePage)
|
||||||
m.GET("/media-lofis/:id/change-review", media.MediaLoFiHandler.ChangeReviewPage)
|
m.GET("/media-lofis/:id/change-review", media.MediaLoFiHandler.ChangeReviewPage)
|
||||||
m.GET("/media-lofis/:id/delete", media.MediaLoFiHandler.DeletePage)
|
m.GET("/media-lofis/:id/delete", media.MediaLoFiHandler.DeletePage)
|
||||||
m.GET("/lofis", media.MediaLoFiHandler.ListPage)
|
|
||||||
|
|
||||||
api := router.Group("/api")
|
api := router.Group("/api")
|
||||||
api.POST("/login", admin.AuthHandler.Login)
|
api.POST("/login", admin.AuthHandler.Login)
|
||||||
|
|||||||
@@ -18,80 +18,34 @@
|
|||||||
</aside>
|
</aside>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
|
||||||
<form class="form-inline" action="/web/media-lofis">
|
|
||||||
<input type="text" placeholder="Search" name="query" />
|
|
||||||
<label>
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
name="review"
|
|
||||||
{{if
|
|
||||||
.isReview}}checked{{end}}
|
|
||||||
/>Review
|
|
||||||
</label>
|
|
||||||
<label>
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
name="should_download"
|
|
||||||
{{if
|
|
||||||
.isDownload}}checked{{end}}
|
|
||||||
/>Download
|
|
||||||
</label>
|
|
||||||
<button type="submit">Search</button>
|
|
||||||
<div class="pill-nav">
|
|
||||||
<a href="/web/media-lofis/add">Add Lofi</a>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{{ if .Errors }}
|
{{ if .Errors }}
|
||||||
<div class="notification is-danger">{{ .Errors }}</div>
|
<div class="notification is-danger">{{ .Errors }}</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{{ if .Errors }}
|
<div class="col-md-8">
|
||||||
<div class="notification is-danger">{{ .Errors }}</div>
|
<form action="/web/media-lofis/{{.lofi.ID}}/edit" method="POST">
|
||||||
{{ end }}
|
<div class="form-group row">
|
||||||
</div>
|
<label for="inputWeblink" class="col-sm-2 -col-form-label">URL</label>
|
||||||
<div class="row">
|
<div class="col-sm-10">
|
||||||
<form action="/web/media-lofis/{{.lofi.ID}}/edit" method="POST">
|
<input type="text" class="form-control" id="inputWeblink" name="weblink" value="{{.lofi.WebLink}}"/>
|
||||||
<div class="form-group row">
|
</div>
|
||||||
<label for="inputWeblink" class="col-sm-2 -col-form-label"
|
|
||||||
>URL</label
|
|
||||||
>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="form-control"
|
|
||||||
id="inputWeblink"
|
|
||||||
name="weblink"
|
|
||||||
value="{{.lofi.WebLink}}"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="form-group row">
|
||||||
<div class="form-group row">
|
<label for="inputTitle" class="col-sm-2 -col-form-label">Title</label>
|
||||||
<label for="inputTitle" class="col-sm-2 -col-form-label"
|
<div class="col-sm-10">
|
||||||
>Title</label
|
<input type="text" class="form-control" id="inputTitle" name="title" value="{{.lofi.Title}}"/>
|
||||||
>
|
</div>
|
||||||
<div class="col-sm-10">
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="form-control"
|
|
||||||
id="inputTitle"
|
|
||||||
name="title"
|
|
||||||
value="{{.lofi.Title}}"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="form-group row">
|
||||||
<div class="form-group row">
|
<div class="col-sm-10">
|
||||||
<div class="col-sm-10">
|
<button class="btn btn-primary" type="submit">Update</button>
|
||||||
<button class="btn btn-primary" type="submit">Update</button>
|
<button class="btn" type="button" onclick="/web/media-lofis">Cancel</button>
|
||||||
<button class="btn" type="button" onclick="/web/media-lofis">
|
</div>
|
||||||
Cancel
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</form>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
{{ template "footer" . }}
|
{{ template "footer" . }}
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
{{ define "actor_detail" }}
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
{{ template "head" . }}
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{{ template "navbar" . }}
|
||||||
|
<main>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<h1>Media Actor</h1>
|
||||||
|
<p>Hier steht der wesentliche Inhalt der Seite.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<aside class="bg-light p-3">
|
||||||
|
<h3>Seitenbereich</h3>
|
||||||
|
<p>Optionale Sidebar oder Zusatzinformationen.</p>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
{{ if .Errors }}
|
||||||
|
<div class="notification is-danger">{{ .Errors }}</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<form action="/web/actors/{{.actor.ID}}/edit" method="POST">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="inputName" class="col-sm-2 -col-form-label">Name</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="inputName" name="name" value="{{.actor.Name}}"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="inputWeblink" class="col-sm-2 -col-form-label">Link</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="inputWeblink" name="weblink" value="{{.actor.WebLink}}"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<button class="btn btn-primary" type="submit">Update</button>
|
||||||
|
<button class="btn" type="button" onclick="/web/actors">Cancel</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{{ template "footer" . }}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
{{ end }}
|
||||||
@@ -5,10 +5,37 @@
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
{{ template "navbar" . }}
|
{{ template "navbar" . }}
|
||||||
<div>
|
<main>
|
||||||
<h1>{{ .message }}</h1>
|
<div class="row">
|
||||||
</div>
|
<div class="col-md-8">
|
||||||
{{ template "footer" . }}
|
<h1>Media Actors</h1>
|
||||||
|
<p>Hier steht der wesentliche Inhalt der Seite.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<aside class="bg-light p-3">
|
||||||
|
<h3>Seitenbereich</h3>
|
||||||
|
<p>Optionale Sidebar oder Zusatzinformationen.</p>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<form class="form-inline" action="/web/actors">
|
||||||
|
<input type="text" placeholder="Search" name="query">
|
||||||
|
<button type="submit">Search</button>
|
||||||
|
<div class="pill-nav"><a href="/web/actors/add">Add Lofi</a></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
{{ range .actors }}
|
||||||
|
<div class="card shadow p-3 mb-2 bg-body rounded" style="width: 18rem;">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">{{.Name}}</h5>
|
||||||
|
<a href="/web/actors/{{.ID}}" class="btn btn-primary">Read more</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
{{ define "publishers" }}
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
{{ template "head" . }}
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{{ template "navbar" . }}
|
||||||
|
<main>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<h1>Comic Publishers</h1>
|
||||||
|
<p>Hier steht der wesentliche Inhalt der Seite.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<aside class="bg-light p-3">
|
||||||
|
<h3>Seitenbereich</h3>
|
||||||
|
<p>Optionale Sidebar oder Zusatzinformationen.</p>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<form class="form-inline" action="/comic/publishers">
|
||||||
|
<input type="text" placeholder="Search" name="query">
|
||||||
|
<button type="submit">Search</button>
|
||||||
|
<div class="pill-nav"><a href="/comic/publishers/add">Add Lofi</a></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
{{ range .publishers }}
|
||||||
|
<div class="card shadow p-3 mb-2 bg-body rounded" style="width: 18rem;">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">{{.Name}}</h5>
|
||||||
|
<a href="/comic/publishers/{{.ID}}" class="btn btn-primary">Read more</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{{ template "footer" . }}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
{{ end }}
|
||||||
Reference in New Issue
Block a user