From dd3f2c698a5531f6a5566c9f4f53da64109cd8fd Mon Sep 17 00:00:00 2001 From: Timur Ismagilov Date: Sat, 19 Feb 2022 12:54:20 +0300 Subject: [PATCH] Siblings: Disable the sidebar by default --- assets/config.ini | 1 + assets/devconfig.ini | 1 + cfg/config.go | 21 ++-- views/nav.qtpl | 3 + views/nav.qtpl.go | 255 +++++++++++++++++++++++-------------------- 5 files changed, 152 insertions(+), 129 deletions(-) diff --git a/assets/config.ini b/assets/config.ini index aec2b33..c4c3b3d 100644 --- a/assets/config.ini +++ b/assets/config.ini @@ -1,5 +1,6 @@ WikiName = My wiki NaviTitleIcon = 🐑 +UseSiblingHyphaeSidebar = false [Hyphae] HomeHypha = home diff --git a/assets/devconfig.ini b/assets/devconfig.ini index a85cff3..3269421 100644 --- a/assets/devconfig.ini +++ b/assets/devconfig.ini @@ -1,5 +1,6 @@ WikiName = Mycorrhiza (dev) NaviTitleIcon = 🧑‍💻 +UseSiblingHyphaeSidebar = false [Hyphae] HomeHypha = home diff --git a/cfg/config.go b/cfg/config.go index 52d8122..c13f00c 100644 --- a/cfg/config.go +++ b/cfg/config.go @@ -17,8 +17,9 @@ import ( // See https://mycorrhiza.wiki/hypha/configuration/fields for the // documentation. var ( - WikiName string - NaviTitleIcon string + WikiName string + NaviTitleIcon string + UseSiblingHyphaeSidebar bool HomeHypha string UserHypha string @@ -51,8 +52,9 @@ var WikiDir string // Config represents a Mycorrhiza wiki configuration file. This type is used // only when reading configs. type Config struct { - WikiName string `comment:"This name appears in the header and on various pages."` - NaviTitleIcon string `comment:"This icon is used in the breadcrumbs bar."` + WikiName string `comment:"This name appears in the header and on various pages."` + NaviTitleIcon string `comment:"This icon is used in the breadcrumbs bar."` + UseSiblingHyphaeSidebar bool `comment:"You are discouraged from using the sibling hyphae sidebar on new wikis. Enable it on old wikis that depend on it heavily."` Hyphae Network Authorization @@ -67,8 +69,7 @@ type Hyphae struct { HeaderLinksHypha string `comment:"You can also specify a hypha to populate your own custom header links from."` } -// Network is a section of Config that has fields related to network stuff: -// HTTP and Gemini. +// Network is a section of Config that has fields related to network stuff. type Network struct { ListenAddr string URL string `comment:"Set your wiki's public URL here. It's used for OpenGraph generation and syndication feeds."` @@ -94,6 +95,8 @@ type Authorization struct { Locked bool `comment:"Set if users have to authorize to see anything on the wiki."` UseWhiteList bool `comment:"If true, WhiteList is used. Else it is not used."` WhiteList []string `delim:"," comment:"Usernames of people who can log in to your wiki separated by comma."` + + // TODO: let admins enable auth-less editing } // Telegram is the section of Config that sets Telegram authorization. @@ -106,8 +109,9 @@ type Telegram struct { // configuration. Call it sometime during the initialization. func ReadConfigFile(path string) error { cfg := &Config{ - WikiName: "Mycorrhiza Wiki", - NaviTitleIcon: "🍄", + WikiName: "Mycorrhiza Wiki", + NaviTitleIcon: "🍄", + UseSiblingHyphaeSidebar: false, Hyphae: Hyphae{ HomeHypha: "home", UserHypha: "u", @@ -167,6 +171,7 @@ func ReadConfigFile(path string) error { // Map the struct to the global variables WikiName = cfg.WikiName NaviTitleIcon = cfg.NaviTitleIcon + UseSiblingHyphaeSidebar = cfg.UseSiblingHyphaeSidebar HomeHypha = cfg.HomeHypha UserHypha = cfg.UserHypha HeaderLinksHypha = cfg.HeaderLinksHypha diff --git a/views/nav.qtpl b/views/nav.qtpl index 479b728..2223e1b 100644 --- a/views/nav.qtpl +++ b/views/nav.qtpl @@ -1,5 +1,6 @@ {% import "net/http" %} {% import "strings" %} +{% import "github.com/bouncepaw/mycorrhiza/cfg" %} {% import "github.com/bouncepaw/mycorrhiza/hyphae/backlinks" %} {% import "github.com/bouncepaw/mycorrhiza/l18n" %} {% import "github.com/bouncepaw/mycorrhiza/user" %} @@ -32,10 +33,12 @@ {% endfunc %} {% func siblingHyphaeHTML(siblings string, lc *l18n.Localizer) %} +{% if cfg.UseSiblingHyphaeSidebar %} +{% endif %} {% endfunc %} {% func SubhyphaeHTML(subhyphae string, lc *l18n.Localizer) %} diff --git a/views/nav.qtpl.go b/views/nav.qtpl.go index 822cc3e..8f7519d 100644 --- a/views/nav.qtpl.go +++ b/views/nav.qtpl.go @@ -11,271 +11,284 @@ import "net/http" import "strings" //line views/nav.qtpl:3 -import "github.com/bouncepaw/mycorrhiza/hyphae/backlinks" +import "github.com/bouncepaw/mycorrhiza/cfg" //line views/nav.qtpl:4 -import "github.com/bouncepaw/mycorrhiza/l18n" +import "github.com/bouncepaw/mycorrhiza/hyphae/backlinks" //line views/nav.qtpl:5 -import "github.com/bouncepaw/mycorrhiza/user" +import "github.com/bouncepaw/mycorrhiza/l18n" //line views/nav.qtpl:6 +import "github.com/bouncepaw/mycorrhiza/user" + +//line views/nav.qtpl:7 import "github.com/bouncepaw/mycorrhiza/hyphae" -//line views/nav.qtpl:8 +//line views/nav.qtpl:9 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line views/nav.qtpl:8 +//line views/nav.qtpl:9 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line views/nav.qtpl:8 +//line views/nav.qtpl:9 func streamhyphaInfoEntry(qw422016 *qt422016.Writer, h hyphae.Hypha, u *user.User, action, displayText string) { -//line views/nav.qtpl:8 +//line views/nav.qtpl:9 qw422016.N().S(` `) -//line views/nav.qtpl:9 +//line views/nav.qtpl:10 if u.CanProceed(action) { -//line views/nav.qtpl:9 +//line views/nav.qtpl:10 qw422016.N().S(`
  • `) -//line views/nav.qtpl:11 +//line views/nav.qtpl:12 qw422016.E().S(displayText) -//line views/nav.qtpl:11 +//line views/nav.qtpl:12 qw422016.N().S(`
  • `) -//line views/nav.qtpl:13 +//line views/nav.qtpl:14 } -//line views/nav.qtpl:13 +//line views/nav.qtpl:14 qw422016.N().S(` `) -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 } -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 func writehyphaInfoEntry(qq422016 qtio422016.Writer, h hyphae.Hypha, u *user.User, action, displayText string) { -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 streamhyphaInfoEntry(qw422016, h, u, action, displayText) -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 qt422016.ReleaseWriter(qw422016) -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 } -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 func hyphaInfoEntry(h hyphae.Hypha, u *user.User, action, displayText string) string { -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 qb422016 := qt422016.AcquireByteBuffer() -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 writehyphaInfoEntry(qb422016, h, u, action, displayText) -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 qs422016 := string(qb422016.B) -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 qt422016.ReleaseByteBuffer(qb422016) -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 return qs422016 -//line views/nav.qtpl:14 +//line views/nav.qtpl:15 } -//line views/nav.qtpl:16 +//line views/nav.qtpl:17 func streamhyphaInfo(qw422016 *qt422016.Writer, rq *http.Request, h hyphae.Hypha) { -//line views/nav.qtpl:16 +//line views/nav.qtpl:17 qw422016.N().S(` `) -//line views/nav.qtpl:18 +//line views/nav.qtpl:19 u := user.FromRequest(rq) lc := l18n.FromRequest(rq) backs := backlinks.BacklinksCount(h) -//line views/nav.qtpl:21 +//line views/nav.qtpl:22 qw422016.N().S(` `) -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 } -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 func writehyphaInfo(qq422016 qtio422016.Writer, rq *http.Request, h hyphae.Hypha) { -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 streamhyphaInfo(qw422016, rq, h) -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 qt422016.ReleaseWriter(qw422016) -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 } -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 func hyphaInfo(rq *http.Request, h hyphae.Hypha) string { -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 qb422016 := qt422016.AcquireByteBuffer() -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 writehyphaInfo(qb422016, rq, h) -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 qs422016 := string(qb422016.B) -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 qt422016.ReleaseByteBuffer(qb422016) -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 return qs422016 -//line views/nav.qtpl:32 +//line views/nav.qtpl:33 } -//line views/nav.qtpl:34 +//line views/nav.qtpl:35 func streamsiblingHyphaeHTML(qw422016 *qt422016.Writer, siblings string, lc *l18n.Localizer) { -//line views/nav.qtpl:34 +//line views/nav.qtpl:35 qw422016.N().S(` +`) +//line views/nav.qtpl:36 + if cfg.UseSiblingHyphaeSidebar { +//line views/nav.qtpl:36 + qw422016.N().S(` `) -//line views/nav.qtpl:39 -} - -//line views/nav.qtpl:39 -func writesiblingHyphaeHTML(qq422016 qtio422016.Writer, siblings string, lc *l18n.Localizer) { -//line views/nav.qtpl:39 - qw422016 := qt422016.AcquireWriter(qq422016) -//line views/nav.qtpl:39 - streamsiblingHyphaeHTML(qw422016, siblings, lc) -//line views/nav.qtpl:39 - qt422016.ReleaseWriter(qw422016) -//line views/nav.qtpl:39 -} - -//line views/nav.qtpl:39 -func siblingHyphaeHTML(siblings string, lc *l18n.Localizer) string { -//line views/nav.qtpl:39 - qb422016 := qt422016.AcquireByteBuffer() -//line views/nav.qtpl:39 - writesiblingHyphaeHTML(qb422016, siblings, lc) -//line views/nav.qtpl:39 - qs422016 := string(qb422016.B) -//line views/nav.qtpl:39 - qt422016.ReleaseByteBuffer(qb422016) -//line views/nav.qtpl:39 - return qs422016 -//line views/nav.qtpl:39 -} - //line views/nav.qtpl:41 -func StreamSubhyphaeHTML(qw422016 *qt422016.Writer, subhyphae string, lc *l18n.Localizer) { + } //line views/nav.qtpl:41 qw422016.N().S(` `) //line views/nav.qtpl:42 - if strings.TrimSpace(subhyphae) != "" { +} + //line views/nav.qtpl:42 +func writesiblingHyphaeHTML(qq422016 qtio422016.Writer, siblings string, lc *l18n.Localizer) { +//line views/nav.qtpl:42 + qw422016 := qt422016.AcquireWriter(qq422016) +//line views/nav.qtpl:42 + streamsiblingHyphaeHTML(qw422016, siblings, lc) +//line views/nav.qtpl:42 + qt422016.ReleaseWriter(qw422016) +//line views/nav.qtpl:42 +} + +//line views/nav.qtpl:42 +func siblingHyphaeHTML(siblings string, lc *l18n.Localizer) string { +//line views/nav.qtpl:42 + qb422016 := qt422016.AcquireByteBuffer() +//line views/nav.qtpl:42 + writesiblingHyphaeHTML(qb422016, siblings, lc) +//line views/nav.qtpl:42 + qs422016 := string(qb422016.B) +//line views/nav.qtpl:42 + qt422016.ReleaseByteBuffer(qb422016) +//line views/nav.qtpl:42 + return qs422016 +//line views/nav.qtpl:42 +} + +//line views/nav.qtpl:44 +func StreamSubhyphaeHTML(qw422016 *qt422016.Writer, subhyphae string, lc *l18n.Localizer) { +//line views/nav.qtpl:44 + qw422016.N().S(` +`) +//line views/nav.qtpl:45 + if strings.TrimSpace(subhyphae) != "" { +//line views/nav.qtpl:45 qw422016.N().S(`

    `) -//line views/nav.qtpl:44 +//line views/nav.qtpl:47 qw422016.E().S(lc.Get("ui.subhyphae")) -//line views/nav.qtpl:44 +//line views/nav.qtpl:47 qw422016.N().S(`

    `) -//line views/nav.qtpl:51 +//line views/nav.qtpl:54 } -//line views/nav.qtpl:51 +//line views/nav.qtpl:54 qw422016.N().S(` `) -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 } -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 func WriteSubhyphaeHTML(qq422016 qtio422016.Writer, subhyphae string, lc *l18n.Localizer) { -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 StreamSubhyphaeHTML(qw422016, subhyphae, lc) -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 qt422016.ReleaseWriter(qw422016) -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 } -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 func SubhyphaeHTML(subhyphae string, lc *l18n.Localizer) string { -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 qb422016 := qt422016.AcquireByteBuffer() -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 WriteSubhyphaeHTML(qb422016, subhyphae, lc) -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 qs422016 := string(qb422016.B) -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 qt422016.ReleaseByteBuffer(qb422016) -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 return qs422016 -//line views/nav.qtpl:52 +//line views/nav.qtpl:55 }