@use plume_models::medias::*; @use plume_models::blogs::Blog; @use plume_models::posts::Post; @use std::borrow::Cow; @use validator::{ValidationErrors, ValidationErrorsKind}; @use crate::templates::base; @use crate::templates::partials::image_select; @use crate::template_utils::*; @use crate::routes::posts::NewPostForm; @use crate::routes::*; @(ctx: BaseContext, title: String, blog: Blog, editing: bool, form: &NewPostForm, is_draft: bool, article: Option, errors: ValidationErrors, medias: Vec, content_len: u64) @:base(ctx, title.clone(), {}, {}, {

@title

@if let Some(article) = article {
} else { } @(Input::new("title", i18n!(ctx.1, "Title")) .default(&form.title) .error(&errors) .html(ctx.1)) @(Input::new("subtitle", i18n!(ctx.1, "Subtitle")) .default(&form.subtitle) .error(&errors) .optional() .html(ctx.1)) @if let Some(ValidationErrorsKind::Field(errs)) = errors.clone().errors().get("content") { @format!(r#"

{}

"#, errs[0].message.clone().unwrap_or_else(|| Cow::from("Unknown error"))) } @content_len

@i18n!(ctx.1, "You can upload media to your gallery, and then copy their Markdown code into your articles to insert them.") @i18n!(ctx.1, "Upload media")

@(Input::new("tags", i18n!(ctx.1, "Tags, separated by commas")) .default(&form.tags) .error(&errors) .optional() .html(ctx.1)) @(Input::new("license", i18n!(ctx.1, "License")) .default(&form.license) .error(&errors) .optional() .details("Leave it empty to reserve all rights") .html(ctx.1)) @:image_select(ctx, "cover", i18n!(ctx.1, "Illustration"), true, medias, form.cover) @if is_draft { } @if editing { } else { @if is_draft { } else { } }
})