Squashed 'CTFd/themes/core-beta/' changes from 9126d77d..5ce3003b

5ce3003b Merge pull request #47 from aCursedComrade/patch-1
c9887cb1 Fix team template

git-subtree-dir: CTFd/themes/core-beta
git-subtree-split: 5ce3003b4d68352e629ee2d390bc999e7d6b071e
This commit is contained in:
Kevin Chung
2023-06-11 15:56:28 -04:00
parent 692c4b086c
commit a64e7d51ef
815 changed files with 683 additions and 101218 deletions

View File

@@ -0,0 +1,19 @@
<div>
{% for info in infos %}
<div class="alert alert-info alert-dismissible text-center" role="alert">
<span>{{ info }}</span>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close">
<span aria-hidden="true"></span>
</button>
</div>
{% endfor %}
{% for error in errors %}
<div class="alert alert-danger alert-dismissible text-center" role="alert">
<span>{{ error }}</span>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close">
<span aria-hidden="true"></span>
</button>
</div>
{% endfor %}
</div>

View File

@@ -0,0 +1,186 @@
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="container">
<a href="{{ url_for('views.static_html', route='/') }}" class="navbar-brand">
{% if Configs.ctf_logo %}
<img
class="img-responsive ctf_logo"
src="{{ url_for('views.files', path=Configs.ctf_logo) }}"
alt="{{ Configs.ctf_name }}"
height="25"
>
{% else %}
{{ Configs.ctf_name }}
{% endif %}
</a>
<button
class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#base-navbars"
aria-controls="base-navbars" aria-expanded="false" aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="base-navbars">
<ul class="navbar-nav me-auto">
{% for page in Plugins.user_menu_pages %}
<li class="nav-item">
<a class="nav-link" href="{{ page.route }}">{{ page.title }}</a>
</li>
{% endfor %}
{% if Configs.account_visibility != 'admins' %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('users.listing') }}">
{% trans %}Users{% endtrans %}
</a>
</li>
{% if Configs.user_mode == 'teams' %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('teams.listing') }}">
{% trans %}Teams{% endtrans %}
</a>
</li>
{% endif %}
{% endif %}
{% if Configs.account_visibility != 'admins' and Configs.score_visibility != 'admins' %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('scoreboard.listing') }}">
{% trans %}Scoreboard{% endtrans %}
</a>
</li>
{% endif %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('challenges.listing') }}">
{% trans %}Challenges{% endtrans %}
</a>
</li>
</ul>
<hr class="d-sm-flex d-md-flex d-lg-none">
<ul class="navbar-nav ms-md-auto d-block d-sm-flex d-md-flex">
{% if authed() %}
{% if is_admin() %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('admin.view') }}">
<span
class="d-block"
data-bs-toggle="tooltip"
data-bs-placement="bottom"
title="Admin Panel"
>
<i class="fas fa-wrench d-none d-md-block d-lg-none"></i>
</span>
<span class="d-sm-block d-md-none d-lg-block">
<i class="fas fa-wrench pe-1"></i>
{% trans %}Admin Panel{% endtrans %}
</span>
</a>
</li>
{% endif %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('views.notifications') }}">
<span
class="d-block" data-bs-toggle="tooltip" data-bs-placement="bottom"
title="Notifications"
>
<i class="fas fa-bell d-none d-md-block d-lg-none"></i>
</span>
<span class="d-sm-block d-md-none d-lg-block">
<i class="fas fa-bell pe-1"></i>
<span x-data x-show="$store.unread_count > 0" x-text="$store.unread_count" class="badge rounded-pill bg-danger badge-notification"></span>
{% trans %}Notifications{% endtrans %}
</span>
</a>
</li>
{% if Configs.user_mode == "teams" %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('teams.private') }}">
<span class="d-block" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Team">
<i class="fas fa-users d-none d-md-block d-lg-none"></i>
</span>
<span class="d-sm-block d-md-none d-lg-block">
<i class="fas fa-users pe-1"></i>
{% trans %}Team{% endtrans %}
</span>
</a>
</li>
{% endif %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('users.private') }}">
<span class="d-block" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Profile">
<i class="fas fa-user-circle d-none d-md-block d-lg-none"></i>
</span>
<span class="d-sm-block d-md-none d-lg-block">
<i class="fas fa-user-circle pe-1"></i>
{% trans %}Profile{% endtrans %}
</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url_for('views.settings') }}">
<span class="d-block" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Settings">
<i class="fas fa-cogs d-none d-md-block d-lg-none"></i>
</span>
<span class="d-sm-block d-md-none d-lg-block">
<i class="fas fa-cogs pe-1"></i>
{% trans %}Settings{% endtrans %}
</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url_for('auth.logout') }}">
<span class="d-block" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Logout">
<i class="fas fa-sign-out-alt d-none d-md-block d-lg-none"></i>
</span>
<span class="d-sm-block d-md-none d-lg-block">
<i class="fas fa-sign-out-alt pe-1"></i><span class="d-lg-none">
{% trans %}Logout{% endtrans %}
</span>
</span>
</a>
</li>
{% else %}
{% if registration_visible() %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('auth.register') }}">
<span
class="d-block" data-bs-toggle="tooltip" data-bs-placement="bottom"
title="Register"
>
<i class="fas fa-user-plus d-none d-md-block d-lg-none"></i>
</span>
<span class="d-sm-block d-md-none d-lg-block">
<i class="fas fa-user-plus pe-1"></i>
{% trans %}Register{% endtrans %}
</span>
</a>
</li>
{% endif %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('auth.login') }}">
<span class="d-block" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Login">
<i class="fas fa-sign-in-alt d-none d-md-block d-lg-none"></i>
</span>
<span class="d-sm-block d-md-none d-lg-block">
<i class="fas fa-sign-in-alt pe-1"></i>
{% trans %}Login{% endtrans %}
</span>
</a>
</li>
{% endif %}
</ul>
</div>
</div>
</nav>

View File

@@ -0,0 +1,33 @@
<div x-data>
<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11">
<div x-ref="toast" class="toast hide" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<strong class="me-auto" x-text="$store.toast.title"></strong>
<small>just now</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body" x-html="$store.toast.html">
</div>
</div>
</div>
</div>
<div x-data>
<div class="modal" x-ref="modal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" x-text="$store.modal.title"></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p x-html="$store.modal.html"></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">Got it!</button>
</div>
</div>
</div>
</div>
</div>