Files
stiftung-management-system/app/templates/base.html
Jan Remmer Siebels 544284dd8b Remove obsolete dashboard functionality
- Remove dashboard view from urls.py and views.py
- Delete dashboard.html template
- Remove dashboard navigation link from base.html
- Replace all dashboard redirects with home redirects in views.py
- Update all breadcrumb links from 'Dashboard' to 'Home' in templates
- Update German text from 'Dashboard' to 'Startseite' in auth templates
- Update 'Zurück zum Dashboard' links to 'Zurück zur Startseite'

The dashboard was redundant with the home page functionality.
All navigation now directs users to the main home page instead.
System check passes without issues after removal.
2025-10-05 20:49:48 +02:00

767 lines
30 KiB
HTML

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}van Hees-Theyssen-Vogel'sche Stiftung - Stiftungsverwaltung{% endblock %}</title>
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
<!-- Custom CSS - British Racing Green Theme -->
<style>
/* British Racing Green Color Palette */
:root {
--racing-green: #004225;
--racing-green-light: #006837;
--racing-green-dark: #002818;
--grey-light: #f8f9fa;
--grey-medium: #6c757d;
--grey-dark: #495057;
--orange-accent: #fd7e14;
--orange-light: #ff922b;
--orange-dark: #e8590c;
}
/* Global Typography - More Compact */
html {
font-size: 14px; /* Reduced from default 16px */
}
body {
font-size: 0.875rem; /* 12.25px */
line-height: 1.4;
font-weight: 400;
}
.h1, .h2, .h3, .h4, .h5, .h6,
h1, h2, h3, h4, h5, h6 {
font-weight: 600;
line-height: 1.3;
margin-bottom: 0.75rem;
}
.h1, h1 { font-size: 2rem; }
.h2, h2 { font-size: 1.65rem; }
.h3, h3 { font-size: 1.4rem; }
.h4, h4 { font-size: 1.15rem; }
.h5, h5 { font-size: 1rem; }
.h6, h6 { font-size: 0.875rem; }
/* Compact spacing */
.container, .container-fluid, .container-lg {
padding-left: 0.75rem;
padding-right: 0.75rem;
}
.row {
margin-left: -0.5rem;
margin-right: -0.5rem;
}
.col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6,
.col-7, .col-8, .col-9, .col-10, .col-11, .col-12,
.col-auto, .col-sm, .col-sm-auto, .col-md, .col-md-auto,
.col-lg, .col-lg-auto, .col-xl, .col-xl-auto {
padding-left: 0.5rem;
padding-right: 0.5rem;
}
/* Compact margins */
.mb-1 { margin-bottom: 0.25rem !important; }
.mb-2 { margin-bottom: 0.4rem !important; }
.mb-3 { margin-bottom: 0.75rem !important; }
.mb-4 { margin-bottom: 1rem !important; }
.mb-5 { margin-bottom: 1.5rem !important; }
.mt-1 { margin-top: 0.25rem !important; }
.mt-2 { margin-top: 0.4rem !important; }
.mt-3 { margin-top: 0.75rem !important; }
.mt-4 { margin-top: 1rem !important; }
.mt-5 { margin-top: 1.5rem !important; }
.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
.py-2 { padding-top: 0.4rem !important; padding-bottom: 0.4rem !important; }
.py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; }
.px-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
.px-2 { padding-left: 0.4rem !important; padding-right: 0.4rem !important; }
.px-3 { padding-left: 0.75rem !important; padding-right: 0.75rem !important; }
.border-left-primary {
border-left: 0.25rem solid var(--racing-green) !important;
}
.border-left-success {
border-left: 0.25rem solid var(--racing-green-light) !important;
}
.border-left-info {
border-left: 0.25rem solid var(--grey-medium) !important;
}
.border-left-warning {
border-left: 0.25rem solid var(--orange-accent) !important;
}
.border-left-danger {
border-left: 0.25rem solid #dc3545 !important;
}
/* Main navbar with racing green gradient */
.bg-gradient-primary {
background-color: var(--racing-green);
background-image: linear-gradient(180deg, var(--racing-green-light) 10%, var(--racing-green-dark) 100%);
}
/* Navigation styling - More Compact */
.navbar {
padding: 0.375rem 0;
}
.navbar-brand {
font-weight: 700;
font-size: 1.1rem;
color: white !important;
padding: 0.375rem 0;
}
.navbar-nav .nav-link,
.navbar-nav .nav-link.dropdown-toggle {
padding: 0.375rem 0.5rem !important;
display: inline-flex !important;
align-items: center !important;
white-space: nowrap !important;
font-size: 0.8rem;
}
.navbar-dark .navbar-nav .nav-link {
color: rgba(255, 255, 255, 0.9);
}
.navbar-dark .navbar-nav .nav-link:hover {
color: var(--orange-light);
}
/* Dropdown menus - More Compact */
.dropdown-menu {
border: 1px solid #dee2e6;
box-shadow: 0 0.25rem 0.5rem rgba(0, 66, 37, 0.15);
font-size: 0.8rem;
}
.dropdown-item {
padding: 0.375rem 0.75rem;
font-size: 0.8rem;
}
.dropdown-item:hover {
background-color: rgba(0, 66, 37, 0.1);
color: var(--racing-green-dark);
}
.dropdown-header {
font-size: 0.75rem;
padding: 0.25rem 0.75rem;
}
/* Cards and content - More Compact */
.card {
border: 1px solid #e9ecef;
box-shadow: 0 0.125rem 1rem 0 rgba(0, 66, 37, 0.08);
margin-bottom: 0.75rem;
}
.card-body {
padding: 0.75rem;
}
.card-header {
background-color: var(--grey-light);
border-bottom: 1px solid #dee2e6;
color: var(--racing-green-dark);
padding: 0.5rem 0.75rem;
font-size: 0.875rem;
font-weight: 600;
}
.card-header.bg-primary {
background-color: var(--racing-green) !important;
color: white;
}
.card-header.bg-success {
background-color: var(--racing-green-light) !important;
color: white;
}
.card-header.bg-info {
background-color: var(--grey-medium) !important;
color: white;
}
.card-header.bg-warning {
background-color: var(--orange-accent) !important;
color: white;
}
.card-title {
font-size: 0.9rem;
font-weight: 600;
margin-bottom: 0;
}
/* Tables - More Compact */
.table {
font-size: 0.8rem;
margin-bottom: 0.75rem;
}
.table th {
border-top: none;
font-weight: 600;
color: var(--racing-green-dark);
background-color: var(--grey-light);
padding: 0.5rem;
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.025em;
}
.table td {
padding: 0.5rem;
border-top: 1px solid #dee2e6;
}
.table-sm th,
.table-sm td {
padding: 0.375rem;
}
.table-light {
background-color: var(--grey-light);
}
/* Buttons - More Compact */
.btn {
font-size: 0.8rem;
padding: 0.375rem 0.75rem;
border-radius: 0.25rem;
font-weight: 500;
line-height: 1.3;
}
.btn-sm {
font-size: 0.75rem;
padding: 0.25rem 0.5rem;
border-radius: 0.2rem;
}
.btn-lg {
font-size: 0.9rem;
padding: 0.5rem 1rem;
border-radius: 0.3rem;
}
/* Form Controls - More Compact */
.form-control, .form-select {
font-size: 0.8rem;
padding: 0.375rem 0.5rem;
line-height: 1.3;
}
.form-control-sm, .form-select-sm {
font-size: 0.75rem;
padding: 0.25rem 0.375rem;
}
.form-label {
font-size: 0.8rem;
font-weight: 500;
margin-bottom: 0.25rem;
}
.form-text {
font-size: 0.7rem;
margin-top: 0.15rem;
}
.form-check-label {
font-size: 0.8rem;
}
/* Badges - More Compact */
.badge {
font-size: 0.7rem;
padding: 0.25em 0.5em;
font-weight: 500;
}
/* Progress bars */
.progress {
height: 1rem;
font-size: 0.65rem;
}
.progress-bar {
line-height: 1rem;
}
.btn-primary {
background-color: var(--racing-green);
border-color: var(--racing-green);
}
.btn-primary:hover {
background-color: var(--racing-green-dark);
border-color: var(--racing-green-dark);
}
.btn-success {
background-color: var(--racing-green-light);
border-color: var(--racing-green-light);
}
.btn-success:hover {
background-color: var(--racing-green);
border-color: var(--racing-green);
}
.btn-warning {
background-color: var(--orange-accent);
border-color: var(--orange-accent);
color: white;
}
.btn-warning:hover {
background-color: var(--orange-dark);
border-color: var(--orange-dark);
color: white;
}
.btn-outline-primary {
color: var(--racing-green);
border-color: var(--racing-green);
}
.btn-outline-primary:hover {
background-color: var(--racing-green);
border-color: var(--racing-green);
}
.btn-outline-secondary {
color: var(--grey-medium);
border-color: var(--grey-medium);
}
.btn-outline-secondary:hover {
background-color: var(--grey-medium);
border-color: var(--grey-medium);
}
/* Alerts - More Compact */
.alert {
padding: 0.5rem 0.75rem;
margin-bottom: 0.75rem;
font-size: 0.8rem;
}
.alert-success {
background-color: rgba(0, 104, 55, 0.1);
border-color: var(--racing-green-light);
color: var(--racing-green-dark);
}
.alert-warning {
background-color: rgba(253, 126, 20, 0.1);
border-color: var(--orange-accent);
color: var(--orange-dark);
}
/* Responsive adjustments for very compact design */
@media (max-width: 768px) {
html {
font-size: 13px;
}
body {
font-size: 0.8rem;
}
.navbar-brand {
font-size: 1rem;
}
.navbar-nav .nav-link {
font-size: 0.75rem;
padding: 0.25rem 0.375rem !important;
}
.card-body {
padding: 0.5rem;
}
.btn {
font-size: 0.75rem;
padding: 0.25rem 0.5rem;
}
.table {
font-size: 0.75rem;
}
.table th,
.table td {
padding: 0.375rem;
}
}
@media (min-width: 1400px) {
.container-lg {
max-width: 1400px;
}
}
/* Table styling */
.table-light {
background-color: var(--grey-light);
}
/* Badges */
.badge.bg-primary {
background-color: var(--racing-green) !important;
}
.badge.bg-success {
background-color: var(--racing-green-light) !important;
}
.badge.bg-warning {
background-color: var(--orange-accent) !important;
color: white;
}
.badge.bg-info {
background-color: var(--grey-medium) !important;
}
/* Pagination */
.pagination .page-link {
color: var(--racing-green);
border-color: #dee2e6;
font-size: 0.8rem;
padding: 0.375rem 0.5rem;
}
.pagination .page-item.active .page-link {
background-color: var(--racing-green);
border-color: var(--racing-green);
}
.pagination .page-link:hover {
color: var(--racing-green-dark);
background-color: var(--grey-light);
}
/* Text colors */
.text-primary {
color: var(--racing-green) !important;
}
.text-success {
color: var(--racing-green-light) !important;
}
/* Form controls */
.form-control:focus {
border-color: var(--racing-green-light);
box-shadow: 0 0 0 0.15rem rgba(0, 66, 37, 0.25);
}
.form-select:focus {
border-color: var(--racing-green-light);
box-shadow: 0 0 0 0.15rem rgba(0, 66, 37, 0.25);
}
/* Footer */
.sticky-footer {
background-color: var(--grey-light) !important;
border-top: 1px solid #dee2e6;
padding: 0.75rem 0;
font-size: 0.8rem;
}
/* Custom accent colors for specific elements */
.btn-accent {
background-color: var(--orange-accent);
border-color: var(--orange-accent);
color: white;
}
.btn-accent:hover {
background-color: var(--orange-dark);
border-color: var(--orange-dark);
color: white;
}
.bg-accent {
background-color: var(--orange-accent) !important;
color: white;
}
</style>
{% block extra_css %}{% endblock %}
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-dark bg-gradient-primary fixed-top">
<div class="container">
<a class="navbar-brand" href="{% url 'stiftung:home' %}">
<i class="fas fa-landmark me-2"></i>van Hees-Theyssen-Vogel'sche Stiftung
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link" href="{% url 'stiftung:home' %}">
<i class="fas fa-home me-1"></i>Home
</a>
</li>
<!-- Destinatäre -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="personenDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fas fa-users me-1"></i>Destinatäre
</a>
<ul class="dropdown-menu" aria-labelledby="personenDropdown">
<li><h6 class="dropdown-header">Destinatäre</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:destinataer_list' %}">
<i class="fas fa-list me-2"></i>Alle Destinatäre
</a></li>
<li><a class="dropdown-item" href="{% url 'stiftung:destinataer_create' %}">
<i class="fas fa-plus me-2"></i>Neuer Destinatär
</a></li>
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">Förderungen</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:foerderung_list' %}">
<i class="fas fa-gift me-2"></i>Alle Förderungen
</a></li>
<li><a class="dropdown-item" href="{% url 'stiftung:foerderung_create' %}">
<i class="fas fa-plus me-2"></i>Neue Förderung
</a></li>
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">Unterstützungen</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:unterstuetzungen_all' %}">
<i class="fas fa-hand-holding-usd me-2"></i>Alle Unterstützungen
</a></li>
<li><a class="dropdown-item" href="{% url 'stiftung:unterstuetzung_create' %}">
<i class="fas fa-plus me-2"></i>Neue Unterstützung
</a></li>
</ul>
</li>
<!-- Land & Pacht -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="immobilienDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fas fa-tree me-1"></i>Land & Pacht
</a>
<ul class="dropdown-menu" aria-labelledby="immobilienDropdown">
<li><h6 class="dropdown-header">Ländereien</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:land_list' %}">
<i class="fas fa-list me-2"></i>Alle Ländereien
</a></li>
<li><a class="dropdown-item" href="{% url 'stiftung:land_create' %}">
<i class="fas fa-plus me-2"></i>Neue Länderei
</a></li>
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">Verpachtungen</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:verpachtung_list' %}">
<i class="fas fa-handshake me-2"></i>Alle Verpachtungen
</a></li>
<li><a class="dropdown-item" href="{% url 'stiftung:verpachtung_create' %}">
<i class="fas fa-plus me-2"></i>Neue Verpachtung
</a></li>
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">Abrechnungen</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:land_abrechnung_list' %}">
<i class="fas fa-calculator me-2"></i>Alle Abrechnungen
</a></li>
<li><a class="dropdown-item" href="{% url 'stiftung:land_abrechnung_create' %}">
<i class="fas fa-plus me-2"></i>Neue Abrechnung
</a></li>
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">Pächter</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:paechter_list' %}">
<i class="fas fa-user-tie me-2"></i>Alle Pächter
</a></li>
</ul>
</li>
<!-- Verwaltung & Dokumente -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="verwaltungDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fas fa-briefcase me-1"></i>Verwaltung
</a>
<ul class="dropdown-menu" aria-labelledby="verwaltungDropdown">
<li><a class="dropdown-item" href="{% url 'stiftung:dokument_management' %}">
<i class="fas fa-folder-open me-2"></i>Dokumente
</a></li>
<li><a class="dropdown-item" href="{% url 'stiftung:geschaeftsfuehrung' %}">
<i class="fas fa-briefcase me-2"></i>Geschäftsführung
</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="{% url 'stiftung:administration' %}">
<i class="fas fa-cogs me-2"></i>Administration
</a></li>
</ul>
</li>
<!-- Kalender -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="kalenderDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fas fa-calendar-alt me-1"></i>Kalender
</a>
<ul class="dropdown-menu" aria-labelledby="kalenderDropdown">
<li><h6 class="dropdown-header">Ansichten</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:kalender' %}">
<i class="fas fa-calendar me-2"></i>Kalender anzeigen
</a></li>
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">Verwaltung</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:kalender_admin' %}">
<i class="fas fa-cogs me-2"></i>Kalender Administration
</a></li>
<li><a class="dropdown-item" href="{% url 'stiftung:kalender_create' %}">
<i class="fas fa-plus me-2"></i>Neuer Termin
</a></li>
</ul>
</li>
<!-- Geschichte -->
<li class="nav-item">
<a class="nav-link" href="{% url 'stiftung:geschichte_list' %}">
<i class="fas fa-book-open me-1"></i>Geschichte
</a>
</li>
<!-- User Menu -->
{% if user.is_authenticated %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fas fa-user me-1"></i>{{ user.username }}
{% if user.is_staff %}
<span class="badge bg-warning ms-1">Staff</span>
{% endif %}
{% if user.is_superuser %}
<span class="badge bg-danger ms-1">Admin</span>
{% endif %}
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">
<li><h6 class="dropdown-header">{{ user.get_full_name|default:user.username }}</h6></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="{% url 'stiftung:user_detail' user.pk %}">
<i class="fas fa-user me-2"></i>Mein Profil
</a></li>
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">Sicherheit</h6></li>
<li><a class="dropdown-item" href="{% url 'stiftung:two_factor_setup' %}">
<i class="fas fa-shield-alt me-2"></i>2FA verwalten
</a></li>
<li><hr class="dropdown-divider"></li>
{% if perms.stiftung.manage_users %}
<li><a class="dropdown-item" href="{% url 'stiftung:user_management' %}">
<i class="fas fa-users me-2"></i>Benutzerverwaltung
</a></li>
{% endif %}
{% if perms.stiftung.access_administration %}
<li><a class="dropdown-item" href="{% url 'stiftung:administration' %}">
<i class="fas fa-cogs me-2"></i>Administration
</a></li>
{% endif %}
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="{% url 'stiftung:logout' %}">
<i class="fas fa-sign-out-alt me-2"></i>Abmelden
</a></li>
</ul>
</li>
{% else %}
<li class="nav-item">
<a class="nav-link" href="{% url 'stiftung:login' %}">
<i class="fas fa-sign-in-alt me-1"></i>Anmelden
</a>
</li>
{% endif %}
</ul>
</div>
</div>
</nav>
<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">
<!-- Main Content -->
<div id="content" style="padding-top: 60px;">
<!-- Messages -->
{% if messages %}
<div class="container-lg mx-auto mt-2" style="max-width: 1400px;">
{% for message in messages %}
<div class="alert alert-{% if message.tags == 'error' %}danger{% else %}{{ message.tags }}{% endif %} alert-dismissible fade show" role="alert" style="padding: 0.5rem 0.75rem; font-size: 0.8rem;">
{{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
</div>
{% endif %}
<!-- Page Content -->
<div class="container-lg mx-auto" style="max-width: 1400px; padding: 15px;">
{% block content %}
{% endblock %}
</div>
</div>
<!-- Footer -->
<footer class="sticky-footer bg-white">
<div class="container-lg mx-auto my-auto" style="max-width: 1200px;">
<div class="copyright text-center my-auto">
<span>&copy; 2025 van Hees-Theyssen-Vogel'sche Stiftung. Alle Rechte vorbehalten.</span>
<br>
<small class="text-muted">
<i class="fas fa-leaf text-success"></i> v2.1.4 - Enhanced Destinataer Management • Sept 2025
<span class="badge badge-primary ml-2">🚀 Enhanced</span>
</small>
</div>
</div>
</footer>
</div>
<!-- Import Modal -->
<div class="modal fade" id="importModal" tabindex="-1" aria-labelledby="importModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="importModalLabel">Import Status</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div id="importProgress" class="progress mb-3" style="display: none;">
<div class="progress-bar" role="progressbar" style="width: 0%"></div>
</div>
<div id="importMessage"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Schließen</button>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Additional JavaScript -->
{% block javascript %}
{% endblock %}
</body>
</html>