diff --git a/hypview/hypview.go b/hypview/hypview.go index 54bc232..4d1f1ff 100644 --- a/hypview/hypview.go +++ b/hypview/hypview.go @@ -2,7 +2,6 @@ package hypview import ( "embed" - "fmt" "github.com/bouncepaw/mycorrhiza/cfg" "github.com/bouncepaw/mycorrhiza/viewutil" "log" @@ -12,15 +11,49 @@ import ( var ( //go:embed *.html - fs embed.FS - ruTranslation = `` - chainNaviTitle viewutil.Chain + fs embed.FS + ruTranslation = ` +{{define "empty heading"}}Эта гифа не существует{{end}} +{{define "empty no rights"}}У вас нет прав для создания новых гиф. Вы можете:{{end}} +{{define "empty log in"}}Войти в свою учётную запись, если она у вас есть{{end}} +{{define "empty register"}}Создать новую учётную запись{{end}} +{{define "write a text"}}Написать текст{{end}} +{{define "write a text tip"}}Напишите заметку, дневник, статью, рассказ или иной текст с помощью микоразметки. Сохраняется полная история правок документа.{{end}} +{{define "write a text writing conventions"}}Не забывайте следовать правилам оформления этой вики, если они имеются.{{end}} +{{define "write a text btn"}}Создать{{end}} +{{define "upload a media"}}Загрузить медиа{{end}} +{{define "upload a media tip"}}Загрузите изображение, видео или аудио. Распространённые форматы можно просматривать из браузера, остальные – просто скачать. Позже вы можете дописать пояснение к этому медиа.{{end}} +{{define "upload a media btn"}}Загрузить{{end}} +` + chainNaviTitle viewutil.Chain + chainEmptyHypha viewutil.Chain ) func Init() { chainNaviTitle = viewutil. En(viewutil.CopyEnWith(fs, "view_navititle.html")). - Ru(template.Must(viewutil.CopyRuWith(fs, "view_navititle.html").Parse(ruTranslation))) + Ru(viewutil.CopyRuWith(fs, "view_navititle.html")) // no text inside + chainEmptyHypha = viewutil. + En(viewutil.CopyEnWith(fs, "view_empty_hypha.html")). + Ru(template.Must(viewutil.CopyRuWith(fs, "view_empty_hypha.html").Parse(ruTranslation))) +} + +type emptyHyphaData struct { + HyphaName string + AllowRegistration bool + UseAuth bool +} + +func EmptyHypha(meta viewutil.Meta, hyphaName string) string { + var buf strings.Builder + if err := chainEmptyHypha.Get(meta).ExecuteTemplate(&buf, "empty hypha card", emptyHyphaData{ + HyphaName: hyphaName, + AllowRegistration: cfg.AllowRegistration, + UseAuth: cfg.UseAuth, + }); err != nil { + log.Println(err) + } + return buf.String() } type naviTitleData struct { @@ -57,6 +90,5 @@ func naviTitleify(hyphaName string) ([]string, []string) { partsWithParents = append(partsWithParents, prevAcc) } - fmt.Printf("%q — %q\n", parts, partsWithParents) return parts, partsWithParents } diff --git a/hypview/view_empty_hypha.html b/hypview/view_empty_hypha.html new file mode 100644 index 0000000..fef1b36 --- /dev/null +++ b/hypview/view_empty_hypha.html @@ -0,0 +1,32 @@ +{{define "empty hypha card"}} +
+

{{block "empty heading" .}}This hypha does not exist{{end}}

+ {{if and .UseAuth (eq .Meta.U.Group "anon")}} +

{{block "empty no rights" .}}You are not authorized to create new hyphae. Here is what you can do:{{end}}

+ + {{else}} +
+
+

📝 {{block "write a text" .}}Write a text{{end}}

+

{{block "write a text tip" .}}Write a note, a diary, an article, a story or anything textual using Mycomarkup. Full history of edits to the document will be saved.{{end}}

+

{{block "write a text writing conventions" .}}Make sure to follow this wiki's writing conventions if there are any.{{end}}

+ {{block "write a text btn" .}}Create{{end}} +
+ +
+

🖼 {{block "upload a media" .}}Upload a media{{end}}

+

{{block "upload a media tip" .}}Upload a picture, a video or an audio. Most common formats can be accessed from the browser, others can be only downloaded afterwards. You can write a description for the media later.{{end}}

+
+ + +
+
+
+ {{end}} +
+{{end}} \ No newline at end of file diff --git a/l18n/en/ui.json b/l18n/en/ui.json index 485429a..cc24883 100644 --- a/l18n/en/ui.json +++ b/l18n/en/ui.json @@ -84,18 +84,6 @@ "reindex_no_rights": "You must be an admin to reindex hyphae.", "header_no_rights": "You must be a moderator to update header links.", - "notexist_heading": "This hypha does not exist", - "notexist_norights": "You are not authorized to create new hyphae. Here is what you can do:", - "notexist_login": "Log in to your account, if you have one", - "notexist_register": "Register a new account", - "notexist_write": "Write a text", - "notexist_write_tip1": "Write a note, a diary, an article, a story or anything textual using {{.myco}}. Full history of edits to the document will be saved.", - "notexist_write_myco": "Mycomarkup", - "notexist_write_tip2": "Make sure to follow this wiki's writing conventions if there are any.", - "notexist_write_button": "Create", - "notexist_media": "Upload a media", - "notexist_media_tip1": "Upload a picture, a video or an audio. Most common formats can be accessed from the browser, others can be only downloaded afterwards. You can write a description for the media later.", - "media_download": "Download media", "media_novideo": "Your browser does not support video.", "media_novideo_link": "Download video", diff --git a/l18n/ru/ui.json b/l18n/ru/ui.json index 83ae6ae..26a25ab 100644 --- a/l18n/ru/ui.json +++ b/l18n/ru/ui.json @@ -89,18 +89,6 @@ "no_rights": "Недостаточно прав", "reindex_no_rights": "Вы должны быть администратором, чтобы переиндексировать гифы.", "header_no_rights": "Вы должны быть модератором, чтобы обновить ссылки в заголовке.", - - "notexist_heading": "Эта гифа не существует", - "notexist_norights": "У вас нет прав для создания новых гиф. Вы можете:", - "notexist_login": "Войти в свою учётную запись, если она у вас есть", - "notexist_register": "Создать новую учётную запись", - "notexist_write": "Написать текст", - "notexist_write_tip1": "Напишите заметку, дневник, статью, рассказ или иной текст с помощью {{.myco}}. Сохраняется полная история правок документа.", - "notexist_write_myco": "микоразметки", - "notexist_write_tip2": "Не забывайте следовать правилам оформления этой вики, если они имеются.", - "notexist_write_button": "Создать", - "notexist_media": "Загрузить медиа", - "notexist_media_tip1": "Загрузите изображение, видео или аудио. Распространённые форматы можно просматривать из браузера, остальные – просто скачать. Позже вы можете дописать пояснение к этому медиа.", "media_download": "Скачать медиа", "media_novideo": "Ваш браузер не поддерживает видео.", diff --git a/views/hypha.qtpl b/views/hypha.qtpl index cdf07df..a3d2bfc 100644 --- a/views/hypha.qtpl +++ b/views/hypha.qtpl @@ -1,51 +1,11 @@ {% import "path/filepath" %} -{% import "github.com/bouncepaw/mycorrhiza/cfg" %} {% import "github.com/bouncepaw/mycorrhiza/hyphae" %} {% import "github.com/bouncepaw/mycorrhiza/l18n" %} -{% import "github.com/bouncepaw/mycorrhiza/user" %} {% import "github.com/bouncepaw/mycorrhiza/util" %} {% func beautifulLink(hyphaName string) %}{%s util.BeautifulName(hyphaName) %}{% endfunc %} -{% func mycoLink(lc *l18n.Localizer) %}{%s lc.Get("ui.notexist_write_myco") %}{% endfunc %} - -{% func nonExistentHyphaNotice(h hyphae.Hypha, u *user.User, lc *l18n.Localizer) %} -
-

{%s lc.Get("ui.notexist_heading") %}

- {% if cfg.UseAuth && u.Group == "anon" %} -

{%s lc.Get("ui.notexist_norights") %}

- - {% else %} - -
-
-

📝 {%s lc.Get("ui.notexist_write") %}

-

{%s= lc.Get("ui.notexist_write_tip1", &l18n.Replacements{"myco": mycoLink(lc)}) %}

-

{%s lc.Get("ui.notexist_write_tip2") %}

- {%s lc.Get("ui.notexist_write_button") %} -
- -
-

🖼 {%s lc.Get("ui.notexist_media") %}

-

{%s lc.Get("ui.notexist_media_tip1") %}

-
- - - - -
-
-
- {% endif %} -
-{% endfunc %} - {% func MediaRaw(h *hyphae.MediaHypha) %}{%= Media(h, l18n.New("en", "en")) %}{% endfunc %} {% func Media(h *hyphae.MediaHypha, lc *l18n.Localizer) %} diff --git a/views/hypha.qtpl.go b/views/hypha.qtpl.go index f36fe0d..40ac44a 100644 --- a/views/hypha.qtpl.go +++ b/views/hypha.qtpl.go @@ -8,409 +8,227 @@ package views import "path/filepath" //line views/hypha.qtpl:3 -import "github.com/bouncepaw/mycorrhiza/cfg" - -//line views/hypha.qtpl:4 import "github.com/bouncepaw/mycorrhiza/hyphae" -//line views/hypha.qtpl:5 +//line views/hypha.qtpl:4 import "github.com/bouncepaw/mycorrhiza/l18n" -//line views/hypha.qtpl:6 -import "github.com/bouncepaw/mycorrhiza/user" - -//line views/hypha.qtpl:7 +//line views/hypha.qtpl:5 import "github.com/bouncepaw/mycorrhiza/util" -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 func streambeautifulLink(qw422016 *qt422016.Writer, hyphaName string) { -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 qw422016.N().S(``) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 qw422016.E().S(util.BeautifulName(hyphaName)) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 qw422016.N().S(``) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 } -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 func writebeautifulLink(qq422016 qtio422016.Writer, hyphaName string) { -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 streambeautifulLink(qw422016, hyphaName) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 qt422016.ReleaseWriter(qw422016) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 } -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 func beautifulLink(hyphaName string) string { -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 qb422016 := qt422016.AcquireByteBuffer() -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 writebeautifulLink(qb422016, hyphaName) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 qs422016 := string(qb422016.B) -//line views/hypha.qtpl:9 +//line views/hypha.qtpl:7 qt422016.ReleaseByteBuffer(qb422016) +//line views/hypha.qtpl:7 + return qs422016 +//line views/hypha.qtpl:7 +} + //line views/hypha.qtpl:9 - return qs422016 -//line views/hypha.qtpl:9 -} - -//line views/hypha.qtpl:11 -func streammycoLink(qw422016 *qt422016.Writer, lc *l18n.Localizer) { -//line views/hypha.qtpl:11 - qw422016.N().S(``) -//line views/hypha.qtpl:11 - qw422016.E().S(lc.Get("ui.notexist_write_myco")) -//line views/hypha.qtpl:11 - qw422016.N().S(``) -//line views/hypha.qtpl:11 -} - -//line views/hypha.qtpl:11 -func writemycoLink(qq422016 qtio422016.Writer, lc *l18n.Localizer) { -//line views/hypha.qtpl:11 - qw422016 := qt422016.AcquireWriter(qq422016) -//line views/hypha.qtpl:11 - streammycoLink(qw422016, lc) -//line views/hypha.qtpl:11 - qt422016.ReleaseWriter(qw422016) -//line views/hypha.qtpl:11 -} - -//line views/hypha.qtpl:11 -func mycoLink(lc *l18n.Localizer) string { -//line views/hypha.qtpl:11 - qb422016 := qt422016.AcquireByteBuffer() -//line views/hypha.qtpl:11 - writemycoLink(qb422016, lc) -//line views/hypha.qtpl:11 - qs422016 := string(qb422016.B) -//line views/hypha.qtpl:11 - qt422016.ReleaseByteBuffer(qb422016) -//line views/hypha.qtpl:11 - return qs422016 -//line views/hypha.qtpl:11 -} - -//line views/hypha.qtpl:13 -func streamnonExistentHyphaNotice(qw422016 *qt422016.Writer, h hyphae.Hypha, u *user.User, lc *l18n.Localizer) { -//line views/hypha.qtpl:13 - qw422016.N().S(` -
-

`) -//line views/hypha.qtpl:15 - qw422016.E().S(lc.Get("ui.notexist_heading")) -//line views/hypha.qtpl:15 - qw422016.N().S(`

- `) -//line views/hypha.qtpl:16 - if cfg.UseAuth && u.Group == "anon" { -//line views/hypha.qtpl:16 - qw422016.N().S(` -

`) -//line views/hypha.qtpl:17 - qw422016.E().S(lc.Get("ui.notexist_norights")) -//line views/hypha.qtpl:17 - qw422016.N().S(`

- - `) -//line views/hypha.qtpl:22 - } else { -//line views/hypha.qtpl:22 - qw422016.N().S(` - -
-
-

📝 `) -//line views/hypha.qtpl:26 - qw422016.E().S(lc.Get("ui.notexist_write")) -//line views/hypha.qtpl:26 - qw422016.N().S(`

-

`) -//line views/hypha.qtpl:27 - qw422016.N().S(lc.Get("ui.notexist_write_tip1", &l18n.Replacements{"myco": mycoLink(lc)})) -//line views/hypha.qtpl:27 - qw422016.N().S(`

-

`) -//line views/hypha.qtpl:28 - qw422016.E().S(lc.Get("ui.notexist_write_tip2")) -//line views/hypha.qtpl:28 - qw422016.N().S(`

- `) -//line views/hypha.qtpl:29 - qw422016.E().S(lc.Get("ui.notexist_write_button")) -//line views/hypha.qtpl:29 - qw422016.N().S(` -
- -
-

🖼 `) -//line views/hypha.qtpl:33 - qw422016.E().S(lc.Get("ui.notexist_media")) -//line views/hypha.qtpl:33 - qw422016.N().S(`

-

`) -//line views/hypha.qtpl:34 - qw422016.E().S(lc.Get("ui.notexist_media_tip1")) -//line views/hypha.qtpl:34 - qw422016.N().S(`

-
- - - - -
-
-
- `) -//line views/hypha.qtpl:45 - } -//line views/hypha.qtpl:45 - qw422016.N().S(` -
-`) -//line views/hypha.qtpl:47 -} - -//line views/hypha.qtpl:47 -func writenonExistentHyphaNotice(qq422016 qtio422016.Writer, h hyphae.Hypha, u *user.User, lc *l18n.Localizer) { -//line views/hypha.qtpl:47 - qw422016 := qt422016.AcquireWriter(qq422016) -//line views/hypha.qtpl:47 - streamnonExistentHyphaNotice(qw422016, h, u, lc) -//line views/hypha.qtpl:47 - qt422016.ReleaseWriter(qw422016) -//line views/hypha.qtpl:47 -} - -//line views/hypha.qtpl:47 -func nonExistentHyphaNotice(h hyphae.Hypha, u *user.User, lc *l18n.Localizer) string { -//line views/hypha.qtpl:47 - qb422016 := qt422016.AcquireByteBuffer() -//line views/hypha.qtpl:47 - writenonExistentHyphaNotice(qb422016, h, u, lc) -//line views/hypha.qtpl:47 - qs422016 := string(qb422016.B) -//line views/hypha.qtpl:47 - qt422016.ReleaseByteBuffer(qb422016) -//line views/hypha.qtpl:47 - return qs422016 -//line views/hypha.qtpl:47 -} - -//line views/hypha.qtpl:49 func StreamMediaRaw(qw422016 *qt422016.Writer, h *hyphae.MediaHypha) { -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 StreamMedia(qw422016, h, l18n.New("en", "en")) -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 } -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 func WriteMediaRaw(qq422016 qtio422016.Writer, h *hyphae.MediaHypha) { -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 StreamMediaRaw(qw422016, h) -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 qt422016.ReleaseWriter(qw422016) -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 } -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 func MediaRaw(h *hyphae.MediaHypha) string { -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 qb422016 := qt422016.AcquireByteBuffer() -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 WriteMediaRaw(qb422016, h) -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 qs422016 := string(qb422016.B) -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 qt422016.ReleaseByteBuffer(qb422016) -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 return qs422016 -//line views/hypha.qtpl:49 +//line views/hypha.qtpl:9 } -//line views/hypha.qtpl:51 +//line views/hypha.qtpl:11 func StreamMedia(qw422016 *qt422016.Writer, h *hyphae.MediaHypha, lc *l18n.Localizer) { -//line views/hypha.qtpl:51 +//line views/hypha.qtpl:11 qw422016.N().S(` `) -//line views/hypha.qtpl:52 +//line views/hypha.qtpl:12 switch filepath.Ext(h.MediaFilePath()) { -//line views/hypha.qtpl:54 +//line views/hypha.qtpl:14 case ".jpg", ".gif", ".png", ".webp", ".svg", ".ico": -//line views/hypha.qtpl:54 +//line views/hypha.qtpl:14 qw422016.N().S(`
`) -//line views/hypha.qtpl:59 +//line views/hypha.qtpl:19 case ".ogg", ".webm", ".mp4": -//line views/hypha.qtpl:59 +//line views/hypha.qtpl:19 qw422016.N().S(`
`) -//line views/hypha.qtpl:67 +//line views/hypha.qtpl:27 case ".mp3": -//line views/hypha.qtpl:67 +//line views/hypha.qtpl:27 qw422016.N().S(`
`) -//line views/hypha.qtpl:75 +//line views/hypha.qtpl:35 default: -//line views/hypha.qtpl:75 +//line views/hypha.qtpl:35 qw422016.N().S(`

`) -//line views/hypha.qtpl:77 +//line views/hypha.qtpl:37 qw422016.E().S(lc.Get("ui.media_download")) -//line views/hypha.qtpl:77 +//line views/hypha.qtpl:37 qw422016.N().S(`

`) -//line views/hypha.qtpl:79 +//line views/hypha.qtpl:39 } -//line views/hypha.qtpl:79 +//line views/hypha.qtpl:39 qw422016.N().S(` `) -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 } -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 func WriteMedia(qq422016 qtio422016.Writer, h *hyphae.MediaHypha, lc *l18n.Localizer) { -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 StreamMedia(qw422016, h, lc) -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 qt422016.ReleaseWriter(qw422016) -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 } -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 func Media(h *hyphae.MediaHypha, lc *l18n.Localizer) string { -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 qb422016 := qt422016.AcquireByteBuffer() -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 WriteMedia(qb422016, h, lc) -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 qs422016 := string(qb422016.B) -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 qt422016.ReleaseByteBuffer(qb422016) -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 return qs422016 -//line views/hypha.qtpl:80 +//line views/hypha.qtpl:40 } diff --git a/views/nav.qtpl b/views/nav.qtpl index 32353e8..876d6a0 100644 --- a/views/nav.qtpl +++ b/views/nav.qtpl @@ -1,7 +1,5 @@ -{% import "strings" %} {% import "github.com/bouncepaw/mycorrhiza/cfg" %} {% import "github.com/bouncepaw/mycorrhiza/backlinks" %} -{% import "github.com/bouncepaw/mycorrhiza/l18n" %} {% import "github.com/bouncepaw/mycorrhiza/user" %} {% import "github.com/bouncepaw/mycorrhiza/hyphae" %} {% import "github.com/bouncepaw/mycorrhiza/viewutil" %} @@ -32,28 +30,6 @@ {% endfunc %} -{% func siblingHyphae(siblings string, lc *l18n.Localizer) %} -{% if cfg.UseSiblingHyphaeSidebar %} - -{% endif %} -{% endfunc %} - -{% func Subhyphae(subhyphae string, lc *l18n.Localizer) %} -{% if strings.TrimSpace(subhyphae) != "" %} -
-

{%s lc.Get("ui.subhyphae") %}

- -
-{% endif %} -{% endfunc %} - {% func commonScripts() %} {% for _, scriptPath := range cfg.CommonScripts %} diff --git a/views/nav.qtpl.go b/views/nav.qtpl.go index de41b2d..b342d47 100644 --- a/views/nav.qtpl.go +++ b/views/nav.qtpl.go @@ -5,339 +5,217 @@ package views //line views/nav.qtpl:1 -import "strings" - -//line views/nav.qtpl:2 import "github.com/bouncepaw/mycorrhiza/cfg" -//line views/nav.qtpl:3 +//line views/nav.qtpl:2 import "github.com/bouncepaw/mycorrhiza/backlinks" -//line views/nav.qtpl:4 -import "github.com/bouncepaw/mycorrhiza/l18n" - -//line views/nav.qtpl:5 +//line views/nav.qtpl:3 import "github.com/bouncepaw/mycorrhiza/user" -//line views/nav.qtpl:6 +//line views/nav.qtpl:4 import "github.com/bouncepaw/mycorrhiza/hyphae" -//line views/nav.qtpl:7 +//line views/nav.qtpl:5 import "github.com/bouncepaw/mycorrhiza/viewutil" -//line views/nav.qtpl:9 +//line views/nav.qtpl:7 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line views/nav.qtpl:9 +//line views/nav.qtpl:7 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line views/nav.qtpl:9 +//line views/nav.qtpl:7 func streamhyphaInfoEntry(qw422016 *qt422016.Writer, h hyphae.Hypha, u *user.User, action, displayText string) { -//line views/nav.qtpl:9 +//line views/nav.qtpl:7 qw422016.N().S(` `) -//line views/nav.qtpl:10 +//line views/nav.qtpl:8 if u.CanProceed(action) { -//line views/nav.qtpl:10 +//line views/nav.qtpl:8 qw422016.N().S(`
  • `) -//line views/nav.qtpl:12 +//line views/nav.qtpl:10 qw422016.E().S(displayText) -//line views/nav.qtpl:12 +//line views/nav.qtpl:10 qw422016.N().S(`
  • `) -//line views/nav.qtpl:14 +//line views/nav.qtpl:12 } -//line views/nav.qtpl:14 +//line views/nav.qtpl:12 qw422016.N().S(` `) -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 } -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 func writehyphaInfoEntry(qq422016 qtio422016.Writer, h hyphae.Hypha, u *user.User, action, displayText string) { -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 streamhyphaInfoEntry(qw422016, h, u, action, displayText) -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 qt422016.ReleaseWriter(qw422016) -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 } -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 func hyphaInfoEntry(h hyphae.Hypha, u *user.User, action, displayText string) string { -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 qb422016 := qt422016.AcquireByteBuffer() -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 writehyphaInfoEntry(qb422016, h, u, action, displayText) -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 qs422016 := string(qb422016.B) -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 qt422016.ReleaseByteBuffer(qb422016) -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 return qs422016 -//line views/nav.qtpl:15 +//line views/nav.qtpl:13 } -//line views/nav.qtpl:17 +//line views/nav.qtpl:15 func streamhyphaInfo(qw422016 *qt422016.Writer, meta viewutil.Meta, h hyphae.Hypha) { -//line views/nav.qtpl:17 +//line views/nav.qtpl:15 qw422016.N().S(` `) -//line views/nav.qtpl:19 +//line views/nav.qtpl:17 u := meta.U lc := meta.Lc backs := backlinks.BacklinksCount(h) -//line views/nav.qtpl:22 +//line views/nav.qtpl:20 qw422016.N().S(` `) -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 } -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 func writehyphaInfo(qq422016 qtio422016.Writer, meta viewutil.Meta, h hyphae.Hypha) { -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 streamhyphaInfo(qw422016, meta, h) -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 qt422016.ReleaseWriter(qw422016) -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 } -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 func hyphaInfo(meta viewutil.Meta, h hyphae.Hypha) string { -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 qb422016 := qt422016.AcquireByteBuffer() -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 writehyphaInfo(qb422016, meta, h) -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 qs422016 := string(qb422016.B) -//line views/nav.qtpl:33 +//line views/nav.qtpl:31 qt422016.ReleaseByteBuffer(qb422016) +//line views/nav.qtpl:31 + return qs422016 +//line views/nav.qtpl:31 +} + //line views/nav.qtpl:33 - return qs422016 -//line views/nav.qtpl:33 -} - -//line views/nav.qtpl:35 -func streamsiblingHyphae(qw422016 *qt422016.Writer, siblings string, lc *l18n.Localizer) { -//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:41 - } -//line views/nav.qtpl:41 - qw422016.N().S(` -`) -//line views/nav.qtpl:42 -} - -//line views/nav.qtpl:42 -func writesiblingHyphae(qq422016 qtio422016.Writer, siblings string, lc *l18n.Localizer) { -//line views/nav.qtpl:42 - qw422016 := qt422016.AcquireWriter(qq422016) -//line views/nav.qtpl:42 - streamsiblingHyphae(qw422016, siblings, lc) -//line views/nav.qtpl:42 - qt422016.ReleaseWriter(qw422016) -//line views/nav.qtpl:42 -} - -//line views/nav.qtpl:42 -func siblingHyphae(siblings string, lc *l18n.Localizer) string { -//line views/nav.qtpl:42 - qb422016 := qt422016.AcquireByteBuffer() -//line views/nav.qtpl:42 - writesiblingHyphae(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 StreamSubhyphae(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:47 - qw422016.E().S(lc.Get("ui.subhyphae")) -//line views/nav.qtpl:47 - qw422016.N().S(`

    - -
    -`) -//line views/nav.qtpl:54 - } -//line views/nav.qtpl:54 - qw422016.N().S(` -`) -//line views/nav.qtpl:55 -} - -//line views/nav.qtpl:55 -func WriteSubhyphae(qq422016 qtio422016.Writer, subhyphae string, lc *l18n.Localizer) { -//line views/nav.qtpl:55 - qw422016 := qt422016.AcquireWriter(qq422016) -//line views/nav.qtpl:55 - StreamSubhyphae(qw422016, subhyphae, lc) -//line views/nav.qtpl:55 - qt422016.ReleaseWriter(qw422016) -//line views/nav.qtpl:55 -} - -//line views/nav.qtpl:55 -func Subhyphae(subhyphae string, lc *l18n.Localizer) string { -//line views/nav.qtpl:55 - qb422016 := qt422016.AcquireByteBuffer() -//line views/nav.qtpl:55 - WriteSubhyphae(qb422016, subhyphae, lc) -//line views/nav.qtpl:55 - qs422016 := string(qb422016.B) -//line views/nav.qtpl:55 - qt422016.ReleaseByteBuffer(qb422016) -//line views/nav.qtpl:55 - return qs422016 -//line views/nav.qtpl:55 -} - -//line views/nav.qtpl:57 func streamcommonScripts(qw422016 *qt422016.Writer) { -//line views/nav.qtpl:57 +//line views/nav.qtpl:33 qw422016.N().S(` `) -//line views/nav.qtpl:58 +//line views/nav.qtpl:34 for _, scriptPath := range cfg.CommonScripts { -//line views/nav.qtpl:58 +//line views/nav.qtpl:34 qw422016.N().S(` `) -//line views/nav.qtpl:60 +//line views/nav.qtpl:36 } -//line views/nav.qtpl:60 +//line views/nav.qtpl:36 qw422016.N().S(` `) -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 } -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 func writecommonScripts(qq422016 qtio422016.Writer) { -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 streamcommonScripts(qw422016) -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 qt422016.ReleaseWriter(qw422016) -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 } -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 func commonScripts() string { -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 qb422016 := qt422016.AcquireByteBuffer() -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 writecommonScripts(qb422016) -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 qs422016 := string(qb422016.B) -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 qt422016.ReleaseByteBuffer(qb422016) -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 return qs422016 -//line views/nav.qtpl:61 +//line views/nav.qtpl:37 } diff --git a/views/readers.qtpl b/views/readers.qtpl index 3797b72..c8c2da2 100644 --- a/views/readers.qtpl +++ b/views/readers.qtpl @@ -113,7 +113,7 @@ If you rename .prevnext, change the docs too. {%s= hypview.NaviTitle(meta, h.CanonicalName()) %} {% switch h.(type) %} {% case *hyphae.EmptyHypha %} - {%= nonExistentHyphaNotice(h, meta.U, meta.Lc) %} + {%s= hypview.EmptyHypha(meta, h.CanonicalName()) %} {% default %} {%s= contents %} {% endswitch %} @@ -126,13 +126,27 @@ If you rename .prevnext, change the docs too. {% endif %} -{%= Subhyphae(subhyphae, meta.Lc) %} +{% if strings.TrimSpace(subhyphae) != "" %} +
    +

    {%s lc.Get("ui.subhyphae") %}

    + +
    +{% endif %}
    {%= hyphaInfo(meta, h) %}
    {%s= categories.CategoryCard(meta, h.CanonicalName()) %} -{%= siblingHyphae(siblings, meta.Lc) %} +{% if cfg.UseSiblingHyphaeSidebar %} + +{% endif %} {%= viewScripts() %} {% endfunc %} diff --git a/views/readers.qtpl.go b/views/readers.qtpl.go index 27c2bf3..c6dfd99 100644 --- a/views/readers.qtpl.go +++ b/views/readers.qtpl.go @@ -401,7 +401,7 @@ func StreamHypha(qw422016 *qt422016.Writer, meta viewutil.Meta, h hyphae.Hypha, qw422016.N().S(` `) //line views/readers.qtpl:116 - streamnonExistentHyphaNotice(qw422016, h, meta.U, meta.Lc) + qw422016.N().S(hypview.EmptyHypha(meta, h.CanonicalName())) //line views/readers.qtpl:116 qw422016.N().S(` `) @@ -462,177 +462,215 @@ func StreamHypha(qw422016 *qt422016.Writer, meta viewutil.Meta, h hyphae.Hypha, `) //line views/readers.qtpl:129 - StreamSubhyphae(qw422016, subhyphae, meta.Lc) + if strings.TrimSpace(subhyphae) != "" { //line views/readers.qtpl:129 + qw422016.N().S(` +
    +

    `) +//line views/readers.qtpl:131 + qw422016.E().S(lc.Get("ui.subhyphae")) +//line views/readers.qtpl:131 + qw422016.N().S(`

    + +
    +`) +//line views/readers.qtpl:138 + } +//line views/readers.qtpl:138 qw422016.N().S(`
    `) -//line views/readers.qtpl:131 +//line views/readers.qtpl:140 streamhyphaInfo(qw422016, meta, h) -//line views/readers.qtpl:131 +//line views/readers.qtpl:140 qw422016.N().S(`
    `) -//line views/readers.qtpl:134 +//line views/readers.qtpl:143 qw422016.N().S(categories.CategoryCard(meta, h.CanonicalName())) -//line views/readers.qtpl:134 +//line views/readers.qtpl:143 qw422016.N().S(` `) -//line views/readers.qtpl:135 - streamsiblingHyphae(qw422016, siblings, meta.Lc) -//line views/readers.qtpl:135 +//line views/readers.qtpl:144 + if cfg.UseSiblingHyphaeSidebar { +//line views/readers.qtpl:144 + qw422016.N().S(` + +`) +//line views/readers.qtpl:149 + } +//line views/readers.qtpl:149 qw422016.N().S(` `) -//line views/readers.qtpl:136 +//line views/readers.qtpl:150 streamviewScripts(qw422016) -//line views/readers.qtpl:136 +//line views/readers.qtpl:150 qw422016.N().S(` `) -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 } -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 func WriteHypha(qq422016 qtio422016.Writer, meta viewutil.Meta, h hyphae.Hypha, contents string) { -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 StreamHypha(qw422016, meta, h, contents) -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 qt422016.ReleaseWriter(qw422016) -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 } -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 func Hypha(meta viewutil.Meta, h hyphae.Hypha, contents string) string { -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 qb422016 := qt422016.AcquireByteBuffer() -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 WriteHypha(qb422016, meta, h, contents) -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 qs422016 := string(qb422016.B) -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 qt422016.ReleaseByteBuffer(qb422016) -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 return qs422016 -//line views/readers.qtpl:137 +//line views/readers.qtpl:151 } -//line views/readers.qtpl:139 +//line views/readers.qtpl:153 func StreamRevision(qw422016 *qt422016.Writer, meta viewutil.Meta, h hyphae.Hypha, contents, revHash string) { -//line views/readers.qtpl:139 +//line views/readers.qtpl:153 qw422016.N().S(`

    `) -//line views/readers.qtpl:142 +//line views/readers.qtpl:156 qw422016.E().S(meta.Lc.Get("ui.revision_warning")) -//line views/readers.qtpl:142 +//line views/readers.qtpl:156 qw422016.N().S(` `) -//line views/readers.qtpl:142 +//line views/readers.qtpl:156 qw422016.E().S(meta.Lc.Get("ui.revision_link")) -//line views/readers.qtpl:142 +//line views/readers.qtpl:156 qw422016.N().S(`

    `) -//line views/readers.qtpl:143 +//line views/readers.qtpl:157 qw422016.N().S(hypview.NaviTitle(meta, h.CanonicalName())) -//line views/readers.qtpl:143 +//line views/readers.qtpl:157 qw422016.N().S(` `) -//line views/readers.qtpl:144 +//line views/readers.qtpl:158 qw422016.N().S(contents) -//line views/readers.qtpl:144 +//line views/readers.qtpl:158 qw422016.N().S(`
    `) -//line views/readers.qtpl:147 +//line views/readers.qtpl:161 streamviewScripts(qw422016) -//line views/readers.qtpl:147 +//line views/readers.qtpl:161 qw422016.N().S(` `) -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 } -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 func WriteRevision(qq422016 qtio422016.Writer, meta viewutil.Meta, h hyphae.Hypha, contents, revHash string) { -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 StreamRevision(qw422016, meta, h, contents, revHash) -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 qt422016.ReleaseWriter(qw422016) -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 } -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 func Revision(meta viewutil.Meta, h hyphae.Hypha, contents, revHash string) string { -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 qb422016 := qt422016.AcquireByteBuffer() -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 WriteRevision(qb422016, meta, h, contents, revHash) -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 qs422016 := string(qb422016.B) -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 qt422016.ReleaseByteBuffer(qb422016) -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 return qs422016 -//line views/readers.qtpl:148 +//line views/readers.qtpl:162 } -//line views/readers.qtpl:150 +//line views/readers.qtpl:164 func streamviewScripts(qw422016 *qt422016.Writer) { -//line views/readers.qtpl:150 +//line views/readers.qtpl:164 qw422016.N().S(` `) -//line views/readers.qtpl:151 +//line views/readers.qtpl:165 for _, scriptPath := range cfg.ViewScripts { -//line views/readers.qtpl:151 +//line views/readers.qtpl:165 qw422016.N().S(` `) -//line views/readers.qtpl:153 +//line views/readers.qtpl:167 } -//line views/readers.qtpl:153 +//line views/readers.qtpl:167 qw422016.N().S(` `) -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 } -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 func writeviewScripts(qq422016 qtio422016.Writer) { -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 streamviewScripts(qw422016) -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 qt422016.ReleaseWriter(qw422016) -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 } -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 func viewScripts() string { -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 qb422016 := qt422016.AcquireByteBuffer() -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 writeviewScripts(qb422016) -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 qs422016 := string(qb422016.B) -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 qt422016.ReleaseByteBuffer(qb422016) -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 return qs422016 -//line views/readers.qtpl:154 +//line views/readers.qtpl:168 }