1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-07-31 15:24:31 +03:00

Notifications: Review of PR to include path path #4629

- Merged book and chapter name items to a single page path list item
  which has links to parent page/chapter.
- Added permission filtering to page path elements.
- Added page path to also be on comment notifications.
- Updated testing to cover.
- Added new Message Line objects to support.

Done during review of #4629
This commit is contained in:
Dan Brown
2023-11-14 10:31:44 +00:00
parent 65ac197be4
commit d41fd7a8dd
10 changed files with 140 additions and 53 deletions

View File

@ -2,9 +2,9 @@
namespace BookStack\Activity\Notifications\Messages;
use BookStack\Activity\Notifications\MessageParts\EntityLinkMessageLine;
use BookStack\Activity\Notifications\MessageParts\ListMessageLine;
use BookStack\Entities\Models\Page;
use BookStack\Entities\Models\Chapter;
use BookStack\Users\Models\User;
use Illuminate\Notifications\Messages\MailMessage;
@ -14,32 +14,19 @@ class PageCreationNotification extends BaseActivityNotification
{
/** @var Page $page */
$page = $this->detail;
$book = $page->book;
$chapterId = $page->chapter_id;
$chapter = $chapterId ? Chapter::find($chapterId) : null;
$locale = $notifiable->getLocale();
$listMessageData = [
$locale->trans('notifications.detail_page_name') => $page->name,
'' => '',
];
if ($chapter) {
$listMessageData += [
$locale->trans('notifications.detail_chapter_name') => $chapter->name,
];
}
$listMessageData += [
$locale->trans('notifications.detail_book_name') => $book->name,
$listLines = array_filter([
$locale->trans('notifications.detail_page_name') => new EntityLinkMessageLine($page),
$locale->trans('notifications.detail_page_path') => $this->buildPagePathLine($page, $notifiable),
$locale->trans('notifications.detail_created_by') => $this->user->name,
];
]);
return $this->newMailMessage($locale)
->subject($locale->trans('notifications.new_page_subject', ['pageName' => $page->getShortName()]))
->line($locale->trans('notifications.new_page_intro', ['appName' => setting('app-name')], $locale))
->line(new ListMessageLine($listMessageData))
->line($locale->trans('notifications.new_page_intro', ['appName' => setting('app-name')]))
->line(new ListMessageLine($listLines))
->action($locale->trans('notifications.action_view_page'), $page->getUrl())
->line($this->buildReasonFooterLine($locale));
}