diff --git a/Web/Presenters/SupportPresenter.php b/Web/Presenters/SupportPresenter.php
index c4d729ea..c396b43c 100644
--- a/Web/Presenters/SupportPresenter.php
+++ b/Web/Presenters/SupportPresenter.php
@@ -396,4 +396,24 @@ final class SupportPresenter extends OpenVKPresenter
$this->flashFail("succ", "Успех", "Профиль создан. Теперь пользователи видят Ваши псевдоним и аватарку вместо стандартных аватарки и номера.");
}
}
+
+ function renderCloseTicket(int $id): void
+ {
+ $this->assertUserLoggedIn();
+ $this->assertNoCSRF();
+ $this->willExecuteWriteAction();
+
+ $ticket = $this->tickets->get($id);
+
+ if($ticket->isDeleted() === 1 || $ticket->getType() === 2 || $ticket->getUserId() !== $this->user->id) {
+ header("HTTP/1.1 403 Forbidden");
+ header("Location: /support/view/" . $id);
+ exit;
+ }
+
+ $ticket->setType(2);
+ $ticket->save();
+
+ $this->flashFail("succ", tr("ticket_changed"), tr("ticket_changed_comment"));
+ }
}
diff --git a/Web/Presenters/templates/Support/View.xml b/Web/Presenters/templates/Support/View.xml
index b239c351..baa20c65 100644
--- a/Web/Presenters/templates/Support/View.xml
+++ b/Web/Presenters/templates/Support/View.xml
@@ -27,6 +27,14 @@
function errorHandler(id, mark) {
document.getElementById("markText-" + id).innerHTML = {_error};
}
+
+ function closeTicket() {
+ let url = `/support/ticket${{$ticket->getId()}}/close?hash=${{urlencode($csrfToken)}}`;
+ $.ajax(url, {
+ error: () => alert("Произошла ошибка"),
+ success: () => location.reload()
+ });
+ }
{if $ticket->isDeleted() == 0}
@@ -34,6 +42,11 @@
{$ticket->getName()}
{_status}: {$ticket->getStatus()}
+ {if $ticket->getType() === 1}
+