From 1df4f3f807f850d092fe3d092b201bdc46de4115 Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Wed, 5 Nov 2025 09:27:08 +0000 Subject: [PATCH] Add mechanism to set tags on note --- internal/conf/templates/view.tmpl.html | 4 ++-- internal/notes/views/views.go | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/internal/conf/templates/view.tmpl.html b/internal/conf/templates/view.tmpl.html index eefa8dc..57b79b2 100644 --- a/internal/conf/templates/view.tmpl.html +++ b/internal/conf/templates/view.tmpl.html @@ -46,7 +46,7 @@
Share with other user
- + @@ -65,7 +65,7 @@
- +
Tags
diff --git a/internal/notes/views/views.go b/internal/notes/views/views.go index 5884d18..dc2af4e 100644 --- a/internal/notes/views/views.go +++ b/internal/notes/views/views.go @@ -4,6 +4,7 @@ import ( "log" "net/http" "strconv" + "strings" urls "forgejo.gwairfelin.com/max/gispatcho" "forgejo.gwairfelin.com/max/gonotes/internal/middleware" @@ -25,6 +26,7 @@ func GetRoutes(prefix string) *http.ServeMux { "new": {Path: "/new", Protocol: "GET", Handler: new}, "view_": {Path: "/{note}", Protocol: "GET", Handler: view}, "view": {Path: "/{note}/", Protocol: "GET", Handler: view}, + "setTags": {Path: "/{note}/tags/", Protocol: "POST", Handler: setTags}, "delete": {Path: "/{note}/delete/", Protocol: "GET", Handler: delete}, "edit": {Path: "/{note}/edit/", Protocol: "GET", Handler: edit}, "share": {Path: "/{note}/share/", Protocol: "POST", Handler: share}, @@ -55,9 +57,12 @@ func view(w http.ResponseWriter, r *http.Request) { "urlNew": myurls.Reverse("new", urls.Repl{}), "urlShare": myurls.Reverse("share", urls.Repl{"note": uid}), "urlUnshare": myurls.Reverse("unshare", urls.Repl{"note": uid}), + "urlSetTags": myurls.Reverse("setTags", urls.Repl{"note": uid}), "viewers": viewers, + "tags": strings.Join(note.Tags, " "), "isOwner": user == note.Owner, } + log.Printf("%s", context) note.Render() err := templ.RenderTemplate(w, r, "view.tmpl.html", context) @@ -225,3 +230,23 @@ func list(w http.ResponseWriter, r *http.Request) { return } } + +func setTags(w http.ResponseWriter, r *http.Request) { + user := r.Context().Value(middleware.ContextKey("user")).(string) + uid := r.PathValue("note") + tags := r.FormValue("tags") + + note, ok := notes.Notes.GetOne(user, uid) + log.Printf("Found note %s", note.Title) + if !ok || note.Owner != user { + http.Redirect(w, r, myurls.Reverse("view", urls.Repl{"note": uid}), http.StatusFound) + return + } + + log.Printf("Note has existing tags %s", note.Tags) + log.Printf("Form has raw value %s", tags) + + note.Tags = strings.Split(tags, " ") + note.Save() + http.Redirect(w, r, myurls.Reverse("view", urls.Repl{"note": note.Uid}), http.StatusFound) +}