diff --git a/src/application/routes/app/bags.rs b/src/application/routes/app/bags.rs index 63d7305..6b507e4 100644 --- a/src/application/routes/app/bags.rs +++ b/src/application/routes/app/bags.rs @@ -46,6 +46,7 @@ pub(crate) async fn bag_detail_page( is_authenticated, version_info: &crate::VERSION_INFO, base_url: crate::base_url(), + edit_url: format!("/bags/{id}/edit"), bag: view, roaster_slug: roaster.slug.clone(), roast_slug: roast.slug.clone(), diff --git a/src/application/routes/app/brews.rs b/src/application/routes/app/brews.rs index a6b4cb4..49532e4 100644 --- a/src/application/routes/app/brews.rs +++ b/src/application/routes/app/brews.rs @@ -54,6 +54,7 @@ pub(crate) async fn brew_detail_page( is_authenticated, version_info: &crate::VERSION_INFO, base_url: crate::base_url(), + edit_url: format!("/brews/{id}/edit"), brew: view, roaster_slug: roaster.slug.clone(), roast_slug: roast.slug.clone(), diff --git a/src/application/routes/app/cafes.rs b/src/application/routes/app/cafes.rs index eff79d2..44fbd92 100644 --- a/src/application/routes/app/cafes.rs +++ b/src/application/routes/app/cafes.rs @@ -25,6 +25,7 @@ pub(crate) async fn cafe_detail_page( .map_err(|e| map_app_error(e.into()))?; let image_url = resolve_image_url(&state, "cafe", i64::from(cafe.id)).await; + let edit_url = format!("/cafes/{}/edit", cafe.id); let view = CafeDetailView::from_domain(cafe); @@ -33,6 +34,7 @@ pub(crate) async fn cafe_detail_page( is_authenticated, version_info: &crate::VERSION_INFO, base_url: crate::base_url(), + edit_url, cafe: view, image_url, }; diff --git a/src/application/routes/app/cups.rs b/src/application/routes/app/cups.rs index f40fa8a..c786d8c 100644 --- a/src/application/routes/app/cups.rs +++ b/src/application/routes/app/cups.rs @@ -60,6 +60,7 @@ pub(crate) async fn cup_detail_page( is_authenticated, version_info: &crate::VERSION_INFO, base_url: crate::base_url(), + edit_url: format!("/cups/{id}/edit"), cup: view, roaster_slug: roaster.slug.clone(), roast_slug: roast.slug.clone(), diff --git a/src/application/routes/app/gear.rs b/src/application/routes/app/gear.rs index a57658f..8e85eea 100644 --- a/src/application/routes/app/gear.rs +++ b/src/application/routes/app/gear.rs @@ -34,6 +34,7 @@ pub(crate) async fn gear_detail_page( is_authenticated, version_info: &crate::VERSION_INFO, base_url: crate::base_url(), + edit_url: format!("/gear/{id}/edit"), gear: view, image_url, }; diff --git a/src/application/routes/app/roasters.rs b/src/application/routes/app/roasters.rs index 4ee84df..56a7a7c 100644 --- a/src/application/routes/app/roasters.rs +++ b/src/application/routes/app/roasters.rs @@ -25,6 +25,7 @@ pub(crate) async fn roaster_detail_page( .map_err(|e| map_app_error(e.into()))?; let image_url = resolve_image_url(&state, "roaster", i64::from(roaster.id)).await; + let edit_url = format!("/roasters/{}/edit", roaster.id); let view = RoasterDetailView::from_domain(roaster); @@ -35,6 +36,7 @@ pub(crate) async fn roaster_detail_page( base_url: crate::base_url(), roaster: view, image_url, + edit_url, }; render_html(template).map(IntoResponse::into_response) diff --git a/src/application/routes/app/roasts.rs b/src/application/routes/app/roasts.rs index ed03c59..ffe99e9 100644 --- a/src/application/routes/app/roasts.rs +++ b/src/application/routes/app/roasts.rs @@ -31,6 +31,7 @@ pub(crate) async fn roast_detail_page( .map_err(|e| map_app_error(e.into()))?; let image_url = resolve_image_url(&state, "roast", i64::from(roast.id)).await; + let edit_url = format!("/roasts/{}/edit", roast.id); let view = RoastDetailView::from_parts(roast, &roaster); @@ -42,6 +43,7 @@ pub(crate) async fn roast_detail_page( roast: view, roaster_slug, image_url, + edit_url, }; render_html(template).map(IntoResponse::into_response) diff --git a/src/presentation/web/templates.rs b/src/presentation/web/templates.rs index 2319742..2a72088 100644 --- a/src/presentation/web/templates.rs +++ b/src/presentation/web/templates.rs @@ -222,6 +222,7 @@ pub struct BagDetailTemplate { pub roaster_slug: String, pub roast_slug: String, pub image_url: Option, + pub edit_url: String, } #[derive(Template)] @@ -235,6 +236,7 @@ pub struct BrewDetailTemplate { pub roaster_slug: String, pub roast_slug: String, pub image_url: Option, + pub edit_url: String, } #[derive(Template)] @@ -249,6 +251,7 @@ pub struct CupDetailTemplate { pub roast_slug: String, pub cafe_slug: String, pub image_url: Option, + pub edit_url: String, } #[derive(Template)] @@ -261,6 +264,7 @@ pub struct RoastDetailTemplate { pub roast: RoastDetailView, pub roaster_slug: String, pub image_url: Option, + pub edit_url: String, } #[derive(Template)] @@ -272,6 +276,7 @@ pub struct RoasterDetailTemplate { pub base_url: &'static str, pub roaster: RoasterDetailView, pub image_url: Option, + pub edit_url: String, } #[derive(Template)] @@ -283,6 +288,7 @@ pub struct CafeDetailTemplate { pub base_url: &'static str, pub cafe: CafeDetailView, pub image_url: Option, + pub edit_url: String, } #[derive(Template)] @@ -294,6 +300,7 @@ pub struct GearDetailTemplate { pub base_url: &'static str, pub gear: GearDetailView, pub image_url: Option, + pub edit_url: String, } #[derive(Template)] diff --git a/templates/pages/bag.html b/templates/pages/bag.html index e462228..25dc41f 100644 --- a/templates/pages/bag.html +++ b/templates/pages/bag.html @@ -114,6 +114,7 @@
+ {{ detail::edit_button(edit_url) }} {% if !bag.closed %}
{% if is_authenticated %} - {{ detail::delete_button("cafe", "/api/v1/cafes", cafe.id) }} + {{ detail::edit_delete_buttons(edit_url, "cafe", "/api/v1/cafes", cafe.id) }} {% endif %} {% endblock %} diff --git a/templates/pages/cup.html b/templates/pages/cup.html index 9d6c62e..3c1cf0e 100644 --- a/templates/pages/cup.html +++ b/templates/pages/cup.html @@ -88,6 +88,6 @@ {% if is_authenticated %} - {{ detail::delete_button("cup", "/api/v1/cups", cup.id) }} + {{ detail::edit_delete_buttons(edit_url, "cup", "/api/v1/cups", cup.id) }} {% endif %} {% endblock %} diff --git a/templates/pages/gear.html b/templates/pages/gear.html index e1842b5..a972c5f 100644 --- a/templates/pages/gear.html +++ b/templates/pages/gear.html @@ -52,6 +52,6 @@ {% if is_authenticated %} - {{ detail::delete_button("gear", "/api/v1/gear", gear.id) }} + {{ detail::edit_delete_buttons(edit_url, "gear", "/api/v1/gear", gear.id) }} {% endif %} {% endblock %} diff --git a/templates/pages/roast.html b/templates/pages/roast.html index 6d21adc..328d9d0 100644 --- a/templates/pages/roast.html +++ b/templates/pages/roast.html @@ -40,6 +40,6 @@ {% if is_authenticated %} - {{ detail::delete_button("roast", "/api/v1/roasts", roast.id) }} + {{ detail::edit_delete_buttons(edit_url, "roast", "/api/v1/roasts", roast.id) }} {% endif %} {% endblock %} diff --git a/templates/pages/roaster.html b/templates/pages/roaster.html index 819aa10..2378509 100644 --- a/templates/pages/roaster.html +++ b/templates/pages/roaster.html @@ -72,6 +72,6 @@ {% if is_authenticated %} - {{ detail::delete_button("roaster", "/api/v1/roasters", roaster.id) }} + {{ detail::edit_delete_buttons(edit_url, "roaster", "/api/v1/roasters", roaster.id) }} {% endif %} {% endblock %} diff --git a/templates/partials/detail_cards.html b/templates/partials/detail_cards.html index 1fa801a..221ef8c 100644 --- a/templates/partials/detail_cards.html +++ b/templates/partials/detail_cards.html @@ -125,6 +125,15 @@ {% endif %} {% endmacro %} +{% macro edit_button(edit_url) %} + + {{ icons::pencil("h-4 w-4") }} Edit + +{% endmacro %} + {% macro delete_button(entity_label, api_path, id) %}
+
+{% endmacro %} + {% macro roaster_card(name, country, country_flag, city, homepage, roaster_slug) %}

Roaster