diff --git a/developer_manual/basics/index.rst b/developer_manual/basics/index.rst index c96c3588d7e..340ae7f9061 100644 --- a/developer_manual/basics/index.rst +++ b/developer_manual/basics/index.rst @@ -16,4 +16,5 @@ Basic concepts logging setting storage/index + public_share_template testing diff --git a/developer_manual/basics/public_share_template.rst b/developer_manual/basics/public_share_template.rst new file mode 100644 index 00000000000..b3e066c05b4 --- /dev/null +++ b/developer_manual/basics/public_share_template.rst @@ -0,0 +1,83 @@ +======= +Public share template +======= + +.. sectionauthor:: Louis Chmn + +It is possible to overrite the default public share view. This is possible by implementing the ``IPublicShareTemplateProvider`` interface. + +.. code-block:: php + + registerPublicShareTemplateProvider(MyPublicShareTemplateProvider::class); + } + } + +.. code-block:: php + + getNode(); + return ...; // Whether your provider should be used or not. + } + + public function renderPage(IShare $share, string $token, string $path): TemplateResponse { + $shareNode = $share->getNode(); + $owner = $this->userManager->get($share->getShareOwner()); + + $this->initialState->provideInitialState('fileId', $shareNode->getId()); + ...; // More initial state that you might need in your view. + + // OpenGraph Support: http://ogp.me/ + Util::addHeader('meta', ['property' => "og:title", 'content' => $this->l10n->t("Encrypted share")]); + Util::addHeader('meta', ['property' => "og:description", 'content' => $this->defaults->getName() . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : '')]); + Util::addHeader('meta', ['property' => "og:site_name", 'content' => $this->defaults->getName()]); + Util::addHeader('meta', ['property' => "og:url", 'content' => $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $token])]); + Util::addHeader('meta', ['property' => "og:type", 'content' => "object"]); + + $csp->addAllowedFrameDomain('\'self\''); + $response->setContentSecurityPolicy($csp); + + $response = new PublicTemplateResponse(Application::APP_ID, 'myCustomTemplateFileName', []); + $response->setHeaderTitle($this->l10n->t("My custom title")); + + $csp = new ContentSecurityPolicy(); + + return $response; + } + }