This commit is contained in:
Iliyan Angelov
2025-11-26 22:32:20 +02:00
commit ed94dd22dd
150 changed files with 14058 additions and 0 deletions

291
templates/base.html Normal file
View File

@@ -0,0 +1,291 @@
<!DOCTYPE html>
<html lang="bg" prefix="og: http://ogp.me/ns#">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token }}">
<!-- Primary Meta Tags -->
<title>{% block title %}{{ seo.full_title|default:"Портал за Докладване на Измами - България" }}{% endblock %}</title>
<meta name="title" content="{% block meta_title %}{{ seo.full_title|default:"Официален Портал за Докладване на Измами - България" }}{% endblock %}">
<meta name="description" content="{% block meta_description %}{{ seo.page_description|default:seo.site_description }}{% endblock %}">
<meta name="keywords" content="{% block meta_keywords %}{{ seo.page_keywords|default:seo.site_keywords }}{% endblock %}">
<meta name="author" content="{{ seo.site_author }}">
<meta name="language" content="{{ seo.site_language }}">
<meta name="robots" content="{% block meta_robots %}{{ request.meta_robots|default:"index, follow" }}{% endblock %}">
<meta name="googlebot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
<meta name="bingbot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
<!-- Canonical URL -->
<link rel="canonical" href="{% block canonical_url %}{{ seo.canonical_url }}{% endblock %}">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="{% block og_type %}{{ seo.page_type|default:"website" }}{% endblock %}">
<meta property="og:url" content="{% block og_url %}{{ seo.canonical_url }}{% endblock %}">
<meta property="og:title" content="{% block og_title %}{{ seo.full_title }}{% endblock %}">
<meta property="og:description" content="{% block og_description %}{{ seo.page_description|default:seo.site_description }}{% endblock %}">
<meta property="og:image" content="{% block og_image %}{{ seo.og_image }}{% endblock %}">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="{% block og_image_alt %}{{ seo.site_name }}{% endblock %}">
<meta property="og:site_name" content="{{ seo.site_name }}">
<meta property="og:locale" content="bg_BG">
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="{% block twitter_url %}{{ seo.canonical_url }}{% endblock %}">
<meta name="twitter:title" content="{% block twitter_title %}{{ seo.full_title }}{% endblock %}">
<meta name="twitter:description" content="{% block twitter_description %}{{ seo.page_description|default:seo.site_description }}{% endblock %}">
<meta name="twitter:image" content="{% block twitter_image %}{{ seo.og_image }}{% endblock %}">
<meta name="twitter:image:alt" content="{% block twitter_image_alt %}{{ seo.site_name }}{% endblock %}">
{% if seo.twitter_site %}<meta name="twitter:site" content="{{ seo.twitter_site }}">{% endif %}
{% if seo.twitter_creator %}<meta name="twitter:creator" content="{{ seo.twitter_creator }}">{% endif %}
<!-- Additional Meta Tags -->
<meta name="theme-color" content="#003366">
<meta name="msapplication-TileColor" content="#003366">
<meta name="application-name" content="{{ seo.site_name }}">
{% load static %}
<!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="{% static 'images/favicon.svg' %}">
<link rel="icon" type="image/x-icon" href="{% static 'favicon.ico' %}">
<link rel="shortcut icon" href="{% static 'favicon.ico' %}">
<link rel="apple-touch-icon" href="{% static 'images/logo-icon.svg' %}">
<!-- Stylesheets -->
<link rel="stylesheet" href="{% static 'css/style.css' %}">
<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=Roboto:wght@300;400;500;700&family=Roboto+Slab:wght@400;700&display=swap" rel="stylesheet">
<!-- Structured Data (JSON-LD) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "{% block schema_type %}GovernmentOrganization{% endblock %}",
"name": "{{ seo.site_name }}",
"url": "{{ seo.site_url }}",
"logo": "{{ seo.site_image }}",
"description": "{{ seo.site_description }}",
"address": {
"@type": "PostalAddress",
"addressCountry": "BG",
"addressLocality": "София",
"addressRegion": "София"
},
"contactPoint": {
"@type": "ContactPoint",
"email": "{{ site_settings.contact_email }}",
{% if site_settings.contact_phone %}"telephone": "{{ site_settings.contact_phone }}",{% endif %}
"contactType": "customer service",
"availableLanguage": "bg"
},
"sameAs": [
"{{ seo.site_url }}"
],
"inLanguage": "bg"
}
</script>
{% block extra_head %}{% endblock %}
{% block extra_css %}{% endblock %}
</head>
<body>
<!-- Government Header -->
<header class="gov-header">
<div class="gov-header-top">
<div class="container">
<div class="gov-header-content">
<div class="gov-logo-section">
<a href="{% url 'reports:home' %}" class="gov-logo-link">
<div class="gov-logo">
<img src="{% static 'images/logo-icon.svg' %}" alt="Анти-Измами Лого" class="logo-icon">
</div>
<div class="gov-title">
<h1>Официален Портал</h1>
<p class="gov-subtitle">за Докладване на Измами</p>
</div>
</a>
</div>
<div class="gov-badge">
<span class="badge-text">Официален</span>
<span class="badge-subtext">Портал</span>
</div>
</div>
</div>
</div>
<nav class="gov-navbar">
<div class="container">
<button class="mobile-menu-toggle" aria-label="Toggle menu" id="mobileMenuToggle">
<span></span>
<span></span>
<span></span>
</button>
<ul class="gov-nav" id="mainNav">
<li class="nav-main-item"><a href="{% url 'reports:home' %}" class="{% if request.resolver_match.url_name == 'home' %}active{% endif %}">🏠 Начало</a></li>
<li class="nav-main-item"><a href="{% url 'reports:list' %}" class="{% if 'reports' in request.path and 'list' in request.path %}active{% endif %}">📋 Доклади</a></li>
<li class="nav-main-item"><a href="{% url 'reports:create' %}" class="{% if 'create' in request.path %}active{% endif %}"> Докладване</a></li>
<li class="nav-main-item"><a href="{% url 'reports:contact' %}" class="{% if 'contact' in request.path %}active{% endif %}">📞 Контакти</a></li>
{% if user.is_authenticated %}
<li class="nav-main-item"><a href="{% url 'reports:my_reports' %}" class="{% if 'my-reports' in request.path %}active{% endif %}">📝 Моите Доклади</a></li>
{% if user.is_moderator %}
<li class="nav-main-item"><a href="{% url 'moderation:dashboard' %}" class="{% if 'moderation' in request.path %}active{% endif %}">⚖️ Модерация</a></li>
{% endif %}
{% if user.is_administrator %}
<li class="nav-main-item"><a href="{% url 'analytics:dashboard' %}" class="{% if 'analytics' in request.path %}active{% endif %}">📊 Аналитика</a></li>
<li class="nav-main-item"><a href="{% url 'osint:admin_dashboard' %}" class="{% if 'osint/admin-dashboard' in request.path %}active{% endif %}">🤖 OSINT Админ</a></li>
{% endif %}
{% endif %}
<li class="nav-spacer"></li>
{% if user.is_authenticated %}
<li class="nav-auth-item nav-user">
<a href="{% url 'accounts:profile' %}" class="user-link">
<span class="user-icon">👤</span>
<span>{{ user.username }}</span>
</a>
</li>
<li class="nav-auth-item"><a href="{% url 'accounts:logout' %}"
class="logout-link"
data-confirm="Сигурни ли сте, че искате да излезете?"
data-confirm-title="Изход от системата">🚪 Изход</a></li>
{% else %}
<li class="nav-auth-item"><a href="{% url 'accounts:login' %}" class="login-link">🔐 Вход</a></li>
<li class="nav-auth-item"><a href="{% url 'accounts:register' %}" class="register-link">📝 Регистрация</a></li>
{% endif %}
</ul>
</div>
</nav>
</header>
<!-- Main Content -->
<main class="gov-main">
<div class="container">
{% if messages %}
<div class="gov-messages">
{% for message in messages %}
<div class="gov-alert gov-alert-{{ message.tags }}">
<div class="alert-icon">
{% if message.tags == 'success' %}✓{% elif message.tags == 'error' %}✕{% else %}{% endif %}
</div>
<div class="alert-content">
<strong>{{ message.tags|title }}:</strong> {{ message }}
</div>
</div>
{% endfor %}
</div>
{% endif %}
{% block content %}{% endblock %}
</div>
</main>
<!-- Government Footer -->
<footer class="gov-footer">
<div class="container">
<div class="footer-content">
<div class="footer-section">
<a href="{% url 'reports:home' %}" class="footer-logo-link-small">
<img src="{% static 'images/logo.svg' %}" alt="Анти-Измами Лого" class="footer-logo-small">
</a>
<p style="margin-top: 1rem;">За защита на гражданите от измами в българското интернет пространство</p>
</div>
<div class="footer-section">
<h4>Бързи Връзки</h4>
<ul>
<li><a href="{% url 'reports:home' %}">Начало</a></li>
<li><a href="{% url 'reports:list' %}">Доклади</a></li>
<li><a href="{% url 'reports:create' %}">Докладване</a></li>
<li><a href="{% url 'reports:search' %}">Търсене</a></li>
</ul>
</div>
<div class="footer-section">
<h4>Правна Информация</h4>
<ul>
<li><a href="{% url 'legal:privacy' %}">Политика за Поверителност</a></li>
<li><a href="{% url 'legal:terms' %}">Условия за Ползване</a></li>
<li><a href="{% url 'legal:data_request' %}">Заявка за Данни</a></li>
</ul>
</div>
<div class="footer-section">
<h4>Контакти</h4>
<p>Email: <a href="mailto:{{ site_settings.contact_email }}">{{ site_settings.contact_email }}</a></p>
{% if site_settings.contact_phone %}
<p>Телефон: <a href="tel:{{ site_settings.contact_phone }}">{{ site_settings.contact_phone }}</a></p>
{% endif %}
{% if site_settings.contact_address %}
<p>Адрес: {{ site_settings.contact_address }}</p>
{% endif %}
<p style="margin-top: 1rem;"><a href="{% url 'reports:contact' %}" style="color: var(--gov-accent); font-weight: 600;">Свържете се с нас</a></p>
</div>
</div>
<div class="footer-bottom">
<div class="footer-seal">
<a href="{% url 'reports:home' %}" class="footer-logo-link">
<img src="{% static 'images/logo.svg' %}" alt="Анти-Измами Лого" class="footer-logo">
</a>
<div class="seal-text">
<strong>Официален Портал</strong>
<span>Република България</span>
</div>
</div>
<p class="copyright">&copy; 2024 Официален Портал за Докладване на Измами. Всички права запазени.</p>
</div>
</div>
</footer>
<!-- Cookie Consent Banner -->
<div id="cookie-consent-banner" role="dialog" aria-labelledby="cookie-consent-title" aria-live="polite">
<div class="cookie-consent-container">
<div class="cookie-consent-content">
<h3 id="cookie-consent-title" class="cookie-consent-title">Управление на Бисквитки</h3>
<p class="cookie-consent-text">
Използваме <strong>само функционални бисквитки</strong>, необходими за правилната работа на платформата.
Не събираме данни за проследяване, реклами или аналитика.
Бисквитките се използват изключително за запазване на вашите настройки и сигурност на сесията.
За повече информация вижте нашата <a href="{% url 'legal:privacy' %}" target="_blank">Политика за Поверителност</a>.
</p>
<div class="cookie-consent-info">
Всички функционални бисквитки са необходими за работата на платформата и не могат да бъдат деактивирани.
</div>
</div>
<div class="cookie-consent-actions">
<button type="button" class="cookie-consent-btn cookie-consent-btn-accept" onclick="CookieConsent.accept()" aria-label="Приемам използването на функционални бисквитки">
Приемам
</button>
<button type="button" class="cookie-consent-btn cookie-consent-btn-decline" onclick="CookieConsent.decline()" aria-label="Отказвам използването на бисквитки">
Отказвам
</button>
</div>
</div>
</div>
{% block extra_js %}{% endblock %}
<script src="{% static 'js/popups.js' %}"></script>
<script src="{% static 'js/bot-protection.js' %}"></script>
<script src="{% static 'js/cookie-consent.js' %}"></script>
<script>
// Mobile menu toggle
document.addEventListener('DOMContentLoaded', function() {
const menuToggle = document.getElementById('mobileMenuToggle');
const mainNav = document.getElementById('mainNav');
if (menuToggle && mainNav) {
menuToggle.addEventListener('click', function() {
mainNav.classList.toggle('mobile-open');
menuToggle.classList.toggle('active');
});
// Close menu when clicking outside
document.addEventListener('click', function(event) {
if (!menuToggle.contains(event.target) && !mainNav.contains(event.target)) {
mainNav.classList.remove('mobile-open');
menuToggle.classList.remove('active');
}
});
}
});
</script>
</body>
</html>