navigation tweaks
sophuwu sophie@sophuwu.com
Mon, 21 Jul 2025 21:12:43 +0200
5 files changed,
26 insertions(+),
14 deletions(-)
M
embeds/embeds.go
→
embeds/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.js
→
embeds/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.go
→
main.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.go
→
manpage/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.go
→
tldr/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 }