diff --git a/app/controllers/messages.php b/app/controllers/messages.php index dc0c7d2557ea5688dfaf32bfba3ef9022d83ab3f..3a4b8ef0c1ca77f62b23d5f42cbb3831dd94b3a0 100644 --- a/app/controllers/messages.php +++ b/app/controllers/messages.php @@ -42,13 +42,17 @@ class MessagesController extends AuthenticatedController { } if (Request::isPost()) { + $mbox = Request::option('mbox'); foreach (Request::optionArray('bulk') as $message_id) { - $this->deleteMessage($message_id); + $this->deleteMessage($message_id, $mbox); } PageLayout::postSuccess(sprintf( _('%u Nachrichten wurden gelöscht'), count(Request::optionArray('bulk')) )); + + $this->redirect($this->overviewURL()); + return; } $this->messages = $this->getMessages( @@ -68,13 +72,17 @@ class MessagesController extends AuthenticatedController { Navigation::activateItem('/messaging/messages/sent'); if (Request::isPost()) { + $mbox = Request::option('mbox'); foreach (Request::optionArray('bulk') as $message_id) { - $this->deleteMessage($message_id); + $this->deleteMessage($message_id, $mbox); } PageLayout::postSuccess(sprintf( _('%u Nachrichten wurden gelöscht'), count(Request::optionArray('bulk')) )); + + $this->redirect($this->sentURL()); + return; } $this->messages = $this->getMessages( @@ -122,7 +130,7 @@ class MessagesController extends AuthenticatedController { $this->render_json($this->output); } - public function read_action($message_id) + public function read_action($message_id, $mbox = 'rec') { $this->message = new Message($message_id); if (!$this->message->permissionToRead()) { @@ -160,6 +168,8 @@ class MessagesController extends AuthenticatedController { )); } $this->message->markAsRead($GLOBALS['user']->id); + + $this->mbox = $mbox; } /** @@ -658,34 +668,29 @@ class MessagesController extends AuthenticatedController { } } - protected function deleteMessage($message_id) + protected function deleteMessage($message_id, $mbox) { $message = Message::find($message_id); if ($message) { $message->markAsRead($GLOBALS['user']->id); } - $messageuser = new MessageUser([$GLOBALS['user']->id, $message_id, "snd"]); - $success = 0; - if (!$messageuser->isNew()) { - $messageuser['deleted'] = 1; + $messageuser = MessageUser::find([$GLOBALS['user']->id, $message_id, $mbox]); + if ($messageuser) { + $messageuser['deleted'] = true; $success = $messageuser->store(); } - $messageuser = new MessageUser([$GLOBALS['user']->id, $message_id, "rec"]); - if (!$messageuser->isNew()) { - $messageuser['deleted'] = 1; - $success += $messageuser->store(); - } + return $success; } - public function delete_action($message_id) + public function delete_action($message_id, $mbox = 'rec') { $message = Message::find($message_id); $ticket = Request::get('studip-ticket'); if (Request::isPost() && $ticket && check_ticket($ticket)) { - $success = $this->deleteMessage($message_id); + $success = $this->deleteMessage($message_id, $mbox); if ($success) { PageLayout::postMessage(MessageBox::success(_('Nachricht gelöscht!'))); } else { @@ -693,9 +698,9 @@ class MessagesController extends AuthenticatedController { } } - $redirect = $message->autor_id === $GLOBALS['user']->id - ? $this->url_for('messages/sent') - : $this->url_for('messages/overview'); + $redirect = $mbox === 'rec' + ? $this->url_for('messages/overview') + : $this->url_for('messages/sent'); $this->redirect($redirect); } @@ -716,7 +721,7 @@ class MessagesController extends AuthenticatedController { 'id' => $GLOBALS['user']->id, ]); foreach ($returnedMessages as $returnedMessage) { - $this->deleteMessage($returnedMessage); + $this->deleteMessage($returnedMessage, $sndrec); } if ($sndrec === 'rec') { PageLayout::postSuccess(_('Alle empfangenen Nachrichten wurden gelöscht.')); diff --git a/app/views/messages/_message_row.php b/app/views/messages/_message_row.php index c73fb4e9129502d5a364b9050a6db1240c7dc6ee..1cc8b86d85c9768928ef58dc9538feeaf330ac45 100644 --- a/app/views/messages/_message_row.php +++ b/app/views/messages/_message_row.php @@ -1,7 +1,7 @@ <tr id="message_<?= $message->getId() ?>" class="<?= $message->isRead() || $message['autor_id'] === $GLOBALS['user']->id ? "" : "unread" ?>"> <td class="hidden-small-down"><input type="checkbox" name="bulk[]" value="<?= htmlReady($message->getId()) ?>"></td> <td class="title"> - <a href="<?= URLHelper::getLink("dispatch.php/messages/read/".$message->getId()) ?>" data-dialog> + <a href="<?= $controller->read($message, $received ? 'rec' : 'snd') ?>" data-dialog> <?= trim($message['subject']) ? htmlReady($message['subject']) : htmlReady(mila(kill_format($message['message']), 40)) ?> <div class="message-indicators"> <span><?= $message->getNumAttachments() ? Icon::create('staple', 'info', ["title" => _("Mit Anhang")])->asImg(20) : "" ?></span> diff --git a/app/views/messages/overview.php b/app/views/messages/overview.php index 9eae50b69e0bde00ac1fb18952d56f62a811728c..1a1decb93304b8b56277d2175b225d74f483681e 100644 --- a/app/views/messages/overview.php +++ b/app/views/messages/overview.php @@ -8,6 +8,7 @@ <form action="?" method="post" id="bulk"> <?= CSRFProtection::tokenTag() ?> + <input type="hidden" name="mbox" value="<?= $received ? 'rec' : 'snd' ?>"> <table class="default" id="messages"> <caption> <?= $received ? _("Eingang") : _("Gesendet") ?> diff --git a/app/views/messages/read.php b/app/views/messages/read.php index 24b4c8a0e324da9a34398c335224fbe24f0d7225..189bca92d0ce60b550d9fc3759ec529ea9aa62f8 100644 --- a/app/views/messages/read.php +++ b/app/views/messages/read.php @@ -93,10 +93,10 @@ <a href="<?= URLHelper::getLink("dispatch.php/messages/write", ['answer_to' => $message->getId(), 'forward' => "rec"]) ?>" data-dialog="width=700;height=700"><?= \Studip\Button::create(_("Weiterleiten"))?></a> </div> <a href="<?= URLHelper::getLink("dispatch.php/messages/print/".$message->getId()) ?>" class="print_action"><?= \Studip\Button::create(_("Drucken"))?></a> - <form action="<?= $controller->url_for('messages/delete/' . $message->id) ?>" method="post" style="display: inline;"> + <form action="<?= $controller->delete($message, $mbox) ?>" method="post" style="display: inline;"> <input type="hidden" name="studip-ticket" value="<?= get_ticket() ?>"> <?= \Studip\Button::create(_("Löschen"), 'delete', [ - 'onClick' => 'return window.confirm("' . _('Nachricht wirklich löschen?') . '");', + 'data-confirm' => _('Nachricht wirklich löschen?'), ])?> </form> </div>