Skip to content

Commit

Permalink
Cleanup & small fixes
Browse files Browse the repository at this point in the history
- Generalized the names for the backgrounds & banners folders.
- Fixed mode select not working for profile and leaderboard pages.
- Changed some spelling in the statuses (profile.js)
- settings/style - added a simple fix to prevent the avatar preview from going out of the page frame.
- home/style - added a simple fix for the main text not having padding on mobile layouts.
- Comment out the Information tab from the header since the docs endpoint has been disabled temporarily.
- Change the admin dashboard page to use the regular header. (located in components/navbar.html)

-Jakatebel
  • Loading branch information
JKBGL committed Jul 26, 2021
1 parent 8d292b1 commit c5d3e11
Show file tree
Hide file tree
Showing 12 changed files with 49 additions and 129 deletions.
File renamed without changes.
File renamed without changes.
22 changes: 11 additions & 11 deletions blueprints/frontend.py
Expand Up @@ -34,7 +34,7 @@ def login_required(func):
@wraps(func)
async def wrapper(*args, **kwargs):
if not session:
return await flash('error', 'You must be logged in to access that page', 'login')
return await flash('error', 'You must be logged in to access that page.', 'login')
return await func(*args, **kwargs)
return wrapper

Expand Down Expand Up @@ -183,7 +183,7 @@ async def settings_custom_post():
if not file_extension in ALLOWED_EXTENSIONS:
return await flash_with_customizations('error', f'The banner you select must be either a .JPG, .JPEG, .PNG or .GIF file!', 'settings/custom')

banner_file_no_ext = os.path.join(f'.data/profbanner', f'{session["user_data"]["id"]}')
banner_file_no_ext = os.path.join(f'.data/banners', f'{session["user_data"]["id"]}')

# remove old picture
for ext in ALLOWED_EXTENSIONS:
Expand All @@ -198,7 +198,7 @@ async def settings_custom_post():
if not file_extension in ALLOWED_EXTENSIONS:
return await flash_with_customizations('error', f'The background you select must be either a .JPG, .JPEG, .PNG or .GIF file!', 'settings/custom')

background_file_no_ext = os.path.join(f'.data/profbackground', f'{session["user_data"]["id"]}')
background_file_no_ext = os.path.join(f'.data/backgrounds', f'{session["user_data"]["id"]}')

# remove old picture
for ext in ALLOWED_EXTENSIONS:
Expand Down Expand Up @@ -289,7 +289,7 @@ async def settings_password_post():
# logout
session.pop('authenticated', None)
session.pop('user_data', None)
return await flash('success', 'Your password has been changed! Please login again.', 'login')
return await flash('success', 'Your password has been changed! Please log in again.', 'login')

@frontend.route('/u/<id>')
async def profile(id):
Expand Down Expand Up @@ -401,7 +401,7 @@ async def login_post():
if not user_info['priv'] & Privileges.Normal:
if glob.config.debug:
log(f"{username}'s login failed - banned.", Ansi.RED)
return await flash('error', 'You are banned!', 'login')
return await flash('error', 'Your account is restricted. You are not allowed to log in.', 'login')

# login successful; store session data
if glob.config.debug:
Expand Down Expand Up @@ -582,25 +582,25 @@ async def instagram_redirect():
return redirect(glob.config.instagram)

# profile customisation
BANNERS_PATH = Path.cwd() / '.data/profbanner'
BACKGROUND_PATH = Path.cwd() / '.data/profbackground'
@frontend.route('/profbanner/<user_id>')
BANNERS_PATH = Path.cwd() / '.data/banners'
BACKGROUND_PATH = Path.cwd() / '.data/backgrounds'
@frontend.route('/banners/<user_id>')
async def get_profile_banner(user_id: int):
# Check if avatar exists
for ext in ('jpg', 'jpeg', 'png', 'gif'):
path = BANNERS_PATH / f'{user_id}.{ext}'
if path.exists():
return await send_file(f'.data/profbanner/{user_id}.{ext}')
return await send_file(path)

return b'{"status":404}'


