mirror of
				https://github.com/osmarks/mycorrhiza.git
				synced 2025-10-31 07:33:00 +00:00 
			
		
		
		
	Migrate /edit to html/template
This commit is contained in:
		 Umar Getagazov
					Umar Getagazov
				
			
				
					committed by
					
						 bouncepaw
						bouncepaw
					
				
			
			
				
	
			
			
			 bouncepaw
						bouncepaw
					
				
			
						parent
						
							caa1bcf8bb
						
					
				
				
					commit
					4ede2783c5
				
			| @@ -2,16 +2,51 @@ package hypview | ||||
|  | ||||
| import ( | ||||
| 	"embed" | ||||
| 	"github.com/bouncepaw/mycorrhiza/cfg" | ||||
| 	"github.com/bouncepaw/mycorrhiza/viewutil" | ||||
| 	"html/template" | ||||
| 	"log" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/bouncepaw/mycorrhiza/cfg" | ||||
| 	"github.com/bouncepaw/mycorrhiza/viewutil" | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	//go:embed *.html | ||||
| 	fs            embed.FS | ||||
| 	ruTranslation = ` | ||||
| {{define "editing hypha"}}Редактирование {{beautifulName .}}{{end}} | ||||
| {{define "editing [[hypha]]"}}Редактирование <a href="/hypha/{{.}}">{{beautifulName .}}</a>{{end}} | ||||
| {{define "you're creating a new hypha"}}Вы создаёте новую гифу.{{end}} | ||||
| {{define "describe your changes"}}Опишите ваши правки{{end}} | ||||
| {{define "save"}}Сохранить{{end}} | ||||
| {{define "preview"}}Предпросмотр{{end}} | ||||
| {{define "previewing hypha"}}Предпросмотр «{{beautifulName .}}»{{end}} | ||||
| {{define "preview tip"}}Заметьте, эта гифа ещё не сохранена. Вот её предпросмотр:{{end}} | ||||
|  | ||||
| {{define "markup"}}Разметка{{end}} | ||||
| {{define "link"}}Ссылка{{end}} | ||||
| {{define "link title"}}Текст{{end}} | ||||
| {{define "heading"}}Заголовок{{end}} | ||||
| {{define "bold"}}Жирный{{end}} | ||||
| {{define "italic"}}Курсив{{end}} | ||||
| {{define "highlight"}}Выделение{{end}} | ||||
| {{define "underline"}}Подчеркивание{{end}} | ||||
| {{define "mono"}}Моноширинный{{end}} | ||||
| {{define "super"}}Надстрочный{{end}} | ||||
| {{define "sub"}}Подстрочный{{end}} | ||||
| {{define "strike"}}Зачёркнутый{{end}} | ||||
| {{define "rocket"}}Ссылка-ракета{{end}} | ||||
| {{define "transclude"}}Трансклюзия{{end}} | ||||
| {{define "hr"}}Гориз. черта{{end}} | ||||
| {{define "code"}}Код-блок{{end}} | ||||
| {{define "bullets"}}Маркир. список{{end}} | ||||
| {{define "numbers"}}Нумер. список{{end}} | ||||
| {{define "mycomarkup help"}}<a href="/help/en/mycomarkup" class="shy-link">Подробнее</a> о микоразметке{{end}} | ||||
| {{define "actions"}}Действия{{end}} | ||||
| {{define "current date"}}Текущая дата{{end}} | ||||
| {{define "current time"}}Текущее время{{end}} | ||||
| {{define "selflink"}}Ссылка на вас{{end}} | ||||
|  | ||||
| {{define "empty heading"}}Эта гифа не существует{{end}} | ||||
| {{define "empty no rights"}}У вас нет прав для создания новых гиф. Вы можете:{{end}} | ||||
| {{define "empty log in"}}Войти в свою учётную запись, если она у вас есть{{end}} | ||||
| @@ -37,6 +72,7 @@ var ( | ||||
| {{define "leave redirections"}}Оставить перенаправления{{end}} | ||||
| ` | ||||
| 	chainNaviTitle   viewutil.Chain | ||||
| 	chainEditHypha   viewutil.Chain | ||||
| 	chainEmptyHypha  viewutil.Chain | ||||
| 	chainDeleteHypha viewutil.Chain | ||||
| 	chainRenameHypha viewutil.Chain | ||||
| @@ -44,11 +80,35 @@ var ( | ||||
|  | ||||
| func Init() { | ||||
| 	chainNaviTitle = viewutil.CopyEnRuWith(fs, "view_navititle.html", "") | ||||
| 	chainEditHypha = viewutil.CopyEnRuWith(fs, "view_edit.html", ruTranslation) | ||||
| 	chainEmptyHypha = viewutil.CopyEnRuWith(fs, "view_empty_hypha.html", ruTranslation) | ||||
| 	chainDeleteHypha = viewutil.CopyEnRuWith(fs, "view_delete.html", ruTranslation) | ||||
| 	chainRenameHypha = viewutil.CopyEnRuWith(fs, "view_rename.html", ruTranslation) | ||||
| } | ||||
|  | ||||
| type editData struct { | ||||
| 	*viewutil.BaseData | ||||
| 	HyphaName string | ||||
| 	IsNew     bool | ||||
| 	Content   string | ||||
| 	Message   string | ||||
| 	Preview   template.HTML | ||||
| } | ||||
|  | ||||
| func EditHypha(meta viewutil.Meta, hyphaName string, isNew bool, content string, message string, preview template.HTML) { | ||||
| 	viewutil.ExecutePage(meta, chainEditHypha, editData{ | ||||
| 		BaseData: &viewutil.BaseData{ | ||||
| 			Addr:        "/edit/" + hyphaName, | ||||
| 			EditScripts: cfg.EditScripts, | ||||
| 		}, | ||||
| 		HyphaName: hyphaName, | ||||
| 		IsNew:     isNew, | ||||
| 		Content:   content, | ||||
| 		Message:   message, | ||||
| 		Preview:   preview, | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| type deleteRenameData struct { | ||||
| 	*viewutil.BaseData | ||||
| 	HyphaName string | ||||
|   | ||||
| @@ -1,123 +0,0 @@ | ||||
| {% import "fmt" %} | ||||
| {% import "net/http" %} | ||||
|  | ||||
| {% import "github.com/bouncepaw/mycorrhiza/cfg" %} | ||||
| {% import "github.com/bouncepaw/mycorrhiza/l18n" %} | ||||
| {% import "github.com/bouncepaw/mycorrhiza/user" %} | ||||
|  | ||||
| {% func Toolbar(u *user.User, lc *l18n.Localizer) %} | ||||
| <aside class="edit-toolbar markup-toolbar layout-card"> | ||||
| 	<h2 class="edit-toolbar__title layout-card__title">{%s lc.Get("edit.markup")%}</h2> | ||||
| 	<section class="edit-toolbar__buttons"> | ||||
| 	{% for _, el := range []struct{ | ||||
| 			class string | ||||
| 			display string | ||||
| 		}{ | ||||
| 			{"link", fmt.Sprintf("[[%s]]", lc.Get("edit.link"))}, | ||||
| 			{"titlelink", fmt.Sprintf("[[%s | %s]]", lc.Get("edit.link"), lc.Get("edit.link_title"))}, | ||||
| 			{"heading1", fmt.Sprintf("= %s", lc.Get("edit.heading"))}, | ||||
| 			{"heading2", fmt.Sprintf("== %s", lc.Get("edit.heading"))}, | ||||
| 			{"bold", fmt.Sprintf("<b>**%s**</b>", lc.Get("edit.bold"))}, | ||||
| 			{"italic", fmt.Sprintf("<i>//%s//</i>", lc.Get("edit.italic"))}, | ||||
| 			{"highlighted", fmt.Sprintf("<mark>++%s++</mark>", lc.Get("edit.highlight"))}, | ||||
| 			{"underline", fmt.Sprintf("<u>__%s__</u>", lc.Get("edit.underline"))}, | ||||
| 			{"monospace", fmt.Sprintf("<code>`%s`</code>", lc.Get("edit.mono"))}, | ||||
| 			{"lifted", fmt.Sprintf("<sup>^^%s^^</sup>", lc.Get("edit.super"))}, // inconsistent names: lifted, supertext. How cute ❤️ | ||||
| 			{"lowered", fmt.Sprintf("<sub>,,%s,,</sub>", lc.Get("edit.sub"))}, | ||||
| 			{"strikethrough", fmt.Sprintf("<strike>~~%s~~</strike>", lc.Get("edit.strike"))}, | ||||
| 			{"rocket", "=> " + lc.Get("edit.rocket")}, | ||||
| 			{"xcl", "<= " + lc.Get("edit.transclude")}, | ||||
| 			{"img", "<code>img {}</code>"}, | ||||
| 			{"table", "<code>table {}</code>"}, | ||||
| 			{"hr", lc.Get("edit.hr")}, | ||||
| 			{"codeblock", lc.Get("edit.code")}, | ||||
| 			{"bulletedlist", "* " + lc.Get("edit.bullets")}, | ||||
| 			{"numberedlist", "*. " + lc.Get("edit.numbers")}, | ||||
| 		} %} | ||||
| 		<button class="btn edit-toolbar__btn edit-toolbar__{%s el.class %}"> | ||||
| 			{%s= el.display %} | ||||
| 		</button> | ||||
| 	{% endfor %} | ||||
| 	</section> | ||||
| 	<p class="edit-toolbar__ad">{%s= lc.Get("edit.help", &l18n.Replacements{"link": fmt.Sprintf("<a href=\"/help/en/mycomarkup\" target=\"_blank\" class=\"shy-link\">%s</a>", lc.Get("edit.help_link"))}) %}</p> | ||||
| </aside> | ||||
| <aside class="edit-toolbar action-toolbar layout-card"> | ||||
| 	<h2 class="edit-toolbar__title layout-card__title">{%s lc.Get("edit.actions")%}</h2> | ||||
| 	<section class="edit-toolbar__buttons"> | ||||
| 	{% for _, el := range []struct{ | ||||
| 			class string | ||||
| 			display string | ||||
| 		}{ | ||||
| 			{"date", lc.Get("edit.date")}, | ||||
| 			{"time", lc.Get("edit.time")}, | ||||
| 		} %} | ||||
| 		<button class="btn edit-toolbar__btn edit-toolbar__{%s el.class %}"> | ||||
| 			{%s= el.display %} | ||||
| 		</button> | ||||
| 	{% endfor %} | ||||
| 	{% if u.Group != "anon" %} | ||||
| 		<button class="btn edit-toolbar__btn edit-toolbar__user-link"> | ||||
| 			{%s lc.Get("edit.selflink") %} | ||||
| 		</button> | ||||
| 	{% endif %} | ||||
| 	</section> | ||||
| </aside> | ||||
| <script src="/static/toolbar.js"></script> | ||||
| {% endfunc %} | ||||
|  | ||||
| {% func Editor(rq *http.Request, hyphaName, textAreaFill, warning string) %} | ||||
| {% code | ||||
| 	lc := l18n.FromRequest(rq) | ||||
| %} | ||||
| <main class="main-width edit edit_no-preview"> | ||||
| 	<form method="post" class="edit-form" | ||||
| 			action="/upload-text/{%s hyphaName %}"> | ||||
| 		<h1 class="edit__title">{%s= fmt.Sprintf(lc.Get("edit.title"), beautifulLink(hyphaName)) %}</h1> | ||||
| 		{%s= warning %} | ||||
| 		<textarea name="text" class="edit-form__textarea" autofocus>{%s textAreaFill %}</textarea> | ||||
| 		<p class="edit-form__message-zone"> | ||||
| 			<input id="text" type="text" name="message" class="edit-form__message" placeholder="{%s lc.Get("edit.tag") %}" aria-label="{%s lc.Get("edit.tag") %}"> | ||||
| 		</p> | ||||
| 		<p class="edit-form__buttons"> | ||||
| 			<button type="submit" name="action" class="btn btn_accent edit-form__save" value="Save">{%s lc.Get("edit.save") %}</button> | ||||
| 			<button type="submit" name="action" class="btn edit-form__preview" value="Preview">{%s lc.Get("edit.preview") %}</button> | ||||
| 			<a href="/hypha/{%s hyphaName %}" class="btn btn_weak">{%s lc.Get("ui.cancel") %}</a> | ||||
| 		</p> | ||||
| 	</form> | ||||
| </main> | ||||
| {%s= Toolbar(user.FromRequest(rq), lc) %} | ||||
| {%= editScripts() %} | ||||
| {% endfunc %} | ||||
|  | ||||
| {% func Preview(rq *http.Request, hyphaName, textAreaFill, message, warning string, renderedPage string) %} | ||||
| {% code | ||||
| 	lc := l18n.FromRequest(rq) | ||||
| %} | ||||
| <main class="main-width edit edit_with-preview"> | ||||
| 	<form method="post" class="edit-form" | ||||
| 			action="/upload-text/{%s hyphaName %}"> | ||||
| 		<h1 class="edit__title">{%s= fmt.Sprintf(lc.Get("edit.title"), beautifulLink(hyphaName)) %}</h1> | ||||
| 		{%s= warning %} | ||||
| 		<textarea name="text" class="edit-form__textarea" autofocus>{%s textAreaFill %}</textarea> | ||||
| 		<p class="edit-form__message-zone"> | ||||
|         	<input id="text" type="text" name="message" class="edit-form__message" placeholder="{%s lc.Get("edit.tag") %}" aria-label="{%s lc.Get("edit.tag") %}"> | ||||
|         </p> | ||||
| 		<p class="edit-form__buttons"> | ||||
|             <button type="submit" name="action" class="btn btn_accent edit-form__save" value="Save">{%s lc.Get("edit.save") %}</button> | ||||
|             <button type="submit" name="action" class="btn edit-form__preview" value="Preview">{%s lc.Get("edit.preview") %}</button> | ||||
|             <a href="/hypha/{%s hyphaName %}" class="btn btn_weak">{%s lc.Get("ui.cancel") %}</a> | ||||
|         </p> | ||||
| 	</form> | ||||
| 	<p class="warning">{%s lc.Get("edit.preview_tip") %}</p> | ||||
| 	<article class="edit__preview">{%s= renderedPage %}</article> | ||||
| </main> | ||||
| {%s= Toolbar(user.FromRequest(rq), lc) %} | ||||
| {%= editScripts() %} | ||||
| {% endfunc %} | ||||
|  | ||||
| {% func editScripts() %} | ||||
| <script src="/static/editor.js"></script> | ||||
| {% for _, scriptPath := range cfg.EditScripts %} | ||||
| <script src="{%s scriptPath %}"></script> | ||||
| {% endfor %} | ||||
| {% endfunc %} | ||||
| @@ -1,452 +0,0 @@ | ||||
| // Code generated by qtc from "mutators.qtpl". DO NOT EDIT. | ||||
| // See https://github.com/valyala/quicktemplate for details. | ||||
|  | ||||
| //line hypview/mutators.qtpl:1 | ||||
| package hypview | ||||
|  | ||||
| //line hypview/mutators.qtpl:1 | ||||
| import "fmt" | ||||
|  | ||||
| //line hypview/mutators.qtpl:2 | ||||
| import "net/http" | ||||
|  | ||||
| //line hypview/mutators.qtpl:4 | ||||
| import "github.com/bouncepaw/mycorrhiza/cfg" | ||||
|  | ||||
| //line hypview/mutators.qtpl:5 | ||||
| import "github.com/bouncepaw/mycorrhiza/l18n" | ||||
|  | ||||
| //line hypview/mutators.qtpl:6 | ||||
| import "github.com/bouncepaw/mycorrhiza/user" | ||||
|  | ||||
| //line hypview/mutators.qtpl:8 | ||||
| import ( | ||||
| 	qtio422016 "io" | ||||
|  | ||||
| 	qt422016 "github.com/valyala/quicktemplate" | ||||
| ) | ||||
|  | ||||
| //line hypview/mutators.qtpl:8 | ||||
| var ( | ||||
| 	_ = qtio422016.Copy | ||||
| 	_ = qt422016.AcquireByteBuffer | ||||
| ) | ||||
|  | ||||
| //line hypview/mutators.qtpl:8 | ||||
| func StreamToolbar(qw422016 *qt422016.Writer, u *user.User, lc *l18n.Localizer) { | ||||
| //line hypview/mutators.qtpl:8 | ||||
| 	qw422016.N().S(` | ||||
| <aside class="edit-toolbar markup-toolbar layout-card"> | ||||
| 	<h2 class="edit-toolbar__title layout-card__title">`) | ||||
| //line hypview/mutators.qtpl:10 | ||||
| 	qw422016.E().S(lc.Get("edit.markup")) | ||||
| //line hypview/mutators.qtpl:10 | ||||
| 	qw422016.N().S(`</h2> | ||||
| 	<section class="edit-toolbar__buttons"> | ||||
| 	`) | ||||
| //line hypview/mutators.qtpl:12 | ||||
| 	for _, el := range []struct { | ||||
| 		class   string | ||||
| 		display string | ||||
| 	}{ | ||||
| 		{"link", fmt.Sprintf("[[%s]]", lc.Get("edit.link"))}, | ||||
| 		{"titlelink", fmt.Sprintf("[[%s | %s]]", lc.Get("edit.link"), lc.Get("edit.link_title"))}, | ||||
| 		{"heading1", fmt.Sprintf("= %s", lc.Get("edit.heading"))}, | ||||
| 		{"heading2", fmt.Sprintf("== %s", lc.Get("edit.heading"))}, | ||||
| 		{"bold", fmt.Sprintf("<b>**%s**</b>", lc.Get("edit.bold"))}, | ||||
| 		{"italic", fmt.Sprintf("<i>//%s//</i>", lc.Get("edit.italic"))}, | ||||
| 		{"highlighted", fmt.Sprintf("<mark>++%s++</mark>", lc.Get("edit.highlight"))}, | ||||
| 		{"underline", fmt.Sprintf("<u>__%s__</u>", lc.Get("edit.underline"))}, | ||||
| 		{"monospace", fmt.Sprintf("<code>`%s`</code>", lc.Get("edit.mono"))}, | ||||
| 		{"lifted", fmt.Sprintf("<sup>^^%s^^</sup>", lc.Get("edit.super"))}, // inconsistent names: lifted, supertext. How cute ❤️ | ||||
| 		{"lowered", fmt.Sprintf("<sub>,,%s,,</sub>", lc.Get("edit.sub"))}, | ||||
| 		{"strikethrough", fmt.Sprintf("<strike>~~%s~~</strike>", lc.Get("edit.strike"))}, | ||||
| 		{"rocket", "=> " + lc.Get("edit.rocket")}, | ||||
| 		{"xcl", "<= " + lc.Get("edit.transclude")}, | ||||
| 		{"img", "<code>img {}</code>"}, | ||||
| 		{"table", "<code>table {}</code>"}, | ||||
| 		{"hr", lc.Get("edit.hr")}, | ||||
| 		{"codeblock", lc.Get("edit.code")}, | ||||
| 		{"bulletedlist", "* " + lc.Get("edit.bullets")}, | ||||
| 		{"numberedlist", "*. " + lc.Get("edit.numbers")}, | ||||
| 	} { | ||||
| //line hypview/mutators.qtpl:36 | ||||
| 		qw422016.N().S(` | ||||
| 		<button class="btn edit-toolbar__btn edit-toolbar__`) | ||||
| //line hypview/mutators.qtpl:37 | ||||
| 		qw422016.E().S(el.class) | ||||
| //line hypview/mutators.qtpl:37 | ||||
| 		qw422016.N().S(`"> | ||||
| 			`) | ||||
| //line hypview/mutators.qtpl:38 | ||||
| 		qw422016.N().S(el.display) | ||||
| //line hypview/mutators.qtpl:38 | ||||
| 		qw422016.N().S(` | ||||
| 		</button> | ||||
| 	`) | ||||
| //line hypview/mutators.qtpl:40 | ||||
| 	} | ||||
| //line hypview/mutators.qtpl:40 | ||||
| 	qw422016.N().S(` | ||||
| 	</section> | ||||
| 	<p class="edit-toolbar__ad">`) | ||||
| //line hypview/mutators.qtpl:42 | ||||
| 	qw422016.N().S(lc.Get("edit.help", &l18n.Replacements{"link": fmt.Sprintf("<a href=\"/help/en/mycomarkup\" target=\"_blank\" class=\"shy-link\">%s</a>", lc.Get("edit.help_link"))})) | ||||
| //line hypview/mutators.qtpl:42 | ||||
| 	qw422016.N().S(`</p> | ||||
| </aside> | ||||
| <aside class="edit-toolbar action-toolbar layout-card"> | ||||
| 	<h2 class="edit-toolbar__title layout-card__title">`) | ||||
| //line hypview/mutators.qtpl:45 | ||||
| 	qw422016.E().S(lc.Get("edit.actions")) | ||||
| //line hypview/mutators.qtpl:45 | ||||
| 	qw422016.N().S(`</h2> | ||||
| 	<section class="edit-toolbar__buttons"> | ||||
| 	`) | ||||
| //line hypview/mutators.qtpl:47 | ||||
| 	for _, el := range []struct { | ||||
| 		class   string | ||||
| 		display string | ||||
| 	}{ | ||||
| 		{"date", lc.Get("edit.date")}, | ||||
| 		{"time", lc.Get("edit.time")}, | ||||
| 	} { | ||||
| //line hypview/mutators.qtpl:53 | ||||
| 		qw422016.N().S(` | ||||
| 		<button class="btn edit-toolbar__btn edit-toolbar__`) | ||||
| //line hypview/mutators.qtpl:54 | ||||
| 		qw422016.E().S(el.class) | ||||
| //line hypview/mutators.qtpl:54 | ||||
| 		qw422016.N().S(`"> | ||||
| 			`) | ||||
| //line hypview/mutators.qtpl:55 | ||||
| 		qw422016.N().S(el.display) | ||||
| //line hypview/mutators.qtpl:55 | ||||
| 		qw422016.N().S(` | ||||
| 		</button> | ||||
| 	`) | ||||
| //line hypview/mutators.qtpl:57 | ||||
| 	} | ||||
| //line hypview/mutators.qtpl:57 | ||||
| 	qw422016.N().S(` | ||||
| 	`) | ||||
| //line hypview/mutators.qtpl:58 | ||||
| 	if u.Group != "anon" { | ||||
| //line hypview/mutators.qtpl:58 | ||||
| 		qw422016.N().S(` | ||||
| 		<button class="btn edit-toolbar__btn edit-toolbar__user-link"> | ||||
| 			`) | ||||
| //line hypview/mutators.qtpl:60 | ||||
| 		qw422016.E().S(lc.Get("edit.selflink")) | ||||
| //line hypview/mutators.qtpl:60 | ||||
| 		qw422016.N().S(` | ||||
| 		</button> | ||||
| 	`) | ||||
| //line hypview/mutators.qtpl:62 | ||||
| 	} | ||||
| //line hypview/mutators.qtpl:62 | ||||
| 	qw422016.N().S(` | ||||
| 	</section> | ||||
| </aside> | ||||
| <script src="/static/toolbar.js"></script> | ||||
| `) | ||||
| //line hypview/mutators.qtpl:66 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:66 | ||||
| func WriteToolbar(qq422016 qtio422016.Writer, u *user.User, lc *l18n.Localizer) { | ||||
| //line hypview/mutators.qtpl:66 | ||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||
| //line hypview/mutators.qtpl:66 | ||||
| 	StreamToolbar(qw422016, u, lc) | ||||
| //line hypview/mutators.qtpl:66 | ||||
| 	qt422016.ReleaseWriter(qw422016) | ||||
| //line hypview/mutators.qtpl:66 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:66 | ||||
| func Toolbar(u *user.User, lc *l18n.Localizer) string { | ||||
| //line hypview/mutators.qtpl:66 | ||||
| 	qb422016 := qt422016.AcquireByteBuffer() | ||||
| //line hypview/mutators.qtpl:66 | ||||
| 	WriteToolbar(qb422016, u, lc) | ||||
| //line hypview/mutators.qtpl:66 | ||||
| 	qs422016 := string(qb422016.B) | ||||
| //line hypview/mutators.qtpl:66 | ||||
| 	qt422016.ReleaseByteBuffer(qb422016) | ||||
| //line hypview/mutators.qtpl:66 | ||||
| 	return qs422016 | ||||
| //line hypview/mutators.qtpl:66 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:68 | ||||
| func StreamEditor(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string) { | ||||
| //line hypview/mutators.qtpl:68 | ||||
| 	qw422016.N().S(` | ||||
| `) | ||||
| //line hypview/mutators.qtpl:70 | ||||
| 	lc := l18n.FromRequest(rq) | ||||
|  | ||||
| //line hypview/mutators.qtpl:71 | ||||
| 	qw422016.N().S(` | ||||
| <main class="main-width edit edit_no-preview"> | ||||
| 	<form method="post" class="edit-form" | ||||
| 			action="/upload-text/`) | ||||
| //line hypview/mutators.qtpl:74 | ||||
| 	qw422016.E().S(hyphaName) | ||||
| //line hypview/mutators.qtpl:74 | ||||
| 	qw422016.N().S(`"> | ||||
| 		<h1 class="edit__title">`) | ||||
| //line hypview/mutators.qtpl:75 | ||||
| 	qw422016.N().S(fmt.Sprintf(lc.Get("edit.title"), beautifulLink(hyphaName))) | ||||
| //line hypview/mutators.qtpl:75 | ||||
| 	qw422016.N().S(`</h1> | ||||
| 		`) | ||||
| //line hypview/mutators.qtpl:76 | ||||
| 	qw422016.N().S(warning) | ||||
| //line hypview/mutators.qtpl:76 | ||||
| 	qw422016.N().S(` | ||||
| 		<textarea name="text" class="edit-form__textarea" autofocus>`) | ||||
| //line hypview/mutators.qtpl:77 | ||||
| 	qw422016.E().S(textAreaFill) | ||||
| //line hypview/mutators.qtpl:77 | ||||
| 	qw422016.N().S(`</textarea> | ||||
| 		<p class="edit-form__message-zone"> | ||||
| 			<input id="text" type="text" name="message" class="edit-form__message" placeholder="`) | ||||
| //line hypview/mutators.qtpl:79 | ||||
| 	qw422016.E().S(lc.Get("edit.tag")) | ||||
| //line hypview/mutators.qtpl:79 | ||||
| 	qw422016.N().S(`" aria-label="`) | ||||
| //line hypview/mutators.qtpl:79 | ||||
| 	qw422016.E().S(lc.Get("edit.tag")) | ||||
| //line hypview/mutators.qtpl:79 | ||||
| 	qw422016.N().S(`"> | ||||
| 		</p> | ||||
| 		<p class="edit-form__buttons"> | ||||
| 			<button type="submit" name="action" class="btn btn_accent edit-form__save" value="Save">`) | ||||
| //line hypview/mutators.qtpl:82 | ||||
| 	qw422016.E().S(lc.Get("edit.save")) | ||||
| //line hypview/mutators.qtpl:82 | ||||
| 	qw422016.N().S(`</button> | ||||
| 			<button type="submit" name="action" class="btn edit-form__preview" value="Preview">`) | ||||
| //line hypview/mutators.qtpl:83 | ||||
| 	qw422016.E().S(lc.Get("edit.preview")) | ||||
| //line hypview/mutators.qtpl:83 | ||||
| 	qw422016.N().S(`</button> | ||||
| 			<a href="/hypha/`) | ||||
| //line hypview/mutators.qtpl:84 | ||||
| 	qw422016.E().S(hyphaName) | ||||
| //line hypview/mutators.qtpl:84 | ||||
| 	qw422016.N().S(`" class="btn btn_weak">`) | ||||
| //line hypview/mutators.qtpl:84 | ||||
| 	qw422016.E().S(lc.Get("ui.cancel")) | ||||
| //line hypview/mutators.qtpl:84 | ||||
| 	qw422016.N().S(`</a> | ||||
| 		</p> | ||||
| 	</form> | ||||
| </main> | ||||
| `) | ||||
| //line hypview/mutators.qtpl:88 | ||||
| 	qw422016.N().S(Toolbar(user.FromRequest(rq), lc)) | ||||
| //line hypview/mutators.qtpl:88 | ||||
| 	qw422016.N().S(` | ||||
| `) | ||||
| //line hypview/mutators.qtpl:89 | ||||
| 	streameditScripts(qw422016) | ||||
| //line hypview/mutators.qtpl:89 | ||||
| 	qw422016.N().S(` | ||||
| `) | ||||
| //line hypview/mutators.qtpl:90 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:90 | ||||
| func WriteEditor(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string) { | ||||
| //line hypview/mutators.qtpl:90 | ||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||
| //line hypview/mutators.qtpl:90 | ||||
| 	StreamEditor(qw422016, rq, hyphaName, textAreaFill, warning) | ||||
| //line hypview/mutators.qtpl:90 | ||||
| 	qt422016.ReleaseWriter(qw422016) | ||||
| //line hypview/mutators.qtpl:90 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:90 | ||||
| func Editor(rq *http.Request, hyphaName, textAreaFill, warning string) string { | ||||
| //line hypview/mutators.qtpl:90 | ||||
| 	qb422016 := qt422016.AcquireByteBuffer() | ||||
| //line hypview/mutators.qtpl:90 | ||||
| 	WriteEditor(qb422016, rq, hyphaName, textAreaFill, warning) | ||||
| //line hypview/mutators.qtpl:90 | ||||
| 	qs422016 := string(qb422016.B) | ||||
| //line hypview/mutators.qtpl:90 | ||||
| 	qt422016.ReleaseByteBuffer(qb422016) | ||||
| //line hypview/mutators.qtpl:90 | ||||
| 	return qs422016 | ||||
| //line hypview/mutators.qtpl:90 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:92 | ||||
| func StreamPreview(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, textAreaFill, message, warning string, renderedPage string) { | ||||
| //line hypview/mutators.qtpl:92 | ||||
| 	qw422016.N().S(` | ||||
| `) | ||||
| //line hypview/mutators.qtpl:94 | ||||
| 	lc := l18n.FromRequest(rq) | ||||
|  | ||||
| //line hypview/mutators.qtpl:95 | ||||
| 	qw422016.N().S(` | ||||
| <main class="main-width edit edit_with-preview"> | ||||
| 	<form method="post" class="edit-form" | ||||
| 			action="/upload-text/`) | ||||
| //line hypview/mutators.qtpl:98 | ||||
| 	qw422016.E().S(hyphaName) | ||||
| //line hypview/mutators.qtpl:98 | ||||
| 	qw422016.N().S(`"> | ||||
| 		<h1 class="edit__title">`) | ||||
| //line hypview/mutators.qtpl:99 | ||||
| 	qw422016.N().S(fmt.Sprintf(lc.Get("edit.title"), beautifulLink(hyphaName))) | ||||
| //line hypview/mutators.qtpl:99 | ||||
| 	qw422016.N().S(`</h1> | ||||
| 		`) | ||||
| //line hypview/mutators.qtpl:100 | ||||
| 	qw422016.N().S(warning) | ||||
| //line hypview/mutators.qtpl:100 | ||||
| 	qw422016.N().S(` | ||||
| 		<textarea name="text" class="edit-form__textarea" autofocus>`) | ||||
| //line hypview/mutators.qtpl:101 | ||||
| 	qw422016.E().S(textAreaFill) | ||||
| //line hypview/mutators.qtpl:101 | ||||
| 	qw422016.N().S(`</textarea> | ||||
| 		<p class="edit-form__message-zone"> | ||||
|         	<input id="text" type="text" name="message" class="edit-form__message" placeholder="`) | ||||
| //line hypview/mutators.qtpl:103 | ||||
| 	qw422016.E().S(lc.Get("edit.tag")) | ||||
| //line hypview/mutators.qtpl:103 | ||||
| 	qw422016.N().S(`" aria-label="`) | ||||
| //line hypview/mutators.qtpl:103 | ||||
| 	qw422016.E().S(lc.Get("edit.tag")) | ||||
| //line hypview/mutators.qtpl:103 | ||||
| 	qw422016.N().S(`"> | ||||
|         </p> | ||||
| 		<p class="edit-form__buttons"> | ||||
|             <button type="submit" name="action" class="btn btn_accent edit-form__save" value="Save">`) | ||||
| //line hypview/mutators.qtpl:106 | ||||
| 	qw422016.E().S(lc.Get("edit.save")) | ||||
| //line hypview/mutators.qtpl:106 | ||||
| 	qw422016.N().S(`</button> | ||||
|             <button type="submit" name="action" class="btn edit-form__preview" value="Preview">`) | ||||
| //line hypview/mutators.qtpl:107 | ||||
| 	qw422016.E().S(lc.Get("edit.preview")) | ||||
| //line hypview/mutators.qtpl:107 | ||||
| 	qw422016.N().S(`</button> | ||||
|             <a href="/hypha/`) | ||||
| //line hypview/mutators.qtpl:108 | ||||
| 	qw422016.E().S(hyphaName) | ||||
| //line hypview/mutators.qtpl:108 | ||||
| 	qw422016.N().S(`" class="btn btn_weak">`) | ||||
| //line hypview/mutators.qtpl:108 | ||||
| 	qw422016.E().S(lc.Get("ui.cancel")) | ||||
| //line hypview/mutators.qtpl:108 | ||||
| 	qw422016.N().S(`</a> | ||||
|         </p> | ||||
| 	</form> | ||||
| 	<p class="warning">`) | ||||
| //line hypview/mutators.qtpl:111 | ||||
| 	qw422016.E().S(lc.Get("edit.preview_tip")) | ||||
| //line hypview/mutators.qtpl:111 | ||||
| 	qw422016.N().S(`</p> | ||||
| 	<article class="edit__preview">`) | ||||
| //line hypview/mutators.qtpl:112 | ||||
| 	qw422016.N().S(renderedPage) | ||||
| //line hypview/mutators.qtpl:112 | ||||
| 	qw422016.N().S(`</article> | ||||
| </main> | ||||
| `) | ||||
| //line hypview/mutators.qtpl:114 | ||||
| 	qw422016.N().S(Toolbar(user.FromRequest(rq), lc)) | ||||
| //line hypview/mutators.qtpl:114 | ||||
| 	qw422016.N().S(` | ||||
| `) | ||||
| //line hypview/mutators.qtpl:115 | ||||
| 	streameditScripts(qw422016) | ||||
| //line hypview/mutators.qtpl:115 | ||||
| 	qw422016.N().S(` | ||||
| `) | ||||
| //line hypview/mutators.qtpl:116 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:116 | ||||
| func WritePreview(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, textAreaFill, message, warning string, renderedPage string) { | ||||
| //line hypview/mutators.qtpl:116 | ||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||
| //line hypview/mutators.qtpl:116 | ||||
| 	StreamPreview(qw422016, rq, hyphaName, textAreaFill, message, warning, renderedPage) | ||||
| //line hypview/mutators.qtpl:116 | ||||
| 	qt422016.ReleaseWriter(qw422016) | ||||
| //line hypview/mutators.qtpl:116 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:116 | ||||
| func Preview(rq *http.Request, hyphaName, textAreaFill, message, warning string, renderedPage string) string { | ||||
| //line hypview/mutators.qtpl:116 | ||||
| 	qb422016 := qt422016.AcquireByteBuffer() | ||||
| //line hypview/mutators.qtpl:116 | ||||
| 	WritePreview(qb422016, rq, hyphaName, textAreaFill, message, warning, renderedPage) | ||||
| //line hypview/mutators.qtpl:116 | ||||
| 	qs422016 := string(qb422016.B) | ||||
| //line hypview/mutators.qtpl:116 | ||||
| 	qt422016.ReleaseByteBuffer(qb422016) | ||||
| //line hypview/mutators.qtpl:116 | ||||
| 	return qs422016 | ||||
| //line hypview/mutators.qtpl:116 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:118 | ||||
| func streameditScripts(qw422016 *qt422016.Writer) { | ||||
| //line hypview/mutators.qtpl:118 | ||||
| 	qw422016.N().S(` | ||||
| <script src="/static/editor.js"></script> | ||||
| `) | ||||
| //line hypview/mutators.qtpl:120 | ||||
| 	for _, scriptPath := range cfg.EditScripts { | ||||
| //line hypview/mutators.qtpl:120 | ||||
| 		qw422016.N().S(` | ||||
| <script src="`) | ||||
| //line hypview/mutators.qtpl:121 | ||||
| 		qw422016.E().S(scriptPath) | ||||
| //line hypview/mutators.qtpl:121 | ||||
| 		qw422016.N().S(`"></script> | ||||
| `) | ||||
| //line hypview/mutators.qtpl:122 | ||||
| 	} | ||||
| //line hypview/mutators.qtpl:122 | ||||
| 	qw422016.N().S(` | ||||
| `) | ||||
| //line hypview/mutators.qtpl:123 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:123 | ||||
| func writeeditScripts(qq422016 qtio422016.Writer) { | ||||
| //line hypview/mutators.qtpl:123 | ||||
| 	qw422016 := qt422016.AcquireWriter(qq422016) | ||||
| //line hypview/mutators.qtpl:123 | ||||
| 	streameditScripts(qw422016) | ||||
| //line hypview/mutators.qtpl:123 | ||||
| 	qt422016.ReleaseWriter(qw422016) | ||||
| //line hypview/mutators.qtpl:123 | ||||
| } | ||||
|  | ||||
| //line hypview/mutators.qtpl:123 | ||||
| func editScripts() string { | ||||
| //line hypview/mutators.qtpl:123 | ||||
| 	qb422016 := qt422016.AcquireByteBuffer() | ||||
| //line hypview/mutators.qtpl:123 | ||||
| 	writeeditScripts(qb422016) | ||||
| //line hypview/mutators.qtpl:123 | ||||
| 	qs422016 := string(qb422016.B) | ||||
| //line hypview/mutators.qtpl:123 | ||||
| 	qt422016.ReleaseByteBuffer(qb422016) | ||||
| //line hypview/mutators.qtpl:123 | ||||
| 	return qs422016 | ||||
| //line hypview/mutators.qtpl:123 | ||||
| } | ||||
							
								
								
									
										104
									
								
								hypview/view_edit.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								hypview/view_edit.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,104 @@ | ||||
| {{define "toolbar"}} | ||||
| <aside class="edit-toolbar markup-toolbar layout-card"> | ||||
|     <h2 class="edit-toolbar__title layout-card__title">{{block "markup" .}}Markup{{end}}</h2> | ||||
|     <section class="edit-toolbar__buttons"> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__link">[[{{block "link" .}}Link{{end}}]]</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__titlelink">[[{{template "link" .}} | {{block "link title" .}}Title{{end}}]]</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__heading1">= {{block "heading" .}}Heading{{end}}</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__heading2">== {{template "heading" .}}</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__bold"><b>**{{block "bold" .}}Bold{{end}}**</b></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__italic"><i>//{{block "italic" .}}Italic{{end}}//</i></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__highlighted"><mark>++{{block "highlight" .}}Highlight{{end}}++</mark></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__underline"><u>__{{block "underline" .}}Underline{{end}}__</u></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__monospace"><code>`{{block "mono" .}}Monospace{{end}}`</code></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__lifted"><sup>^^{{block "super" .}}Supertext{{end}}^^</sup></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__lowered"><sub>,,{{block "sub" .}}Subtext{{end}},,</sub></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__strikethrough"><s>~~{{block "strike" .}}Strikethrough{{end}}~~</s></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__rocket">=> {{block "rocket" .}}Rocketlink{{end}}</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__xcl"><= {{block "transclude" .}}Transclusion{{end}}</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__img"><code>img {}</code></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__table"><code>table {}</code></button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__hr">{{block "hr" .}}Horizontal bar{{end}}</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__codeblock">{{block "code" .}}Code block{{end}}</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__bulletedlist">* {{block "bullets" .}}Bullet list{{end}}</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__numberedlist">*. {{block "numbers" .}}Number list{{end}}</button> | ||||
|     </section> | ||||
|     <p class="edit-toolbar__help"> | ||||
|         {{block "mycomarkup help" .}} | ||||
|             <a href="/help/en/mycomarkup" target="_blank" class="shy-link">Learn more</a> about mycomarkup | ||||
|         {{end}} | ||||
|     </p> | ||||
| </aside> | ||||
| <aside class="edit-toolbar action-toolbar layout-card"> | ||||
|     <h2 class="edit-toolbar__title layout-card__title">{{block "actions" .}}Actions{{end}}</h2> | ||||
|     <section class="edit-toolbar__buttons"> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__date">{{block "current date" .}}Insert current date{{end}}</button> | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__time">{{block "current time" .}}Insert current time{{end}}</button> | ||||
|         {{if .Meta.U.Group | ne "anon"}} | ||||
|         <button class="btn edit-toolbar__btn edit-toolbar__user-link">{{block "selflink" .}}Link yourself{{end}}</button> | ||||
|         {{end}} | ||||
|     </section> | ||||
| </aside> | ||||
| <script src="/static/toolbar.js"></script> | ||||
| {{end}} | ||||
|  | ||||
| {{define "editing hypha"}}Edit {{beautifulName .}}{{end}} | ||||
| {{define "previewing hypha"}}Preview of {{beautifulName .}}{{end}} | ||||
| {{define "title"}} | ||||
| {{- if .Preview -}} | ||||
|     {{template "previewing hypha" .HyphaName}} | ||||
| {{- else -}} | ||||
|     {{template "editing hypha" .HyphaName}} | ||||
| {{- end -}} | ||||
| {{end}} | ||||
| {{define "body"}} | ||||
| <main class="main-width edit {{if .Preview}}edit_with-preview{{else}}edit_no-preview{{end}}"> | ||||
|     <form method="post" class="edit-form" action="/upload-text/{{.HyphaName}}"> | ||||
|         <h1 class="edit__title"> | ||||
|             {{block "editing [[hypha]]" .HyphaName}} | ||||
|                 Edit <a href="/hypha/{{.}}">{{beautifulName .}}</a> | ||||
|             {{end}} | ||||
|         </h1> | ||||
|         {{if .IsNew}} | ||||
|             <p class="warning warning_new-hypha"> | ||||
|                 {{block "you're creating a new hypha" .}}You are creating a new hypha.{{end}} | ||||
|             </p> | ||||
|         {{end}} | ||||
|         <textarea name="text" class="edit-form__textarea" autofocus>{{.Content}}</textarea> | ||||
|         <p class="edit-form__message-zone"> | ||||
|             <input | ||||
|                 id="text" | ||||
|                 type="text" | ||||
|                 name="message" | ||||
|                 class="edit-form__message" | ||||
|                 value="{{.Message}}" | ||||
|                 placeholder="{{block "describe your changes" .}}Describe your changes{{end}}" | ||||
|                 aria-label="{{template "describe your changes" .}}"> | ||||
|         </p> | ||||
|         <p class="edit-form__buttons"> | ||||
|             <button type="submit" name="action" class="btn btn_accent edit-form__save" value="save"> | ||||
|                 {{template "save" .}} | ||||
|             </button> | ||||
|             <button type="submit" name="action" class="btn edit-form__preview" value="preview"> | ||||
|                 {{block "preview" .}}Preview{{end}} | ||||
|             </button> | ||||
|             <a href="/hypha/{{.HyphaName}}" class="btn btn_weak"> | ||||
|                 {{template "cancel" .}} | ||||
|             </a> | ||||
|         </p> | ||||
|     </form> | ||||
|     {{if .Preview}} | ||||
|         <p class="warning"> | ||||
|             {{block "preview tip" .}}Note that the hypha hasn't been saved yet. Here's the preview:{{end}} | ||||
|         </p> | ||||
|         <article class="edit__preview"> | ||||
|             {{.Preview}} | ||||
|         </article> | ||||
|     {{end}} | ||||
| </main> | ||||
| {{template "toolbar" .}} | ||||
| <script src="/static/editor.js"></script> | ||||
| {{range .EditScripts}} | ||||
|     <script src="{{.}}"></script> | ||||
| {{end}} | ||||
| {{end}} | ||||
		Reference in New Issue
	
	Block a user