Fixed media upload. added comment section
This commit is contained in:
+42
-10
@@ -182,7 +182,9 @@ struct DashboardTemplate<'a> {
|
||||
lang: Lang,
|
||||
admin_name: &'a str,
|
||||
today_visits: Vec<TodayVisit>,
|
||||
recent_feedbacks: Vec<RecentFeedback>,
|
||||
feedbacks: Vec<RecentFeedback>,
|
||||
feedback_page: usize,
|
||||
feedback_total_pages: usize,
|
||||
}
|
||||
|
||||
#[derive(Debug, Template)]
|
||||
@@ -494,13 +496,10 @@ async fn admin_index(request: Request, session: Session, db: Database) -> cot::R
|
||||
.collect();
|
||||
today_visits.sort_by(|a, b| a.visit.time_start.cmp(&b.visit.time_start));
|
||||
|
||||
let week_ago = today - chrono::Duration::days(7);
|
||||
let mut recent_feedbacks: Vec<RecentFeedback> = all_visits
|
||||
let mut all_feedbacks: Vec<RecentFeedback> = all_visits
|
||||
.iter()
|
||||
.filter(|v| {
|
||||
v.user_id.primary_key().unwrap() == user_id
|
||||
&& v.client_feedback.is_some()
|
||||
&& v.updated_at.date() >= week_ago
|
||||
v.user_id.primary_key().unwrap() == user_id && v.client_feedback.is_some()
|
||||
})
|
||||
.map(|v| {
|
||||
let cid: i64 = v.client_id.primary_key().unwrap();
|
||||
@@ -517,14 +516,34 @@ async fn admin_index(request: Request, session: Session, db: Database) -> cot::R
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
recent_feedbacks.sort_by(|a, b| b.visit_date.cmp(&a.visit_date));
|
||||
all_feedbacks.sort_by(|a, b| b.visit_date.cmp(&a.visit_date));
|
||||
|
||||
const PER_PAGE: usize = 10;
|
||||
let feedback_page: usize = request
|
||||
.uri()
|
||||
.query()
|
||||
.and_then(|q| {
|
||||
q.split('&')
|
||||
.find_map(|p| p.strip_prefix("page="))
|
||||
.and_then(|v| v.parse().ok())
|
||||
})
|
||||
.unwrap_or(1)
|
||||
.max(1);
|
||||
let feedback_total_pages = (all_feedbacks.len() + PER_PAGE - 1).max(1) / PER_PAGE.max(1);
|
||||
let feedbacks: Vec<RecentFeedback> = all_feedbacks
|
||||
.into_iter()
|
||||
.skip((feedback_page - 1) * PER_PAGE)
|
||||
.take(PER_PAGE)
|
||||
.collect();
|
||||
|
||||
let body = DashboardTemplate {
|
||||
t: lang.t(),
|
||||
lang,
|
||||
admin_name: &admin_name,
|
||||
today_visits,
|
||||
recent_feedbacks,
|
||||
feedbacks,
|
||||
feedback_page,
|
||||
feedback_total_pages,
|
||||
}
|
||||
.render()?;
|
||||
html_response(body, lang)
|
||||
@@ -1569,7 +1588,12 @@ async fn media_upload_submit(
|
||||
media.save(&db).await?;
|
||||
}
|
||||
|
||||
Redirect::new(format!("/admin/?lang={}", lang.code())).into_response()
|
||||
Redirect::new(format!(
|
||||
"/admin/schedule/{}/edit?lang={}",
|
||||
visit_id,
|
||||
lang.code()
|
||||
))
|
||||
.into_response()
|
||||
}
|
||||
|
||||
async fn media_delete(
|
||||
@@ -1582,11 +1606,19 @@ async fn media_delete(
|
||||
if let Err(resp) = require_auth(&session, lang).await {
|
||||
return Ok(resp);
|
||||
}
|
||||
let referer = request
|
||||
.headers()
|
||||
.get("referer")
|
||||
.and_then(|v| v.to_str().ok())
|
||||
.map(|s| s.to_string());
|
||||
if let Some(mut m) = query!(Media, $id == media_id).get(&db).await? {
|
||||
m.status = "archived".to_string();
|
||||
m.save(&db).await?;
|
||||
}
|
||||
Redirect::new(format!("/admin/media?lang={}", lang.code())).into_response()
|
||||
let redirect_url = referer
|
||||
.filter(|r| r.contains("/schedule/") && r.contains("/edit"))
|
||||
.unwrap_or_else(|| format!("/admin/media?lang={}", lang.code()));
|
||||
Redirect::new(redirect_url).into_response()
|
||||
}
|
||||
|
||||
/// Serve uploaded files by media ID.
|
||||
|
||||
+2
-2
@@ -360,7 +360,7 @@ static RU: Translations = Translations {
|
||||
media_delete_confirm: "Удалить этот файл?",
|
||||
media_all_clients: "Все клиенты",
|
||||
|
||||
portal_title: "Мои визиты",
|
||||
portal_title: "Визиты",
|
||||
portal_upcoming: "Предстоящие визиты",
|
||||
portal_past: "Прошлые визиты",
|
||||
portal_no_upcoming: "Нет предстоящих визитов.",
|
||||
@@ -559,7 +559,7 @@ static EN: Translations = Translations {
|
||||
media_delete_confirm: "Delete this file?",
|
||||
media_all_clients: "All clients",
|
||||
|
||||
portal_title: "My Visits",
|
||||
portal_title: "Visits",
|
||||
portal_upcoming: "Upcoming visits",
|
||||
portal_past: "Past visits",
|
||||
portal_no_upcoming: "No upcoming visits.",
|
||||
|
||||
Reference in New Issue
Block a user