@frontend.route('/profbackground/<user_id>')
@frontend.route('/backgrounds/<user_id>')
async def get_profile_background(user_id: int):
# Check if avatar exists
for ext in ('jpg', 'jpeg', 'png', 'gif'):
path = BACKGROUND_PATH / f'{user_id}.{ext}'
if path.exists():
return await send_file(f'.data/profbackground/{user_id}.{ext}')
return await send_file(path)

return b'{"status":404}'
4 changes: 2 additions & 2 deletions objects/utils.py
Expand Up @@ -123,8 +123,8 @@ def get_level(totalScore: int) -> int:
# Not our level, calculate score for next level
level += 1

BANNERS_PATH = Path.cwd() / '.data/profbanner'
BACKGROUND_PATH = Path.cwd() / '.data/profbackground'
BANNERS_PATH = Path.cwd() / '.data/banners'
BACKGROUND_PATH = Path.cwd() / '.data/backgrounds'
def has_profile_customizations(user_id: int = 0) -> dict[str, bool]:
# check for custom banner image file
for ext in ('jpg', 'jpeg', 'png', 'gif'):
Expand Down
3 changes: 3 additions & 0 deletions static/css/pages/home.css
Expand Up @@ -43,6 +43,9 @@
.gulag-avatar {
display: none;
}
#home-hero .columns.flex-vcenter {
padding: 0 20px;
}
.main-block {
width: initial;
height: 285px;
Expand Down
3 changes: 3 additions & 0 deletions static/css/pages/settings/style.css
Expand Up @@ -973,6 +973,9 @@ input:checked+label.checkbox:hover {
.main-block {
width: 770px;
}
.avatar-flex {
flex-direction: column;
}
}

@media screen and (max-width: 770px) {
Expand Down
18 changes: 9 additions & 9 deletions static/js/pages/leaderboard.js
Expand Up @@ -60,15 +60,15 @@ new Vue({
return x1 + x2;
},
StrtoGulagInt() {
switch (this.mode, this.mods) {
case 'std', 'vn': return 0;
case 'taiko', 'vn': return 1;
case 'catch', 'vn': return 2;
case 'mania', 'vn': return 3;
case 'std', 'rx': return 4;
case 'taiko', 'rx': return 5;
case 'catch', 'rx': return 6;
case 'std', 'ap': return 7;
switch (this.mode + "|" + this.mods) {
case 'std|vn': return 0;
case 'taiko|vn': return 1;
case 'catch|vn': return 2;
case 'mania|vn': return 3;
case 'std|rx': return 4;
case 'taiko|rx': return 5;
case 'catch|rx': return 6;
case 'std|ap': return 7;
default: return -1;
}
},
Expand Down
28 changes: 14 additions & 14 deletions static/js/pages/profile.js
Expand Up @@ -123,20 +123,20 @@ new Vue({
},
actionIntToStr(d) {
switch (d.action) {
case 0: return 'Idle: 🔍 Selecting a song';
case 1: return 'Idle: 🌙 AFK';
case 0: return 'Idle: 🔍 Song Select';
case 1: return '🌙 AFK';
case 2: return `Playing: 🎶 ${d.info_text}`;
case 3: return `Editing: 🔨 ${d.info_text}`;
case 4: return `Modding: 🔨 ${d.info_text}`;
case 5: return `In Multiplayer: Selecting 🏯 ${d.info_text} ⛔️`;
case 5: return 'In Multiplayer: Song Select';
case 6: return `Watching: 👓 ${d.info_text}`;
// 7 not used
case 8: return `Testing: 🎾 ${d.info_text}`;
case 9: return `Submitting: 🧼 ${d.info_text}`;
case 10: return `Paused: 🚫 ${d.info_text}`;
// 10 paused, never used
case 11: return 'Idle: 🏢 In multiplayer lobby';
case 12: return `In Multiplayer: Playing 🌍 ${d.info_text} 🎶`;
case 13: return 'Idle: 🫒 Downloading some beatmaps in osu!direct';
case 13: return 'Idle: 🔍 Searching for beatmaps in osu!direct';
default: return 'Unknown: 🚔 not yet implemented!';
}
},
Expand All @@ -159,15 +159,15 @@ new Vue({
return dDisplay + hDisplay + mDisplay;
},
StrtoGulagInt() {
switch (this.mode, this.mods) {
case 'std', 'vn': return 0;
case 'taiko', 'vn': return 1;
case 'catch', 'vn': return 2;
case 'mania', 'vn': return 3;
case 'std', 'rx': return 4;
case 'taiko', 'rx': return 5;
case 'catch', 'rx': return 6;
case 'std', 'ap': return 7;
switch (this.mode + "|" + this.mods) {
case 'std|vn': return 0;
case 'taiko|vn': return 1;
case 'catch|vn': return 2;
case 'mania|vn': return 3;
case 'std|rx': return 4;
case 'taiko|rx': return 5;
case 'catch|rx': return 6;
case 'std|ap': return 7;
default: return -1;
}
},
Expand Down
90 changes: 2 additions & 88 deletions templates/admin/base.html
Expand Up @@ -38,94 +38,8 @@
</head>

<body>
<!-- header -->
<nav id="navbar" class="navbar is-primary">
<div class="navbar-brand">
<a class="navbar-item navbar-logo" href="/home">
{{ appName() }}
</a>

<a role="button" class="navbar-burger" id="navbar-burger" onclick="togglenavbar()">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>

<div id="navbar" class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item" href="/home">
Home
</a>

<a class="navbar-item" href="/lb">
Leaderboards
</a>

<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">
Information
</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="/docs">
Documentation
</a>
<a class="navbar-item" href="/rules">
Rules
</a>
<a class="navbar-item" href="/discord">
Discord
</a>
<hr class="navbar-divider">
<a class="navbar-item">
Report an issue
</a>
</div>
</div>

{% if session.authenticated and session.user_data['is_staff'] %}
<a class="navbar-item" href="/admin">
Admin
</a>
{% endif %}
</div>

<div class="navbar-end">
{% if session.authenticated %}
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">
{{ session.user_data['name'] }}
</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="/u/{{ session.user_data['id'] }}">
Profile
</a>
<a class="navbar-item" href="/settings">
Settings
</a>
</div>
</div>
<div class="navbar-item">
<a class="button is-light" href="/logout">
Logout
</a>
</div>
{% else %}
<div class="navbar-item">
<div class="buttons">
<a class="button is-primary" href="/register">
<strong>Sign up</strong>
</a>
<a class="button is-light" href="/login">
Log in
</a>
</div>
</div>
{% endif %}
</div>
</div>
</div>
</nav>
<!-- Header -->
{% include './components/navbar.html' %}

<!-- content -->
<div class="content admin-con">
Expand Down
4 changes: 2 additions & 2 deletions templates/components/navbar.html
Expand Up @@ -21,7 +21,7 @@
Leaderboards
</a>

<div class="navbar-item has-dropdown is-hoverable">
<!--<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">
Information
</a>
Expand All @@ -37,7 +37,7 @@
Report an issue
</a>
</div>
</div>
</div>-->

{% if session.authenticated and session.user_data['is_staff'] %}
<a class="navbar-item" href="/admin">
Expand Down
2 changes: 1 addition & 1 deletion templates/leaderboard.html
Expand Up @@ -111,7 +111,7 @@
</div>
<div v-else>
<div class="text-center">
there are no scores to display!
there are no players to display!
</div>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions templates/profile.html
Expand Up @@ -427,13 +427,13 @@ <h1 class="title is-6">No beatmaps available</h1>
{% if user['customisation']['banner'] == True %}
.profile-bg {
min-height: 262px;
background: linear-gradient(hsl(var(--main), 25%, 25%, 20%), hsl(var(--main), 25%, 25%, 60%)), url("/profbanner/{{ user['id'] }}");
background: linear-gradient(hsl(var(--main), 25%, 25%, 20%), hsl(var(--main), 25%, 25%, 60%)), url("/banners/{{ user['id'] }}");
background-size: cover;
}
{% endif %}
{% if user['customisation']['background'] == True %}
body {
background: linear-gradient(hsl(var(--main), 25%, 25%, 20%), hsl(var(--main), 10%, 10%)), url("/profbackground/{{ user['id'] }}");
background: linear-gradient(hsl(var(--main), 25%, 25%, 20%), hsl(var(--main), 10%, 10%)), url("/backgrounds/{{ user['id'] }}");
background-size: cover;
background-clip: content-box;
}
Expand Down

0 comments on commit c5d3e11

Please sign in to comment.