From 64c2317bd704986886837aff029dfae5cfaff36b Mon Sep 17 00:00:00 2001 From: kirbylife Date: Wed, 18 Dec 2019 18:32:45 -0600 Subject: [PATCH] added more info to admin panel --- src/admin.rs | 6 +++- src/controllers.rs | 22 ++++++++----- src/main.rs | 2 +- templates/admin/panel.html.tera | 58 ++++++++++++++++++++++++++++++--- 4 files changed, 73 insertions(+), 15 deletions(-) diff --git a/src/admin.rs b/src/admin.rs index 0706fb5..0214779 100644 --- a/src/admin.rs +++ b/src/admin.rs @@ -56,8 +56,12 @@ fn panel(mut cookies: Cookies<'_>) -> Result { match cookies.get_private("user") { Some(cookie) => { if cookie.value() == password { - let context = get_context(); + let mut context = get_context(); + let (all_posts, n_posts) = posts::get_posts(None); + + context.insert("posts", &all_posts); + context.insert("n_posts", &n_posts); Ok(Template::render("admin/panel", context)) } else { Err(Redirect::to("/admin")) diff --git a/src/controllers.rs b/src/controllers.rs index d69f8ba..f39105e 100644 --- a/src/controllers.rs +++ b/src/controllers.rs @@ -17,19 +17,23 @@ pub mod posts { use crate::controllers::*; use crate::models::{NewPost, Post}; - pub const MAX_POSTS_PER_PAGE: u64 = 20; + pub const MAX_POSTS_PER_PAGE: u64 = 10; - pub fn get_posts(page: u64) -> (Vec, i64) { + pub fn get_posts(page: Option) -> (Vec, i64) { use crate::schema::posts::dsl::*; let connection = establish_connection(); - let visible_posts = posts - .filter(published.eq(true)) - .order(created_at.desc()) - .limit(MAX_POSTS_PER_PAGE as i64) - .offset((MAX_POSTS_PER_PAGE * (page - 1)) as i64) - .load::(&connection) - .expect("Error loading posts"); + let visible_posts = posts.filter(published.eq(true)).order(created_at.desc()); + let visible_posts = match page { + Some(number_page) => visible_posts + .limit(MAX_POSTS_PER_PAGE as i64) + .offset((MAX_POSTS_PER_PAGE * (number_page - 1)) as i64) + .load::(&connection) + .expect("Error loading posts"), + None => visible_posts + .load::(&connection) + .expect("Error loading posts"), + }; let number_of_posts: i64 = posts .filter(published.eq(true)) diff --git a/src/main.rs b/src/main.rs index c24ed68..aadbed5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,7 +32,7 @@ fn index(page: Option) -> Template { let mut context = get_context(); - let (posts, n_posts) = posts::get_posts(page); + let (posts, n_posts) = posts::get_posts(Some(page)); let total_pages = (n_posts as f64 / posts::MAX_POSTS_PER_PAGE as f64).ceil() as i64; diff --git a/templates/admin/panel.html.tera b/templates/admin/panel.html.tera index 83858b0..67dc280 100644 --- a/templates/admin/panel.html.tera +++ b/templates/admin/panel.html.tera @@ -1,10 +1,60 @@ {% extends "base" %} -{%block content %} +{% block extracss %} + +{% endblock extracss %} + +{% block content %}

Panel de administración

- Agregar artículo - Editar artículo + Agregar artículo +
+

id

+

Título

+

Visitas

+

Visible

+

+ + + {% for post in posts %} + {% if loop.index is odd %} +

{{ post.id }}

+

{{ post.title }}

+

0

+

{{ post.published }}

+

Editar

+ {% else %} +

{{ post.id }}

+

{{ post.title }}

+

0

+

{{ post.published }}

+

Editar

+ {% endif %} + {% endfor %} +

-{%endblock content %} +{% endblock content %}