Server: Add Submission/User tabs to browse page
- Remove account dark state
This commit is contained in:
parent
0bacafd8a8
commit
ddac4d3b9c
|
@ -85,11 +85,16 @@ picture {
|
|||
}
|
||||
|
||||
.home-content {
|
||||
padding: 96px 0 32px;
|
||||
padding: 80px 0 32px;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
padding: 0 12px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.profile-search {
|
||||
margin-bottom: 32px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.profile-result {
|
||||
|
@ -307,6 +312,10 @@ picture {
|
|||
right: 0;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.profile-search {
|
||||
padding: 0 8px;
|
||||
}
|
||||
|
|
|
@ -101,13 +101,11 @@ async fn cookies_page(
|
|||
args: CookiesPageArgs,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut cookie_state = match hyaenidae_accounts::cookies_page(args) {
|
||||
let cookie_state = match hyaenidae_accounts::cookies_page(args) {
|
||||
Ok(state) => state,
|
||||
Err(res) => return Ok(res),
|
||||
};
|
||||
|
||||
cookie_state.dark(nav_state.dark());
|
||||
|
||||
rendered(HttpResponse::Ok(), |cursor| {
|
||||
crate::templates::session::cookies(cursor, &loader, &cookie_state, &nav_state)
|
||||
})
|
||||
|
@ -122,13 +120,11 @@ async fn login_page(
|
|||
args: LoginPageArgs,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut login_state = match hyaenidae_accounts::login_page(args) {
|
||||
let login_state = match hyaenidae_accounts::login_page(args) {
|
||||
Ok(state) => state,
|
||||
Err(res) => return Ok(res),
|
||||
};
|
||||
|
||||
login_state.dark(nav_state.dark());
|
||||
|
||||
rendered(HttpResponse::Ok(), |cursor| {
|
||||
crate::templates::session::login(cursor, &loader, &login_state, &nav_state)
|
||||
})
|
||||
|
@ -139,13 +135,11 @@ async fn login(
|
|||
args: LoginArgs,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut login_state = match hyaenidae_accounts::login(args).await? {
|
||||
let login_state = match hyaenidae_accounts::login(args).await? {
|
||||
Ok(state) => state,
|
||||
Err(res) => return Ok(res),
|
||||
};
|
||||
|
||||
login_state.dark(nav_state.dark());
|
||||
|
||||
rendered(HttpResponse::BadRequest(), |cursor| {
|
||||
crate::templates::session::login(cursor, &loader, &login_state, &nav_state)
|
||||
})
|
||||
|
@ -156,13 +150,11 @@ async fn register_page(
|
|||
args: RegisterPageArgs,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut register_state = match hyaenidae_accounts::register_page(args) {
|
||||
let register_state = match hyaenidae_accounts::register_page(args) {
|
||||
Ok(state) => state,
|
||||
Err(res) => return Ok(res),
|
||||
};
|
||||
|
||||
register_state.dark(nav_state.dark());
|
||||
|
||||
rendered(HttpResponse::Ok(), |cursor| {
|
||||
crate::templates::session::register(cursor, &loader, ®ister_state, &nav_state)
|
||||
})
|
||||
|
@ -173,13 +165,11 @@ async fn register(
|
|||
args: RegisterArgs,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut register_state = match hyaenidae_accounts::register(args).await? {
|
||||
let register_state = match hyaenidae_accounts::register(args).await? {
|
||||
Ok(state) => state,
|
||||
Err(res) => return Ok(res),
|
||||
};
|
||||
|
||||
register_state.dark(nav_state.dark());
|
||||
|
||||
rendered(HttpResponse::BadRequest(), |cursor| {
|
||||
crate::templates::session::register(cursor, &loader, ®ister_state, &nav_state)
|
||||
})
|
||||
|
@ -196,11 +186,8 @@ async fn account_page(
|
|||
user: User,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut uname_state = hyaenidae_accounts::update_username_page(uname_args);
|
||||
let mut pass_state = hyaenidae_accounts::update_password_page(pass_args);
|
||||
|
||||
uname_state.dark(nav_state.dark());
|
||||
pass_state.dark(nav_state.dark());
|
||||
let uname_state = hyaenidae_accounts::update_username_page(uname_args);
|
||||
let pass_state = hyaenidae_accounts::update_password_page(pass_args);
|
||||
|
||||
rendered(HttpResponse::Ok(), |cursor| {
|
||||
crate::templates::session::account(
|
||||
|
@ -227,14 +214,11 @@ async fn update_username(
|
|||
user: User,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut uname_state = match hyaenidae_accounts::update_username(uname_args).await? {
|
||||
let uname_state = match hyaenidae_accounts::update_username(uname_args).await? {
|
||||
Ok(state) => state,
|
||||
Err(res) => return Ok(res),
|
||||
};
|
||||
let mut pass_state = hyaenidae_accounts::update_password_page(pass_args);
|
||||
|
||||
uname_state.dark(nav_state.dark());
|
||||
pass_state.dark(nav_state.dark());
|
||||
let pass_state = hyaenidae_accounts::update_password_page(pass_args);
|
||||
|
||||
rendered(HttpResponse::BadRequest(), |cursor| {
|
||||
crate::templates::session::account(
|
||||
|
@ -255,15 +239,12 @@ async fn update_password(
|
|||
user: User,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut uname_state = hyaenidae_accounts::update_username_page(uname_args);
|
||||
let mut pass_state = match hyaenidae_accounts::update_password(pass_args).await? {
|
||||
let uname_state = hyaenidae_accounts::update_username_page(uname_args);
|
||||
let pass_state = match hyaenidae_accounts::update_password(pass_args).await? {
|
||||
Ok(state) => state,
|
||||
Err(res) => return Ok(res),
|
||||
};
|
||||
|
||||
uname_state.dark(nav_state.dark());
|
||||
pass_state.dark(nav_state.dark());
|
||||
|
||||
rendered(HttpResponse::BadRequest(), |cursor| {
|
||||
crate::templates::session::account(
|
||||
cursor,
|
||||
|
@ -281,13 +262,11 @@ async fn delete_account_page(
|
|||
args: DeleteUserPageArgs,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut delete_state = match hyaenidae_accounts::delete_user_page(args) {
|
||||
let delete_state = match hyaenidae_accounts::delete_user_page(args) {
|
||||
Ok(state) => state,
|
||||
Err(res) => return Ok(res),
|
||||
};
|
||||
|
||||
delete_state.dark(nav_state.dark());
|
||||
|
||||
rendered(HttpResponse::Ok(), |cursor| {
|
||||
crate::templates::session::delete_account(cursor, &loader, &delete_state, &nav_state)
|
||||
})
|
||||
|
@ -298,13 +277,11 @@ async fn delete_account(
|
|||
args: DeleteUserArgs,
|
||||
nav_state: NavState,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let mut delete_state = match hyaenidae_accounts::delete_user(args).await? {
|
||||
let delete_state = match hyaenidae_accounts::delete_user(args).await? {
|
||||
Ok(state) => state,
|
||||
Err(res) => return Ok(res),
|
||||
};
|
||||
|
||||
delete_state.dark(nav_state.dark());
|
||||
|
||||
rendered(HttpResponse::BadRequest(), |cursor| {
|
||||
crate::templates::session::delete_account(cursor, &loader, &delete_state, &nav_state)
|
||||
})
|
||||
|
|
|
@ -73,10 +73,6 @@ async fn main() -> anyhow::Result<()> {
|
|||
};
|
||||
|
||||
let accounts_config = hyaenidae_accounts::Config {
|
||||
toolkit_path: format!(
|
||||
"/toolkit/{}",
|
||||
hyaenidae_toolkit::templates::statics::toolkit_css.name
|
||||
),
|
||||
key: secret_key,
|
||||
https: false,
|
||||
pages: std::sync::Arc::new(accounts::Pages),
|
||||
|
|
|
@ -73,7 +73,7 @@ impl FromRequest for NavState {
|
|||
admin,
|
||||
href,
|
||||
is_open,
|
||||
dark: true,
|
||||
dark: false,
|
||||
})
|
||||
})
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ impl NavState {
|
|||
}
|
||||
|
||||
fn logout_button(&self, logout_state: &LogoutState, loader: &ActixLoader) -> Button {
|
||||
logout_state.button(Button::primary_outline(&fl!(loader, "nav-logout-button")))
|
||||
Button::primary_outline(&fl!(loader, "nav-logout-button")).form(&logout_state.logout_path())
|
||||
}
|
||||
|
||||
pub(crate) fn buttons(&self, loader: &ActixLoader) -> Vec<Button> {
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
@use hyaenidae_toolkit::{templates::{button_group, card, card_body, card_title}, Button, Card};
|
||||
@use i18n_embed_fl::fl;
|
||||
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &DeleteUserState)
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &DeleteUserState, dark: bool)
|
||||
|
||||
@:card(card_config, {
|
||||
<form method="POST" action="@state.delete_user_path()">
|
||||
@:card_title({ @fl!(loader, "delete-account-heading") })
|
||||
@:card_body({
|
||||
@:password_input("password", &fl!(loader, "password-input"), state.password(), state.password_error(), state.dark)
|
||||
@:password_input("password", &fl!(loader, "password-input"), state.password(), state.password_error(), dark)
|
||||
})
|
||||
@:card_body({
|
||||
@:button_group(&[
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
@use hyaenidae_toolkit::{templates::{button_group, card, card_body, card_title, link}, Button, Card, Link};
|
||||
@use i18n_embed_fl::fl;
|
||||
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &LoginState)
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &LoginState, dark: bool)
|
||||
|
||||
@:card(card_config, {
|
||||
<form method="POST" action="@state.login_path()">
|
||||
@:card_title({ @fl!(loader, "login-heading") })
|
||||
@:card_body({
|
||||
@:text_input("username", &fl!(loader, "login-username"), state.username(), state.username_error(), state.dark)
|
||||
@:password_input("password", &fl!(loader, "login-password"), state.password(), None, state.dark)
|
||||
@:text_input("username", &fl!(loader, "login-username"), state.username(), state.username_error(), dark)
|
||||
@:password_input("password", &fl!(loader, "login-password"), state.password(), None, dark)
|
||||
@:link(&Link::current_tab(&state.register_path()), { I do not have an account })
|
||||
})
|
||||
@:card_body({
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
@use hyaenidae_accounts::LogoutState;
|
||||
@use hyaenidae_toolkit::{templates::button_group, Button};
|
||||
|
||||
@(btn: Button, state: &LogoutState)
|
||||
|
||||
@:button_group(&[state.button(btn)])
|
|
@ -4,15 +4,15 @@
|
|||
@use hyaenidae_toolkit::{templates::{button_group, card, card_body, card_title, link}, Button, Card, Link};
|
||||
@use i18n_embed_fl::fl;
|
||||
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &RegisterState)
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &RegisterState, dark: bool)
|
||||
|
||||
@:card(card_config, {
|
||||
<form method="POST" action="@state.register_path()">
|
||||
@:card_title({ @fl!(loader, "register-heading") })
|
||||
@:card_body({
|
||||
@:text_input("username", &fl!(loader, "register-username"), state.username(), state.username_error(), state.dark)
|
||||
@:password_input("password", &fl!(loader, "register-password"), state.password(), None, state.dark)
|
||||
@:password_input("password_confirmation", &fl!(loader, "register-confirmation"), state.confirmation(), state.confirmation_error(), state.dark)
|
||||
@:text_input("username", &fl!(loader, "register-username"), state.username(), state.username_error(), dark)
|
||||
@:password_input("password", &fl!(loader, "register-password"), state.password(), None, dark)
|
||||
@:password_input("password_confirmation", &fl!(loader, "register-confirmation"), state.confirmation(), state.confirmation_error(), dark)
|
||||
@:link(&Link::current_tab(&state.login_path()), { I already have an account })
|
||||
})
|
||||
@:card_body({
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
@use hyaenidae_toolkit::{templates::{button_group, card, card_body, card_title}, Button, Card};
|
||||
@use i18n_embed_fl::fl;
|
||||
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &UpdatePasswordState)
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &UpdatePasswordState, dark: bool)
|
||||
|
||||
@:card(card_config, {
|
||||
<form method="POST" action="@state.update_password_path()">
|
||||
@:card_title({ @fl!(loader, "update-password-heading") })
|
||||
@:card_body({
|
||||
@:password_input("new_password", &fl!(loader, "update-password-input"), state.new_password(), None, state.dark)
|
||||
@:password_input("new_password_confirmation", &fl!(loader, "confirm-password-input"), state.new_password_confirmation(), state.new_password_confirmation_error(), state.dark)
|
||||
@:password_input("password", &fl!(loader, "password-input"), state.password(), state.password_error(), state.dark)
|
||||
@:password_input("new_password", &fl!(loader, "update-password-input"), state.new_password(), None, dark)
|
||||
@:password_input("new_password_confirmation", &fl!(loader, "confirm-password-input"), state.new_password_confirmation(), state.new_password_confirmation_error(), dark)
|
||||
@:password_input("password", &fl!(loader, "password-input"), state.password(), state.password_error(), dark)
|
||||
})
|
||||
@:card_body({
|
||||
@:button_group(&[
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
@use hyaenidae_toolkit::{templates::{button_group, card, card_body, card_title}, Button, Card};
|
||||
@use i18n_embed_fl::fl;
|
||||
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &UpdateUsernameState)
|
||||
@(card_config: &Card, loader: &ActixLoader, state: &UpdateUsernameState, dark: bool)
|
||||
|
||||
@:card(card_config, {
|
||||
<form method="POST" action="@state.update_username_path()">
|
||||
@:card_title({ @fl!(loader, "update-username-heading") })
|
||||
@:card_body({
|
||||
@:text_input("new_username", &fl!(loader, "update-username-input"), state.username(), state.username_error(), state.dark)
|
||||
@:password_input("password", &fl!(loader, "password-input"), state.password(), state.password_error(), state.dark)
|
||||
@:text_input("new_username", &fl!(loader, "update-username-input"), state.username(), state.username_error(), dark)
|
||||
@:password_input("password", &fl!(loader, "password-input"), state.password(), state.password_error(), dark)
|
||||
})
|
||||
@:card_body({
|
||||
@:button_group(&[
|
||||
|
|
|
@ -5,12 +5,23 @@
|
|||
@use hyaenidae_toolkit::templates::button_group;
|
||||
@use hyaenidae_toolkit::templates::centered;
|
||||
@use hyaenidae_toolkit::{templates::{card, card_body, card_title}, Card};
|
||||
@use hyaenidae_toolkit::{templates::{tab, tab_group}, Tab};
|
||||
@use hyaenidae_toolkit::templates::{thumbnail, thumbnail_border, thumbnails};
|
||||
@use i18n_embed_fl::fl;
|
||||
|
||||
@(loader: &ActixLoader, browse_view: &ViewBrowseState, nav_state: &NavState)
|
||||
|
||||
@:wide(loader, &fl!(loader, "site-name"), &fl!(loader, "site-description"), nav_state, {}, {
|
||||
<div class="tabs">
|
||||
@:tab_group({
|
||||
@:tab(Tab::new("/browse").selected(true), {
|
||||
@fl!(loader, "submissions-tab")
|
||||
})
|
||||
@:tab(Tab::new("/discover"), {
|
||||
@fl!(loader, "profiles-tab")
|
||||
})
|
||||
})
|
||||
</div>
|
||||
@if browse_view.has_submissions() {
|
||||
@if browse_view.has_nav() {
|
||||
@:thumbnail_border({
|
||||
|
|
|
@ -2,17 +2,30 @@
|
|||
@use crate::extensions::ProfileExt;
|
||||
@use crate::nav::NavState;
|
||||
@use crate::profile_list::ProfileListState;
|
||||
@use crate::templates::layouts::home;
|
||||
@use crate::templates::layouts::wide;
|
||||
@use hyaenidae_toolkit::{templates::button_group, Button};
|
||||
@use hyaenidae_toolkit::{templates::{card, card_body, card_section}, Card};
|
||||
@use hyaenidae_toolkit::templates::centered;
|
||||
@use hyaenidae_toolkit::templates::{icon, image};
|
||||
@use hyaenidae_toolkit::{templates::link, Link};
|
||||
@use hyaenidae_toolkit::templates::search;
|
||||
@use hyaenidae_toolkit::{templates::{tab, tab_group}, Tab};
|
||||
@use i18n_embed_fl::fl;
|
||||
|
||||
@(loader: &ActixLoader, state: &ProfileListState, nav_state: &NavState)
|
||||
|
||||
@:home(loader, &fl!(loader, "discover-users-title"), &fl!(loader, "discover-users-subtitle"), nav_state, {}, {
|
||||
@:wide(loader, &fl!(loader, "discover-users-title"), &fl!(loader, "discover-users-subtitle"), nav_state, {}, {
|
||||
<div class="tabs">
|
||||
@:tab_group({
|
||||
@:tab(Tab::new("/browse"), {
|
||||
@fl!(loader, "submissions-tab")
|
||||
})
|
||||
@:tab(Tab::new("/discover").selected(true), {
|
||||
@fl!(loader, "profiles-tab")
|
||||
})
|
||||
})
|
||||
</div>
|
||||
@:centered(false, {
|
||||
<div class="profile-search">
|
||||
<form method="GET" action="@state.search_path()">
|
||||
@:search(state.search_input(loader).dark(nav_state.dark()), Button::primary(&fl!(loader, "discover-users-search-button")))
|
||||
|
@ -61,4 +74,5 @@
|
|||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -12,10 +12,12 @@
|
|||
@:button_js()
|
||||
}, {
|
||||
@:card(&Card::full_width().dark(nav_state.dark()), {
|
||||
@:card_title({ @fl!(loader, "username-heading", currentUsername = user.username()) })
|
||||
@:card_title({
|
||||
@fl!(loader, "username-heading", currentUsername = user.username())
|
||||
})
|
||||
@:update_username(&Card::full_width().dark(nav_state.dark()), loader, uname_state)
|
||||
@:update_password(&Card::full_width().dark(nav_state.dark()), loader, pass_state)
|
||||
})
|
||||
@:update_username(&Card::full_width().dark(nav_state.dark()), loader, uname_state, nav_state.dark())
|
||||
@:update_password(&Card::full_width().dark(nav_state.dark()), loader, pass_state, nav_state.dark())
|
||||
@:card(&Card::full_width().dark(nav_state.dark()), {
|
||||
@:card_title({ @fl!(loader, "danger-heading") })
|
||||
@:card_body({
|
||||
|
|
|
@ -11,5 +11,5 @@
|
|||
@:home(loader, &fl!(loader, "delete-account-heading"), &fl!(loader, "delete-account-confirmation"), nav_state, {
|
||||
@:button_js()
|
||||
}, {
|
||||
@:delete_user(&Card::full_width().dark(nav_state.dark()), loader, state)
|
||||
@:delete_user(&Card::full_width().dark(nav_state.dark()), loader, state, nav_state.dark())
|
||||
})
|
||||
|
|
|
@ -11,5 +11,5 @@
|
|||
@:home(loader, &fl!(loader, "login-heading"), &fl!(loader, "login-subheading"), nav_state, {
|
||||
@:button_js()
|
||||
}, {
|
||||
@:login(&Card::full_width().dark(nav_state.dark()), loader, login_state)
|
||||
@:login(&Card::full_width().dark(nav_state.dark()), loader, login_state, nav_state.dark())
|
||||
})
|
||||
|
|
|
@ -9,5 +9,5 @@
|
|||
@(loader: &ActixLoader, register_state: &RegisterState, nav_state: &NavState)
|
||||
|
||||
@:home(loader, &fl!(loader, "register-heading"), &fl!(loader, "register-subheading"), nav_state, { @:button_js() }, {
|
||||
@:register(&Card::full_width().dark(nav_state.dark()), loader, register_state)
|
||||
@:register(&Card::full_width().dark(nav_state.dark()), loader, register_state, nav_state.dark())
|
||||
})
|
||||
|
|
|
@ -361,6 +361,9 @@ feed-empty-subtitle = Follow users on Hyaenidae to start seeing submissions in y
|
|||
feed-empty-browse-users = Browse Users
|
||||
feed-empty-browse-submissions = Browse Submissions
|
||||
|
||||
submissions-tab = Submissions
|
||||
profiles-tab = Users
|
||||
|
||||
notification-count = Notifications: {$count}
|
||||
notification-subtitle = Notifications on {site-name}
|
||||
notification-clear-all-heading = Clear All
|
||||
|
|
Loading…
Reference in a new issue