From 0f096ff94b94d5d2f62aeb8df77e08dc677b8e16 Mon Sep 17 00:00:00 2001 From: lbenedar Date: Thu, 5 Mar 2026 11:16:46 +0300 Subject: [PATCH] ch5.2 --- cmd/web/handlers.go | 53 ++++++++++++++++++++++++++++------------- cmd/web/templates.go | 10 ++++++++ ui/html/pages/home.tmpl | 19 ++++++++++++++- ui/html/pages/view.tmpl | 18 ++++++++++++++ 4 files changed, 82 insertions(+), 18 deletions(-) create mode 100644 cmd/web/templates.go create mode 100644 ui/html/pages/view.tmpl diff --git a/cmd/web/handlers.go b/cmd/web/handlers.go index ff76867..1c8719f 100644 --- a/cmd/web/handlers.go +++ b/cmd/web/handlers.go @@ -3,6 +3,7 @@ package main import ( "errors" "fmt" + "html/template" "net/http" "strconv" @@ -20,23 +21,23 @@ func (app *application) home(w http.ResponseWriter, r *http.Request) { app.serverError(w, err) return } - for _, snippet := range snippets { - fmt.Fprintf(w, "%+v\n", snippet) + files := []string{ + "./ui/html/base.tmpl", + "./ui/html/partials/nav.tmpl", + "./ui/html/pages/home.tmpl", + } + ts, err := template.ParseFiles(files...) + if err != nil { + app.serverError(w, err) + return + } + data := &templateData{ + Snippets: snippets, + } + err = ts.ExecuteTemplate(w, "base", data) + if err != nil { + app.serverError(w, err) } - // files := []string{ - // "./ui/html/base.tmpl", - // "./ui/html/partials/nav.tmpl", - // "./ui/html/pages/home.tmpl", - // } - // ts, err := template.ParseFiles(files...) - // if err != nil { - // app.serverError(w, err) - // return - // } - // err = ts.ExecuteTemplate(w, "base", nil) - // if err != nil { - // app.serverError(w, err) - // } } func (app *application) snippetView(w http.ResponseWriter, r *http.Request) { @@ -55,7 +56,25 @@ func (app *application) snippetView(w http.ResponseWriter, r *http.Request) { } return } - fmt.Fprintf(w, "%+v", snippet) + files := []string{ + "./ui/html/base.tmpl", + "./ui/html/partials/nav.tmpl", + "./ui/html/pages/view.tmpl", + } + ts, err := template.ParseFiles(files...) + if err != nil { + app.serverError(w, err) + return + } + + data := &templateData{ + Snippet: snippet, + } + + err = ts.ExecuteTemplate(w, "base", data) + if err != nil { + app.serverError(w, err) + } } func (app *application) snippetCreate(w http.ResponseWriter, r *http.Request) { diff --git a/cmd/web/templates.go b/cmd/web/templates.go new file mode 100644 index 0000000..350820a --- /dev/null +++ b/cmd/web/templates.go @@ -0,0 +1,10 @@ +package main + +import ( + "gitea.local.lab/Lbenedar/snippetbox/internal/models" +) + +type templateData struct { + Snippet *models.Snippet + Snippets []*models.Snippet +} diff --git a/ui/html/pages/home.tmpl b/ui/html/pages/home.tmpl index 968e57e..ea0b4ea 100644 --- a/ui/html/pages/home.tmpl +++ b/ui/html/pages/home.tmpl @@ -2,5 +2,22 @@ {{define "main"}}

Latest Snippets

-

There's nothing to see here yet!

+ {{if .Snippets}} + + + + + + + {{range .Snippets}} + + + + + + {{end}} +
TitleCreatedID
{{.Title}}{{.Created}}#{{.ID}}
+ {{else}} +

There's nothing to see here... yet!

+ {{end}} {{end}} \ No newline at end of file diff --git a/ui/html/pages/view.tmpl b/ui/html/pages/view.tmpl new file mode 100644 index 0000000..3cde544 --- /dev/null +++ b/ui/html/pages/view.tmpl @@ -0,0 +1,18 @@ +{{define "title"}}Snippet ${{.Snippet.ID}}{{end}} + +{{define "main"}} + {{with .Snippet}} +
+ +
{{.Content}}
+ + +
+ {{end}} +{{end}} \ No newline at end of file