Bläddra i källkod

refactor OtPageRepository and viewhelpers

Olivier Massot 5 år sedan
förälder
incheckning
b8e617a248

+ 40 - 8
ot_templating/Classes/Page/OtPageRepository.php

@@ -3,6 +3,8 @@
 namespace Opentalent\OtTemplating\Page;
 
 use FluidTYPO3\Vhs\Service\PageService;
+use TYPO3\CMS\Core\Exception\SiteNotFoundException;
+use TYPO3\CMS\Core\Site\SiteFinder;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3\CMS\Frontend\Page\PageRepository;
@@ -46,7 +48,6 @@ class OtPageRepository extends PageRepository
      * @return array
      */
     public function getRootPageFor($pageUid) {
-
         $pageService = GeneralUtility::makeInstance(ObjectManager::class)->get(PageService::class);
         $rootLine = $pageService->getRootLine($pageUid);
 
@@ -88,18 +89,16 @@ class OtPageRepository extends PageRepository
 
     /**
      * Returns the current site template's name
-     * @param $pageUid
      * @return string
      */
-    public function getCurrentTemplate($pageUid) {
-        $rootPageUid = $this->getRootPageFor($pageUid)['uid'];
+    public function getCurrentTemplate() {
+        $rootPageUid = $this->getCurrentSiteRootPageId();
         if (!($rootPageUid >= 0)) {
             return '';
         }
 
         $rootPage = $this->getPage($rootPageUid);
         $templateName = $rootPage['tx_opentalent_template'];
-
         if ($templateName==='') {
             return self::defaultTemplate;
         }
@@ -108,11 +107,10 @@ class OtPageRepository extends PageRepository
 
     /**
      * Returns the current site template's name
-     * @param $pageUid
      * @return array
      */
-    public function getTemplatePreferences($pageUid) {
-        $rootPageUid = $this->getRootPageFor($pageUid)['uid'];
+    public function getTemplatePreferences() {
+        $rootPageUid = $this->getCurrentSiteRootPageId();
         if (!($rootPageUid >= 0)) {
             return [];
         }
@@ -126,5 +124,39 @@ class OtPageRepository extends PageRepository
         return json_decode($templatePreferences, true);
     }
 
+    /**
+     * Returns the typo3 site matching the current request
+     *
+     */
+    public function getCurrentSite() {
+        $request = $GLOBALS['TYPO3_REQUEST'];
+        $site = $request->getAttribute('site');
+        return GeneralUtility::makeInstance(SiteFinder::class)
+            ->getSiteByIdentifier($site->getIdentifier());
+    }
+
+    /**
+     *
+     */
+    public function getCurrentSiteRootPageId() {
+        $site = $this->getCurrentSite();
+        return $site->getRootPageId();
+    }
+
+    /**
+     *
+     */
+    public function getCurrentSiteRootPageUri() {
+        $site = $this->getCurrentSite();
+        return $site->getBase();
+    }
+
+    /**
+     *
+     */
+    public function getCurrentSiteRootPage() {
+        $uid = $this->getCurrentSiteRootPageUri();
+        return $this->getPage($uid);
+    }
 
 }

+ 1 - 3
ot_templating/Classes/ViewHelpers/RootPage/GetIdViewHelper.php

@@ -34,9 +34,7 @@ class GetIdViewHelper extends AbstractViewHelper
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
     ) {
-        $pageUid = $GLOBALS['TSFE']->id;
-
         $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
-        return $pageRepository->getRootPageFor($pageUid)['uid'];
+        return $pageRepository->getCurrentSiteRootPageId();
     }
 }

+ 3 - 5
ot_templating/Classes/ViewHelpers/RootPage/GetUriViewHelper.php

@@ -4,6 +4,7 @@ namespace Opentalent\OtTemplating\ViewHelpers\RootPage;
 
 use Closure;
 use FluidTYPO3\Vhs\Service\PageService;
+use Opentalent\OtTemplating\Page\OtPageRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
@@ -35,10 +36,7 @@ class GetUriViewHelper extends AbstractViewHelper
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
     ) {
-        $pageUid = GetIdViewHelper::renderStatic($arguments, $renderChildrenClosure, $renderingContext);
-
-        $uriBuilder = $renderingContext->getControllerContext()->getUriBuilder();
-        $uri = $uriBuilder->setTargetPageUid($pageUid)->build();
-        return $uri;
+        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        return $pageRepository->getCurrentSiteRootPageUri();
     }
 }

+ 1 - 7
ot_templating/Classes/ViewHelpers/Template/CurrentViewHelper.php

@@ -34,14 +34,8 @@ class CurrentViewHelper extends AbstractViewHelper
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
     ) {
-        if (TYPO3_MODE == 'FE') {
-            $pageUid = (int) $GLOBALS['TSFE']->id;
-        } else {
-            $pageUid = (int) GeneralUtility::_GP('id');
-        }
-
         $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
-        return $pageRepository->getCurrentTemplate($pageUid);
+        return $pageRepository->getCurrentTemplate();
     }
 
 }

+ 1 - 7
ot_templating/Classes/ViewHelpers/Template/GetPreferenceViewHelper.php

@@ -48,14 +48,8 @@ class GetPreferenceViewHelper extends AbstractViewHelper
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
     ) {
-        if (TYPO3_MODE == 'FE') {
-            $pageUid = (int) $GLOBALS['TSFE']->id;
-        } else {
-            $pageUid = (int) GeneralUtility::_GP('id');
-        }
-
         $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
-        $preferences = $pageRepository->getTemplatePreferences($pageUid);
+        $preferences = $pageRepository->getTemplatePreferences();
         $key = $arguments['key'];
         return $preferences[$key];
     }

+ 1 - 7
ot_templating/Classes/ViewHelpers/Template/GetPreferencesViewHelper.php

@@ -33,14 +33,8 @@ class PreferencesViewHelper extends AbstractViewHelper
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
     ) {
-        if (TYPO3_MODE == 'FE') {
-            $pageUid = (int) $GLOBALS['TSFE']->id;
-        } else {
-            $pageUid = (int) GeneralUtility::_GP('id');
-        }
-
         $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
-        return $pageRepository->getTemplatePreferences($pageUid);
+        return $pageRepository->getTemplatePreferences();
     }
 
 }