@use templates::base; @use template_utils::*; @use validator::{ValidationErrors, ValidationErrorsKind}; @use std::borrow::Cow; @use plume_models::medias::*; @use routes::posts::NewPostForm; @(ctx: BaseContext, editing: bool, form: &NewPostForm, errors: ValidationErrors, default_license: String, medias: Vec<Media>, is_draft: bool) @:base(ctx, &i18n!(ctx.1, if editing { "Edit {0}" } else { "New post" }; &form.title), {}, {}, { <h1> @if editing { @i18n!(ctx.1, "Edit {0}"; &form.title) } else { @i18n!(ctx.1, "Create a new post") } </h1> <form class="new-post" method="post"> @input!(ctx.1, title (text), "Title", form, errors.clone(), "required") @input!(ctx.1, subtitle (optional text), "Subtitle", form, errors.clone(), "") @if let Some(ValidationErrorsKind::Field(errs)) = errors.clone().errors().get("content") { @format!(r#"<p class="error">{}</p>"#, i18n!(ctx.1, &*errs[0].message.clone().unwrap_or(Cow::from("Unknown error")))) } <label for="plume-editor">@i18n!(ctx.1, "Content")<small>@i18n!(ctx.1, "Markdown is supported")</small></label> <textarea id="plume-editor" name="content" rows="20">@form.content</textarea> @input!(ctx.1, tags (optional text), "Tags, separated by commas", form, errors.clone(), "") @input!(ctx.1, license (optional text), "License", &i18n!(ctx.1, "Default license will be {0}"; &default_license), form, errors, "") <label for="cover">@i18n!(ctx.1, "Illustration")<small>@i18n!(ctx.1, "Optional")</small></label> <select id="cover" name="cover"> <option value="none" @if form.cover.is_none() { selected }>@i18n!(ctx.1, "None")</option> @for media in medias { @if media.category() == MediaCategory::Image { <option value="@media.id" @if form.cover.map(|c| c == media.id).unwrap_or(false) { selected }> @if !media.alt_text.is_empty() { @media.alt_text } else { @media.content_warning.unwrap_or_default() } </option> } } </select> @if is_draft { <label for="draft"> <input type="checkbox" name="draft" id="draft" checked> @i18n!(ctx.1, "This is a draft, don't publish it yet.") </label> } @if editing { <input type="submit" value="@i18n!(ctx.1, "Update")" /> } else { @if is_draft { <input type="submit" value="@i18n!(ctx.1, "Update or publish")" /> } else { <input type="submit" value="@i18n!(ctx.1, "Publish")" /> } } </form> <script src="/static/js/autoExpand.js"></script> })