diff options
author | Vincent Ambo <mail@tazj.in> | 2018-05-22T16·56+0200 |
---|---|---|
committer | Vincent Ambo <github@tazj.in> | 2018-05-22T18·44+0200 |
commit | 69583b1236fd329cdc223f2d2a52ff313269d1d1 (patch) | |
tree | f7613e7f5b8ab41b76bd16f243bddf478003fbb6 | |
parent | 94d5e02bb3672db49e4fa2590eab8b7e58440f61 (diff) |
refactor(templates): Move thread page template to Askama
-rw-r--r-- | src/main.rs | 1 | ||||
-rw-r--r-- | src/render.rs | 11 | ||||
-rw-r--r-- | templates/index.html | 2 | ||||
-rw-r--r-- | templates/thread.html | 24 |
4 files changed, 17 insertions, 21 deletions
diff --git a/src/main.rs b/src/main.rs index c68b75229f41..3c533515bfb0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -142,7 +142,6 @@ fn start_renderer() -> Addr<Syn, Renderer> { tera.add_raw_templates(vec![ ("post.html", include_str!("../templates/post.html")), ("search.html", include_str!("../templates/search.html")), - ("thread.html", include_str!("../templates/thread.html")), ]).expect("Could not compile templates"); let comrak = comrak::ComrakOptions{ diff --git a/src/render.rs b/src/render.rs index ff8bd3ab8ee6..cfae2ad817ea 100644 --- a/src/render.rs +++ b/src/render.rs @@ -108,7 +108,7 @@ message!(ThreadPage, Result<String>); struct RenderablePost { id: i32, body: String, - posted: String, // FormattedDate, + posted: FormattedDate, author_name: String, author_gravatar: String, editable: bool, @@ -116,7 +116,8 @@ struct RenderablePost { /// This structure represents the transformed thread data with /// Markdown rendering and other changes applied. -#[derive(Debug, Serialize)] +#[derive(Template)] +#[template(path = "thread.html")] struct RenderableThreadPage { id: i32, title: String, @@ -137,7 +138,7 @@ fn prepare_thread(comrak: &ComrakOptions, page: ThreadPage) -> RenderableThreadP RenderablePost { id: post.id, body: markdown_to_html(&post.body, comrak), - posted: format!("{}", FormattedDate(post.posted)), // post.posted.into(), + posted: FormattedDate(post.posted), author_name: post.author_name.clone(), author_gravatar: md5_hex(post.author_email.as_bytes()), editable, @@ -147,7 +148,7 @@ fn prepare_thread(comrak: &ComrakOptions, page: ThreadPage) -> RenderableThreadP RenderableThreadPage { posts, id: page.thread.id, - title: escape_html(&page.thread.title), + title: page.thread.title, } } @@ -156,7 +157,7 @@ impl Handler<ThreadPage> for Renderer { fn handle(&mut self, msg: ThreadPage, _: &mut Self::Context) -> Self::Result { let renderable = prepare_thread(&self.comrak, msg); - Ok(self.tera.render("thread.html", &renderable)?) + renderable.render().map_err(|e| e.into()) } } diff --git a/templates/index.html b/templates/index.html index bff734bdab26..7151c3390c54 100644 --- a/templates/index.html +++ b/templates/index.html @@ -24,7 +24,7 @@ <form method="get" action="/search"> <input class="mdl-textfield__input" type="search" id="search-query" aria-label="Search" name="query"> <label class="mdl-textfield__label mdl-color-text--blue-grey-100" for="search-query">Search query...</label> - <input type="submit" hidden /> <!-- TODO: necessary? --> + <input type="submit" hidden /> </form> </div> diff --git a/templates/thread.html b/templates/thread.html index bd6d031bc2ba..28ccd79d252c 100644 --- a/templates/thread.html +++ b/templates/thread.html @@ -3,7 +3,7 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0"> - <title>Converse: {{ title | safe }}</title> + <title>Converse: {{ title }}</title> <!-- TODO --> <meta http-equiv="Content-Security-Policy" content="script-src https://code.getmdl.io 'self';"> @@ -23,7 +23,7 @@ <div class="mdl-layout mdl-layout--fixed-header mdl-js-layout mdl-color--grey-100"> <header class="mdl-layout__header mdl-color--primary-dark"> <div class="mdl-layout__header-row"> - <a href="/" class="mdl-layout-title mdl-color-text--blue-grey-50 cvs-title">Converse: {{ title | safe }}</a> + <a href="/" class="mdl-layout-title mdl-color-text--blue-grey-50 cvs-title">Converse: {{ title }}</a> <div class="mdl-layout-spacer"></div> <a href="/"> <button class="mdl-button mdl-js-button mdl-button--raised mdl-button--accent mdl-js-ripple-effect"> @@ -35,35 +35,31 @@ <main class="mdl-layout__content"> {% for post in posts -%} <section id="post-{{ post.id }}" class="section--center mdl-grid mdl-grid--no-spacing"> - {# card to display avatars on desktop #} + <!-- card to display avatars on desktop --> <div class="mdl-card mdl-shadow--2dp mdl-cell--2-col mdl-cell--hide-phone mdl-cell--hide-tablet avatar-box"> <div class="avatar-card"> <img class="desktop-avatar" src="https://www.gravatar.com/avatar/{{ post.author_gravatar }}?d=monsterid&s=160" /> <p class="user-name">{{ post.author_name }}</p> </div> </div> - {# card for main post content #} + <!-- card for main post content --> <div class="mdl-card mdl-shadow--2dp post-box mdl-cell--10-col"> - {# card section for displaying user & post information on mobile #} + <!-- card section for displaying user & post information on mobile --> <div class="mdl-card__supporting-text mdl-card--border mdl-cell--hide-desktop mdl-color-text--blue-grey-500 mobile-user"> <img class="mobile-avatar" src="https://www.gravatar.com/avatar/{{ post.author_gravatar }}?d=monsterid"/> <span> {{ post.author_name }} posted on </span> <a class="mdl-color-text--blue-grey-500 mobile-date" href="/thread/{{ id }}#post-{{ post.id }}">{{ post.posted }}</a> </div> - {# card section to display post date on desktop #} + <!-- card section to display post date on desktop --> <div class="mdl-card__menu mdl-cell--hide-phone mdl-cell--hide-tablet"> <a class="post-date mdl-color-text--blue-grey-500" href="/thread/{{ id }}#post-{{ post.id }}">{{ post.posted }}</a> </div> - {# card section for actual post content #} - <div class="mdl-card__supporting-text post-box">{{ post.body | safe }}</div> - {# card section for post actions #} + <!-- card section for actual post content --> + <div class="mdl-card__supporting-text post-box">{{ post.body|safe }}</div> + <!-- card section for post actions --> <div class="mdl-card__actions post-actions"> <div class="mdl-layout-spacer"></div> - {#%- TODO if post.editable %#} - <!-- <a href="/post/{{ post.id }}/edit" class="badge badge-light border m-1 p-1">Edit</a> --> - {#% endif -%#} - {% if post.editable %} <a href="/post/{{ post.id }}/edit" class="mdl-button mdl-js-button mdl-button--accent" id="edit-post-{{ post.id }}" aria-label="Edit post"> <i class="material-icons">edit</i> @@ -79,7 +75,7 @@ </section> {% endfor %} - {# section for writing a response on the same page #} + <!-- section for writing a response on the same page --> <section id="post-reply" class="section--center mdl-grid mdl-grid--no-spacing reply-box"> <div class="mdl-card mdl-shadow--2dp mdl-cell--12-col"> <form id="reply-form" action="/thread/reply" method="post"> |