Use uri! to generate links instead of hardcoded urls Fix #110 Fix invalid links needing to be POST forms Translate login message for boost and like directly from template Put js for search in its own file
		
			
				
	
	
		
			75 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| @use templates::base;
 | |
| @use template_utils::*;
 | |
| @use validator::{ValidationErrors, ValidationErrorsKind};
 | |
| @use std::borrow::Cow;
 | |
| @use plume_models::medias::*;
 | |
| @use plume_models::blogs::Blog;
 | |
| @use plume_models::posts::Post;
 | |
| @use routes::posts::NewPostForm;
 | |
| @use routes::*;
 | |
| 
 | |
| @(ctx: BaseContext, blog: Blog, editing: bool, form: &NewPostForm, is_draft: bool, article: Option<Post>, errors: ValidationErrors, default_license: String, medias: Vec<Media>)
 | |
| 
 | |
| @: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>
 | |
|     @if let Some(article) = article {
 | |
| 	    <form class="new-post" method="post" action="@uri!(posts::update: blog = blog.actor_id, slug = &article.slug)">
 | |
|     } else {
 | |
| 	    <form class="new-post" method="post" action="@uri!(posts::new: blog = blog.actor_id)">
 | |
|     }
 | |
|         @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="@uri!(static_files: file = "js/autoExpand.js")"></script>
 | |
| })
 |