From 7ed5264bef1563029776c8618eedf74e69a43f7a Mon Sep 17 00:00:00 2001 From: asonix Date: Tue, 2 Feb 2021 21:21:31 -0600 Subject: [PATCH] Expose sensitive on submission page - Don't show sensitive content to logged-out users - Add sensitive indicator on submission tiles, thumbnails - Improve mobile nav UI --- scss/layout.scss | 24 +++---- src/browse.rs | 14 +++- src/nav.rs | 95 ++++++++++------------------ src/pagination/submission.rs | 4 ++ src/profiles/state.rs | 45 ++++++++++++- src/submissions.rs | 68 +++++++++++++++++++- src/views.rs | 19 +++++- templates/bar.rs.html | 46 ++++++++------ templates/layouts/wide.rs.html | 12 +--- templates/profiles/current.rs.html | 5 +- templates/submissions/public.rs.html | 20 +++--- templates/submissions/update.rs.html | 35 +++++++--- translations/en-US/hyaenidae.ftl | 10 +-- 13 files changed, 252 insertions(+), 145 deletions(-) diff --git a/scss/layout.scss b/scss/layout.scss index 959542a..99fffaf 100644 --- a/scss/layout.scss +++ b/scss/layout.scss @@ -23,12 +23,20 @@ picture { .mobile-bar { display: none; + + .toolkit-button { + min-width: auto; + } } .profile-nav { display: flex; align-items: center; + .mobile-bar-icon { + margin-right: 0; + } + .bar-icon { margin-right: 0; margin-left: 16px; @@ -45,13 +53,6 @@ picture { } } -.narrow-nav { - display: none; -} -.wide-nav { - display: block; -} - .nav-body { position: fixed; z-index: 2; @@ -307,15 +308,6 @@ picture { } } -@media (max-width: 975px) { - .narrow-nav { - display: block; - } - .wide-nav { - display: none; - } -} - @media (max-width: 700px) { .desktop-bar { display: none; diff --git a/src/browse.rs b/src/browse.rs index e142697..c3a330f 100644 --- a/src/browse.rs +++ b/src/browse.rs @@ -117,13 +117,23 @@ impl ViewBrowseState { .title(&submission.title_text()) .author(&author.name(), &author.view_path()); + let sensitive_color = if submission.is_sensitive() { + Some(IndicatorColor::Red) + } else { + None + }; + if submission.files().len() > 1 { Some(thumb.indicator( &format!("+{}", submission.files().len() - 1), - IndicatorColor::White, + sensitive_color.unwrap_or(IndicatorColor::White), )) } else { - Some(thumb) + if let Some(sensitive_color) = sensitive_color { + Some(thumb.indicator("", sensitive_color)) + } else { + Some(thumb) + } } }) .collect() diff --git a/src/nav.rs b/src/nav.rs index 3128217..3151ff4 100644 --- a/src/nav.rs +++ b/src/nav.rs @@ -1,7 +1,6 @@ use crate::{ admin::Admin, error::Error, - extensions::ProfileExt, middleware::UserProfile, notifications::total_for_profile, views::{OwnedProfileView, ProfileView}, @@ -133,52 +132,54 @@ impl NavState { Button::primary_link(&fl!(loader, "nav-submission-button")).href("/submissions/create") } - fn nav_button(&self, loader: &ActixLoader) -> Button { - Button::link(&fl!(loader, "nav-text")) - .href(&self.href) - .class("nav-link") + fn mobile_submission_button(&self, loader: &ActixLoader) -> Button { + Button::primary(&fl!(loader, "nav-submission-button")).href("/submissions/create") } pub(crate) fn browse_button(&self, loader: &ActixLoader) -> Button { Button::link(&fl!(loader, "nav-browse-button")).href("/browse") } - fn profile_button(&self, loader: &ActixLoader) -> Button { - if let Some(view) = self.profile.as_ref() { - Button::link(&fl!(loader, "nav-profile-button")).href(&view.profile.view_path()) - } else { - Button::link(&fl!(loader, "nav-switch-profile-button")).href("/profiles/change") - } + fn mobile_browse_button(&self, loader: &ActixLoader) -> Button { + Button::secondary(&fl!(loader, "nav-browse-button")).href("/browse") } pub(crate) fn notifications_path(&self) -> &'static str { "/notifications" } - fn notifications_button(&self, loader: &ActixLoader) -> Button { - Button::link(&fl!(loader, "nav-notifications-button")).href(self.notifications_path()) - } - - fn admin_button(&self, loader: &ActixLoader) -> Button { + pub(crate) fn admin_button(&self, loader: &ActixLoader) -> Button { Button::link(&fl!(loader, "nav-admin-button")).href("/admin") } - fn account_button(&self, loader: &ActixLoader) -> Button { - Button::link(&fl!(loader, "nav-account-button")).href("/session/account") + fn mobile_admin_button(&self, loader: &ActixLoader) -> Button { + Button::secondary(&fl!(loader, "nav-admin-button")).href("/admin") } fn login_button(&self, loader: &ActixLoader) -> Button { Button::primary_link(&fl!(loader, "nav-login-button")).href("/session/auth/login") } + fn mobile_login_button(&self, loader: &ActixLoader) -> Button { + Button::primary_outline(&fl!(loader, "nav-login-button")).href("/session/auth/login") + } + fn register_button(&self, loader: &ActixLoader) -> Button { Button::primary_link(&fl!(loader, "nav-register-button")).href("/session/auth/register") } + fn mobile_register_button(&self, loader: &ActixLoader) -> Button { + Button::primary_outline(&fl!(loader, "nav-register-button")).href("/session/auth/register") + } + fn logout_button(&self, logout_state: &LogoutState, loader: &ActixLoader) -> Button { Button::primary_link(&fl!(loader, "nav-logout-button")).form(&logout_state.logout_path()) } + fn mobile_logout_button(&self, logout_state: &LogoutState, loader: &ActixLoader) -> Button { + Button::primary_outline(&fl!(loader, "nav-logout-button")).form(&logout_state.logout_path()) + } + pub(crate) fn has_notifications(&self) -> bool { if let Some(count) = self.notification_count { count > 0 @@ -191,16 +192,11 @@ impl NavState { let mut nav = vec![]; if let Some(logout_state) = &self.logout_state { - nav.push(self.submission_button(loader)); - nav.push(self.browse_button(loader)); - nav.push(self.profile_button(loader)); - - if self.has_notifications() { - nav.push(self.notifications_button(loader)); + if self.profile.is_some() { + nav.push(self.submission_button(loader)); + nav.push(self.browse_button(loader)); } - nav.push(self.account_button(loader)); - if self.admin.is_some() { nav.push(self.admin_button(loader)); } @@ -213,50 +209,25 @@ impl NavState { nav } - pub(crate) fn narrow_buttons(&self, loader: &ActixLoader) -> Vec