update
This commit is contained in:
355
templates/reports/contact.html
Normal file
355
templates/reports/contact.html
Normal file
@@ -0,0 +1,355 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}Свържете се с нас - Контакти{% endblock %}
|
||||
|
||||
{% block extra_css %}
|
||||
<style>
|
||||
.contact-hero {
|
||||
background: linear-gradient(135deg, var(--gov-primary) 0%, var(--gov-primary-dark) 100%);
|
||||
color: var(--gov-white);
|
||||
padding: 4rem 3rem;
|
||||
border-radius: 16px;
|
||||
margin-bottom: 3rem;
|
||||
text-align: center;
|
||||
box-shadow: 0 12px 48px rgba(0, 51, 102, 0.3);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.contact-hero::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%23ffffff' fill-opacity='0.03' fill-rule='evenodd'/%3E%3C/svg%3E");
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
.contact-hero > * {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.contact-hero h1 {
|
||||
font-family: 'Roboto Slab', serif;
|
||||
font-size: 3rem;
|
||||
margin-bottom: 1.5rem;
|
||||
text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.5px;
|
||||
}
|
||||
|
||||
.contact-hero p {
|
||||
font-size: 1.3rem;
|
||||
opacity: 0.95;
|
||||
line-height: 1.9;
|
||||
max-width: 700px;
|
||||
margin: 0 auto;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.contact-form-container {
|
||||
max-width: 900px;
|
||||
margin: 0 auto 3rem;
|
||||
}
|
||||
|
||||
.form-section-header {
|
||||
background: linear-gradient(135deg, var(--gov-primary) 0%, var(--gov-primary-dark) 100%);
|
||||
color: var(--gov-white);
|
||||
padding: 2rem 2.5rem;
|
||||
border-radius: 12px 12px 0 0;
|
||||
margin-bottom: 0;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.form-section-header::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -50%;
|
||||
right: -10%;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
background: radial-gradient(circle, rgba(255, 215, 0, 0.1) 0%, transparent 70%);
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.form-section-header h2 {
|
||||
font-family: 'Roboto Slab', serif;
|
||||
margin: 0;
|
||||
font-size: 2rem;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.form-section-header h2::before {
|
||||
content: '✉️';
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.contact-form-card {
|
||||
background: var(--gov-white);
|
||||
border-radius: 0 0 12px 12px;
|
||||
box-shadow: 0 8px 32px rgba(0, 51, 102, 0.15);
|
||||
border: 1px solid var(--gov-border);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.contact-form-body {
|
||||
padding: 3rem;
|
||||
background: linear-gradient(to bottom, #ffffff 0%, #f8f9fa 100%);
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
font-weight: 600;
|
||||
color: var(--gov-primary);
|
||||
margin-bottom: 0.75rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.form-group label::before {
|
||||
content: '▸';
|
||||
color: var(--gov-secondary);
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
border: 2px solid var(--gov-border);
|
||||
border-radius: 8px;
|
||||
padding: 0.875rem 1.25rem;
|
||||
font-size: 1rem;
|
||||
transition: all 0.3s ease;
|
||||
background: var(--gov-white);
|
||||
}
|
||||
|
||||
.form-control:focus {
|
||||
border-color: var(--gov-secondary);
|
||||
box-shadow: 0 0 0 4px rgba(0, 102, 204, 0.1);
|
||||
outline: none;
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
textarea.form-control {
|
||||
min-height: 150px;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
.form-actions {
|
||||
margin-top: 2.5rem;
|
||||
padding-top: 2rem;
|
||||
border-top: 2px solid var(--gov-gray-light);
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.form-actions .btn {
|
||||
padding: 1rem 2.5rem;
|
||||
font-size: 1.05rem;
|
||||
font-weight: 600;
|
||||
border-radius: 8px;
|
||||
min-width: 180px;
|
||||
}
|
||||
|
||||
.faq-section {
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
|
||||
border-radius: 12px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.faq-item {
|
||||
padding: 1.5rem;
|
||||
border-bottom: 1px solid var(--gov-gray-light);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.faq-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.faq-item:hover {
|
||||
background: rgba(0, 102, 204, 0.03);
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
.faq-item h3 {
|
||||
color: var(--gov-primary);
|
||||
margin-bottom: 0.75rem;
|
||||
font-size: 1.2rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.faq-item h3::before {
|
||||
content: '❓';
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.faq-item p {
|
||||
color: var(--gov-gray);
|
||||
line-height: 1.8;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.faq-item a {
|
||||
color: var(--gov-secondary);
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
transition: color 0.3s ease;
|
||||
}
|
||||
|
||||
.faq-item a:hover {
|
||||
color: var(--gov-primary);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.contact-hero {
|
||||
padding: 2.5rem 1.5rem;
|
||||
}
|
||||
|
||||
.contact-hero h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.contact-hero p {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.contact-form-body {
|
||||
padding: 2rem 1.5rem;
|
||||
}
|
||||
|
||||
.form-section-header {
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
.form-section-header h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.form-actions {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.form-actions .btn {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<!-- Hero Section -->
|
||||
<div class="contact-hero">
|
||||
<h1>Свържете се с нас</h1>
|
||||
<p>Имате въпрос, предложение или нужда от помощ? Нашият екип е готов да ви помогне.</p>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Contact Form -->
|
||||
<div class="contact-form-container">
|
||||
<div class="contact-form-card">
|
||||
<div class="form-section-header">
|
||||
<h2>Изпратете ни съобщение</h2>
|
||||
</div>
|
||||
<div class="contact-form-body">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
{# Hidden bot protection fields #}
|
||||
{% for field in form.hidden_fields %}
|
||||
{{ field }}
|
||||
{% endfor %}
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="{{ form.name.id_for_label }}">{{ form.name.label }}</label>
|
||||
{{ form.name }}
|
||||
{% if form.name.errors %}
|
||||
<div class="error-message">{{ form.name.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="{{ form.email.id_for_label }}">{{ form.email.label }}</label>
|
||||
{{ form.email }}
|
||||
{% if form.email.errors %}
|
||||
<div class="error-message">{{ form.email.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="{{ form.inquiry_type.id_for_label }}">{{ form.inquiry_type.label }}</label>
|
||||
{{ form.inquiry_type }}
|
||||
{% if form.inquiry_type.errors %}
|
||||
<div class="error-message">{{ form.inquiry_type.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="{{ form.subject.id_for_label }}">{{ form.subject.label }}</label>
|
||||
{{ form.subject }}
|
||||
{% if form.subject.errors %}
|
||||
<div class="error-message">{{ form.subject.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="{{ form.message.id_for_label }}">{{ form.message.label }}</label>
|
||||
{{ form.message }}
|
||||
{% if form.message.errors %}
|
||||
<div class="error-message">{{ form.message.errors }}</div>
|
||||
{% endif %}
|
||||
<small class="form-text">Моля, опишете подробно вашия въпрос или проблем.</small>
|
||||
</div>
|
||||
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-primary">Изпрати Съобщение</button>
|
||||
<a href="{% url 'reports:home' %}" class="btn btn-secondary">Отказ</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Additional Information -->
|
||||
<div class="gov-card faq-section" style="margin-top: 3rem;">
|
||||
<div class="gov-card-header">
|
||||
<h2>Често задавани въпроси</h2>
|
||||
<p style="color: var(--gov-gray); margin-top: 0.5rem; font-weight: normal;">Най-често задавани въпроси и отговори</p>
|
||||
</div>
|
||||
<div class="gov-card-body" style="padding: 0;">
|
||||
<div class="faq-item">
|
||||
<h3>Как да докладвам измама?</h3>
|
||||
<p>Можете да докладвате измама като използвате формата за <a href="{% url 'reports:create' %}">докладване</a>. Моля, предоставете всички налични детайли за да помогнем на другите граждани.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>Колко време отнема прегледът на доклад?</h3>
|
||||
<p>Нашият екип преглежда всички доклади в рамките на 2-5 работни дни. Ще получите уведомление по имейл когато докладът ви бъде прегледан.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>Мога ли да остана анонимен?</h3>
|
||||
<p>Да, можете да докладвате анонимно. Вашата лична информация ще бъде защитена и няма да бъде разкрита публично.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>Как да проверя статуса на моя доклад?</h3>
|
||||
<p>Ако сте регистриран потребител, можете да видите статуса на всички ваши доклади в секцията <a href="{% url 'reports:my_reports' %}">Моите Доклади</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
101
templates/reports/create.html
Normal file
101
templates/reports/create.html
Normal file
@@ -0,0 +1,101 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}Докладване на Измама - Официален Портал{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="form-container">
|
||||
<h2>Докладване на Измама или Мошеничество</h2>
|
||||
<p class="form-description">Помогнете да защитим другите граждани, като докладвате измами. Всички доклади се преглеждат от модератори преди публикуване.</p>
|
||||
|
||||
<form method="post" enctype="multipart/form-data" data-loading>
|
||||
{% csrf_token %}
|
||||
<div class="form-group">
|
||||
<label for="id_title">Заглавие *</label>
|
||||
{{ form.title }}
|
||||
{% if form.title.errors %}
|
||||
<div class="error-message">{{ form.title.errors }}</div>
|
||||
{% endif %}
|
||||
<small class="form-text" data-tooltip="Кратко и описателно заглавие на измамата">Кратко и описателно заглавие</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_description">Описание *</label>
|
||||
{{ form.description }}
|
||||
{% if form.description.errors %}
|
||||
<div class="error-message">{{ form.description.errors }}</div>
|
||||
{% endif %}
|
||||
<small class="form-text" data-tooltip="Включете всички важни детайли: какво се е случило, кога, къде">Предоставете подробна информация за измамата</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_scam_type">Вид Измама *</label>
|
||||
{{ form.scam_type }}
|
||||
{% if form.scam_type.errors %}
|
||||
<div class="error-message">{{ form.scam_type.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="id_reported_url">Докладван URL</label>
|
||||
{{ form.reported_url }}
|
||||
{% if form.reported_url.errors %}
|
||||
<div class="error-message">{{ form.reported_url.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_reported_email">Докладван Имейл</label>
|
||||
{{ form.reported_email }}
|
||||
{% if form.reported_email.errors %}
|
||||
<div class="error-message">{{ form.reported_email.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="id_reported_phone">Докладван Телефон</label>
|
||||
{{ form.reported_phone }}
|
||||
{% if form.reported_phone.errors %}
|
||||
<div class="error-message">{{ form.reported_phone.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_reported_company">Докладвана Фирма</label>
|
||||
{{ form.reported_company }}
|
||||
{% if form.reported_company.errors %}
|
||||
<div class="error-message">{{ form.reported_company.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_tags">Етикети</label>
|
||||
{{ form.tags }}
|
||||
{% if form.tags.errors %}
|
||||
<div class="error-message">{{ form.tags.errors }}</div>
|
||||
{% endif %}
|
||||
<small class="form-text">Задръжте Ctrl/Cmd за избор на множество етикети</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="checkbox-label">
|
||||
{{ form.is_anonymous }}
|
||||
Докладване анонимно
|
||||
<span data-tooltip="Вашият профил няма да бъде видим в публичния доклад">ℹ️</span>
|
||||
</label>
|
||||
{% if form.is_anonymous.errors %}
|
||||
<div class="error-message">{{ form.is_anonymous.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-primary" data-tooltip="Докладът ще бъде изпратен за преглед от модератор">Изпращане на Доклад</button>
|
||||
<a href="{% url 'reports:home' %}" class="btn btn-secondary">Отказ</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
26
templates/reports/delete.html
Normal file
26
templates/reports/delete.html
Normal file
@@ -0,0 +1,26 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}Изтриване на Доклад - Официален Портал{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="form-container">
|
||||
<h2>Изтриване на Доклад</h2>
|
||||
<div class="gov-alert gov-alert-warning">
|
||||
<div class="alert-icon">⚠</div>
|
||||
<div class="alert-content">
|
||||
<p>Сигурни ли сте, че искате да изтриете този доклад?</p>
|
||||
<p><strong>{{ object.title }}</strong></p>
|
||||
<p>Това действие не може да бъде отменено.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" data-loading>
|
||||
{% csrf_token %}
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-danger" data-tooltip="Това действие е необратимо">Да, Изтривам</button>
|
||||
<a href="{% url 'reports:my_reports' %}" class="btn btn-secondary">Отказ</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
193
templates/reports/detail.html
Normal file
193
templates/reports/detail.html
Normal file
@@ -0,0 +1,193 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}{{ report.title }} - Портал за Докладване на Измами{% endblock %}
|
||||
|
||||
{% block schema_type %}Article{% endblock %}
|
||||
|
||||
{% block extra_head %}
|
||||
<!-- Article Structured Data -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "{{ report.title|escapejs }}",
|
||||
"description": "{{ report.description|truncatewords:30|escapejs }}",
|
||||
"datePublished": "{{ report.created_at|date:'c' }}",
|
||||
"dateModified": "{{ report.updated_at|date:'c'|default:report.created_at|date:'c' }}",
|
||||
"author": {
|
||||
"@type": "Organization",
|
||||
"name": "{{ seo.site_name }}"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "GovernmentOrganization",
|
||||
"name": "{{ seo.site_name }}",
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": "{{ seo.site_image }}"
|
||||
}
|
||||
},
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
"@id": "{{ seo.canonical_url }}"
|
||||
},
|
||||
"articleSection": "{{ report.get_scam_type_display }}",
|
||||
"keywords": "{{ report.tags.all|join:', ' }}, измама, {{ report.get_scam_type_display }}"
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="gov-card">
|
||||
<div class="gov-card-header">
|
||||
<h1>{{ report.title }}</h1>
|
||||
<div class="report-badges">
|
||||
<span class="badge badge-{{ report.scam_type }}">{{ report.get_scam_type_display }}</span>
|
||||
{% if report.status == 'verified' %}
|
||||
<span class="badge badge-verified">Потвърдено</span>
|
||||
{% elif report.status == 'rejected' %}
|
||||
<span class="badge badge-rejected">Отхвърлено</span>
|
||||
{% elif report.status == 'pending' %}
|
||||
<span class="badge badge-pending">Чака Преглед</span>
|
||||
{% elif report.status == 'under_review' %}
|
||||
<span class="badge badge-under_review">В Преглед</span>
|
||||
{% endif %}
|
||||
{% if report.verification_score %}
|
||||
<span class="badge badge-score">Проверка: {{ report.verification_score }}%</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="gov-card-body">
|
||||
{% if report.status == 'rejected' and user.is_authenticated and report.reporter == user and rejection_action and rejection_action.reason %}
|
||||
<div class="gov-alert gov-alert-error" style="margin-bottom: 1.5rem;">
|
||||
<div class="alert-icon">✕</div>
|
||||
<div class="alert-content">
|
||||
<strong>Докладът е отхвърлен</strong>
|
||||
<p style="margin: 0.75rem 0 0 0; font-size: 1.05rem;"><strong>Причина за отхвърляне:</strong></p>
|
||||
<p style="margin: 0.5rem 0 0 0; padding: 0.75rem; background: rgba(220, 53, 69, 0.1); border-radius: 6px; border-left: 3px solid var(--gov-danger);">
|
||||
{{ rejection_action.reason }}
|
||||
</p>
|
||||
<p style="margin: 0.75rem 0 0 0; font-size: 0.9rem; color: var(--gov-gray);">
|
||||
<strong>Отхвърлен на:</strong> {{ rejection_action.created_at|date:"d.m.Y в H:i" }}<br>
|
||||
<strong>От:</strong> {{ rejection_action.moderator.username|default:"модератор" }}
|
||||
</p>
|
||||
<div style="margin-top: 1rem;">
|
||||
<a href="{% url 'reports:edit' report.pk %}" class="btn btn-primary btn-sm">Редактиране и Повторно Изпращане</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="info-grid" style="margin-bottom: 2rem;">
|
||||
<div class="info-item">
|
||||
<strong>Статус:</strong> <span class="badge badge-{{ report.status }}">{{ report.get_status_display }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<strong>Докладвано на:</strong> {{ report.created_at|date:"d F Y, H:i" }}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<strong>Докладвано от:</strong> {{ report.get_reporter_display }}
|
||||
</div>
|
||||
{% if report.verified_at %}
|
||||
<div class="info-item">
|
||||
<strong>Потвърдено на:</strong> {{ report.verified_at|date:"d F Y, H:i" }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="info-section">
|
||||
<h3>Описание</h3>
|
||||
<p style="line-height: 1.8; color: var(--gov-dark);">{{ report.description|linebreaks }}</p>
|
||||
</div>
|
||||
|
||||
<div class="info-section">
|
||||
<h3>Докладвани Обекти</h3>
|
||||
<ul style="list-style: none; padding: 0;">
|
||||
{% if report.reported_url %}
|
||||
<li style="padding: 0.75rem; background: var(--gov-light); margin-bottom: 0.5rem; border-radius: 6px;">
|
||||
<strong>URL:</strong> <a href="{{ report.reported_url }}" target="_blank" rel="noopener">{{ report.reported_url }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if report.reported_email %}
|
||||
<li style="padding: 0.75rem; background: var(--gov-light); margin-bottom: 0.5rem; border-radius: 6px;">
|
||||
<strong>Имейл:</strong> {{ report.reported_email }}
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if report.reported_phone %}
|
||||
<li style="padding: 0.75rem; background: var(--gov-light); margin-bottom: 0.5rem; border-radius: 6px;">
|
||||
<strong>Телефон:</strong> {{ report.reported_phone }}
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if report.reported_company %}
|
||||
<li style="padding: 0.75rem; background: var(--gov-light); margin-bottom: 0.5rem; border-radius: 6px;">
|
||||
<strong>Фирма:</strong> {{ report.reported_company }}
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{% if report.tags.all %}
|
||||
<div class="info-section">
|
||||
<h3>Етикети</h3>
|
||||
<div class="report-tags">
|
||||
{% for tag in report.tags.all %}
|
||||
<span class="tag" style="background-color: {{ tag.color }}">{{ tag.name }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if report.verifications.all %}
|
||||
<div class="info-section">
|
||||
<h3>Детайли за Проверка</h3>
|
||||
{% for verification in report.verifications.all %}
|
||||
<div class="verification-item" style="padding: 1rem; background: var(--gov-light); margin-bottom: 1rem; border-radius: 8px; border-left: 4px solid var(--gov-secondary);">
|
||||
<strong>{{ verification.get_verification_method_display }}:</strong>
|
||||
<span>Увереност: {{ verification.confidence_score }}%</span>
|
||||
{% if verification.notes %}
|
||||
<p style="margin-top: 0.5rem; color: var(--gov-gray);">{{ verification.notes }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if user.is_authenticated and report.reporter == user %}
|
||||
<div class="report-actions">
|
||||
{% if report.status == 'pending' %}
|
||||
<a href="{% url 'reports:edit' report.pk %}" class="btn btn-secondary">Редактиране</a>
|
||||
<a href="{% url 'reports:delete' report.pk %}"
|
||||
class="btn btn-danger"
|
||||
data-confirm="Сигурни ли сте, че искате да изтриете този доклад? Това действие не може да бъде отменено."
|
||||
data-confirm-title="Изтриване на Доклад">Изтриване</a>
|
||||
{% elif report.status == 'rejected' %}
|
||||
<a href="{% url 'reports:edit' report.pk %}" class="btn btn-primary">Редактиране и Повторно Изпращане</a>
|
||||
<a href="{% url 'reports:delete' report.pk %}"
|
||||
class="btn btn-danger"
|
||||
data-confirm="Сигурни ли сте, че искате да изтриете този отхвърлен доклад? Това действие не може да бъде отменено."
|
||||
data-confirm-title="Изтриване на Доклад">Изтриване</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if report.status == 'verified' and report.is_public %}
|
||||
<div class="report-actions" style="margin-top: 2rem; padding-top: 2rem; border-top: 2px solid var(--gov-gray-light);">
|
||||
<div style="background: var(--gov-light); padding: 1.5rem; border-radius: 8px; border-left: 4px solid var(--gov-warning);">
|
||||
<h4 style="margin: 0 0 0.75rem 0; color: var(--gov-primary); display: flex; align-items: center; gap: 0.5rem;">
|
||||
<span>⚠️</span>
|
||||
<span>Смятате ли, че този доклад е несправедлив?</span>
|
||||
</h4>
|
||||
<p style="margin: 0 0 1rem 0; color: var(--gov-gray); line-height: 1.6;">
|
||||
Ако сте обект на този доклад и смятате, че информацията е невярна или несправедлива, можете да подадете заявка за премахване.
|
||||
</p>
|
||||
<a href="{% url 'reports:takedown_request' report.pk %}" class="btn btn-secondary">
|
||||
📝 Заявка за Премахване на Доклад
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
73
templates/reports/edit.html
Normal file
73
templates/reports/edit.html
Normal file
@@ -0,0 +1,73 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}Редактиране на Доклад - Официален Портал{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="form-container">
|
||||
<h2>Редактиране на Доклад</h2>
|
||||
{% if object.status == 'rejected' %}
|
||||
<div class="gov-alert gov-alert-warning" style="margin-bottom: 1.5rem;">
|
||||
<div class="alert-icon">⚠</div>
|
||||
<div class="alert-content">
|
||||
<strong>Този доклад е бил отхвърлен.</strong>
|
||||
<p style="margin: 0.5rem 0 0 0;">След като направите промените, докладът ще бъде изпратен отново за преглед.</p>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<p class="form-description">Можете да редактирате доклади, които чакат преглед.</p>
|
||||
{% endif %}
|
||||
|
||||
<form method="post" data-loading>
|
||||
{% csrf_token %}
|
||||
<div class="form-group">
|
||||
<label for="id_title">Заглавие *</label>
|
||||
{{ form.title }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_description">Описание *</label>
|
||||
{{ form.description }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_scam_type">Вид Измама *</label>
|
||||
{{ form.scam_type }}
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="id_reported_url">Докладван URL</label>
|
||||
{{ form.reported_url }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_reported_email">Докладван Имейл</label>
|
||||
{{ form.reported_email }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="id_reported_phone">Докладван Телефон</label>
|
||||
{{ form.reported_phone }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_reported_company">Докладвана Фирма</label>
|
||||
{{ form.reported_company }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_tags">Етикети</label>
|
||||
{{ form.tags }}
|
||||
</div>
|
||||
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-primary" data-tooltip="Промените ще бъдат запазени">Запазване на Промените</button>
|
||||
<a href="{% url 'reports:my_reports' %}" class="btn btn-secondary">Отказ</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
126
templates/reports/home.html
Normal file
126
templates/reports/home.html
Normal file
@@ -0,0 +1,126 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Начало - Портал за Докладване на Измами{% endblock %}
|
||||
|
||||
{% block schema_type %}WebSite{% endblock %}
|
||||
|
||||
{% block extra_head %}
|
||||
<!-- Website Structured Data with SearchAction -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebSite",
|
||||
"name": "{{ seo.site_name }}",
|
||||
"url": "{{ seo.site_url }}",
|
||||
"description": "{{ seo.site_description }}",
|
||||
"inLanguage": "bg",
|
||||
"potentialAction": {
|
||||
"@type": "SearchAction",
|
||||
"target": {
|
||||
"@type": "EntryPoint",
|
||||
"urlTemplate": "{{ seo.site_url }}/search/?q={search_term_string}"
|
||||
},
|
||||
"query-input": "required name=search_term_string"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- BreadcrumbList Structured Data -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BreadcrumbList",
|
||||
"itemListElement": [{
|
||||
"@type": "ListItem",
|
||||
"position": 1,
|
||||
"name": "Начало",
|
||||
"item": "{{ seo.site_url }}"
|
||||
}]
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="home-hero">
|
||||
<div class="home-hero-content">
|
||||
<div class="home-hero-text">
|
||||
<h1>Добре дошли в Портала за Докладване на Измами</h1>
|
||||
<p class="lead">Докладвайте измами, за да помогнете на другите граждани в българското интернет пространство.</p>
|
||||
<div class="home-hero-actions">
|
||||
<a href="{% url 'reports:create' %}" class="btn btn-primary">Докладване на Измама</a>
|
||||
<a href="{% url 'reports:list' %}" class="btn btn-secondary">Преглед на Докладите</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="home-hero-image">
|
||||
<img src="{% static 'images/home.jpg' %}" alt="Официален Портал за Докладване на Измами" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="gov-card">
|
||||
<div class="gov-card-header">
|
||||
<h2>Статистика на Платформата</h2>
|
||||
</div>
|
||||
<div class="stats-grid">
|
||||
<div class="stat-card">
|
||||
<h3>{{ total_reports|default:0 }}</h3>
|
||||
<p>Потвърдени Доклади</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if recent_reports %}
|
||||
<div class="gov-card">
|
||||
<div class="gov-card-header">
|
||||
<h2>Последни Доклади</h2>
|
||||
</div>
|
||||
<div class="reports-list">
|
||||
{% for report in recent_reports %}
|
||||
<div class="report-card">
|
||||
<div class="report-header">
|
||||
<h3><a href="{% url 'reports:detail' report.pk %}">{{ report.title }}</a></h3>
|
||||
<span class="badge badge-{{ report.scam_type }}">{{ report.get_scam_type_display }}</span>
|
||||
</div>
|
||||
<div class="report-meta">
|
||||
<span>{{ report.created_at|date:"d M Y" }}</span>
|
||||
<span>от {{ report.get_reporter_display }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if scam_types %}
|
||||
<div class="gov-card">
|
||||
<div class="gov-card-header">
|
||||
<h2>Разпределение по Видове Измами</h2>
|
||||
</div>
|
||||
<div class="gov-card-body">
|
||||
<div class="scam-types-grid">
|
||||
{% for type in scam_types %}
|
||||
<div class="scam-type-card">
|
||||
<div class="scam-type-header">
|
||||
<span class="badge badge-{{ type.scam_type }}" style="font-size: 0.9rem; padding: 0.5rem 1rem;">
|
||||
{{ type.display_name }}
|
||||
</span>
|
||||
<div class="scam-type-count">
|
||||
<span class="count-number">{{ type.count }}</span>
|
||||
<span class="count-label">доклад{{ type.count|pluralize:"а,а" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="scam-type-bar">
|
||||
<div class="scam-type-bar-fill" style="width: {{ type.percentage }}%"></div>
|
||||
</div>
|
||||
<div class="scam-type-percentage">
|
||||
{{ type.percentage }}% от общия брой
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
78
templates/reports/list.html
Normal file
78
templates/reports/list.html
Normal file
@@ -0,0 +1,78 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}Потвърдени Доклади - Официален Портал{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="gov-card">
|
||||
<div class="gov-card-header">
|
||||
<h2>Потвърдени Доклади за Измами</h2>
|
||||
<div style="display: flex; gap: 1rem; flex-wrap: wrap;">
|
||||
<a href="{% url 'reports:create' %}" class="btn btn-primary" data-tooltip="Докладвайте нова измама или мошеничество">Докладване на Измама</a>
|
||||
<a href="{% url 'reports:search' %}" class="btn btn-secondary" data-tooltip="Търсене в базата данни с доклади">Търсене</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="gov-card-body">
|
||||
|
||||
{% if reports %}
|
||||
<div class="reports-list">
|
||||
{% for report in reports %}
|
||||
<div class="report-card">
|
||||
<div class="report-header">
|
||||
<h3><a href="{% url 'reports:detail' report.pk %}">{{ report.title }}</a></h3>
|
||||
<div style="display: flex; gap: 0.5rem; flex-wrap: wrap;">
|
||||
<span class="badge badge-{{ report.scam_type }}">{{ report.get_scam_type_display }}</span>
|
||||
{% if report.is_auto_discovered %}
|
||||
<span class="badge" style="background: linear-gradient(135deg, #17a2b8 0%, #138496 100%); color: white;" title="Автоматично открит от OSINT системата">🤖 OSINT</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="report-meta">
|
||||
<span class="date">{{ report.created_at|date:"d F Y" }}</span>
|
||||
<span class="reporter">от {{ report.get_reporter_display }}</span>
|
||||
{% if report.verification_score %}
|
||||
<span class="verification-score">Проверка: {{ report.verification_score }}%</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<p class="report-description">{{ report.description|truncatewords:50 }}</p>
|
||||
{% if report.tags.all %}
|
||||
<div class="report-tags">
|
||||
{% for tag in report.tags.all %}
|
||||
<span class="tag" style="background-color: {{ tag.color }}">{{ tag.name }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="report-entities">
|
||||
{% if report.reported_url %}
|
||||
<span class="entity">URL: <a href="{{ report.reported_url }}" target="_blank" rel="noopener">{{ report.reported_url|truncatechars:50 }}</a></span>
|
||||
{% endif %}
|
||||
{% if report.reported_email %}
|
||||
<span class="entity">Имейл: {{ report.reported_email }}</span>
|
||||
{% endif %}
|
||||
{% if report.reported_phone %}
|
||||
<span class="entity">Телефон: {{ report.reported_phone }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="pagination">
|
||||
{% if page_obj.has_previous %}
|
||||
<a href="?page=1" class="btn btn-secondary">Първа</a>
|
||||
<a href="?page={{ page_obj.previous_page_number }}" class="btn btn-secondary">Предишна</a>
|
||||
{% endif %}
|
||||
<span class="page-info">Страница {{ page_obj.number }} от {{ page_obj.paginator.num_pages }}</span>
|
||||
{% if page_obj.has_next %}
|
||||
<a href="?page={{ page_obj.next_page_number }}" class="btn btn-secondary">Следваща</a>
|
||||
<a href="?page={{ page_obj.paginator.num_pages }}" class="btn btn-secondary">Последна</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="empty-state">
|
||||
<p>Все още няма потвърдени доклади. Бъдете първият, който <a href="{% url 'reports:create' %}">докладва измама</a>!</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
77
templates/reports/my_reports.html
Normal file
77
templates/reports/my_reports.html
Normal file
@@ -0,0 +1,77 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}Моите Доклади - Официален Портал{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="gov-card">
|
||||
<div class="gov-card-header">
|
||||
<h2>Моите Доклади</h2>
|
||||
<a href="{% url 'reports:create' %}" class="btn btn-primary">Докладване на Измама</a>
|
||||
</div>
|
||||
<div class="gov-card-body">
|
||||
|
||||
{% if reports %}
|
||||
<div class="reports-list">
|
||||
{% for report in reports %}
|
||||
<div class="report-card">
|
||||
<div class="report-header">
|
||||
<h3><a href="{% url 'reports:detail' report.pk %}">{{ report.title }}</a></h3>
|
||||
<span class="badge badge-{{ report.status }}">{{ report.get_status_display }}</span>
|
||||
</div>
|
||||
<div class="report-meta">
|
||||
<span class="date">{{ report.created_at|date:"d F Y" }}</span>
|
||||
<span class="scam-type">{{ report.get_scam_type_display }}</span>
|
||||
</div>
|
||||
{% if report.status == 'rejected' and report.rejection_action and report.rejection_reason %}
|
||||
<div class="gov-alert gov-alert-error" style="margin-bottom: 1rem;">
|
||||
<div class="alert-icon">✕</div>
|
||||
<div class="alert-content">
|
||||
<strong>Докладът е отхвърлен</strong>
|
||||
<p style="margin: 0.5rem 0 0 0;"><strong>Причина:</strong> {{ report.rejection_reason }}</p>
|
||||
<p style="margin: 0.5rem 0 0 0; font-size: 0.9rem; color: var(--gov-gray);">
|
||||
Отхвърлен на {{ report.rejection_action.created_at|date:"d.m.Y в H:i" }} от {{ report.rejection_action.moderator.username|default:"модератор" }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<p class="report-description">{{ report.description|truncatewords:30 }}</p>
|
||||
<div class="report-actions">
|
||||
<a href="{% url 'reports:detail' report.pk %}" class="btn btn-sm btn-secondary" data-tooltip="Преглед на детайли">Преглед</a>
|
||||
{% if report.status == 'pending' %}
|
||||
<a href="{% url 'reports:edit' report.pk %}" class="btn btn-sm btn-secondary" data-tooltip="Редактиране на доклад">Редактиране</a>
|
||||
<a href="{% url 'reports:delete' report.pk %}"
|
||||
class="btn btn-sm btn-danger"
|
||||
data-confirm="Сигурни ли сте, че искате да изтриете този доклад? Това действие не може да бъде отменено."
|
||||
data-confirm-title="Изтриване на Доклад">Изтриване</a>
|
||||
{% elif report.status == 'rejected' %}
|
||||
<a href="{% url 'reports:edit' report.pk %}" class="btn btn-sm btn-primary" data-tooltip="Редактирайте доклада според обратната връзка и изпратете отново">Редактиране и Повторно Изпращане</a>
|
||||
<a href="{% url 'reports:delete' report.pk %}"
|
||||
class="btn btn-sm btn-danger"
|
||||
data-confirm="Сигурни ли сте, че искате да изтриете този отхвърлен доклад? Това действие не може да бъде отменено."
|
||||
data-confirm-title="Изтриване на Доклад">Изтриване</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="pagination">
|
||||
{% if page_obj.has_previous %}
|
||||
<a href="?page=1" class="btn btn-secondary">Първа</a>
|
||||
<a href="?page={{ page_obj.previous_page_number }}" class="btn btn-secondary">Предишна</a>
|
||||
{% endif %}
|
||||
<span class="page-info">Страница {{ page_obj.number }} от {{ page_obj.paginator.num_pages }}</span>
|
||||
{% if page_obj.has_next %}
|
||||
<a href="?page={{ page_obj.next_page_number }}" class="btn btn-secondary">Следваща</a>
|
||||
<a href="?page={{ page_obj.paginator.num_pages }}" class="btn btn-secondary">Последна</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="empty-state">
|
||||
<p>Все още не сте изпратили доклади. <a href="{% url 'reports:create' %}">Докладвайте първата си измама</a>!</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
54
templates/reports/search.html
Normal file
54
templates/reports/search.html
Normal file
@@ -0,0 +1,54 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}Търсене на Доклади - Официален Портал{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="gov-card">
|
||||
<div class="gov-card-header">
|
||||
<h2>Търсене на Доклади за Измами</h2>
|
||||
</div>
|
||||
<div class="gov-card-body">
|
||||
<form method="get" class="search-form" style="margin-bottom: 2rem;">
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<input type="text" name="q" class="form-control" placeholder="Търсене по заглавие, описание, URL или имейл..." value="{{ request.GET.q }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<select name="type" class="form-control">
|
||||
<option value="">Всички Видове</option>
|
||||
{% for value, label in scam_type_choices %}
|
||||
<option value="{{ value }}" {% if request.GET.type == value %}selected{% endif %}>{{ label }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Търсене</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% if reports %}
|
||||
<div class="search-results">
|
||||
<p class="results-count" style="font-weight: 600; color: var(--gov-primary); margin-bottom: 1.5rem;">Намерени {{ reports.count }} резултат(а)</p>
|
||||
<div class="reports-list">
|
||||
{% for report in reports %}
|
||||
<div class="report-card">
|
||||
<div class="report-header">
|
||||
<h3><a href="{% url 'reports:detail' report.pk %}">{{ report.title }}</a></h3>
|
||||
<span class="badge badge-{{ report.scam_type }}">{{ report.get_scam_type_display }}</span>
|
||||
</div>
|
||||
<div class="report-meta">
|
||||
<span class="date">{{ report.created_at|date:"d F Y" }}</span>
|
||||
</div>
|
||||
<p class="report-description">{{ report.description|truncatewords:30 }}</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% elif request.GET.q %}
|
||||
<div class="empty-state">
|
||||
<p>Не са намерени резултати за "{{ request.GET.q }}". Опитайте с различни термини за търсене.</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
244
templates/reports/takedown_request.html
Normal file
244
templates/reports/takedown_request.html
Normal file
@@ -0,0 +1,244 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Заявка за Премахване - {{ report.title }}{% endblock %}
|
||||
|
||||
{% block extra_css %}
|
||||
<style>
|
||||
.takedown-hero {
|
||||
background: linear-gradient(135deg, var(--gov-warning) 0%, #e0a800 100%);
|
||||
color: var(--gov-white);
|
||||
padding: 3rem 2.5rem;
|
||||
border-radius: 12px;
|
||||
margin-bottom: 2.5rem;
|
||||
text-align: center;
|
||||
box-shadow: 0 8px 24px rgba(255, 193, 7, 0.3);
|
||||
}
|
||||
|
||||
.takedown-hero h1 {
|
||||
font-family: 'Roboto Slab', serif;
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
text-shadow: 2px 2px 6px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.takedown-hero p {
|
||||
font-size: 1.1rem;
|
||||
opacity: 0.95;
|
||||
line-height: 1.7;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.report-summary {
|
||||
background: var(--gov-light);
|
||||
padding: 1.5rem;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 2rem;
|
||||
border-left: 4px solid var(--gov-secondary);
|
||||
}
|
||||
|
||||
.report-summary h3 {
|
||||
color: var(--gov-primary);
|
||||
margin-bottom: 1rem;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.report-summary p {
|
||||
color: var(--gov-gray);
|
||||
margin: 0.5rem 0;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.form-section-header {
|
||||
background: linear-gradient(135deg, var(--gov-primary) 0%, var(--gov-primary-dark) 100%);
|
||||
color: var(--gov-white);
|
||||
padding: 2rem 2.5rem;
|
||||
border-radius: 12px 12px 0 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.form-section-header h2 {
|
||||
font-family: 'Roboto Slab', serif;
|
||||
margin: 0;
|
||||
font-size: 2rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.form-section-header h2::before {
|
||||
content: '📋';
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.takedown-form-card {
|
||||
background: var(--gov-white);
|
||||
border-radius: 0 0 12px 12px;
|
||||
box-shadow: 0 8px 32px rgba(0, 51, 102, 0.15);
|
||||
border: 1px solid var(--gov-border);
|
||||
overflow: hidden;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.takedown-form-body {
|
||||
padding: 3rem;
|
||||
background: linear-gradient(to bottom, #ffffff 0%, #f8f9fa 100%);
|
||||
}
|
||||
|
||||
.info-box {
|
||||
background: #fff3cd;
|
||||
border: 1px solid #ffc107;
|
||||
border-radius: 8px;
|
||||
padding: 1.5rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.info-box h4 {
|
||||
color: #856404;
|
||||
margin: 0 0 0.75rem 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.info-box h4::before {
|
||||
content: 'ℹ️';
|
||||
}
|
||||
|
||||
.info-box ul {
|
||||
margin: 0.75rem 0 0 0;
|
||||
padding-left: 1.5rem;
|
||||
color: #856404;
|
||||
}
|
||||
|
||||
.info-box li {
|
||||
margin: 0.5rem 0;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.takedown-hero {
|
||||
padding: 2rem 1.5rem;
|
||||
}
|
||||
|
||||
.takedown-hero h1 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
|
||||
.takedown-form-body {
|
||||
padding: 2rem 1.5rem;
|
||||
}
|
||||
|
||||
.form-section-header {
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
.form-section-header h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<!-- Hero Section -->
|
||||
<div class="takedown-hero">
|
||||
<h1>Заявка за Премахване на Доклад</h1>
|
||||
<p>Ако сте обект на този доклад и смятате, че информацията е невярна или несправедлива, моля попълнете формата по-долу.</p>
|
||||
</div>
|
||||
|
||||
<!-- Report Summary -->
|
||||
<div class="report-summary">
|
||||
<h3>📄 Доклад, за който се отнася заявката:</h3>
|
||||
<p><strong>Заглавие:</strong> <a href="{% url 'reports:detail' report.pk %}">{{ report.title }}</a></p>
|
||||
<p><strong>Вид измама:</strong> {{ report.get_scam_type_display }}</p>
|
||||
<p><strong>Докладван на:</strong> {{ report.created_at|date:"d F Y" }}</p>
|
||||
{% if report.reported_url %}
|
||||
<p><strong>URL:</strong> <a href="{{ report.reported_url }}" target="_blank" rel="noopener">{{ report.reported_url }}</a></p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<!-- Info Box -->
|
||||
<div class="info-box">
|
||||
<h4>Важна информация</h4>
|
||||
<ul>
|
||||
<li>Всички заявки се преглеждат внимателно от нашия екип</li>
|
||||
<li>Ще получите отговор по имейл в рамките на 2-5 работни дни</li>
|
||||
<li>Моля, предоставете всички налични доказателства, които подкрепят вашата заявка</li>
|
||||
<li>Лъжливи или злонамерени заявки могат да доведат до правни последици</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Takedown Request Form -->
|
||||
<div class="takedown-form-card">
|
||||
<div class="form-section-header">
|
||||
<h2>Форма за Заявка</h2>
|
||||
</div>
|
||||
<div class="takedown-form-body">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
{# Hidden bot protection fields #}
|
||||
{% for field in form.hidden_fields %}
|
||||
{{ field }}
|
||||
{% endfor %}
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="{{ form.requester_name.id_for_label }}">{{ form.requester_name.label }}</label>
|
||||
{{ form.requester_name }}
|
||||
{% if form.requester_name.errors %}
|
||||
<div class="error-message">{{ form.requester_name.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="{{ form.requester_email.id_for_label }}">{{ form.requester_email.label }}</label>
|
||||
{{ form.requester_email }}
|
||||
{% if form.requester_email.errors %}
|
||||
<div class="error-message">{{ form.requester_email.errors }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="{{ form.requester_phone.id_for_label }}">{{ form.requester_phone.label }}</label>
|
||||
{{ form.requester_phone }}
|
||||
{% if form.requester_phone.errors %}
|
||||
<div class="error-message">{{ form.requester_phone.errors }}</div>
|
||||
{% endif %}
|
||||
<small class="form-text">Незадължително поле</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="{{ form.reason.id_for_label }}">{{ form.reason.label }}</label>
|
||||
{{ form.reason }}
|
||||
{% if form.reason.errors %}
|
||||
<div class="error-message">{{ form.reason.errors }}</div>
|
||||
{% endif %}
|
||||
{% if form.reason.help_text %}
|
||||
<small class="form-text">{{ form.reason.help_text }}</small>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="{{ form.evidence.id_for_label }}">{{ form.evidence.label }}</label>
|
||||
{{ form.evidence }}
|
||||
{% if form.evidence.errors %}
|
||||
<div class="error-message">{{ form.evidence.errors }}</div>
|
||||
{% endif %}
|
||||
{% if form.evidence.help_text %}
|
||||
<small class="form-text">{{ form.evidence.help_text }}</small>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-primary">Изпрати Заявка</button>
|
||||
<a href="{% url 'reports:detail' report.pk %}" class="btn btn-secondary">Отказ</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user