use base.html in app.html

This commit is contained in:
lelo 2026-01-18 13:31:30 +00:00
parent e2ce075c96
commit a76c2ec4a0

View File

@ -1,85 +1,29 @@
<!DOCTYPE html> {% extends 'base.html' %}
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>{{ title_short }}</title> {% block title %}{{ title_short }}{% endblock %}
<meta property="og:title" content="{{ og_title }}" /> {% block head_extra %}
<meta property="og:description" content="{{ og_description }}" /> <meta property="og:title" content="{{ og_title }}">
<meta property="og:image" content="/icon/logo-192x192.png" /> <meta property="og:description" content="{{ og_description }}">
<meta property="og:type" content="website" /> <meta property="og:image" content="/icon/logo-192x192.png">
<meta property="og:type" content="website">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="description" content="... uns aber, die wir gerettet werden, ist es eine Gotteskraft."> <meta name="description" content="... uns aber, die wir gerettet werden, ist es eine Gotteskraft.">
<meta name="author" content="{{ title_short }}"> <meta name="author" content="{{ title_short }}">
<link rel="icon" href="/icon/logo-192x192.png" type="image/png" sizes="192x192"> <link rel="icon" href="/icon/logo-192x192.png" type="image/png" sizes="192x192">
<!-- Web App Manifest -->
<link rel="manifest" href="{{ url_for('static', filename='manifest.json') }}"> <link rel="manifest" href="{{ url_for('static', filename='manifest.json') }}">
<!-- Android Theme Color -->
<meta name="theme-color" content="#000">
<!-- Apple-specific tags -->
<link rel="touch-icon" href="/icon/logo-192x192.png"> <link rel="touch-icon" href="/icon/logo-192x192.png">
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-status-bar-style" content="default"> <meta name="mobile-web-app-status-bar-style" content="default">
<meta name="mobile-web-app-title" content="Gottesdienste"> <meta name="mobile-web-app-title" content="Gottesdienste">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css" rel="stylesheet">
<!-- Your CSS -->
<link rel="stylesheet" href="{{ url_for('static', filename='theme.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='app.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='gallery.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='gallery.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='audioplayer.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='audioplayer.css') }}">
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script>const admin_enabled = {{ admin_enabled | tojson | safe }};</script> <script>const admin_enabled = {{ admin_enabled | tojson | safe }};</script>
</head> {% endblock %}
<body>
<script src="{{ url_for('static', filename='functions.js') }}"></script>
<header class="site-header">
<a href="/">
<img src="/custom_logo/logoW.png" alt="Logo" class="logo">
</a>
<h1>{{ title_long }}</h1>
</header>
<div class="wrapper">
{% if admin_enabled %}
<div class="admin-nav">
<div class="admin-nav-rail">
<div class="admin-nav-track">
<a href="{{ url_for('mylinks') }}">Meine Links</a>
<span> | </span>
<a href="{{ url_for('folder_secret_config_editor') }}" id="edit-folder-config">Ordnerkonfiguration</a>
<span> | </span>
<div class="dropdown dropend d-inline-block">
<a class="dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
Auswertungen
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="{{ url_for('dashboard') }}">Dashbord</a></li>
<li><a class="dropdown-item" href="{{ url_for('connections') }}">Verbindungen</a></li>
<li><a class="dropdown-item" href="{{ url_for('file_access') }}">Dateizugriffe</a></li>
<li><a class="dropdown-item" href="{{ url_for('songs_dashboard') }}">Wiederholungen</a></li>
<li><a class="dropdown-item" href="{{ url_for('search_db_analyzer') }}">Dateiindex Analyse</a></li>
</ul>
</div>
</div>
</div>
</div>
{% endif %}
{% if features %} {% block content %}
<!-- Tab Navigation --> <!-- Tab Navigation -->
{% if features %}
<nav class="main-tabs"> <nav class="main-tabs">
{% if "files" in features %}<button class="tab-button active" data-tab="browse">Audio/Photo</button>{% endif %} {% if "files" in features %}<button class="tab-button active" data-tab="browse">Audio/Photo</button>{% endif %}
{% if "messages" in features %}<button class="tab-button" data-tab="messages">Nachrichten</button>{% endif %} {% if "messages" in features %}<button class="tab-button" data-tab="messages">Nachrichten</button>{% endif %}
@ -108,7 +52,6 @@
<search style="display: none;"> <search style="display: none;">
<div class="container"> <div class="container">
<form id="searchForm" method="post" class="mb-4"> <form id="searchForm" method="post" class="mb-4">
<!-- Suchwörter --> <!-- Suchwörter -->
<div class="mb-3"> <div class="mb-3">
<label for="query" class="h5 form-label">Suchwörter:</label> <label for="query" class="h5 form-label">Suchwörter:</label>
@ -131,7 +74,6 @@
<!-- Suchoptionen einklappbar --> <!-- Suchoptionen einklappbar -->
<div id="searchOptions" class="collapse border rounded p-3 mb-3"> <div id="searchOptions" class="collapse border rounded p-3 mb-3">
<!-- Kategorie --> <!-- Kategorie -->
<div class="mb-3"> <div class="mb-3">
<label class="form-label">Kategorie:</label> <label class="form-label">Kategorie:</label>
@ -197,9 +139,7 @@
<input type="date" id="dateto" name="dateto" class="form-control"> <input type="date" id="dateto" name="dateto" class="form-control">
</div> </div>
</div> </div>
</div> </div>
<!-- Ende Suchoptionen -->
<!-- Buttons --> <!-- Buttons -->
<div class="mb-3"> <div class="mb-3">
@ -207,7 +147,6 @@
<button type="button" id="clearBtn" class="btn btn-secondary ms-2">zurücksetzen</button> <button type="button" id="clearBtn" class="btn btn-secondary ms-2">zurücksetzen</button>
<button type="button" id="backBtn" class="btn btn-secondary ms-2">beenden</button> <button type="button" id="backBtn" class="btn btn-secondary ms-2">beenden</button>
</div> </div>
</form> </form>
<!-- AJAX-loaded results --> <!-- AJAX-loaded results -->
@ -215,8 +154,6 @@
</div> </div>
</search> </search>
<!-- Global Audio Player in Footer --> <!-- Global Audio Player in Footer -->
<footer> <footer>
<div class="audio-player-container" id="audioPlayerContainer"> <div class="audio-player-container" id="audioPlayerContainer">
@ -246,7 +183,6 @@
</div> </div>
</div> </div>
</footer> </footer>
</div>
<!-- Transcript Modal --> <!-- Transcript Modal -->
<div id="transcriptModal"> <div id="transcriptModal">
@ -260,7 +196,7 @@
<div id="gallery-modal" style="display: none;"> <div id="gallery-modal" style="display: none;">
<button id="gallery-close">x</button> <button id="gallery-close">x</button>
<button id="gallery-info" aria-expanded="false" aria-controls="gallery-exif">i</button> <button id="gallery-info" aria-expanded="false" aria-controls="gallery-exif">i</button>
<img id="gallery-modal-content" src="" /> <img id="gallery-modal-content" src="">
<button class="gallery-nav gallery-prev"></button> <button class="gallery-nav gallery-prev"></button>
<button class="gallery-nav gallery-next"></button> <button class="gallery-nav gallery-next"></button>
<button id="gallery-play" aria-pressed="false" aria-label="Start slideshow">&gt;</button> <button id="gallery-play" aria-pressed="false" aria-label="Start slideshow">&gt;</button>
@ -275,22 +211,19 @@
<div id="fullscreen-loader" style="display: none;"> <div id="fullscreen-loader" style="display: none;">
<div class="loader"></div> <div class="loader"></div>
</div> </div>
{% endblock %}
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> {% block scripts %}
<!-- Load main app JS first, then gallery JS -->
<script src="{{ url_for('static', filename='audioplayer.js') }}"></script> <script src="{{ url_for('static', filename='audioplayer.js') }}"></script>
<script src="{{ url_for('static', filename='app.js') }}"></script> <script src="{{ url_for('static', filename='app.js') }}"></script>
<script src="{{ url_for('static', filename='gallery.js') }}"></script> <script src="{{ url_for('static', filename='gallery.js') }}"></script>
<script src="{{ url_for('static', filename='search.js') }}"></script> <script src="{{ url_for('static', filename='search.js') }}"></script>
<script src="{{ url_for('static', filename='messages.js') }}"></script> <script src="{{ url_for('static', filename='messages.js') }}"></script>
<script src="{{ url_for('static', filename='general.js') }}"></script>
<script> <script>
if ('serviceWorker' in navigator) { if ('serviceWorker' in navigator) {
window.addEventListener('load', () => { window.addEventListener('load', () => {
navigator.serviceWorker.register('{{ url_for("static", filename="sw.js") }}') navigator.serviceWorker.register('{{ url_for("static", filename="sw.js") }}');
}); });
} }
</script> </script>
</body> {% endblock %}
</html>