diff --git a/help/en/config_file.myco b/help/en/config_file.myco
new file mode 100644
index 0000000..a469691
--- /dev/null
+++ b/help/en/config_file.myco
@@ -0,0 +1,63 @@
+= Configuration file
+//This article is intended for wiki administrators.//
+
+The main way to configure your Mycorrhiza instance is through the **configuration file**. It is located at the root of your wiki structure and is called `config.ini`.
+
+The file is generated automatically when you create a new wiki:
+
+```
+# Generate a new wiki
+$ mycorrhiza bestWiki
+...
+# See what's inside
+$ ls bestWiki
+cache config.ini static wiki.git
+```
+
+The file is written in the [[https://en.wikipedia.org/wiki/INI_file | .ini format]].
+
+== Example configuration
+The auto-generated file is the best example (it has comments too).
+
+Here's another example:
+```ini
+WikiName = My wiki
+NaviTitleIcon = π
+
+[Hyphae]
+HomeHypha = home
+UserHypha = u
+HeaderLinksHypha = header-links
+
+[Network]
+HTTPPort = 8080
+URL = https://wiki
+GeminiCertificatePath = /home/wiki/gemcerts
+
+[Authorization]
+UseRegistration = true
+```
+
+== Fields
+=== Root section
+* `WikiName`: //string//. The name your wiki has. It is shown in the header by default and in other places. **Default:** `Mycorrhiza Wiki`.
+* `NaviTitleIcon`: //string//. The icon shown before the colon in the navigational titles above each hypha. You may want to use an emoji or HTML here. **Default:** `π` (mushroom emoji).
+
+=== [Hyphae]
+* `HomeHypha`: //string//. The name your home hypha has. **Default:** `home`.
+* `UserHypha`: //string//. The name of the hypha that is parent of all user hyphae. **Default:** `u`.
+* `HeaderLinkHypha`: //string//. The name of the hypha where you can configure the header. There is no default.
+
+=== [Network]
+* `HTTPPort`: //number//. What port is used for serving the web interface of Mycorrhiza. **Default:** `1737`.
+* `URL`: //url//. What URL is used for Opengraph and Web feed in the web interface. There is no default and you really should set it to something.
+
+=== [Authorization]
+* `UseRegistration`: //boolean//. Whether you want unregistered visitors to be able to register themselves using the web form. **Default:** `false`.
+* `LimitRegistration`: //number//. There cannot be more registered users than this number. If the number is zero, there is no limit. Makes sense only when `UseRegistration` is `true`. **Default:** `0`.
+
+=== [CustomScripts]
+You can specify URLs of JavaScript files you want to load.
+* `CommonScripts`: //list of url//. Comma-separated list of unquoted URLs to JS files to load on //all// pages.
+* `ViewScripts`: //list of urls//. Comma-separated list of unquoted URLs to JS files to load on //view// pages: `/hypha`, `/rev`.
+* `EditScripts`: //list of urls//. Comma-separated list of unquoted URLs to JS files to load on the `/edit` page.
\ No newline at end of file
diff --git a/l18n/l18n.go b/l18n/l18n.go
index dd94822..2f8951d 100644
--- a/l18n/l18n.go
+++ b/l18n/l18n.go
@@ -95,6 +95,7 @@ var localizations = map[string]string{
"en.edit.transclude": "Transclusion",
"en.edit.underline": "Underline",
"en.help.attachment": "Attachment",
+ "en.help.config_file": "Configuration file",
"en.help.configuration": "Configuration (for administrators)",
"en.help.empty_error_line_1": "Try finding a different entry that would help you.",
"en.help.empty_error_line_2a": "If you want to write this entry by yourself, consider",
@@ -329,6 +330,7 @@ var localizations = map[string]string{
"ru.edit.transclude": "Π’ΡΠ°Π½ΡΠΊΠ»ΡΠ·ΠΈΡ",
"ru.edit.underline": "ΠΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅",
"ru.help.attachment": "ΠΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅",
+ "ru.help.config_file": "Π€Π°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ",
"ru.help.configuration": "ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ²)",
"ru.help.empty_error_line_1": "ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ Π΄ΡΡΠ³ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ.",
"ru.help.empty_error_line_2a": "ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΌΠΈ, Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π΄Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠ°Π²ΠΊΠ°ΠΌ Π² ",
diff --git a/l18n_src/en/help.json b/l18n_src/en/help.json
index 8944b8c..f57c4d9 100644
--- a/l18n_src/en/help.json
+++ b/l18n_src/en/help.json
@@ -22,5 +22,6 @@
"configuration": "Configuration (for administrators)",
"lock": "Lock",
"whitelist": "Whitelist",
- "telegram": "Telegram authorization"
+ "telegram": "Telegram authorization",
+ "config_file": "Configuration file"
}
diff --git a/l18n_src/ru/help.json b/l18n_src/ru/help.json
index 3508333..7dadb3a 100644
--- a/l18n_src/ru/help.json
+++ b/l18n_src/ru/help.json
@@ -22,5 +22,6 @@
"configuration": "ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ²)",
"lock": "ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°",
"whitelist": "ΠΠ΅Π»ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ",
- "telegram": "ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ"
+ "telegram": "ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ",
+ "config_file": "Π€Π°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ"
}
diff --git a/views/stuff.qtpl b/views/stuff.qtpl
index 6246bbf..b1e2b20 100644
--- a/views/stuff.qtpl
+++ b/views/stuff.qtpl
@@ -181,6 +181,7 @@ It outputs a poorly formatted JSON, but it works and is valid.
{%s lc.GetWithLocale(lang, "help.configuration") %}
+ `)
-//line views/stuff.qtpl:184
+//line views/stuff.qtpl:185
qw422016.E().S(lc.GetWithLocale(lang, "help.lock"))
-//line views/stuff.qtpl:184
+//line views/stuff.qtpl:185
qw422016.N().S(`
`)
-//line views/stuff.qtpl:185
+//line views/stuff.qtpl:186
qw422016.E().S(lc.GetWithLocale(lang, "help.whitelist"))
-//line views/stuff.qtpl:185
+//line views/stuff.qtpl:186
qw422016.N().S(`
`)
-//line views/stuff.qtpl:186
+//line views/stuff.qtpl:187
qw422016.E().S(lc.GetWithLocale(lang, "help.telegram"))
-//line views/stuff.qtpl:186
+//line views/stuff.qtpl:187
qw422016.N().S(`
...
@@ -758,91 +767,91 @@ func streamhelpTopicsHTML(qw422016 *qt422016.Writer, lang string, lc *l18n.Local
`)
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
}
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
func writehelpTopicsHTML(qq422016 qtio422016.Writer, lang string, lc *l18n.Localizer) {
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
streamhelpTopicsHTML(qw422016, lang, lc)
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
}
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
func helpTopicsHTML(lang string, lc *l18n.Localizer) string {
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
writehelpTopicsHTML(qb422016, lang, lc)
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
return qs422016
-//line views/stuff.qtpl:192
+//line views/stuff.qtpl:193
}
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:195
func streamhelpTopicBadgeHTML(qw422016 *qt422016.Writer, lang, topic string) {
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:195
qw422016.N().S(`
?
`)
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
}
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
func writehelpTopicBadgeHTML(qq422016 qtio422016.Writer, lang, topic string) {
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
streamhelpTopicBadgeHTML(qw422016, lang, topic)
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
}
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
func helpTopicBadgeHTML(lang, topic string) string {
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
writehelpTopicBadgeHTML(qb422016, lang, topic)
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
return qs422016
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:197
}
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:199
func StreamUserListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:199
qw422016.N().S(`
`)
-//line views/stuff.qtpl:201
+//line views/stuff.qtpl:202
qw422016.E().S(lc.Get("ui.users_heading"))
-//line views/stuff.qtpl:201
+//line views/stuff.qtpl:202
qw422016.N().S(`
`)
-//line views/stuff.qtpl:203
+//line views/stuff.qtpl:204
var (
admins = make([]string, 0)
moderators = make([]string, 0)
@@ -862,149 +871,149 @@ func StreamUserListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
sort.Strings(moderators)
sort.Strings(editors)
-//line views/stuff.qtpl:221
+//line views/stuff.qtpl:222
qw422016.N().S(`
`)
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
}
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
func WriteUserListHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
StreamUserListHTML(qw422016, lc)
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
}
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
func UserListHTML(lc *l18n.Localizer) string {
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
WriteUserListHTML(qb422016, lc)
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
return qs422016
-//line views/stuff.qtpl:242
+//line views/stuff.qtpl:243
}
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:245
func StreamHyphaListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:245
qw422016.N().S(`
`)
-//line views/stuff.qtpl:247
+//line views/stuff.qtpl:248
qw422016.E().S(lc.Get("ui.list_heading"))
-//line views/stuff.qtpl:247
+//line views/stuff.qtpl:248
qw422016.N().S(`
`)
-//line views/stuff.qtpl:248
+//line views/stuff.qtpl:249
qw422016.E().S(lc.GetPlural("ui.list_desc", hyphae.Count()))
-//line views/stuff.qtpl:248
+//line views/stuff.qtpl:249
qw422016.N().S(`
`)
-//line views/stuff.qtpl:251
+//line views/stuff.qtpl:252
hyphaNames := make(chan string)
sortedHypha := hyphae.PathographicSort(hyphaNames)
for hypha := range hyphae.YieldExistingHyphae() {
@@ -1012,252 +1021,252 @@ func StreamHyphaListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
}
close(hyphaNames)
-//line views/stuff.qtpl:257
+//line views/stuff.qtpl:258
qw422016.N().S(`
`)
-//line views/stuff.qtpl:258
+//line views/stuff.qtpl:259
for hyphaName := range sortedHypha {
-//line views/stuff.qtpl:258
+//line views/stuff.qtpl:259
qw422016.N().S(`
`)
-//line views/stuff.qtpl:259
+//line views/stuff.qtpl:260
hypha := hyphae.ByName(hyphaName)
-//line views/stuff.qtpl:259
+//line views/stuff.qtpl:260
qw422016.N().S(`
-
`)
-//line views/stuff.qtpl:261
+//line views/stuff.qtpl:262
qw422016.E().S(util.BeautifulName(hypha.Name))
-//line views/stuff.qtpl:261
+//line views/stuff.qtpl:262
qw422016.N().S(`
`)
-//line views/stuff.qtpl:262
+//line views/stuff.qtpl:263
if hypha.BinaryPath != "" {
-//line views/stuff.qtpl:262
+//line views/stuff.qtpl:263
qw422016.N().S(`
`)
-//line views/stuff.qtpl:263
+//line views/stuff.qtpl:264
qw422016.E().S(filepath.Ext(hypha.BinaryPath)[1:])
-//line views/stuff.qtpl:263
+//line views/stuff.qtpl:264
qw422016.N().S(`
`)
-//line views/stuff.qtpl:264
+//line views/stuff.qtpl:265
}
-//line views/stuff.qtpl:264
+//line views/stuff.qtpl:265
qw422016.N().S(`
`)
-//line views/stuff.qtpl:266
+//line views/stuff.qtpl:267
}
-//line views/stuff.qtpl:266
+//line views/stuff.qtpl:267
qw422016.N().S(`
`)
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
}
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
func WriteHyphaListHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
StreamHyphaListHTML(qw422016, lc)
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
}
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
func HyphaListHTML(lc *l18n.Localizer) string {
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
WriteHyphaListHTML(qb422016, lc)
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
return qs422016
-//line views/stuff.qtpl:270
+//line views/stuff.qtpl:271
}
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:273
func StreamAboutHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:273
qw422016.N().S(`
`)
-//line views/stuff.qtpl:276
+//line views/stuff.qtpl:277
qw422016.E().S(lc.Get("ui.about_title", &l18n.Replacements{"name": cfg.WikiName}))
-//line views/stuff.qtpl:276
+//line views/stuff.qtpl:277
qw422016.N().S(`
- `)
-//line views/stuff.qtpl:278
+//line views/stuff.qtpl:279
qw422016.N().S(lc.Get("ui.about_version", &l18n.Replacements{"pre": "", "post": ""}))
-//line views/stuff.qtpl:278
+//line views/stuff.qtpl:279
qw422016.N().S(` 1.7.0
`)
-//line views/stuff.qtpl:279
+//line views/stuff.qtpl:280
if cfg.UseAuth {
-//line views/stuff.qtpl:279
+//line views/stuff.qtpl:280
qw422016.N().S(` - `)
-//line views/stuff.qtpl:280
+//line views/stuff.qtpl:281
qw422016.E().S(lc.Get("ui.about_usercount"))
-//line views/stuff.qtpl:280
+//line views/stuff.qtpl:281
qw422016.N().S(` `)
-//line views/stuff.qtpl:280
+//line views/stuff.qtpl:281
qw422016.N().DUL(user.Count())
-//line views/stuff.qtpl:280
+//line views/stuff.qtpl:281
qw422016.N().S(`
- `)
-//line views/stuff.qtpl:281
+//line views/stuff.qtpl:282
qw422016.E().S(lc.Get("ui.about_homepage"))
-//line views/stuff.qtpl:281
+//line views/stuff.qtpl:282
qw422016.N().S(` `)
-//line views/stuff.qtpl:281
+//line views/stuff.qtpl:282
qw422016.E().S(cfg.HomeHypha)
-//line views/stuff.qtpl:281
+//line views/stuff.qtpl:282
qw422016.N().S(`
- `)
-//line views/stuff.qtpl:282
+//line views/stuff.qtpl:283
qw422016.E().S(lc.Get("ui.about_admins"))
-//line views/stuff.qtpl:282
+//line views/stuff.qtpl:283
qw422016.N().S(``)
-//line views/stuff.qtpl:282
+//line views/stuff.qtpl:283
for i, username := range user.ListUsersWithGroup("admin") {
-//line views/stuff.qtpl:283
+//line views/stuff.qtpl:284
if i > 0 {
-//line views/stuff.qtpl:283
+//line views/stuff.qtpl:284
qw422016.N().S(`,
`)
-//line views/stuff.qtpl:284
+//line views/stuff.qtpl:285
}
-//line views/stuff.qtpl:284
+//line views/stuff.qtpl:285
qw422016.N().S(` `)
-//line views/stuff.qtpl:285
+//line views/stuff.qtpl:286
qw422016.E().S(username)
-//line views/stuff.qtpl:285
+//line views/stuff.qtpl:286
qw422016.N().S(``)
-//line views/stuff.qtpl:285
+//line views/stuff.qtpl:286
}
-//line views/stuff.qtpl:285
+//line views/stuff.qtpl:286
qw422016.N().S(`
`)
-//line views/stuff.qtpl:286
+//line views/stuff.qtpl:287
} else {
-//line views/stuff.qtpl:286
+//line views/stuff.qtpl:287
qw422016.N().S(` - `)
-//line views/stuff.qtpl:287
+//line views/stuff.qtpl:288
qw422016.E().S(lc.Get("ui.about_noauth"))
-//line views/stuff.qtpl:287
+//line views/stuff.qtpl:288
qw422016.N().S(`
`)
-//line views/stuff.qtpl:288
+//line views/stuff.qtpl:289
}
-//line views/stuff.qtpl:288
+//line views/stuff.qtpl:289
qw422016.N().S(`
`)
-//line views/stuff.qtpl:290
+//line views/stuff.qtpl:291
qw422016.N().S(lc.Get("ui.about_hyphae", &l18n.Replacements{"link": "/list"}))
-//line views/stuff.qtpl:290
+//line views/stuff.qtpl:291
qw422016.N().S(`
`)
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
}
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
func WriteAboutHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
StreamAboutHTML(qw422016, lc)
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
}
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
func AboutHTML(lc *l18n.Localizer) string {
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
WriteAboutHTML(qb422016, lc)
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
return qs422016
-//line views/stuff.qtpl:294
+//line views/stuff.qtpl:295
}
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:297
func StreamCommonScripts(qw422016 *qt422016.Writer) {
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:297
qw422016.N().S(`
`)
-//line views/stuff.qtpl:297
+//line views/stuff.qtpl:298
for _, scriptPath := range cfg.CommonScripts {
-//line views/stuff.qtpl:297
+//line views/stuff.qtpl:298
qw422016.N().S(`
`)
-//line views/stuff.qtpl:299
+//line views/stuff.qtpl:300
}
-//line views/stuff.qtpl:299
+//line views/stuff.qtpl:300
qw422016.N().S(`
`)
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
}
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
func WriteCommonScripts(qq422016 qtio422016.Writer) {
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
StreamCommonScripts(qw422016)
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
}
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
func CommonScripts() string {
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
WriteCommonScripts(qb422016)
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
return qs422016
-//line views/stuff.qtpl:300
+//line views/stuff.qtpl:301
}