92 lines
4.6 KiB
HTML
92 lines
4.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
<title>{% block title %}Website Checker{% endblock %}</title>
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
|
</head>
|
|
<body class="layout">
|
|
|
|
<!-- Mobile sidebar toggle (hidden on desktop via CSS) -->
|
|
<button class="sidebar-toggle" id="sidebar-toggle"
|
|
aria-label="Open navigation" aria-expanded="false" aria-controls="sidebar">☰</button>
|
|
<div class="sidebar-backdrop" id="sidebar-backdrop"></div>
|
|
|
|
<!-- Sidebar -->
|
|
<aside class="sidebar" id="sidebar" aria-label="Main navigation">
|
|
<div class="sidebar-brand">
|
|
<span class="brand-icon">🌐</span>
|
|
<span class="brand-name">Website<br>Checker</span>
|
|
</div>
|
|
<hr class="sidebar-divider">
|
|
|
|
{% if current_user %}
|
|
{% if current_user.role == 'admin' %}
|
|
<p class="nav-group-label">MANAGEMENT</p>
|
|
<a href="{{ url_for('admin_dashboard.dashboard') }}" class="nav-item {% if request.endpoint == 'admin_dashboard.dashboard' %}active{% endif %}">🏠 Dashboard</a>
|
|
<a href="{{ url_for('admin_users.users_list') }}" class="nav-item {% if 'admin_users' in request.endpoint %}active{% endif %}">👤 Users</a>
|
|
<a href="{{ url_for('admin_websites.websites_list') }}" class="nav-item {% if 'admin_websites' in request.endpoint %}active{% endif %}">🌐 Websites</a>
|
|
<a href="{{ url_for('admin_shifts.shifts_list') }}" class="nav-item {% if 'admin_shifts' in request.endpoint %}active{% endif %}">🗓 Shifts</a>
|
|
<a href="{{ url_for('admin_reports.reports') }}" class="nav-item {% if 'admin_reports' in request.endpoint %}active{% endif %}">📑 Reports</a>
|
|
<a href="{{ url_for('admin_logs.logs') }}" class="nav-item {% if 'admin_logs' in request.endpoint %}active{% endif %}">📋 Activity Log</a>
|
|
<a href="{{ url_for('admin_settings.settings') }}" class="nav-item {% if 'admin_settings' in request.endpoint %}active{% endif %}">⚙ Settings</a>
|
|
<hr class="sidebar-divider">
|
|
<p class="nav-group-label">MY WORKSPACE</p>
|
|
{% endif %}
|
|
|
|
<a href="{{ url_for('user_dashboard.my_shifts') }}" class="nav-item {% if 'user_dashboard' in request.endpoint %}active{% endif %}">📊 My Shifts</a>
|
|
<a href="{{ url_for('ai_summary.ai_summary') }}" class="nav-item {% if 'ai_summary' in request.endpoint %}active{% endif %}">🤖 AI Summary</a>
|
|
<a href="{{ url_for('bid_tracker.bids_list') }}" class="nav-item {% if 'bid_tracker' in request.endpoint %}active{% endif %}">📌 Bid Tracker</a>
|
|
{% endif %}
|
|
|
|
<div class="sidebar-footer">
|
|
{% if current_user %}
|
|
<div class="user-info">
|
|
<div class="user-name">{{ current_user.full_name or current_user.username }}</div>
|
|
<div class="user-role">{{ current_user.role | capitalize }}</div>
|
|
</div>
|
|
<a href="{{ url_for('auth.profile') }}" class="sidebar-btn btn-ghost">👤 My Profile</a>
|
|
<a href="{{ url_for('auth.change_password_view') }}" class="sidebar-btn btn-ghost">🔑 Change Password</a>
|
|
<a href="{{ url_for('auth.logout') }}" class="sidebar-btn btn-danger">⇠ Sign Out</a>
|
|
{% endif %}
|
|
</div>
|
|
</aside>
|
|
|
|
<!-- Main content -->
|
|
<main class="main-content">
|
|
<!-- Flash messages -->
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
{% if messages %}
|
|
<div class="flash-container">
|
|
{% for cat, msg in messages %}
|
|
<div class="alert alert-{{ cat }}">{{ msg }}</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
{% endwith %}
|
|
|
|
{% block content %}{% endblock %}
|
|
</main>
|
|
|
|
<!-- ── Session timeout warning modal ──────────────────────── -->
|
|
<div class="modal-overlay" id="modal-session-warning" data-no-backdrop-close>
|
|
<div class="modal" style="max-width:380px">
|
|
<div class="modal-header">
|
|
<span class="modal-title">⏱ Session Expiring Soon</span>
|
|
</div>
|
|
<div class="modal-body" style="text-align:center">
|
|
<p style="margin:0 0 .5rem">Your session expires in <strong id="session-countdown">5:00</strong>.</p>
|
|
<p class="text-muted" style="font-size:.875rem;margin:0">Click below to stay logged in.</p>
|
|
</div>
|
|
<div class="modal-footer" style="justify-content:center">
|
|
<button class="btn btn-primary" id="btn-stay-logged-in">Stay Logged In</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="{{ url_for('static', filename='js/app.js') }}"></script>
|
|
</body>
|
|
</html>
|