1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2024-12-13 05:50:27 +00:00

Redo templates a little, support w3m and phones, add Makefile

This commit is contained in:
Timur Ismagilov 2020-07-05 17:53:57 +05:00
parent 8aec02c961
commit 944deb4cab
22 changed files with 163 additions and 111 deletions

12
Makefile Normal file
View File

@ -0,0 +1,12 @@
run: build
./mycorrhiza wiki
build:
go build .
test:
go test ./util
help:
echo "Read the Makefile to see what it can do. It is simple."

View File

@ -28,7 +28,7 @@ var (
configJsonPath string
// Default values that can be overriden in config.json
Address = "127.0.0.1:80"
Address = "0.0.0.0:80"
TitleEditTemplate = `Edit %s`
TitleTemplate = `%s`
GenericErrorMsg = `<b>Sorry, something went wrong</b>`

View File

@ -23,7 +23,6 @@ func HyphaEdit(h *fs.Hypha) []byte { //
withMap(hyphaData).
wrapInBase(map[string]string{
"Title": fmt.Sprintf(cfg.TitleEditTemplate, h.FullName),
"Header": layout("edit/header").withString(h.FullName).String(),
"Sidebar": layout("edit/sidebar").withMap(hyphaData).String(),
})
}
@ -37,12 +36,26 @@ func HyphaUpdateOk(h *fs.Hypha) []byte { //
// Hypha404 renders 404 page for nonexistent page.
func Hypha404(name, _ string) []byte {
return hyphaGeneric(name, name, "view/404")
return layout("view/404").
withMap(map[string]string{
"PageTitle": name,
"Tree": hyphaTree(name),
}).
wrapInBase(map[string]string{
"Title": fmt.Sprintf(cfg.TitleTemplate, name),
})
}
// HyphaPage renders hypha viewer.
func HyphaPage(name, content string) []byte {
return hyphaGeneric(name, content, "view/index")
return layout("view/index").
withMap(map[string]string{
"Content": content,
"Tree": hyphaTree(name),
}).
wrapInBase(map[string]string{
"Title": fmt.Sprintf(cfg.TitleTemplate, name),
})
}
// hyphaGeneric is used when building renderers for all types of hypha pages
@ -62,20 +75,17 @@ func (lyt *Layout) wrapInBase(keys map[string]string) []byte {
}
page := map[string]string{
"Title": cfg.SiteTitle,
"Main": "",
"Content": lyt.String(),
"SiteTitle": cfg.SiteTitle,
}
for key, val := range keys {
page[key] = val
}
page["Main"] = lyt.String()
return layout("base").withMap(page).Bytes()
}
func hyphaTree(name string) string {
return layout("view/sidebar").
withMap(map[string]string{"Tree": fs.Hs.GetTree(name, true).AsHtml()}).
String()
return fs.Hs.GetTree(name, true).AsHtml()
}
type Layout struct {

View File

@ -1,5 +1,5 @@
{
"address": "127.0.0.1:1737",
"address": "0.0.0.0:1737",
"theme": "default-light",
"site-title": "🍄 MycorrhizaWiki",
"title-templates": {

View File

@ -0,0 +1,5 @@
A **pear** is a sweet fruit, usually with a green skin and a lot of juice, that has a round base and is slightly pointed towards the stem.
Source of info: [cambridge dict](https://dictionary.cambridge.org/ru/словарь/английский/pear)
По-русски: груша

View File

@ -14,6 +14,17 @@
"binary_mime": "",
"text_name": "1.markdown",
"binary_name": ""
},
"2": {
"tags": null,
"name": "Pear",
"comment": "Update :Main/Fruit/Pear",
"author": "",
"time": 1593949655,
"text_mime": "text/markdown",
"binary_mime": "",
"text_name": "2.markdown",
"binary_name": ""
}
}
}

View File

@ -0,0 +1,3 @@
A **fungus** is any member of the group of eukaryotic organisms that includes microorganisms such as yeasts and molds, as well as the more familiar mushrooms. These organisms are classified as a kingdom, which is separate from the other eukaryotic life kingdoms of plants and animals.
По-русски: грибы.

View File

@ -14,6 +14,19 @@
"binary_mime": "",
"text_name": "1.markdown",
"binary_name": ""
},
"2": {
"tags": [
""
],
"name": "Fungus",
"comment": "Update :Main/Fungus",
"author": "",
"time": 1593951453,
"text_mime": "text/markdown",
"binary_mime": "",
"text_name": "2.markdown",
"binary_name": ""
}
}
}

View File

@ -0,0 +1 @@
This is a testing page to test that editing works, etc

19
wiki/main/test/meta.json Normal file
View File

@ -0,0 +1,19 @@
{
"views": 0,
"deleted": false,
"revisions": {
"1": {
"tags": [
""
],
"name": "Test",
"comment": "Update :Main/Test",
"author": "",
"time": 1593943985,
"text_mime": "text/markdown",
"binary_mime": "",
"text_name": "1.markdown",
"binary_name": ""
}
}
}

View File

@ -2,6 +2,7 @@
<head>
<title>{{ .Title }}</title>
<link rel="stylesheet" href="/:sys/theme/default-light/main.css?action=raw">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<header class="header">
@ -13,10 +14,8 @@
</button>
</header>
<aside class="sidebar hidden_mobile" id="sidebar">
{{ .Sidebar }}
</aside>
<main class="main">{{ .Main }}</main>
<!-- <main> and <aside> are in .Content -->
{{ .Content }}
<footer>
<p>This website runs <a href='https://github.com/bouncepaw/mycorrhiza'>MycorrhizaWiki</a></p>
</footer>

View File

@ -1 +0,0 @@
<h1 class="header__edit-title">Edit {{ . }}</h1>

View File

@ -1,17 +0,0 @@
{
"views": 0,
"deleted": false,
"revisions": {
"1": {
"tags": null,
"name": "header.html",
"comment": "Create Templates/default-light/Hypha/edit/header.html",
"author": "",
"time": 1592996801,
"text_mime": "text/html",
"binary_mime": "",
"text_name": "1.html",
"binary_name": ""
}
}
}

View File

@ -3,9 +3,42 @@
enctype="multipart/form-data"
action="?action=update"
id="edit-form">
<h4>Edit box</h4>
<!-- It is important that there is no indent ↓ -->
<textarea class="edit-box__text" name="text">
{{ .Text }}</textarea>
<aside class="sidebar hidden_mobile" id="sidebar"><!-- TODO: i18n -->
<fieldset><!-- TODO: make this thing work with radiobuttons that are generated automatically for all supported mimes -->
<legend>Text MIME-type</legend>
<p>Good types are <code>text/markdown</code> and <code>text/plain</code></p>
<input type="text" name="text_mime" value="{{ .TextMime }}" id="text_mime"/>
</fieldset>
<fieldset>
<legend>Revision comment</legend>
<p>Please make your comment helpful</p>
<input type="text" name="comment" value="Update {{ .Name }}" id="comment"/>
</fieldset>
<fieldset>
<legend>Edit tags</legend>
<p>Tags are separated by commas, whitespace is ignored</p>
<input type="text" name="tags" value="{{ .Tags }}" id="tags"/>
</fieldset>
<fieldset>
<legend>Upload file</legend>
<p>Only images are supported for now</p>
<input type="file" name="binary" id="binary"/>
</fieldset>
<p>
<input type="submit" value="update" form="edit-form"/>
<a href="?">Cancel</a>
</p>
</aside>
<main class="main">
<h1 class="page__title">Edit {{ .Name }}</h1>
<fieldset>
<legend>Edit box</legend>
<textarea class="edit-box__text" name="text">{{ .Text }}</textarea>
</fieldset>
</main>
</form>

View File

@ -1,22 +0,0 @@
<div>
<h4>Text MIME-type</h4>
<p>Good types are <code>text/markdown</code> and <code>text/plain</code></p>
<input type="text" name="text_mime" value="{{ .TextMime }}" form="edit-form"/>
<h4>Revision comment</h4>
<p>Please make your comment helpful</p>
<input type="text" name="comment" value="Update {{ .Name }}" form="edit-form"/>
<h4>Edit tags</h4>
<p>Tags are separated by commas, whitespace is ignored</p>
<input type="text" name="tags" value="{{ .Tags }}" form="edit-form"/>
<h4>Upload file</h4>
<p>If this hypha has a file like that, the text above is meant to be a description of it</p>
<input type="file" name="binary" form="edit-form"/>
<p>
<input type="submit" value="update" form="edit-form"/>
<a href="?">Cancel</a>
</p>
</div>

View File

@ -1,19 +0,0 @@
{
"views": 0,
"deleted": false,
"revisions": {
"1": {
"tags": [
""
],
"name": "sidebar.html",
"comment": "Create Templates/default-dark/Hypha/edit/sidebar.html",
"author": "",
"time": 1593003792,
"text_mime": "text/html",
"binary_mime": "",
"text_name": "1.html",
"binary_name": ""
}
}
}

View File

@ -22,7 +22,6 @@ footer { padding: 1rem 0; font-size: .8rem; }
footer a, footer a:visited { color: black; }
/* Sidebar section */
.sidebar { padding: 1rem 0; background: #f4f4f4; }
.sidebar div { margin-left: 1rem; }
.sidebar-controller { font: inherit; padding: .25rem 1rem;
font-size: 2rem; float: right; }
@ -39,6 +38,8 @@ text-decoration: none; color: black; }
.navitree__ancestor { list-style: none; margin-left: -1rem; }
.navitree__pagename a { font-weight: bold; }
.edit-box aside { padding-left: 1rem; }
@media (max-width: 950px) {
.hidden_mobile { display: none; }
aside { height: 100%; }
@ -52,3 +53,7 @@ text-decoration: none; color: black; }
main, footer { margin: 0 0 auto 2rem; }
.edit-box__text { min-width: 600px; height: 70%; }
}
legend { font-weight: bold; padding: 0; }
fieldset { border: 0; padding: 0; margin: 0; margin-bottom: .5rem; }
fieldset * { margin: 0; }

View File

@ -1,6 +1,7 @@
<html>
<head>
<title>Saved {{ .Name }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p>Saved successfully. <a href="/{{ .Name }}">Go back</a></p>

View File

@ -1,6 +1,18 @@
<article class="page page404">
<h1 class="page__title">{{ . }}</h1>
<p class="msg_hypha-does-not-exist msg">
The hypha you are trying to access does not exist yet. Why not <a href="?action=edit">create</a> it?
</p>
</article>
<aside class="sidebar hidden_mobile" id="sidebar">
<div class="hypha-actions">
<ul>
<li><a href="?action=edit">Edit</a></li>
</ul>
</div>
{{ .Tree }}
</aside>
<main class="main">
<article class="page page404">
<h1 class="page__title">{{ .PageTitle }}</h1>
<p class="msg_hypha-does-not-exist msg">
The hypha you are trying to access does not exist yet. Why not <a href="?action=edit">create</a> it?
</p>
</article>
</main>

View File

@ -1 +1,14 @@
{{ . }}
<aside class="sidebar hidden_mobile" id="sidebar">
<div class="hypha-actions">
<ul>
<li><a href="?action=edit">Edit</a></li>
<li><a href="?action=binary">Download</a></li>
<li><a href="?action=zen">Zen mode</a></li>
<li><a href="?action=raw">View raw</a></li>
</ul>
</div>
{{ .Tree }}
</aside>
<main class="main">
{{ .Content }}
</main>

View File

@ -1,9 +0,0 @@
<div class="hypha-actions">
<ul>
<li><a href="?action=edit">Edit</a></li>
<li><a href="?action=binary">Download</a></li>
<li><a href="?action=zen">Zen mode</a></li>
<li><a href="?action=raw">View raw</a></li>
</ul>
</div>
{{ .Tree }}

View File

@ -1,17 +0,0 @@
{
"views": 0,
"deleted": false,
"revisions": {
"1": {
"tags": null,
"name": "sidebar.html",
"comment": "Create Templates/default-light/Hypha/view/sidebar.html",
"author": "",
"time": 1592996977,
"text_mime": "text/html",
"binary_mime": "",
"text_name": "1.html",
"binary_name": ""
}
}
}