From 4e355c0f5eca132e83797addc26c2717cdf70078 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 4 Feb 2023 19:18:05 -0500 Subject: [PATCH] Create specific module to display HTML message when a conversation isn't found in Module\Item\Display --- src/App/BaseURL.php | 2 +- src/Module/Item/Display.php | 11 ++--- src/Module/Special/DisplayNotFound.php | 49 ++++++++++++++++++++++ view/templates/special/displaynotfound.tpl | 5 +++ 4 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 src/Module/Special/DisplayNotFound.php create mode 100644 view/templates/special/displaynotfound.tpl diff --git a/src/App/BaseURL.php b/src/App/BaseURL.php index f02cb9ef9..564527a65 100644 --- a/src/App/BaseURL.php +++ b/src/App/BaseURL.php @@ -341,7 +341,7 @@ class BaseURL public function redirect(string $toUrl = '', bool $ssl = false) { if (!empty(parse_url($toUrl, PHP_URL_SCHEME))) { - throw new HTTPException\InternalServerErrorException("'$toUrl is not a relative path, please use System::externalRedirectTo"); + throw new HTTPException\InternalServerErrorException("$toUrl is not a relative path, please use System::externalRedirectTo"); } $redirectTo = $this->get($ssl) . '/' . ltrim($toUrl, '/'); diff --git a/src/Module/Item/Display.php b/src/Module/Item/Display.php index a97c9db83..b2ed43c5b 100644 --- a/src/Module/Item/Display.php +++ b/src/Module/Item/Display.php @@ -37,6 +37,7 @@ use Friendica\Model\Post; use Friendica\Model\Profile; use Friendica\Model\User; use Friendica\Module\Response; +use Friendica\Module\Special\DisplayNotFound; use Friendica\Navigation\Notifications\Repository\Notification; use Friendica\Navigation\Notifications\Repository\Notify; use Friendica\Protocol\ActivityPub; @@ -246,14 +247,8 @@ class Display extends BaseModule if (empty($item)) { $this->page['aside'] = ''; - throw new HTTPException\NotFoundException($this->t('Unfortunately, the requested conversation isn\'t available to you.

-

Possible reasons include:

-

')); + $displayNotFound = new DisplayNotFound($this->l10n, $this->baseUrl, $this->args, $this->logger, $this->profiler, $this->response, $this->server, $this->parameters); + return $displayNotFound->content(); } $item['uri-id'] = $item['parent-uri-id']; diff --git a/src/Module/Special/DisplayNotFound.php b/src/Module/Special/DisplayNotFound.php new file mode 100644 index 000000000..d66ececdd --- /dev/null +++ b/src/Module/Special/DisplayNotFound.php @@ -0,0 +1,49 @@ +. + * + */ + +namespace Friendica\Module\Special; + +use Friendica\Core\Renderer; + +/** + * This is a special case of the HTTPException module where the message is intended to be HTML. + * This module should be called directly from the Display module and shouldn't be routed to. + */ +class DisplayNotFound extends \Friendica\BaseModule +{ + protected function content(array $request = []): string + { + $tpl = Renderer::getMarkupTemplate('special/displaynotfound.tpl'); + return Renderer::replaceMacros($tpl, [ + '$l10n' => [ + 'title' => $this->t('Not Found'), + 'message' => $this->t("

Unfortunately, the requested conversation isn't available to you.

+

Possible reasons include:

+"), + ] + ]); + } +} diff --git a/view/templates/special/displaynotfound.tpl b/view/templates/special/displaynotfound.tpl new file mode 100644 index 000000000..48e7b5166 --- /dev/null +++ b/view/templates/special/displaynotfound.tpl @@ -0,0 +1,5 @@ +
+ +

{{$title}}

+ {{$message nofilter}} +