From 9071a72de326da19f25d98d2583b3b0c0bbbff88 Mon Sep 17 00:00:00 2001 From: DanInSpace Date: Sat, 20 Mar 2021 18:55:00 +0500 Subject: [PATCH] 47 insert current date button --- assets/assets.qtpl | 4 + assets/assets.qtpl.go | 304 ++++++++++++++++++++++++----------------- assets/toolbar.js | 11 ++ main.go | 7 + views/mutators.qtpl | 6 +- views/mutators.qtpl.go | 102 +++++++------- views/stuff.qtpl.go | 2 +- 7 files changed, 258 insertions(+), 178 deletions(-) create mode 100644 assets/toolbar.js diff --git a/assets/assets.qtpl b/assets/assets.qtpl index a3a56f6..d334fa5 100644 --- a/assets/assets.qtpl +++ b/assets/assets.qtpl @@ -10,6 +10,10 @@ Usage of %s: {% cat "default.css" %} {% endfunc %} +{% func ToolbarJS() %} +{% cat "toolbar.js" %} +{% endfunc %} + Next three are from https://remixicon.com/ {% func IconHTTP() %} {% cat "icon/http-protocol-icon.svg" %} diff --git a/assets/assets.qtpl.go b/assets/assets.qtpl.go index fb79b57..c66e041 100644 --- a/assets/assets.qtpl.go +++ b/assets/assets.qtpl.go @@ -414,136 +414,186 @@ func DefaultCSS() string { //line assets/assets.qtpl:11 } +//line assets/assets.qtpl:13 +func StreamToolbarJS(qw422016 *qt422016.Writer) { +//line assets/assets.qtpl:13 + qw422016.N().S(` +`) +//line assets/assets.qtpl:14 + qw422016.N().S(`const editTextarea = document.getElementById('edit-textarea') + +function insertTextAtCursor(text, el = editTextarea) { + const [start, end] = [el.selectionStart, el.selectionEnd]; + el.setRangeText(text, start, end, 'select'); +} + +function insertDate() { + let date = new Date().toISOString().split('T')[0] + insertTextAtCursor(date) +} +`) +//line assets/assets.qtpl:14 + qw422016.N().S(` +`) +//line assets/assets.qtpl:15 +} + +//line assets/assets.qtpl:15 +func WriteToolbarJS(qq422016 qtio422016.Writer) { +//line assets/assets.qtpl:15 + qw422016 := qt422016.AcquireWriter(qq422016) +//line assets/assets.qtpl:15 + StreamToolbarJS(qw422016) +//line assets/assets.qtpl:15 + qt422016.ReleaseWriter(qw422016) +//line assets/assets.qtpl:15 +} + +//line assets/assets.qtpl:15 +func ToolbarJS() string { +//line assets/assets.qtpl:15 + qb422016 := qt422016.AcquireByteBuffer() +//line assets/assets.qtpl:15 + WriteToolbarJS(qb422016) +//line assets/assets.qtpl:15 + qs422016 := string(qb422016.B) +//line assets/assets.qtpl:15 + qt422016.ReleaseByteBuffer(qb422016) +//line assets/assets.qtpl:15 + return qs422016 +//line assets/assets.qtpl:15 +} + // Next three are from https://remixicon.com/ -//line assets/assets.qtpl:14 +//line assets/assets.qtpl:18 func StreamIconHTTP(qw422016 *qt422016.Writer) { -//line assets/assets.qtpl:14 +//line assets/assets.qtpl:18 qw422016.N().S(` `) -//line assets/assets.qtpl:15 +//line assets/assets.qtpl:19 qw422016.N().S(` `) -//line assets/assets.qtpl:15 - qw422016.N().S(` -`) -//line assets/assets.qtpl:16 -} - -//line assets/assets.qtpl:16 -func WriteIconHTTP(qq422016 qtio422016.Writer) { -//line assets/assets.qtpl:16 - qw422016 := qt422016.AcquireWriter(qq422016) -//line assets/assets.qtpl:16 - StreamIconHTTP(qw422016) -//line assets/assets.qtpl:16 - qt422016.ReleaseWriter(qw422016) -//line assets/assets.qtpl:16 -} - -//line assets/assets.qtpl:16 -func IconHTTP() string { -//line assets/assets.qtpl:16 - qb422016 := qt422016.AcquireByteBuffer() -//line assets/assets.qtpl:16 - WriteIconHTTP(qb422016) -//line assets/assets.qtpl:16 - qs422016 := string(qb422016.B) -//line assets/assets.qtpl:16 - qt422016.ReleaseByteBuffer(qb422016) -//line assets/assets.qtpl:16 - return qs422016 -//line assets/assets.qtpl:16 -} - -//line assets/assets.qtpl:18 -func StreamIconGemini(qw422016 *qt422016.Writer) { -//line assets/assets.qtpl:18 - qw422016.N().S(` -`) //line assets/assets.qtpl:19 + qw422016.N().S(` +`) +//line assets/assets.qtpl:20 +} + +//line assets/assets.qtpl:20 +func WriteIconHTTP(qq422016 qtio422016.Writer) { +//line assets/assets.qtpl:20 + qw422016 := qt422016.AcquireWriter(qq422016) +//line assets/assets.qtpl:20 + StreamIconHTTP(qw422016) +//line assets/assets.qtpl:20 + qt422016.ReleaseWriter(qw422016) +//line assets/assets.qtpl:20 +} + +//line assets/assets.qtpl:20 +func IconHTTP() string { +//line assets/assets.qtpl:20 + qb422016 := qt422016.AcquireByteBuffer() +//line assets/assets.qtpl:20 + WriteIconHTTP(qb422016) +//line assets/assets.qtpl:20 + qs422016 := string(qb422016.B) +//line assets/assets.qtpl:20 + qt422016.ReleaseByteBuffer(qb422016) +//line assets/assets.qtpl:20 + return qs422016 +//line assets/assets.qtpl:20 +} + +//line assets/assets.qtpl:22 +func StreamIconGemini(qw422016 *qt422016.Writer) { +//line assets/assets.qtpl:22 + qw422016.N().S(` +`) +//line assets/assets.qtpl:23 qw422016.N().S(` `) -//line assets/assets.qtpl:19 - qw422016.N().S(` -`) -//line assets/assets.qtpl:20 -} - -//line assets/assets.qtpl:20 -func WriteIconGemini(qq422016 qtio422016.Writer) { -//line assets/assets.qtpl:20 - qw422016 := qt422016.AcquireWriter(qq422016) -//line assets/assets.qtpl:20 - StreamIconGemini(qw422016) -//line assets/assets.qtpl:20 - qt422016.ReleaseWriter(qw422016) -//line assets/assets.qtpl:20 -} - -//line assets/assets.qtpl:20 -func IconGemini() string { -//line assets/assets.qtpl:20 - qb422016 := qt422016.AcquireByteBuffer() -//line assets/assets.qtpl:20 - WriteIconGemini(qb422016) -//line assets/assets.qtpl:20 - qs422016 := string(qb422016.B) -//line assets/assets.qtpl:20 - qt422016.ReleaseByteBuffer(qb422016) -//line assets/assets.qtpl:20 - return qs422016 -//line assets/assets.qtpl:20 -} - -//line assets/assets.qtpl:22 -func StreamIconMailto(qw422016 *qt422016.Writer) { -//line assets/assets.qtpl:22 - qw422016.N().S(` -`) //line assets/assets.qtpl:23 + qw422016.N().S(` +`) +//line assets/assets.qtpl:24 +} + +//line assets/assets.qtpl:24 +func WriteIconGemini(qq422016 qtio422016.Writer) { +//line assets/assets.qtpl:24 + qw422016 := qt422016.AcquireWriter(qq422016) +//line assets/assets.qtpl:24 + StreamIconGemini(qw422016) +//line assets/assets.qtpl:24 + qt422016.ReleaseWriter(qw422016) +//line assets/assets.qtpl:24 +} + +//line assets/assets.qtpl:24 +func IconGemini() string { +//line assets/assets.qtpl:24 + qb422016 := qt422016.AcquireByteBuffer() +//line assets/assets.qtpl:24 + WriteIconGemini(qb422016) +//line assets/assets.qtpl:24 + qs422016 := string(qb422016.B) +//line assets/assets.qtpl:24 + qt422016.ReleaseByteBuffer(qb422016) +//line assets/assets.qtpl:24 + return qs422016 +//line assets/assets.qtpl:24 +} + +//line assets/assets.qtpl:26 +func StreamIconMailto(qw422016 *qt422016.Writer) { +//line assets/assets.qtpl:26 + qw422016.N().S(` +`) +//line assets/assets.qtpl:27 qw422016.N().S(` `) -//line assets/assets.qtpl:23 - qw422016.N().S(` -`) -//line assets/assets.qtpl:24 -} - -//line assets/assets.qtpl:24 -func WriteIconMailto(qq422016 qtio422016.Writer) { -//line assets/assets.qtpl:24 - qw422016 := qt422016.AcquireWriter(qq422016) -//line assets/assets.qtpl:24 - StreamIconMailto(qw422016) -//line assets/assets.qtpl:24 - qt422016.ReleaseWriter(qw422016) -//line assets/assets.qtpl:24 -} - -//line assets/assets.qtpl:24 -func IconMailto() string { -//line assets/assets.qtpl:24 - qb422016 := qt422016.AcquireByteBuffer() -//line assets/assets.qtpl:24 - WriteIconMailto(qb422016) -//line assets/assets.qtpl:24 - qs422016 := string(qb422016.B) -//line assets/assets.qtpl:24 - qt422016.ReleaseByteBuffer(qb422016) -//line assets/assets.qtpl:24 - return qs422016 -//line assets/assets.qtpl:24 -} - -// This is a modified version of https://www.svgrepo.com/svg/232085/rat - -//line assets/assets.qtpl:27 -func StreamIconGopher(qw422016 *qt422016.Writer) { //line assets/assets.qtpl:27 qw422016.N().S(` `) //line assets/assets.qtpl:28 +} + +//line assets/assets.qtpl:28 +func WriteIconMailto(qq422016 qtio422016.Writer) { +//line assets/assets.qtpl:28 + qw422016 := qt422016.AcquireWriter(qq422016) +//line assets/assets.qtpl:28 + StreamIconMailto(qw422016) +//line assets/assets.qtpl:28 + qt422016.ReleaseWriter(qw422016) +//line assets/assets.qtpl:28 +} + +//line assets/assets.qtpl:28 +func IconMailto() string { +//line assets/assets.qtpl:28 + qb422016 := qt422016.AcquireByteBuffer() +//line assets/assets.qtpl:28 + WriteIconMailto(qb422016) +//line assets/assets.qtpl:28 + qs422016 := string(qb422016.B) +//line assets/assets.qtpl:28 + qt422016.ReleaseByteBuffer(qb422016) +//line assets/assets.qtpl:28 + return qs422016 +//line assets/assets.qtpl:28 +} + +// This is a modified version of https://www.svgrepo.com/svg/232085/rat + +//line assets/assets.qtpl:31 +func StreamIconGopher(qw422016 *qt422016.Writer) { +//line assets/assets.qtpl:31 + qw422016.N().S(` +`) +//line assets/assets.qtpl:32 qw422016.N().S(` `) -//line assets/assets.qtpl:28 +//line assets/assets.qtpl:32 qw422016.N().S(` `) -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 } -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 func WriteIconGopher(qq422016 qtio422016.Writer) { -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 qw422016 := qt422016.AcquireWriter(qq422016) -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 StreamIconGopher(qw422016) -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 qt422016.ReleaseWriter(qw422016) -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 } -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 func IconGopher() string { -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 qb422016 := qt422016.AcquireByteBuffer() -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 WriteIconGopher(qb422016) -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 qs422016 := string(qb422016.B) -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 qt422016.ReleaseByteBuffer(qb422016) -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 return qs422016 -//line assets/assets.qtpl:29 +//line assets/assets.qtpl:33 } diff --git a/assets/toolbar.js b/assets/toolbar.js new file mode 100644 index 0000000..4d25d18 --- /dev/null +++ b/assets/toolbar.js @@ -0,0 +1,11 @@ +const editTextarea = document.getElementById('edit-textarea') + +function insertTextAtCursor(text, el = editTextarea) { + const [start, end] = [el.selectionStart, el.selectionEnd]; + el.setRangeText(text, start, end, 'select'); +} + +function insertDate() { + let date = new Date().toISOString().split('T')[0] + insertTextAtCursor(date) +} diff --git a/main.go b/main.go index b9ff7d1..f0b26b4 100644 --- a/main.go +++ b/main.go @@ -117,6 +117,12 @@ func handlerStyle(w http.ResponseWriter, rq *http.Request) { } } +func handlerToolbar(w http.ResponseWriter, rq *http.Request) { + log.Println(rq.URL) + w.Header().Set("Content-Type", "text/js;charset=utf-8") + w.Write([]byte(assets.ToolbarJS())) +} + func handlerIcon(w http.ResponseWriter, rq *http.Request) { iconName := strings.TrimPrefix(rq.URL.Path, "/static/icon/") if iconName == "https" { @@ -199,6 +205,7 @@ func main() { http.ServeFile(w, rq, WikiDir+"/static/favicon.ico") }) http.HandleFunc("/static/common.css", handlerStyle) + http.HandleFunc("/static/toolbar.js", handlerToolbar) http.HandleFunc("/static/icon/", handlerIcon) http.HandleFunc("/robots.txt", handlerRobotsTxt) http.HandleFunc("/", func(w http.ResponseWriter, rq *http.Request) { diff --git a/views/mutators.qtpl b/views/mutators.qtpl index ff7cbf0..c9d5394 100644 --- a/views/mutators.qtpl +++ b/views/mutators.qtpl @@ -7,9 +7,12 @@

Edit {%s util.BeautifulName(hyphaName) %}

{%s= warning %} +
+ +
- +
@@ -17,6 +20,7 @@
+ {% endfunc %} {% func PreviewHTML(rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) %} diff --git a/views/mutators.qtpl.go b/views/mutators.qtpl.go index 23ac4ea..6ea154a 100644 --- a/views/mutators.qtpl.go +++ b/views/mutators.qtpl.go @@ -44,133 +44,137 @@ func StreamEditHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, text qw422016.N().S(warning) //line views/mutators.qtpl:9 qw422016.N().S(` +
+ +
-
Cancel
+ `) -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 } -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 func WriteEditHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string) { -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 StreamEditHTML(qw422016, rq, hyphaName, textAreaFill, warning) -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 qt422016.ReleaseWriter(qw422016) -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 } -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 func EditHTML(rq *http.Request, hyphaName, textAreaFill, warning string) string { -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 qb422016 := qt422016.AcquireByteBuffer() -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 WriteEditHTML(qb422016, rq, hyphaName, textAreaFill, warning) -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 qs422016 := string(qb422016.B) -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 qt422016.ReleaseByteBuffer(qb422016) -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 return qs422016 -//line views/mutators.qtpl:20 +//line views/mutators.qtpl:24 } -//line views/mutators.qtpl:22 +//line views/mutators.qtpl:26 func StreamPreviewHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) { -//line views/mutators.qtpl:22 +//line views/mutators.qtpl:26 qw422016.N().S(` `) -//line views/mutators.qtpl:23 +//line views/mutators.qtpl:27 qw422016.N().S(NavHTML(rq, hyphaName, "edit")) -//line views/mutators.qtpl:23 +//line views/mutators.qtpl:27 qw422016.N().S(`

