mirror of
https://github.com/getnamingo/registry.git
synced 2025-07-13 06:18:17 +02:00
Enhanced abuse reporting interface
This commit is contained in:
parent
d3b3ebb6ed
commit
a15904897c
3 changed files with 95 additions and 7 deletions
|
@ -27,6 +27,12 @@ class SupportController extends Controller
|
||||||
$subject = htmlspecialchars($data['subject'], ENT_QUOTES, 'UTF-8') ?? null;
|
$subject = htmlspecialchars($data['subject'], ENT_QUOTES, 'UTF-8') ?? null;
|
||||||
$message = $data['message'] ?? null;
|
$message = $data['message'] ?? null;
|
||||||
|
|
||||||
|
$reportedDomain = $data['reported_domain'] ?? null;
|
||||||
|
$natureOfAbuse = $data['nature_of_abuse'] ?? null;
|
||||||
|
$evidence = $data['evidence'] ?? null;
|
||||||
|
$relevantUrls = $data['relevant_urls'] ?? null;
|
||||||
|
$dateOfIncident = $data['date_of_incident'] ?? null;
|
||||||
|
|
||||||
if (!$subject) {
|
if (!$subject) {
|
||||||
$this->container->get('flash')->addMessage('error', 'Please enter a subject');
|
$this->container->get('flash')->addMessage('error', 'Please enter a subject');
|
||||||
return $response->withHeader('Location', '/support/new')->withStatus(302);
|
return $response->withHeader('Location', '/support/new')->withStatus(302);
|
||||||
|
@ -42,6 +48,19 @@ class SupportController extends Controller
|
||||||
return $response->withHeader('Location', '/support/new')->withStatus(302);
|
return $response->withHeader('Location', '/support/new')->withStatus(302);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($category == 8) {
|
||||||
|
if (
|
||||||
|
empty($reportedDomain) ||
|
||||||
|
empty($natureOfAbuse) ||
|
||||||
|
empty($evidence) ||
|
||||||
|
empty($relevantUrls) ||
|
||||||
|
empty($dateOfIncident)
|
||||||
|
) {
|
||||||
|
$this->container->get('flash')->addMessage('error', 'All abuse-related fields are required for Abuse Notifications.');
|
||||||
|
return $response->withHeader('Location', '/support/new')->withStatus(302);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$db->beginTransaction();
|
$db->beginTransaction();
|
||||||
$currentDateTime = new \DateTime();
|
$currentDateTime = new \DateTime();
|
||||||
|
@ -55,11 +74,11 @@ class SupportController extends Controller
|
||||||
'message' => $message,
|
'message' => $message,
|
||||||
'status' => 'Open',
|
'status' => 'Open',
|
||||||
'priority' => 'Medium',
|
'priority' => 'Medium',
|
||||||
'reported_domain' => null,
|
'reported_domain' => $reportedDomain,
|
||||||
'nature_of_abuse' => null,
|
'nature_of_abuse' => $natureOfAbuse,
|
||||||
'evidence' => null,
|
'evidence' => $evidence,
|
||||||
'relevant_urls' => null,
|
'relevant_urls' => $relevantUrls,
|
||||||
'date_of_incident' => null,
|
'date_of_incident' => $dateOfIncident ?: null,
|
||||||
'date_created' => $crdate,
|
'date_created' => $crdate,
|
||||||
'last_updated' => null,
|
'last_updated' => null,
|
||||||
]
|
]
|
||||||
|
|
|
@ -55,6 +55,28 @@
|
||||||
<label for="message" class="form-label required">{{ __('Message') }}</label>
|
<label for="message" class="form-label required">{{ __('Message') }}</label>
|
||||||
<textarea class="form-control" id="message" name="message" rows="5" required></textarea>
|
<textarea class="form-control" id="message" name="message" rows="5" required></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="abuse-fields" style="display: none;">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="reported_domain" class="form-label">Reported Domain</label>
|
||||||
|
<input type="text" class="form-control" id="reported_domain" name="reported_domain">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="nature_of_abuse" class="form-label">Nature of Abuse</label>
|
||||||
|
<textarea class="form-control" id="nature_of_abuse" name="nature_of_abuse" rows="2"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="evidence" class="form-label">Evidence</label>
|
||||||
|
<textarea class="form-control" id="evidence" name="evidence" rows="2"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="relevant_urls" class="form-label">Relevant URLs</label>
|
||||||
|
<textarea class="form-control" id="relevant_urls" name="relevant_urls" rows="2"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="date_of_incident" class="form-label">Date of Incident</label>
|
||||||
|
<input type="date" class="form-control" id="date_of_incident" name="date_of_incident">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer text-end">
|
<div class="card-footer text-end">
|
||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
|
@ -68,4 +90,27 @@
|
||||||
</div>
|
</div>
|
||||||
{% include 'partials/footer.twig' %}
|
{% include 'partials/footer.twig' %}
|
||||||
</div>
|
</div>
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
const categorySelect = document.getElementById('category');
|
||||||
|
const abuseFields = document.getElementById('abuse-fields');
|
||||||
|
const requiredInputs = abuseFields.querySelectorAll('input, textarea');
|
||||||
|
const requiredLabels = abuseFields.querySelectorAll('label');
|
||||||
|
|
||||||
|
categorySelect.addEventListener('change', function () {
|
||||||
|
if (this.value === '8') {
|
||||||
|
abuseFields.style.display = 'block';
|
||||||
|
requiredInputs.forEach(el => el.setAttribute('required', 'required'));
|
||||||
|
requiredLabels.forEach(label => label.classList.add('required'));
|
||||||
|
} else {
|
||||||
|
abuseFields.style.display = 'none';
|
||||||
|
requiredInputs.forEach(el => {
|
||||||
|
el.removeAttribute('required');
|
||||||
|
el.value = '';
|
||||||
|
});
|
||||||
|
requiredLabels.forEach(label => label.classList.remove('required'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -72,6 +72,16 @@
|
||||||
<div class="datagrid-title">{{ __('Created On') }}</div>
|
<div class="datagrid-title">{{ __('Created On') }}</div>
|
||||||
<div class="datagrid-content"><strong>{{ ticket.date_created }}</strong></div>
|
<div class="datagrid-content"><strong>{{ ticket.date_created }}</strong></div>
|
||||||
</div>
|
</div>
|
||||||
|
{% if ticket.category_id == 8 %}
|
||||||
|
<div class="datagrid-item">
|
||||||
|
<div class="datagrid-title">{{ __('Date of Incident') }}</div>
|
||||||
|
<div class="datagrid-content"><strong>{{ ticket.date_of_incident }}</strong></div>
|
||||||
|
</div>
|
||||||
|
<div class="datagrid-item">
|
||||||
|
<div class="datagrid-title">{{ __('Last Updated') }}</div>
|
||||||
|
<div class="datagrid-content"><strong>{{ ticket.last_updated }}</strong></div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div class="datagrid-item">
|
<div class="datagrid-item">
|
||||||
<div class="datagrid-title">{{ __('Category') }}</div>
|
<div class="datagrid-title">{{ __('Category') }}</div>
|
||||||
<div class="datagrid-content"><span class="status status-indigo">{{ category }}</span></div>
|
<div class="datagrid-content"><span class="status status-indigo">{{ category }}</span></div>
|
||||||
|
@ -108,6 +118,20 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% if ticket.category_id == 8 %}
|
||||||
|
<div class="datagrid-item">
|
||||||
|
<div class="datagrid-title">{{ __('Nature of Abuse') }}</div>
|
||||||
|
<div class="datagrid-content"><span class="status status-red">{{ ticket.nature_of_abuse|capitalize }}</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="datagrid-item">
|
||||||
|
<div class="datagrid-title">{{ __('Evidence') }}</div>
|
||||||
|
<div class="datagrid-content"><span class="status status-green">{{ ticket.evidence }}</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="datagrid-item">
|
||||||
|
<div class="datagrid-title">{{ __('Relevant URLs') }}</div>
|
||||||
|
<div class="datagrid-content"><span class="status status-blue">{{ ticket.relevant_urls }}</span></div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue