sourcehypertextadminplantereditor.pug

doctype html

html(lang=grimm.dict[lang].meta.code)
	head
		meta(charset="utf-8")
		meta(name="viewport", content="width=device-width, initial-scale=1.0")
		meta(name="robots" content="noindex")
		if mode == "creating"
			title= tr('planter.editor.creating')
		if mode == "editing"
			title= tr('planter.editor.editing')(post.title)
		if mode == "translating"
			title= tr('planter.editor.translating')(post.title)
		link(rel="icon", href="/cosmetics/favicon.png")
		link(rel="stylesheet", href="/x/planter/planter.css")
		link(rel="stylesheet", href="/x/planter/editor.css")
		script(src="/cosmetics/script.js")
		script(src="/cosmetics/htmx.js")
		script(src="/x/planter/editor.js")
	body
		nav#tabs
			button.tab.enabled#tab-write
				span.icon.tab-icon 
				span.tab-label= tr('planter.editor.tabWrite')
			button.tab#tab-tag
				span.icon.tab-icon 
				span.tab-label= tr('planter.editor.tabTag')
			button.tab#tab-media
				span.icon.tab-icon 
				span.tab-label= tr('planter.editor.tabMedia')
		form#editor
			div.writer(lang=(post.lang ? grimm.dict[post.lang].meta.code : false))
				input#editor-title(type="text" name="title" placeholder=tr('planter.editor.titlePlaceholder') value=post.title)
				textarea#editor-contents(name="contents" placeholder=tr('planter.editor.contentsPlaceholder') required)= post.contents
			div.sidebar
				div.save-publish
					button.hollow#editor-save(hx-post=`/x/planter/post-save${dongle}&verb=save` hx-target=".message")= tr('planter.editor.savePost')
					a.button.hollow#editor-preview(href=`/garden/preview/${post.slug || slugPlaceholder}` hidden=(!!post.public))= tr('planter.editor.previewPost')
					a.button.hollow#editor-view(href=`/garden/${post.slug || slugPlaceholder}` hidden=(!post.public))= tr('planter.editor.viewPost')
					button.filled#editor-publish(hx-post=`/x/planter/post-save${dongle}&verb=publish` hx-target=".message" hidden=(!!post.public))= tr('planter.editor.publishPost')
					button.filled#editor-retract(hx-post=`/x/planter/post-save${dongle}&verb=retract` hx-target=".message" hidden=(!post.public))= tr('planter.editor.retractPost')
				strong.message
				div.value-grid
					label(for="editor-slug")!= tr('planter.editor.slug')
					input.mono#editor-slug(name="slug" type="text" placeholder=slugPlaceholder value=post.slug)
					label(for="editor-page-created")!= tr('planter.editor.pageCreated')
					input#editor-page-created(name="pageCreated" type="datetime-local" value=(post.pageCreated ? post.pageCreated.replace("T", " ").replace("Z", "") : undefined))
					label(for="editor-lang")= tr('planter.editor.lang')
					select#editor-lang(name="lang" required)
						each language, key in grimm.dict
							if (language !== undefined && key !== "default")
								option(value=key lang=language.meta.code selected=(key == post.lang))= language.meta.name
					label(for="editor-translates")= tr('planter.editor.translates')
					input.mono#editor-translates(name="translates" type="text" placeholder=slugPlaceholder value=post.translates)
					label(for="editor-post-format")= tr('planter.editor.format')
					select#editor-post-format(name="postFormat" required)
						option(value="article" selected=(post.postFormat == 'article'))= tr('planter.editor.formatArticle')
						option(value="note" selected=(post.postFormat == 'note'))= tr('planter.editor.formatNote')
					label(for="editor-tags")= tr('planter.editor.tags')
					input.mono#editor-tags(name="tags" type="text" value=post.tags)
					div.checkbox
						label(for="editor-comment-status")= tr('planter.editor.commentStatus')
						input#editor-comment-status(name="commentStatus" type="checkbox" checked=((post.commentStatus === 0) ? false : true))
					label(for="editor-markup")= tr('planter.editor.markup')
					select#editor-markup(name="markup" required)
						option(value="rubric" selected=(post.markup == 'rubric'))= tr('planter.editor.markupRubric')
						option(value="html" selected=(post.markup == 'html'))= tr('planter.editor.markupHtml')
					label(for="editor-thumbnail")!= tr('planter.editor.thumbnail')
					input.mono#editor-thumbnail(name="thumbnail" type="text" value=post.thumbnail)
					label(for="editor-thumbnail-alt")= tr('planter.editor.thumbnailAlt')
					input.draft#editor-thumbnail-alt(name="thumbnailAlt" type="text" lang=(post.lang ? grimm.dict[post.lang].meta.code : false) value=post.thumbnailAlt)
					input#editor-original-qualified-slug(name="originalQualifiedSlug" value=post.qualifiedSlug hidden)
					input#editor-new-post(name="newPost" type="checkbox" checked=(!!newPost) hidden)
			div.media-file-selector
				figure.new-file
					button(type="button"): span.icon 
					figcaption= tr('planter.editor.mediaNewFile')
				each file in media
					if file.type == "image"
						figure
							button(type="button" style=`background-image: url('/garden/media/${file.url}')` data-url=file.url)
							figcaption= file.url
					else
						figure.misc-media
							button(type="button" data-url=file.url): span.icon!= file.icon
							figcaption= file.url
		form#input-file(hidden hx-encoding="multipart/form-data" enctype="multipart/form-data" )
			input(type="file" name="file" hx-post="/x/planter/post-media" hx-target="figure.new-file" hx-swap="afterend")