Add mechanism to set tags on note
This commit is contained in:
parent
7a44876e77
commit
1df4f3f807
2 changed files with 27 additions and 2 deletions
|
|
@ -46,7 +46,7 @@
|
||||||
<div id="viewerHelp" class="form-text">Share with other user</div>
|
<div id="viewerHelp" class="form-text">Share with other user</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-primary" type="submit">Share</button>
|
<button class="btn btn-primary" type="submit">Share</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -65,7 +65,7 @@
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<form action="{{.urlSetTags}}" method="POST">
|
<form action="{{.urlSetTags}}" method="POST">
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<input type="text" class="form-control" id="tagInput" name="tags" aria-described-by="tagHelp" value="{{.note.Tags}}"/>
|
<input type="text" class="form-control" id="tagInput" name="tags" aria-described-by="tagHelp" value="{{.tags}}"/>
|
||||||
<div id="tagHelp" class="form-text">Tags</div>
|
<div id="tagHelp" class="form-text">Tags</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-primary" type="submit">Set Tags</button>
|
<button class="btn btn-primary" type="submit">Set Tags</button>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
urls "forgejo.gwairfelin.com/max/gispatcho"
|
urls "forgejo.gwairfelin.com/max/gispatcho"
|
||||||
"forgejo.gwairfelin.com/max/gonotes/internal/middleware"
|
"forgejo.gwairfelin.com/max/gonotes/internal/middleware"
|
||||||
|
|
@ -25,6 +26,7 @@ func GetRoutes(prefix string) *http.ServeMux {
|
||||||
"new": {Path: "/new", Protocol: "GET", Handler: new},
|
"new": {Path: "/new", Protocol: "GET", Handler: new},
|
||||||
"view_": {Path: "/{note}", Protocol: "GET", Handler: view},
|
"view_": {Path: "/{note}", Protocol: "GET", Handler: view},
|
||||||
"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},
|
"delete": {Path: "/{note}/delete/", Protocol: "GET", Handler: delete},
|
||||||
"edit": {Path: "/{note}/edit/", Protocol: "GET", Handler: edit},
|
"edit": {Path: "/{note}/edit/", Protocol: "GET", Handler: edit},
|
||||||
"share": {Path: "/{note}/share/", Protocol: "POST", Handler: share},
|
"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{}),
|
"urlNew": myurls.Reverse("new", urls.Repl{}),
|
||||||
"urlShare": myurls.Reverse("share", urls.Repl{"note": uid}),
|
"urlShare": myurls.Reverse("share", urls.Repl{"note": uid}),
|
||||||
"urlUnshare": myurls.Reverse("unshare", urls.Repl{"note": uid}),
|
"urlUnshare": myurls.Reverse("unshare", urls.Repl{"note": uid}),
|
||||||
|
"urlSetTags": myurls.Reverse("setTags", urls.Repl{"note": uid}),
|
||||||
"viewers": viewers,
|
"viewers": viewers,
|
||||||
|
"tags": strings.Join(note.Tags, " "),
|
||||||
"isOwner": user == note.Owner,
|
"isOwner": user == note.Owner,
|
||||||
}
|
}
|
||||||
|
log.Printf("%s", context)
|
||||||
|
|
||||||
note.Render()
|
note.Render()
|
||||||
err := templ.RenderTemplate(w, r, "view.tmpl.html", context)
|
err := templ.RenderTemplate(w, r, "view.tmpl.html", context)
|
||||||
|
|
@ -225,3 +230,23 @@ func list(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
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)
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue