diff --git a/http_mutators.go b/http_mutators.go
index c2410ec..d40a16c 100644
--- a/http_mutators.go
+++ b/http_mutators.go
@@ -12,6 +12,7 @@ import (
"github.com/bouncepaw/mycorrhiza/templates"
"github.com/bouncepaw/mycorrhiza/user"
"github.com/bouncepaw/mycorrhiza/util"
+ "github.com/bouncepaw/mycorrhiza/views"
)
func init() {
@@ -63,7 +64,7 @@ var handlerUnattachAsk = factoryHandlerAsker(
"unattach-ask",
shroom.CanUnattach,
"Unattach %s?",
- templates.UnattachAskHTML,
+ views.UnattachAskHTML,
)
var handlerDeleteAsk = factoryHandlerAsker(
diff --git a/templates/asset.qtpl.go b/templates/asset.qtpl.go
index f88dcac..7125101 100644
--- a/templates/asset.qtpl.go
+++ b/templates/asset.qtpl.go
@@ -24,6 +24,11 @@ func StreamDefaultCSS(qw422016 *qt422016.Writer) {
`)
//line templates/asset.qtpl:2
qw422016.N().S(`/* General element positions, from small to big */
+.modal__title { font-size: 2rem; }
+.modal__confirmation-msg { margin: 0 0 .5rem 0; }
+.modal__action { display: inline-block; font-size: 1rem; padding: .25rem; border-radius: .25rem; }
+.modal__submit { border: 1px #999 solid; }
+.modal__cancel { border: 1px #999 dashed; text-decoration: none; }
/* Phones and whatnot */
.layout { display: grid; row-gap: 1rem; }
header { width: 100%; margin-bottom: 1rem; }
@@ -90,7 +95,8 @@ header { width: 100%; margin-bottom: 1rem; }
*, *::before, *::after {box-sizing: border-box;}
html { height:100%; padding:0; }
-body {height:100%; margin:0; font-size:16px; font-family: 'PT Sans', 'Liberation Sans', sans-serif;}
+body {height:100%; margin:0; }
+body, input { font-size:16px; font-family: 'PT Sans', 'Liberation Sans', sans-serif;}
main > form {margin-bottom:1rem;}
textarea {font-size:16px; font-family: 'PT Sans', 'Liberation Sans', sans-serif;}
diff --git a/templates/default.css b/templates/default.css
index db31f9c..c5d3001 100644
--- a/templates/default.css
+++ b/templates/default.css
@@ -1,4 +1,9 @@
/* General element positions, from small to big */
+.modal__title { font-size: 2rem; }
+.modal__confirmation-msg { margin: 0 0 .5rem 0; }
+.modal__action { display: inline-block; font-size: 1rem; padding: .25rem; border-radius: .25rem; }
+.modal__submit { border: 1px #999 solid; }
+.modal__cancel { border: 1px #999 dashed; text-decoration: none; }
/* Phones and whatnot */
.layout { display: grid; row-gap: 1rem; }
header { width: 100%; margin-bottom: 1rem; }
@@ -65,7 +70,8 @@ header { width: 100%; margin-bottom: 1rem; }
*, *::before, *::after {box-sizing: border-box;}
html { height:100%; padding:0; }
-body {height:100%; margin:0; font-size:16px; font-family: 'PT Sans', 'Liberation Sans', sans-serif;}
+body {height:100%; margin:0; }
+body, input { font-size:16px; font-family: 'PT Sans', 'Liberation Sans', sans-serif;}
main > form {margin-bottom:1rem;}
textarea {font-size:16px; font-family: 'PT Sans', 'Liberation Sans', sans-serif;}
diff --git a/templates/unattach.qtpl b/templates/unattach.qtpl
deleted file mode 100644
index 8f7fe60..0000000
--- a/templates/unattach.qtpl
+++ /dev/null
@@ -1,26 +0,0 @@
-{% import "net/http" %}
-{% func UnattachAskHTML(rq *http.Request, hyphaName string, isOld bool) %}
-{%= navHTML(rq, hyphaName, "unattach-ask") %}
-
-
-{%- if isOld -%}
-
- Unattach {%s hyphaName %}?
- Do you really want to unattach hypha {%s hyphaName %}?
- Confirm
- Cancel
-
-{%- else -%}
- {%= cannotUnattachDueToNonExistence(hyphaName) %}
-{%- endif -%}
-
-
-{% endfunc %}
-
-{% func cannotUnattachDueToNonExistence(hyphaName string) %}
-
- Cannot unattach {%s hyphaName %}
- This hypha does not exist.
- Go back
-
-{% endfunc %}
diff --git a/templates/unattach.qtpl.go b/templates/unattach.qtpl.go
deleted file mode 100644
index e5bc0d2..0000000
--- a/templates/unattach.qtpl.go
+++ /dev/null
@@ -1,150 +0,0 @@
-// Code generated by qtc from "unattach.qtpl". DO NOT EDIT.
-// See https://github.com/valyala/quicktemplate for details.
-
-//line templates/unattach.qtpl:1
-package templates
-
-//line templates/unattach.qtpl:1
-import "net/http"
-
-//line templates/unattach.qtpl:2
-import (
- qtio422016 "io"
-
- qt422016 "github.com/valyala/quicktemplate"
-)
-
-//line templates/unattach.qtpl:2
-var (
- _ = qtio422016.Copy
- _ = qt422016.AcquireByteBuffer
-)
-
-//line templates/unattach.qtpl:2
-func StreamUnattachAskHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName string, isOld bool) {
-//line templates/unattach.qtpl:2
- qw422016.N().S(`
-`)
-//line templates/unattach.qtpl:3
- streamnavHTML(qw422016, rq, hyphaName, "unattach-ask")
-//line templates/unattach.qtpl:3
- qw422016.N().S(`
-
-
-`)
-//line templates/unattach.qtpl:6
- if isOld {
-//line templates/unattach.qtpl:6
- qw422016.N().S(`
- Unattach `)
-//line templates/unattach.qtpl:8
- qw422016.E().S(hyphaName)
-//line templates/unattach.qtpl:8
- qw422016.N().S(`?
- Do you really want to unattach hypha `)
-//line templates/unattach.qtpl:9
- qw422016.E().S(hyphaName)
-//line templates/unattach.qtpl:9
- qw422016.N().S(`?
- Confirm
- Cancel
-
-`)
-//line templates/unattach.qtpl:13
- } else {
-//line templates/unattach.qtpl:13
- qw422016.N().S(` `)
-//line templates/unattach.qtpl:14
- streamcannotUnattachDueToNonExistence(qw422016, hyphaName)
-//line templates/unattach.qtpl:14
- qw422016.N().S(`
-`)
-//line templates/unattach.qtpl:15
- }
-//line templates/unattach.qtpl:15
- qw422016.N().S(`
-
-`)
-//line templates/unattach.qtpl:18
-}
-
-//line templates/unattach.qtpl:18
-func WriteUnattachAskHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName string, isOld bool) {
-//line templates/unattach.qtpl:18
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line templates/unattach.qtpl:18
- StreamUnattachAskHTML(qw422016, rq, hyphaName, isOld)
-//line templates/unattach.qtpl:18
- qt422016.ReleaseWriter(qw422016)
-//line templates/unattach.qtpl:18
-}
-
-//line templates/unattach.qtpl:18
-func UnattachAskHTML(rq *http.Request, hyphaName string, isOld bool) string {
-//line templates/unattach.qtpl:18
- qb422016 := qt422016.AcquireByteBuffer()
-//line templates/unattach.qtpl:18
- WriteUnattachAskHTML(qb422016, rq, hyphaName, isOld)
-//line templates/unattach.qtpl:18
- qs422016 := string(qb422016.B)
-//line templates/unattach.qtpl:18
- qt422016.ReleaseByteBuffer(qb422016)
-//line templates/unattach.qtpl:18
- return qs422016
-//line templates/unattach.qtpl:18
-}
-
-//line templates/unattach.qtpl:20
-func streamcannotUnattachDueToNonExistence(qw422016 *qt422016.Writer, hyphaName string) {
-//line templates/unattach.qtpl:20
- qw422016.N().S(`
-
- Cannot unattach `)
-//line templates/unattach.qtpl:22
- qw422016.E().S(hyphaName)
-//line templates/unattach.qtpl:22
- qw422016.N().S(`
- This hypha does not exist.
- Go back
-
-`)
-//line templates/unattach.qtpl:26
-}
-
-//line templates/unattach.qtpl:26
-func writecannotUnattachDueToNonExistence(qq422016 qtio422016.Writer, hyphaName string) {
-//line templates/unattach.qtpl:26
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line templates/unattach.qtpl:26
- streamcannotUnattachDueToNonExistence(qw422016, hyphaName)
-//line templates/unattach.qtpl:26
- qt422016.ReleaseWriter(qw422016)
-//line templates/unattach.qtpl:26
-}
-
-//line templates/unattach.qtpl:26
-func cannotUnattachDueToNonExistence(hyphaName string) string {
-//line templates/unattach.qtpl:26
- qb422016 := qt422016.AcquireByteBuffer()
-//line templates/unattach.qtpl:26
- writecannotUnattachDueToNonExistence(qb422016, hyphaName)
-//line templates/unattach.qtpl:26
- qs422016 := string(qb422016.B)
-//line templates/unattach.qtpl:26
- qt422016.ReleaseByteBuffer(qb422016)
-//line templates/unattach.qtpl:26
- return qs422016
-//line templates/unattach.qtpl:26
-}
diff --git a/views/unattach.qtpl b/views/unattach.qtpl
new file mode 100644
index 0000000..1a6f29a
--- /dev/null
+++ b/views/unattach.qtpl
@@ -0,0 +1,18 @@
+{% import "net/http" %}
+{% import "github.com/bouncepaw/mycorrhiza/util" %}
+
+{% func UnattachAskHTML(rq *http.Request, hyphaName string, isOld bool) %}
+{%= NavHTML(rq, hyphaName, "unattach-ask") %}
+
+{% endfunc %}
diff --git a/views/unattach.qtpl.go b/views/unattach.qtpl.go
new file mode 100644
index 0000000..5a4f542
--- /dev/null
+++ b/views/unattach.qtpl.go
@@ -0,0 +1,91 @@
+// Code generated by qtc from "unattach.qtpl". DO NOT EDIT.
+// See https://github.com/valyala/quicktemplate for details.
+
+//line views/unattach.qtpl:1
+package views
+
+//line views/unattach.qtpl:1
+import "net/http"
+
+//line views/unattach.qtpl:2
+import "github.com/bouncepaw/mycorrhiza/util"
+
+//line views/unattach.qtpl:4
+import (
+ qtio422016 "io"
+
+ qt422016 "github.com/valyala/quicktemplate"
+)
+
+//line views/unattach.qtpl:4
+var (
+ _ = qtio422016.Copy
+ _ = qt422016.AcquireByteBuffer
+)
+
+//line views/unattach.qtpl:4
+func StreamUnattachAskHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName string, isOld bool) {
+//line views/unattach.qtpl:4
+ qw422016.N().S(`
+`)
+//line views/unattach.qtpl:5
+ StreamNavHTML(qw422016, rq, hyphaName, "unattach-ask")
+//line views/unattach.qtpl:5
+ qw422016.N().S(`
+
+`)
+//line views/unattach.qtpl:18
+}
+
+//line views/unattach.qtpl:18
+func WriteUnattachAskHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName string, isOld bool) {
+//line views/unattach.qtpl:18
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line views/unattach.qtpl:18
+ StreamUnattachAskHTML(qw422016, rq, hyphaName, isOld)
+//line views/unattach.qtpl:18
+ qt422016.ReleaseWriter(qw422016)
+//line views/unattach.qtpl:18
+}
+
+//line views/unattach.qtpl:18
+func UnattachAskHTML(rq *http.Request, hyphaName string, isOld bool) string {
+//line views/unattach.qtpl:18
+ qb422016 := qt422016.AcquireByteBuffer()
+//line views/unattach.qtpl:18
+ WriteUnattachAskHTML(qb422016, rq, hyphaName, isOld)
+//line views/unattach.qtpl:18
+ qs422016 := string(qb422016.B)
+//line views/unattach.qtpl:18
+ qt422016.ReleaseByteBuffer(qb422016)
+//line views/unattach.qtpl:18
+ return qs422016
+//line views/unattach.qtpl:18
+}