diff options
| author | Greg Roach <greg@subaqua.co.uk> | 2021-01-22 16:31:35 +0000 |
|---|---|---|
| committer | Greg Roach <greg@subaqua.co.uk> | 2021-01-22 16:31:35 +0000 |
| commit | b47837c47d7b6e97a8ae8b39adde4ac935004240 (patch) | |
| tree | c76a5d7674777d799811e4987d2cf2e3280f37be /resources | |
| parent | 696f5b06e4781cc61274eb3969103cb3be76e8d3 (diff) | |
| download | webtrees-b47837c47d7b6e97a8ae8b39adde4ac935004240.tar.gz webtrees-b47837c47d7b6e97a8ae8b39adde4ac935004240.tar.bz2 webtrees-b47837c47d7b6e97a8ae8b39adde4ac935004240.zip | |
Fix: #3682 - add bootstrap markup to user message block
Diffstat (limited to 'resources')
| -rw-r--r-- | resources/views/modules/user-messages/user-messages.phtml | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/resources/views/modules/user-messages/user-messages.phtml b/resources/views/modules/user-messages/user-messages.phtml new file mode 100644 index 0000000000..4f0e99a111 --- /dev/null +++ b/resources/views/modules/user-messages/user-messages.phtml @@ -0,0 +1,150 @@ +<?php + +use Fisharebest\Webtrees\Filter; +use Fisharebest\Webtrees\Http\RequestHandlers\MessagePage; +use Fisharebest\Webtrees\Http\RequestHandlers\MessageSelect; +use Fisharebest\Webtrees\Http\RequestHandlers\UserPage; +use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\Module\ModuleInterface; +use Fisharebest\Webtrees\Services\UserService; +use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\User; +use Illuminate\Support\Collection; + +/** + * @var int $block_id + * @var string $context + * @var ModuleInterface $module + * @var Tree $tree + * @var Collection<stdClass> $messages + * @var Collection<User> $users + * @var UserService $user_service + */ + +?> + +<?php if ($users->isNotEmpty()): ?> + <form method="post" action="<?= e(route(MessageSelect::class, ['tree' => $tree->name()])) ?>"> + <?= csrf_field() ?> + <input type="hidden" name="url" value="<?= e(route(UserPage::class, ['tree' => $tree->name()])) ?>"> + <label for="to"><?= I18N::translate('Send a message') ?></label> + + <div class="input-group"> + <select class="form-control" id="to" name="to" required> + <option value=""><?= I18N::translate('<select>') ?></option> + <?php foreach ($users as $user): ?> + <option value="<?= e($user->userName()) ?>"> + <?= e($user->realName()) ?> - <?= e($user->userName()) ?> + </option> + <?php endforeach ?> + </select> + + <button type="submit" class="btn btn-primary"><?= I18N::translate('Send') ?></button> + </div> + <br><br> + </form> +<?php endif ?> + +<form + method="post" + action="<?= e(route('module', ['action' => 'DeleteMessage', 'module' => $module->name(), 'context' => $context, 'tree' => $tree->name()])) ?>" + data-confirm="<?= I18N::translate('Are you sure you want to delete this message? It cannot be retrieved later.') ?>" + onsubmit="return confirm(this.dataset.confirm);" + id="messageform" + name="messageform" +> + <?= csrf_field() ?> + + <?php if ($messages->isNotEmpty()): ?> + <div class="table-responsive"> + <table class="table table-sm w-100"> + <tr> + <th class="list_label"> + <?= I18N::translate('Delete') ?> + <br> + <a href="#" + onclick="$('#block-<?= $block_id ?> :checkbox').prop('checked', true); return false;"> + <?= I18N::translate('All') ?> + </a> + </th> + <th class="list_label"><?= I18N::translate('Subject') ?></th> + <th class="list_label"><?= I18N::translate('Date sent') ?></th> + <th class="list_label"><?= I18N::translate('Email address') ?></th> + </tr> + + <?php foreach ($messages as $message): ?> + <tr> + <td class="list_value_wrap center"> + <input type="checkbox" name="message_id[]" value="<?= $message->message_id ?>" id="cb_message<?= $message->message_id ?>"> + </td> + + <td class="list_value_wrap"> + <a href="#message<?= $message->message_id ?>" data-toggle="collapse" role="button" + aria-expanded="false" aria-controls="message<?= $message->message_id ?>"> + <?= view('icons/expand') ?> + <?= view('icons/collapse') ?> + <b dir="auto"><?= e($message->subject) ?></b> + </a> + </td> + + <td class="list_value_wrap"> + <?= view('components/datetime', ['timestamp' => $message->created]) ?> + </td> + + <td class="list_value_wrap"> + <?php $user = $user_service->findByIdentifier($message->sender) ?> + + <?php if ($user instanceof User): ?> + <span dir="auto"><?= e($user->realName()) ?></span> - <span + dir="auto"><?= $user->email() ?></span> + <?php else: ?> + <a href="mailto:<?= e($message->sender) ?>"><?= e($message->sender) ?></a> + <?php endif ?> + </td> + </tr> + + <tr> + <td class="list_value_wrap" colspan="4"> + <div id="message<?= $message->message_id ?>" class="collapse"> + <div dir="auto" style="white-space: pre-wrap;"> + <?= Filter::expandUrls($message->body, $tree) ?> + </div> + <br> + + <?php + /* I18N: When replying to an email, the subject becomes “RE: subject” */ + if (!str_starts_with($message->subject, I18N::translate('RE: '))) { + $message->subject = I18N::translate('RE: ') . $message->subject; + } + + // If this user still exists, show a reply link. + if ($user instanceof User) { + $reply_url = route(MessagePage::class, [ + 'subject' => $message->subject, + 'to' => $user->userName(), + 'tree' => $tree->name(), + 'url' => route(UserPage::class, ['tree' => $tree->name()]), + ]); + ?> + + <a class="btn btn-primary" href="<?= e($reply_url) ?>" + title="<?= I18N::translate('Reply') ?>"> + <?= I18N::translate('Reply') ?> + </a> + <?php } ?> + <button type="button" class="btn btn-danger" + data-confirm="<?= I18N::translate('Are you sure you want to delete this message? It cannot be retrieved later.') ?>" + onclick="if (confirm(this.dataset.confirm)) {$('#messageform :checkbox').prop('checked', false); $('#cb_message<?= $message->message_id ?>').prop('checked', true); document.messageform.submit();}"> + <?= I18N::translate('Delete') ?> + </button> + </div> + </td> + </tr> + <?php endforeach ?> + </table> + </div> + <p> + <button type="submit"><?= I18N::translate('Delete selected messages') ?></button> + </p> + <?php endif ?> +</form> |
