mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2024-10-30 11:46:16 +00:00
Add more buttons to the toolbar: headings, code
This commit is contained in:
parent
04f3372687
commit
bfeb341341
@ -463,24 +463,51 @@ function selectionWrapper(cursorPosition, prefix, postfix = null, el = editTexta
|
||||
}
|
||||
}
|
||||
|
||||
const wrapBold = selectionWrapper(2, '**'),
|
||||
wrapItalic = selectionWrapper(2, '//'),
|
||||
const wrapBold = selectionWrapper(2, '**'),
|
||||
wrapItalic = selectionWrapper(2, '//'),
|
||||
wrapMonospace = selectionWrapper(1, '`)
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S("`")
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S(`'),
|
||||
wrapHighlighted = selectionWrapper(2, '!!'),
|
||||
wrapLifted = selectionWrapper(1, '^'),
|
||||
wrapLowered = selectionWrapper(2, ',,'),
|
||||
wrapStrikethrough = selectionWrapper(2, '~~'),
|
||||
qw422016.N().S(`'),
|
||||
wrapHighlighted = selectionWrapper(2, '!!'),
|
||||
wrapLifted = selectionWrapper(1, '^'),
|
||||
wrapLowered = selectionWrapper(2, ',,'),
|
||||
wrapStrikethrough = selectionWrapper(2, '~~'),
|
||||
wrapLink = selectionWrapper(2, '[[', ']]')
|
||||
|
||||
const insertHorizontalBar = textInserter('----\n'),
|
||||
insertImgBlock = textInserter('img {\n\t\n}\n', 7),
|
||||
insertImgBlock = textInserter('img {\n\t\n}\n', 7),
|
||||
insertTableBlock = textInserter('table {\n\t\n}\n', 9),
|
||||
insertRocket = textInserter('=> '),
|
||||
insertXcl = textInserter('<= ')
|
||||
insertXcl = textInserter('<= '),
|
||||
insertHeading2 = textInserter('## '),
|
||||
insertHeading3 = textInserter('### '),
|
||||
insertCodeblock = textInserter('`)
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S("`")
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S(``)
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S("`")
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S(``)
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S("`")
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S(`\n\n`)
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S("`")
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S(``)
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S("`")
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S(``)
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S("`")
|
||||
//line assets/assets.qtpl:14
|
||||
qw422016.N().S(`\n', 4)
|
||||
|
||||
function insertDate() {
|
||||
let date = new Date().toISOString().split('T')[0]
|
||||
|
@ -38,20 +38,23 @@ function selectionWrapper(cursorPosition, prefix, postfix = null, el = editTexta
|
||||
}
|
||||
}
|
||||
|
||||
const wrapBold = selectionWrapper(2, '**'),
|
||||
wrapItalic = selectionWrapper(2, '//'),
|
||||
wrapMonospace = selectionWrapper(1, '`'),
|
||||
wrapHighlighted = selectionWrapper(2, '!!'),
|
||||
wrapLifted = selectionWrapper(1, '^'),
|
||||
wrapLowered = selectionWrapper(2, ',,'),
|
||||
wrapStrikethrough = selectionWrapper(2, '~~'),
|
||||
const wrapBold = selectionWrapper(2, '**'),
|
||||
wrapItalic = selectionWrapper(2, '//'),
|
||||
wrapMonospace = selectionWrapper(1, '`'),
|
||||
wrapHighlighted = selectionWrapper(2, '!!'),
|
||||
wrapLifted = selectionWrapper(1, '^'),
|
||||
wrapLowered = selectionWrapper(2, ',,'),
|
||||
wrapStrikethrough = selectionWrapper(2, '~~'),
|
||||
wrapLink = selectionWrapper(2, '[[', ']]')
|
||||
|
||||
const insertHorizontalBar = textInserter('----\n'),
|
||||
insertImgBlock = textInserter('img {\n\t\n}\n', 7),
|
||||
insertImgBlock = textInserter('img {\n\t\n}\n', 7),
|
||||
insertTableBlock = textInserter('table {\n\t\n}\n', 9),
|
||||
insertRocket = textInserter('=> '),
|
||||
insertXcl = textInserter('<= ')
|
||||
insertXcl = textInserter('<= '),
|
||||
insertHeading2 = textInserter('## '),
|
||||
insertHeading3 = textInserter('### '),
|
||||
insertCodeblock = textInserter('```\n\n```\n', 4)
|
||||
|
||||
function insertDate() {
|
||||
let date = new Date().toISOString().split('T')[0]
|
||||
|
@ -12,6 +12,8 @@
|
||||
display string
|
||||
}{
|
||||
{"link", "wrapLink()", "[[link]]"},
|
||||
{"heading2", "insertHeading2()", "## heading"},
|
||||
{"heading3", "insertHeading3()", "### heading"},
|
||||
{"bold", "wrapBold()", "<b>**Bold**</b>"},
|
||||
{"italic", "wrapItalic()", "<i>//Italic//</i>"},
|
||||
{"highlighted", "wrapHighlighted()", "<mark>!!Highlight!!</mark>"},
|
||||
@ -24,6 +26,7 @@
|
||||
{"img", "insertImgBlock()", "<code>img {}</code>"},
|
||||
{"table", "insertTableBlock()", "<code>table {}</code>"},
|
||||
{"hr", "insertHorizontalBar()", "Horizontal bar"},
|
||||
{"codeblock", "insertCodeblock()", "Code block"},
|
||||
} %}
|
||||
<button
|
||||
class="edit-toolbar__btn edit-toolbar__{%s el.class %}"
|
||||
|
@ -41,6 +41,8 @@ func StreamToolbar(qw422016 *qt422016.Writer, u *user.User) {
|
||||
display string
|
||||
}{
|
||||
{"link", "wrapLink()", "[[link]]"},
|
||||
{"heading2", "insertHeading2()", "## heading"},
|
||||
{"heading3", "insertHeading3()", "### heading"},
|
||||
{"bold", "wrapBold()", "<b>**Bold**</b>"},
|
||||
{"italic", "wrapItalic()", "<i>//Italic//</i>"},
|
||||
{"highlighted", "wrapHighlighted()", "<mark>!!Highlight!!</mark>"},
|
||||
@ -53,37 +55,38 @@ func StreamToolbar(qw422016 *qt422016.Writer, u *user.User) {
|
||||
{"img", "insertImgBlock()", "<code>img {}</code>"},
|
||||
{"table", "insertTableBlock()", "<code>table {}</code>"},
|
||||
{"hr", "insertHorizontalBar()", "Horizontal bar"},
|
||||
{"codeblock", "insertCodeblock()", "Code block"},
|
||||
} {
|
||||
//line views/mutators.qtpl:27
|
||||
//line views/mutators.qtpl:30
|
||||
qw422016.N().S(`
|
||||
<button
|
||||
class="edit-toolbar__btn edit-toolbar__`)
|
||||
//line views/mutators.qtpl:29
|
||||
//line views/mutators.qtpl:32
|
||||
qw422016.E().S(el.class)
|
||||
//line views/mutators.qtpl:29
|
||||
//line views/mutators.qtpl:32
|
||||
qw422016.N().S(`"
|
||||
onclick="`)
|
||||
//line views/mutators.qtpl:30
|
||||
//line views/mutators.qtpl:33
|
||||
qw422016.E().S(el.onclick)
|
||||
//line views/mutators.qtpl:30
|
||||
//line views/mutators.qtpl:33
|
||||
qw422016.N().S(`">
|
||||
`)
|
||||
//line views/mutators.qtpl:31
|
||||
//line views/mutators.qtpl:34
|
||||
qw422016.N().S(el.display)
|
||||
//line views/mutators.qtpl:31
|
||||
//line views/mutators.qtpl:34
|
||||
qw422016.N().S(`
|
||||
</button>
|
||||
`)
|
||||
//line views/mutators.qtpl:33
|
||||
//line views/mutators.qtpl:36
|
||||
}
|
||||
//line views/mutators.qtpl:33
|
||||
//line views/mutators.qtpl:36
|
||||
qw422016.N().S(`
|
||||
</section>
|
||||
<p class="edit-toolbar__ad"><a href="https://mycorrhiza.lesarbr.es/hypha/mycomarkup">Learn more</a> about mycomarkup</p>
|
||||
<h2 class="edit-toolbar__title layout-card__title">Actions</h2>
|
||||
<section class="edit-toolbar__buttons">
|
||||
`)
|
||||
//line views/mutators.qtpl:38
|
||||
//line views/mutators.qtpl:41
|
||||
for _, el := range []struct {
|
||||
class string
|
||||
onclick string
|
||||
@ -91,34 +94,34 @@ func StreamToolbar(qw422016 *qt422016.Writer, u *user.User) {
|
||||
}{
|
||||
{"date", "insertDate()", "Insert current date"},
|
||||
} {
|
||||
//line views/mutators.qtpl:44
|
||||
//line views/mutators.qtpl:47
|
||||
qw422016.N().S(`
|
||||
<button
|
||||
class="edit-toolbar__btn edit-toolbar__`)
|
||||
//line views/mutators.qtpl:46
|
||||
//line views/mutators.qtpl:49
|
||||
qw422016.E().S(el.class)
|
||||
//line views/mutators.qtpl:46
|
||||
//line views/mutators.qtpl:49
|
||||
qw422016.N().S(`"
|
||||
onclick="`)
|
||||
//line views/mutators.qtpl:47
|
||||
//line views/mutators.qtpl:50
|
||||
qw422016.E().S(el.onclick)
|
||||
//line views/mutators.qtpl:47
|
||||
//line views/mutators.qtpl:50
|
||||
qw422016.N().S(`">
|
||||
`)
|
||||
//line views/mutators.qtpl:48
|
||||
//line views/mutators.qtpl:51
|
||||
qw422016.N().S(el.display)
|
||||
//line views/mutators.qtpl:48
|
||||
//line views/mutators.qtpl:51
|
||||
qw422016.N().S(`
|
||||
</button>
|
||||
`)
|
||||
//line views/mutators.qtpl:50
|
||||
//line views/mutators.qtpl:53
|
||||
}
|
||||
//line views/mutators.qtpl:50
|
||||
//line views/mutators.qtpl:53
|
||||
qw422016.N().S(`
|
||||
`)
|
||||
//line views/mutators.qtpl:51
|
||||
//line views/mutators.qtpl:54
|
||||
if u.Group != "anon" {
|
||||
//line views/mutators.qtpl:51
|
||||
//line views/mutators.qtpl:54
|
||||
qw422016.N().S(`
|
||||
<button
|
||||
class="edit-toolbar__btn edit-toolbar__user-link"
|
||||
@ -126,201 +129,201 @@ func StreamToolbar(qw422016 *qt422016.Writer, u *user.User) {
|
||||
Link yourself
|
||||
</button>
|
||||
`)
|
||||
//line views/mutators.qtpl:57
|
||||
//line views/mutators.qtpl:60
|
||||
}
|
||||
//line views/mutators.qtpl:57
|
||||
//line views/mutators.qtpl:60
|
||||
qw422016.N().S(`
|
||||
</section>
|
||||
</aside>
|
||||
<script src="/static/toolbar.js"></script>
|
||||
`)
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
}
|
||||
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
func WriteToolbar(qq422016 qtio422016.Writer, u *user.User) {
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
StreamToolbar(qw422016, u)
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
}
|
||||
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
func Toolbar(u *user.User) string {
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
WriteToolbar(qb422016, u)
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
return qs422016
|
||||
//line views/mutators.qtpl:61
|
||||
//line views/mutators.qtpl:64
|
||||
}
|
||||
|
||||
//line views/mutators.qtpl:63
|
||||
//line views/mutators.qtpl:66
|
||||
func StreamEditHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string) {
|
||||
//line views/mutators.qtpl:63
|
||||
//line views/mutators.qtpl:66
|
||||
qw422016.N().S(`
|
||||
`)
|
||||
//line views/mutators.qtpl:64
|
||||
//line views/mutators.qtpl:67
|
||||
qw422016.N().S(NavHTML(rq, hyphaName, "edit"))
|
||||
//line views/mutators.qtpl:64
|
||||
//line views/mutators.qtpl:67
|
||||
qw422016.N().S(`
|
||||
<div class="layout">
|
||||
<main class="main-width edit edit_no-preview">
|
||||
<h1 class="edit__title">Edit `)
|
||||
//line views/mutators.qtpl:67
|
||||
//line views/mutators.qtpl:70
|
||||
qw422016.E().S(util.BeautifulName(hyphaName))
|
||||
//line views/mutators.qtpl:67
|
||||
//line views/mutators.qtpl:70
|
||||
qw422016.N().S(`</h1>
|
||||
`)
|
||||
//line views/mutators.qtpl:68
|
||||
//line views/mutators.qtpl:71
|
||||
qw422016.N().S(warning)
|
||||
//line views/mutators.qtpl:68
|
||||
//line views/mutators.qtpl:71
|
||||
qw422016.N().S(`
|
||||
<form method="post" class="edit-form"
|
||||
action="/upload-text/`)
|
||||
//line views/mutators.qtpl:70
|
||||
//line views/mutators.qtpl:73
|
||||
qw422016.E().S(hyphaName)
|
||||
//line views/mutators.qtpl:70
|
||||
//line views/mutators.qtpl:73
|
||||
qw422016.N().S(`">
|
||||
<textarea name="text" class="edit-form__textarea">`)
|
||||
//line views/mutators.qtpl:71
|
||||
//line views/mutators.qtpl:74
|
||||
qw422016.E().S(textAreaFill)
|
||||
//line views/mutators.qtpl:71
|
||||
//line views/mutators.qtpl:74
|
||||
qw422016.N().S(`</textarea>
|
||||
<br/>
|
||||
<input type="submit" name="action" value="Save" class="edit-form__save"/>
|
||||
<input type="submit" name="action" value="Preview" class="edit-form__preview">
|
||||
<a href="/page/`)
|
||||
//line views/mutators.qtpl:75
|
||||
//line views/mutators.qtpl:78
|
||||
qw422016.E().S(hyphaName)
|
||||
//line views/mutators.qtpl:75
|
||||
//line views/mutators.qtpl:78
|
||||
qw422016.N().S(`" class="edit-form__cancel">Cancel</a>
|
||||
</form>
|
||||
</main>
|
||||
`)
|
||||
//line views/mutators.qtpl:78
|
||||
//line views/mutators.qtpl:81
|
||||
qw422016.N().S(Toolbar(user.FromRequest(rq)))
|
||||
//line views/mutators.qtpl:78
|
||||
//line views/mutators.qtpl:81
|
||||
qw422016.N().S(`
|
||||
</div>
|
||||
`)
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
}
|
||||
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
func WriteEditHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string) {
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
StreamEditHTML(qw422016, rq, hyphaName, textAreaFill, warning)
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
}
|
||||
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
func EditHTML(rq *http.Request, hyphaName, textAreaFill, warning string) string {
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
WriteEditHTML(qb422016, rq, hyphaName, textAreaFill, warning)
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
return qs422016
|
||||
//line views/mutators.qtpl:80
|
||||
//line views/mutators.qtpl:83
|
||||
}
|
||||
|
||||
//line views/mutators.qtpl:82
|
||||
//line views/mutators.qtpl:85
|
||||
func StreamPreviewHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) {
|
||||
//line views/mutators.qtpl:82
|
||||
//line views/mutators.qtpl:85
|
||||
qw422016.N().S(`
|
||||
`)
|
||||
//line views/mutators.qtpl:83
|
||||
//line views/mutators.qtpl:86
|
||||
qw422016.N().S(NavHTML(rq, hyphaName, "edit"))
|
||||
//line views/mutators.qtpl:83
|
||||
//line views/mutators.qtpl:86
|
||||
qw422016.N().S(`
|
||||
<div class="layout">
|
||||
<main class="main-width edit edit_with-preview">
|
||||
<h1>Edit `)
|
||||
//line views/mutators.qtpl:86
|
||||
//line views/mutators.qtpl:89
|
||||
qw422016.E().S(util.BeautifulName(hyphaName))
|
||||
//line views/mutators.qtpl:86
|
||||
//line views/mutators.qtpl:89
|
||||
qw422016.N().S(` (preview)</h1>
|
||||
`)
|
||||
//line views/mutators.qtpl:87
|
||||
//line views/mutators.qtpl:90
|
||||
qw422016.N().S(warning)
|
||||
//line views/mutators.qtpl:87
|
||||
//line views/mutators.qtpl:90
|
||||
qw422016.N().S(`
|
||||
<form method="post" class="edit-form"
|
||||
action="/upload-text/`)
|
||||
//line views/mutators.qtpl:89
|
||||
//line views/mutators.qtpl:92
|
||||
qw422016.E().S(hyphaName)
|
||||
//line views/mutators.qtpl:89
|
||||
//line views/mutators.qtpl:92
|
||||
qw422016.N().S(`">
|
||||
<textarea class="edit-form__textarea" name="text">`)
|
||||
//line views/mutators.qtpl:90
|
||||
//line views/mutators.qtpl:93
|
||||
qw422016.E().S(textAreaFill)
|
||||
//line views/mutators.qtpl:90
|
||||
//line views/mutators.qtpl:93
|
||||
qw422016.N().S(`</textarea>
|
||||
<br/>
|
||||
<input type="submit" name="action" value="Save" class="edit-form__save"/>
|
||||
<input type="submit" name="action" value="Preview" class="edit-form__preview">
|
||||
<a href="/page/`)
|
||||
//line views/mutators.qtpl:94
|
||||
//line views/mutators.qtpl:97
|
||||
qw422016.E().S(hyphaName)
|
||||
//line views/mutators.qtpl:94
|
||||
//line views/mutators.qtpl:97
|
||||
qw422016.N().S(`" class="edit-form__cancel">Cancel</a>
|
||||
</form>
|
||||
<p class="warning">Note that the hypha is not saved yet. You can preview the changes ↓</p>
|
||||
<article class="edit__preview">`)
|
||||
//line views/mutators.qtpl:97
|
||||
//line views/mutators.qtpl:100
|
||||
qw422016.N().S(renderedPage)
|
||||
//line views/mutators.qtpl:97
|
||||
//line views/mutators.qtpl:100
|
||||
qw422016.N().S(`</article>
|
||||
</main>
|
||||
`)
|
||||
//line views/mutators.qtpl:99
|
||||
//line views/mutators.qtpl:102
|
||||
qw422016.N().S(Toolbar(user.FromRequest(rq)))
|
||||
//line views/mutators.qtpl:99
|
||||
//line views/mutators.qtpl:102
|
||||
qw422016.N().S(`
|
||||
</div>
|
||||
`)
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
}
|
||||
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
func WritePreviewHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) {
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
StreamPreviewHTML(qw422016, rq, hyphaName, textAreaFill, warning, renderedPage)
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
}
|
||||
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
func PreviewHTML(rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) string {
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
WritePreviewHTML(qb422016, rq, hyphaName, textAreaFill, warning, renderedPage)
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
return qs422016
|
||||
//line views/mutators.qtpl:101
|
||||
//line views/mutators.qtpl:104
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user