mirror of
https://github.com/fastapi-admin/fastapi-admin.git
synced 2026-03-13 10:32:25 +08:00
185 lines
10 KiB
HTML
185 lines
10 KiB
HTML
{% extends "base.html" %}
|
|
{% block body %}
|
|
<div class="wrapper min-vh-100">
|
|
<aside class="navbar navbar-vertical navbar-expand-lg navbar-dark">
|
|
<div class="container-fluid">
|
|
<h1 class="navbar-brand navbar-brand-autodark">
|
|
<a href="{{ request.app.admin_path }}">
|
|
<img
|
|
src="{{ request.app.logo_url }}"
|
|
width="110"
|
|
height="32"
|
|
alt="Tabler"
|
|
class="navbar-brand-image"
|
|
/>
|
|
</a>
|
|
</h1>
|
|
<div class="collapse navbar-collapse" id="navbar-menu">
|
|
<ul class="navbar-nav pt-lg-3">
|
|
{% for resource in resources %} {% if resource.type == 'link' %}
|
|
{% include 'components/link.html' %} {% elif resource.type == 'model' %}
|
|
{% include 'components/model.html' %} {% elif resource.type ==
|
|
'dropdown' %} {% include 'components/dropdown.html' %} {% endif %} {% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</aside>
|
|
<div class="page-wrapper min-vh-100">
|
|
<header class="navbar navbar-expand-md navbar-light d-none d-lg-flex d-print-none">
|
|
<div class="container-fluid">
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
|
data-bs-target="#navbar-menu">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="navbar-nav flex-row order-md-last">
|
|
<div class="nav-item dropdown d-none d-md-flex me-3">
|
|
<a href="#" class="nav-link px-0" data-bs-toggle="dropdown" tabindex="-1"
|
|
aria-label="Show notifications">
|
|
<svg xmlns="http://www.w3.org/2000/svg"
|
|
class="icon icon-tabler icon-tabler-language"
|
|
width="24" height="24"
|
|
viewBox="0 0 24 24" stroke-width="2"
|
|
stroke="currentColor" fill="none"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round">
|
|
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
|
<path d="M5 7h7m-2 -2v2a5 8 0 0 1 -5 8m1 -4a7 4 0 0 0 6.7 4"></path>
|
|
<path d="M11 19l4 -9l4 9m-.9 -2h-6.2"></path>
|
|
</svg>
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-arrow">
|
|
<a class="dropdown-item"
|
|
href="{{ {'language':'zh_CN'}|current_page_with_params }}">
|
|
<span class="me-2">🇨🇳</span>简体中文
|
|
</a>
|
|
<a class="dropdown-item"
|
|
href="{{ {'language':'en_US'}|current_page_with_params }}">
|
|
<span class="me-2">🇺🇸</span>English
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div class="nav-item dropdown">
|
|
<a href="#" class="nav-link d-flex lh-1 text-reset p-0" data-bs-toggle="dropdown">
|
|
<span class="avatar avatar-sm">
|
|
<img src="{{ request.state.admin.avatar }}" alt="">
|
|
</span>
|
|
<div class="d-none d-xl-block ps-2">
|
|
<div>{{ request.state.admin.username }}</div>
|
|
<div class="mt-1 small text-muted">{{ _('welcome') }}</div>
|
|
</div>
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
|
|
<a href="{{ request.app.admin_path }}/password"
|
|
class="dropdown-item">{{ _('update_password') }}</a>
|
|
<div class="dropdown-divider"></div>
|
|
<a href="{{ request.app.admin_path }}{{ request.app.login_provider.logout_path }}"
|
|
class="dropdown-item">{{ _('logout') }}</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
<div class="container-fluid">
|
|
<div class="page-header d-print-none">
|
|
{% block page_header %}
|
|
<div class="row align-items-center">
|
|
<div class="col">
|
|
<div class="page-pretitle">{{ page_pre_title or '' }}</div>
|
|
<h2 class="page-title">{{ page_title or '' }}</h2>
|
|
</div>
|
|
</div>
|
|
{% block page_title_actions %}
|
|
{% endblock %}
|
|
{% endblock %}
|
|
</div>
|
|
</div>
|
|
<div class="page-body flex-grow-1">
|
|
<div class="container-fluid">
|
|
<div class="row row-deck row-cards">
|
|
{% block page_body %} {% endblock %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% block footer %}
|
|
<footer class="footer footer-transparent d-print-none">
|
|
<div class="container">
|
|
<div class="row text-center align-items-center flex-row-reverse">
|
|
<div class="col-lg-auto ms-lg-auto">
|
|
<ul class="list-inline list-inline-dots mb-0">
|
|
<li class="list-inline-item">
|
|
<a
|
|
href="https://fastapi-admin.github.io/fastapi-admin"
|
|
class="link-secondary"
|
|
>Documentation</a
|
|
>
|
|
</li>
|
|
<li class="list-inline-item">
|
|
<a href="https://github.com/fastapi-admin/fastapi-admin/blob/dev/LICENSE"
|
|
class="link-secondary">License</a>
|
|
</li>
|
|
<li class="list-inline-item">
|
|
<a
|
|
href="https://github.com/fastapi-admin/fastapi-admin"
|
|
target="_blank"
|
|
class="link-secondary"
|
|
rel="noopener"
|
|
>Source code</a
|
|
>
|
|
</li>
|
|
<li class="list-inline-item">
|
|
<a
|
|
href="https://sponsor.long2ice.cn"
|
|
target="_blank"
|
|
class="link-secondary"
|
|
rel="noopener"
|
|
>
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
class="icon text-pink icon-filled icon-inline"
|
|
width="24"
|
|
height="24"
|
|
viewBox="0 0 24 24"
|
|
stroke-width="2"
|
|
stroke="currentColor"
|
|
fill="none"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
>
|
|
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
|
<path
|
|
d="M19.5 13.572l-7.5 7.428l-7.5 -7.428m0 0a5 5 0 1 1 7.5 -6.566a5 5 0 1 1 7.5 6.572"
|
|
></path>
|
|
</svg>
|
|
Sponsor
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="col-12 col-lg-auto mt-3 mt-lg-0">
|
|
<ul class="list-inline list-inline-dots mb-0">
|
|
<li class="list-inline-item">
|
|
Copyright © {{ 2021 }} - {{ NOW_YEAR }}
|
|
<a href="http://github.com/long2ice" class="link-secondary"
|
|
>long2ice</a
|
|
>. All rights reserved.
|
|
</li>
|
|
<li class="list-inline-item">
|
|
<a
|
|
href="https://github.com/fastapi-admin/fastapi-admin/releases/tag/v{{ VERSION }}"
|
|
class="link-secondary"
|
|
rel="noopener"
|
|
>v{{ VERSION }}</a
|
|
>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
{% endblock %}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|