git.sophuwu.com > manweb
navigation tweaks
sophuwu sophie@sophuwu.com
Mon, 21 Jul 2025 21:12:43 +0200
commit

93697eb62dd55404afcdf3da9beebb47227611ad

parent

7acfa6bc6fd0d03b2d78c4aeeb063fe851b6e053

5 files changed, 26 insertions(+), 14 deletions(-)

jump to
M embeds/embeds.goembeds/embeds.go

@@ -117,7 +117,10 @@ }

t.ExecuteTemplate(w, "index.html", p) } -func WriteHtml(w http.ResponseWriter, r *http.Request, title, html string, q string) { +func WriteHtml(w http.ResponseWriter, r *http.Request, title, html string, q string, setRawQuery ...string) { + if len(setRawQuery) > 0 { + html += "\n" + fmt.Sprintf(`<script>SetRawQuery("%s");</script>`, setRawQuery[0]) + "\n" + } p := Page{ Title: title, Hostname: CFG.HttpHostname(r),

@@ -126,7 +129,10 @@ Query: q,

} t.ExecuteTemplate(w, "index.html", p) } -func Help(w http.ResponseWriter, r *http.Request) { - - WriteHtml(w, r, "Help", help, r.URL.RawQuery) +func Help(w http.ResponseWriter, r *http.Request, q string) bool { + if q == "manweb:help" { + WriteHtml(w, r, "Help", help, q, q) + return true + } + return false }
M embeds/static/scripts.jsembeds/static/scripts.js

@@ -136,11 +136,11 @@ butt.addEventListener("click", function () {fun(v)});

}(butt,eval("Set" + n.n), H(butt).l)); }(elemH,H(elemH))); } - function ChangeRawQuery(s="") { - let u = document.URL; - let i = u.indexOf("?"); + let i = u.indexOf("#"); + if (i >= 0) u = u.substring(0, i); + i = u.indexOf("?"); if (s.length > 0 && !s.startsWith("?")) { s = "?" + s; }
M main.gomain.go

@@ -122,7 +122,7 @@ if len(line) == 4 {

output += fmt.Sprintf(`<p><a href="?%s.%s">%s (%s)</a> - %s</p>%c`, line[1], line[2], line[1], line[2], line[3], 10) } } - embeds.WriteHtml(w, r, "Search", output, q) + embeds.WriteHtml(w, r, "Search", output, q, "") } var PageHandler http.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

@@ -140,11 +140,10 @@ }

} } if name == "" { - embeds.WriteHtml(w, r, "Index", "", "") + embeds.WriteHtml(w, r, "Index", "", "", "") return } - if name == "manweb:help" { - embeds.Help(w, r) + if embeds.Help(w, r, name) { return } if manpage.Http(w, r, name) {
M manpage/manpage.gomanpage/manpage.go

@@ -18,6 +18,13 @@ Section string

Path string } +func (m *ManPage) Url() string { + if m.Section != "" && m.Name != "" { + return fmt.Sprintf("%s.%s", m.Name, m.Section) + } + return "" +} + func (m *ManPage) Title() string { if m.Section != "" && m.Name != "" { return fmt.Sprintf("man %s.%s", m.Name, m.Section)

@@ -31,7 +38,7 @@ return s[:len(s)-len(n)], n[1:]

} return s, "" } - + var ManDotName = regexp.MustCompile(`^[^ .]+(\.[0-9]+[a-z]*)?$`) func (m *ManPage) Find(q string) bool {

@@ -76,7 +83,7 @@ html, err := m.Html()

if embeds.ChkWriteError(w, r, err, q) { return true } - embeds.WriteHtml(w, r, m.Title(), html, q) + embeds.WriteHtml(w, r, m.Title(), html, q, m.Url()) return true }
M tldr/tldr.gotldr/tldr.go

@@ -273,6 +273,6 @@ if err != nil {

embeds.WriteError(w, r, neterr.Err500, q) return true } - embeds.WriteHtml(w, r, "TLDR: "+name, html, q) + embeds.WriteHtml(w, r, "TLDR: "+name, html, q, q) return true }