Edit `) -//line views/mutators.qtpl:26 +//line views/mutators.qtpl:30 qw422016.E().S(util.BeautifulName(hyphaName)) -//line views/mutators.qtpl:26 +//line views/mutators.qtpl:30 qw422016.N().S(` (preview)

`) -//line views/mutators.qtpl:27 +//line views/mutators.qtpl:31 qw422016.N().S(warning) -//line views/mutators.qtpl:27 +//line views/mutators.qtpl:31 qw422016.N().S(`

Cancel

Note that the hypha is not saved yet. You can preview the changes ↓

`) -//line views/mutators.qtpl:37 +//line views/mutators.qtpl:41 qw422016.N().S(renderedPage) -//line views/mutators.qtpl:37 +//line views/mutators.qtpl:41 qw422016.N().S(`
`) -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 } -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 func WritePreviewHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) { -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 StreamPreviewHTML(qw422016, rq, hyphaName, textAreaFill, warning, renderedPage) -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 qt422016.ReleaseWriter(qw422016) -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 } -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 func PreviewHTML(rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) string { -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 qb422016 := qt422016.AcquireByteBuffer() -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 WritePreviewHTML(qb422016, rq, hyphaName, textAreaFill, warning, renderedPage) -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 qs422016 := string(qb422016.B) -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 qt422016.ReleaseByteBuffer(qb422016) -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 return qs422016 -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:44 } diff --git a/views/stuff.qtpl.go b/views/stuff.qtpl.go index 170db4c..b036779 100644 --- a/views/stuff.qtpl.go +++ b/views/stuff.qtpl.go @@ -352,7 +352,7 @@ func StreamAboutHTML(qw422016 *qt422016.Writer) { //line views/stuff.qtpl:98 qw422016.N().S(`