reworked structure and improved performance to handle 500 concurrent users
This commit is contained in:
@@ -44,13 +44,13 @@
|
||||
<div class="w-auto" id="navbar-default">
|
||||
<ul class="flex flex-row space-x-8 rtl:space-x-reverse font-medium p-0 border-0 bg-white dark:bg-gray-900">
|
||||
<li>
|
||||
<a href="{{ url_for('main.admin') }}" class="rounded-sm text-blue-700 dark:text-blue-500 font-semibold" aria-current="page">Deck Admin</a>
|
||||
<a href="{{ url_for('admin.admin') }}" class="rounded-sm text-blue-700 dark:text-blue-500 font-semibold" aria-current="page">Deck Admin</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('main.banner') }}" class="text-gray-900 dark:text-white hover:text-blue-700 dark:hover:text-blue-500">Banner</a>
|
||||
<a href="{{ url_for('admin.banner') }}" class="text-gray-900 dark:text-white hover:text-blue-700 dark:hover:text-blue-500">Banner</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ url_for('main.confused_notifications') }}" class="text-gray-900 dark:text-white hover:text-blue-700 dark:hover:text-blue-500">Confused</a>
|
||||
<a href="{{ url_for('admin.confused_notifications') }}" class="text-gray-900 dark:text-white hover:text-blue-700 dark:hover:text-blue-500">Confused</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -114,7 +114,7 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<form method="POST" action="{{ url_for('main.delete_deck', deck_id=deck.id) }}">
|
||||
<form method="POST" action="{{ url_for('admin.delete_deck', deck_id=deck.id) }}">
|
||||
<button type="submit" class="bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded-lg text-sm">Delete</button>
|
||||
</form>
|
||||
</td>
|
||||
@@ -187,7 +187,7 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<form method="POST" action="{{ url_for('main.delete_password', password_id=password.id) }}">
|
||||
<form method="POST" action="{{ url_for('admin.delete_password', password_id=password.id) }}">
|
||||
<button type="submit" class="bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded-lg text-sm">Delete</button>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
@@ -21,20 +21,20 @@
|
||||
<div class="hidden w-full md:block md:w-auto" id="navbar-default">
|
||||
<ul class="font-medium flex flex-col justify-between md:justify-evenly p-4 md:p-0 mt-4 border border-gray-100 rounded-lg bg-gray-50 md:flex-row md:space-x-8 rtl:space-x-reverse md:mt-0 md:border-0 md:bg-white dark:bg-gray-800 md:dark:bg-gray-900 dark:border-gray-700">
|
||||
<li>
|
||||
<a href="{{url_for('main.admin')}}"
|
||||
<a href="{{url_for('admin.admin')}}"
|
||||
class="block py-2 px-3 text-gray-900 rounded-sm hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-blue-700 md:p-0 dark:text-white md:dark:hover:text-blue-500 dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent">
|
||||
Deck Admin
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{url_for('main.banner')}}"
|
||||
<a href="{{url_for('admin.banner')}}"
|
||||
class="block py-2 px-3 text-white bg-blue-700 rounded-sm md:bg-transparent md:text-blue-700 md:p-0 dark:text-white md:dark:text-blue-500"
|
||||
aria-current="page">
|
||||
Banner
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{url_for('main.confused_notifications')}}"
|
||||
<a href="{{url_for('admin.confused_notifications')}}"
|
||||
class="block py-2 px-3 text-gray-900 rounded-sm hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-blue-700 md:p-0 dark:text-white md:dark:hover:text-blue-500 dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent">
|
||||
Confused
|
||||
</a>
|
||||
@@ -80,11 +80,11 @@
|
||||
<div class="block bg-surface border border-border rounded-xl p-5 shadow-sm hover:border-primary hover:bg-background transition">
|
||||
<h3 class="text-lg font-semibold mb-1">{{ banner.content }}</h3>
|
||||
{% if banner.is_active %}
|
||||
<form method="POST" action="{{ url_for('main.hide_active_banner') }}">
|
||||
<form method="POST" action="{{ url_for('admin.hide_active_banner') }}">
|
||||
<button type="submit" class="w-full bg-red-600 hover:bg-red-700 text-white py-2 rounded-md transition">Hide</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<form method="POST", action="{{ url_for('main.set_active_banner', banner_id=banner.id)}}">
|
||||
<form method="POST", action="{{ url_for('admin.set_active_banner', banner_id=banner.id)}}">
|
||||
<button type="submit" class="w-full bg-primary hover:bg-blue-700 text-white py-2 rounded-md transition">
|
||||
Show banner
|
||||
</button>
|
||||
|
||||
@@ -16,19 +16,19 @@
|
||||
<div class="hidden w-full md:block md:w-auto" id="navbar-default">
|
||||
<ul class="font-medium flex flex-col justify-between md:justify-evenly p-4 md:p-0 mt-4 border border-gray-100 rounded-lg bg-gray-50 md:flex-row md:space-x-8 rtl:space-x-reverse md:mt-0 md:border-0 md:bg-white dark:bg-gray-800 md:dark:bg-gray-900 dark:border-gray-700">
|
||||
<li>
|
||||
<a href="{{url_for('main.admin')}}"
|
||||
<a href="{{url_for('admin.admin')}}"
|
||||
class="block py-2 px-3 text-gray-900 rounded-sm hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-blue-700 md:p-0 dark:text-white md:dark:hover:text-blue-500 dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent">
|
||||
Deck Admin
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{url_for('main.banner')}}"
|
||||
<a href="{{url_for('admin.banner')}}"
|
||||
class="block py-2 px-3 text-gray-900 rounded-sm hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-blue-700 md:p-0 dark:text-white md:dark:hover:text-blue-500 dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent">
|
||||
Banner
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{url_for('main.confused_notifications')}}"
|
||||
<a href="{{url_for('admin.confused_notifications')}}"
|
||||
class="block py-2 px-3 text-white bg-blue-700 rounded-sm md:bg-transparent md:text-blue-700 md:p-0 dark:text-white md:dark:text-blue-500"
|
||||
aria-current="page">
|
||||
Confused
|
||||
@@ -50,7 +50,7 @@
|
||||
<!-- Socket.IO client (served by your Flask-SocketIO) -->
|
||||
<script>
|
||||
const notifList = document.getElementById("notif-list");
|
||||
const socket = io();
|
||||
const socket = io({ transports: ['websocket'] });
|
||||
|
||||
socket.on("confused", data => {
|
||||
// Remove placeholder if it’s still there
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<img src="{{ url_for('static', filename='discord_icon.svg') }}" class="h-8 w-8">
|
||||
</a>
|
||||
|
||||
<a href="/admin">
|
||||
<a href="{{ url_for('admin.admin') }}">
|
||||
<button class="bg-primary hover:bg-blue-700 text-white px-3 py-1 rounded-md transition">
|
||||
Admin
|
||||
</button>
|
||||
@@ -141,7 +141,7 @@
|
||||
<p class="text-muted text-sm">{{ deck.description }}</p>
|
||||
</a>
|
||||
{% if deck.export_file %}
|
||||
<a href="/exports/{{deck.course.folder}}/{{ deck.deck }}/{{ deck.export_file}}"
|
||||
<a href="/slides/{{deck.course.folder}}/{{ deck.deck }}/export"
|
||||
class="inline-flex items-center justify-center flex-shrink-0 h-10 w-10 text-on-primary hover:bg-primary/90 transition"
|
||||
download title="Download Presentation">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||
|
||||
Reference in New Issue
Block a user