ksieren пре 2 година
родитељ
комит
c79fb534af
2 измењених фајлова са 165 додато и 225 уклоњено
  1. 164 224
      Classes/Controller/BackendController.php
  2. 1 1
      Classes/Utils/Utilities.php

+ 164 - 224
Classes/Controller/BackendController.php

@@ -3,9 +3,6 @@
 namespace Meramo\Pagemanager\Controller;
 
 use Meramo\Pagemanager\Domain\Model\ActivePage;
-use TYPO3\CMS\Backend\View\BackendTemplateView;
-use TYPO3\CMS\Core\Http\HtmlResponse;
-use TYPO3\CMS\Core\Http\ServerRequestFactory;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
 use Meramo\Pagemanager\Domain\Repository\ActivePageRepository;
 use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
@@ -18,32 +15,26 @@ use Psr\Http\Message\ResponseInterface;
 use TYPO3\CMS\Extbase\Mvc\View\ViewInterface;
 use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
-use Meramo\Pagemanager\Utils\Gedoens;
+use Meramo\Pagemanager\Utils\Utilities;
 
 class BackendController extends ActionController
 {
-  protected ModuleTemplateFactory $moduleTemplateFactory;
-  protected PageRenderer $pageRenderer;
-  protected ActivePageRepository $activePageRepository;
-
-  public function __construct(
-    ActivePageRepository $activePageRepository
-  ) {
-    $this->activePageRepository = $activePageRepository;
-  }
-    protected function resolveView()
-    {
-        $view = parent::resolveView();
-
-        $view->assignMultiple([
-            'extensionName' => $this->request->getControllerExtensionName(),
-            'controllerName' => $this->request->getControllerName(),
-            'actionName' => $this->request->getControllerActionName()
-        ]);
-        return $view;
+    protected ModuleTemplateFactory $moduleTemplateFactory;
+    protected ModuleTemplate $moduleTemplate;
+    protected PageRenderer $pageRenderer;
+
+    /**
+     * @var activePageRepository
+     */
+    protected $activePageRepository;
+
+    public function __construct(
+        ActivePageRepository $activePageRepository
+    ) {
+        $this->activePageRepository = $activePageRepository;
     }
 
-    protected function generateMenu()
+    protected function initializeView(ViewInterface $view)
     {
         $menuItems = [
             'index' => [
@@ -62,223 +53,172 @@ class BackendController extends ActionController
                 'label' => 'Beiträge, die in den letzten 90 Tagen ausgelaufen sind'
             ],
         ];
-        $menu = $this->view->getModuleTemplate()->getDocHeaderComponent()->getMenuRegistry()->makeMenu();
+
+        $this->moduleTemplateFactory = GeneralUtility::makeInstance(ModuleTemplateFactory::class);
+        $this->moduleTemplate = $this->moduleTemplateFactory->create($this->request);
+
+        $menu = $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->makeMenu();
         $menu->setIdentifier('PageManagerModuleMenu');
-        foreach($menuItems as $menuItemConfig) {
+
+        foreach ($menuItems as $menuItemConfig) {
             $isActive = false;
-            if($this->request->getControllerName() === $menuItemConfig['controller']) {
-                if($this->request->getControllerActionName() === $menuItemConfig['action']) {
+            if ($this->request->getControllerName() === $menuItemConfig['controller']) {
+                if ($this->request->getControllerActionName() === $menuItemConfig['action']) {
                     $isActive = true;
                 }
             }
+
             $menuItem = $menu->makeMenuItem()
                 ->setTitle($menuItemConfig['label'])
                 ->setHref($this->getHref($menuItemConfig['controller'], $menuItemConfig['action']))
                 ->setActive($isActive);
             $menu->addMenuItem($menuItem);
         }
-        $this->view->getModuleTemplate()->getDocHeaderComponent()->getMenuRegistry()->addMenu($menu);
+        $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->addMenu($menu);
+    }
+
+    protected function translate($key, $arguments): string
+    {
+        return LocalizationUtility::translate(
+            $key,
+            'pagemanager',
+            $arguments
+        );
     }
 
     protected function getHref($controller, $action, $parameters = [])
     {
-        $uriBuilder = $this->objectManager->get(UriBuilder::class);
-        $uriBuilder->setRequest($this->request);
-        return $uriBuilder->reset()->uriFor($action, $parameters, $controller);
+        $this->uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
+        $this->uriBuilder->setRequest($this->request);
+
+        return $this->uriBuilder->reset()->uriFor($action, $parameters, $controller);
     }
 
-//    protected function initializeView(ViewInterface $view)
-//  {
-//      $menuItems = [
-//          'index' => [
-//            'controller' => 'Backend',
-//            'action' => 'index',
-//            'label' => 'Heute oder demnächst auslaufende Beiträge'
-//          ],
-//          'expiredlast30' => [
-//            'controller' => 'Backend',
-//            'action' => 'showLast30',
-//            'label' => 'Beiträge, die in den letzten 30 Tagen ausgelaufen sind'
-//          ],
-//          'expiredlast90' => [
-//            'controller' => 'Backend',
-//            'action' => 'showLast90',
-//            'label' => 'Beiträge, die in den letzten 90 Tagen ausgelaufen sind'
-//          ],
-//      ];
-//
-//      if (class_exists(ModuleTemplateFactory::class)) {
-//          $moduleTemplateFactory = GeneralUtility::makeInstance(ModuleTemplateFactory::class);
-//          $request = $GLOBALS['TYPO3_REQUEST'] ?? ServerRequestFactory::fromGlobals();
-//          $this->moduleTemplate = $moduleTemplateFactory->create($request);
-//      } elseif (class_exists(ModuleTemplate::class)) {
-//          $this->moduleTemplate = GeneralUtility::makeInstance(ModuleTemplate::class);
-//      } else {
-//          throw new \RuntimeException('Unable to instantiate module template class.', 1615368623);
-//      }
-//
-//      $menu = $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->makeMenu();
-//      $menu->setIdentifier('PageManagerModuleMenu');
-//
-//      foreach ($menuItems as $menuItemConfig) {
-//          $isActive = false;
-//          if ($this->request->getControllerName() === $menuItemConfig['controller']) {
-//              if ($this->request->getControllerActionName() === $menuItemConfig['action']) {
-//                  $isActive = true;
-//              }
-//          }
-//          $bla = $this->getHref($menuItemConfig['controller'], $menuItemConfig['action']);
-//
-//          $menuItem = $menu->makeMenuItem()
-//              ->setTitle($menuItemConfig['label'])
-//              ->setHref("/typo3/module/tools/PagemanagerPgmgt?token=b36b5554410fad12243b2127c156584d72a80b69&tx_pagemanager_tools_pagemanagerpgmgt%5Baction%5D=index&tx_pagemanager_tools_pagemanagerpgmgt%5Bcontroller%5D=Backend")
-////              ->setHref($this->getHref($menuItemConfig['controller'], $menuItemConfig['action']))
-//              ->setActive($isActive);
-//          $menu->addMenuItem($menuItem);
-//      }
-////      $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->addMenu($menu);
-//  }
-
-  protected function translate($key, $arguments): string
-  {
-    return LocalizationUtility::translate(
-      $key,
-      'pagemanager',
-      $arguments
-    );
-  }
-
-//  protected function getHref($controller, $action, $parameters = [])
-//  {
-//    $this->uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
-//    $this->uriBuilder->setRequest($this->request);
-//
-//    return $this->uriBuilder->reset()->uriFor($action, $parameters, $controller);
-//  }
-
-  public function indexAction(): ResponseInterface
-  {
-      $this->gedoens = GeneralUtility::makeInstance(Gedoens::class);
-      $activePages = $this->activePageRepository->findActivePagesAndPageCreatetors();
-      $itemsperpage = $this->settings['itemsPerPage'] ?? 50;
-
-      $pageObjectArray = [];
-
-      foreach ($activePages as $activePage) {
-          $pageObj = new ActivePage();
-          $pageObj->setUid($activePage['uid']);
-          $pageObj->setStarttime($activePage['starttime']);
-          $pageObj->setEndtime($activePage['endtime']);
-          $pageObj->setTitle($activePage['title']);
-          $pageObj->setRoof($activePage['roof']);
-          $pageObj->setCategory($this->gedoens->createCategoryFromSlug($activePage['slug']));
-          $pageObj->setCreator($activePage['username']);
-          $pageObj->setFullName($activePage['realName']);
-
-          array_push($pageObjectArray, $pageObj);
-      }
-      $currentPage = $this->request->hasArgument('currentPage') ? $this->request->getArgument('currentPage') : 1;
-
-      $this->buildPagination($pageObjectArray, $itemsperpage, $currentPage);
-      $this->view->setContent($this->view->render());
-      return new HtmlResponse($this->view->renderContent());
-//    $this->moduleTemplate->setContent($this->view->render());
-//    return $this->htmlResponse($this->moduleTemplate->renderContent());
-  }
-
-  public function showLast30Action()
-  {
-      $this->gedoens = GeneralUtility::makeInstance(Gedoens::class);
-      $activePagesExpiredInlast30days = $this->activePageRepository->findExpiredRecordsInTheLast30OR90Days(30);
-      $itemsperpage = $this->settings['itemsPerPage'] ?? 50;
-      $pageObjectArray = [];
-
-      foreach ($activePagesExpiredInlast30days as $activePage) {
-          $pageObj = new ActivePage();
-          $pageObj->setUid($activePage['uid']);
-          $pageObj->setStarttime($activePage['starttime']);
-          $pageObj->setEndtime($activePage['endtime']);
-          $pageObj->setTitle($activePage['title']);
-          $pageObj->setRoof($activePage['roof']);
-          $pageObj->setCategory($this->gedoens->createCategoryFromSlug($activePage['slug']));
-          $pageObj->setCreator($activePage['username']);
-          $pageObj->setFullName($activePage['realName']);
-
-          array_push($pageObjectArray, $pageObj);
-      }
-      $currentPage = $this->request->hasArgument('currentPage') ? $this->request->getArgument('currentPage') : 1;
-
-      $this->buildPagination($pageObjectArray, $itemsperpage, $currentPage);
-
-      $this->moduleTemplate->setContent($this->view->render());
-      return new HtmlResponse($this->moduleTemplate->renderContent());
-//    return $this->htmlResponse($this->moduleTemplate->renderContent());
-  }
-
-  public function showLast90Action()
-  {
-      $this->gedoens = GeneralUtility::makeInstance(Gedoens::class);
-      $activePagesExpiredInlast90days = $this->activePageRepository->findExpiredRecordsInTheLast30OR90Days(90);
-      $itemsperpage = $this->settings['itemsPerPage'] ?? 50;
-      $pageObjectArray = [];
-
-      foreach ($activePagesExpiredInlast90days as $activePage) {
-          $pageObj = new ActivePage();
-          $pageObj->setUid($activePage['uid']);
-          $pageObj->setStarttime($activePage['starttime']);
-          $pageObj->setEndtime($activePage['endtime']);
-          $pageObj->setTitle($activePage['title']);
-          $pageObj->setRoof($activePage['roof']);
-          $pageObj->setCategory($this->gedoens->createCategoryFromSlug($activePage['slug']));
-          $pageObj->setCreator($activePage['username']);
-          $pageObj->setFullName($activePage['realName']);
-
-          array_push($pageObjectArray, $pageObj);
-      }
-      $currentPage = $this->request->hasArgument('currentPage') ? $this->request->getArgument('currentPage') : 1;
-      $this->buildPagination($pageObjectArray, $itemsperpage, $currentPage);
-      $this->moduleTemplate->setContent($this->view->render());
-      return $this->htmlResponse($this->moduleTemplate->renderContent());
-  }
-
-  /**
-   * @param array $activePages
-   * @param int $currentPage
-   * @param int $itemsperpage 
-   * 
-   */
-  protected function buildPagination(array $activePages, int $itemsperpage, int $currentPage = 1)
-  {
-    $arrayPaginator = new ArrayPaginator($activePages, $currentPage, $itemsperpage);
-    $paging = new SimplePagination($arrayPaginator);
-    $totalNumberOfRecords = count($activePages);
-
-    $cPage = $arrayPaginator->getCurrentPageNumber();
-    $controlleractionName = $this->request->getControllerActionName();
-    $actioName = '';
-
-    switch($controlleractionName) {
-      case 'index':
-        $actionName = 'index';
-        break;
-      case 'showLast30':
-        $actionName = 'showLast30';
-        break;
-      case 'showLast90':
-          $actionName = 'showLast90';
-          break;
+    public function indexAction(): ResponseInterface
+    {
+        $this->utilities = GeneralUtility::makeInstance(Utilities::class);
+        $activePages = $this->activePageRepository->findActivePagesAndPageCreatetors();
+        $itemsperpage = $this->settings['itemsPerPage'] ?? 50;
+
+        $pageObjectArray = [];
+
+        foreach ($activePages as $activePage) {
+            $pageObj = new ActivePage();
+            $pageObj->setUid($activePage['uid']);
+            $pageObj->setStarttime($activePage['starttime']);
+            $pageObj->setEndtime($activePage['endtime']);
+            $pageObj->setTitle($activePage['title']);
+            $pageObj->setRoof($activePage['roof']);
+            $pageObj->setCategory($this->utilities->createCategoryFromSlug($activePage['slug']));
+            $pageObj->setCreator($activePage['username']);
+            $pageObj->setFullName($activePage['realName']);
+
+            array_push($pageObjectArray, $pageObj);
+        }
+        $currentPage = $this->request->hasArgument('currentPage') ? $this->request->getArgument('currentPage') : 1;
+
+        $this->buildPagination($pageObjectArray, $itemsperpage, $currentPage);
+
+        $this->moduleTemplate->setContent($this->view->render());
+        return $this->htmlResponse($this->moduleTemplate->renderContent());
     }
 
-    $this->view->assignMultiple(
-      [
-        'cpage' => $cPage,
-        'totalRecords' => $totalNumberOfRecords,
-        'activepages' => $activePages,
-        'paginator' => $arrayPaginator,
-        'paging' => $paging,
-        'pages' => range(1, $paging->getLastPageNumber()),
-        'actionName' => $actionName
-      ]
-    );
-  }
+    public function showLast30Action()
+    {
+        $this->utilities = GeneralUtility::makeInstance(Utilities::class);
+        $activePagesExpiredInlast30days = $this->activePageRepository->findExpiredRecordsInTheLast30OR90Days(30);
+        $itemsperpage = $this->settings['itemsPerPage'] ?? 50;
+
+        $pageObjectArray = [];
+
+        foreach ($activePagesExpiredInlast30days as $activePage) {
+            $pageObj = new ActivePage();
+            $pageObj->setUid($activePage['uid']);
+            $pageObj->setStarttime($activePage['starttime']);
+            $pageObj->setEndtime($activePage['endtime']);
+            $pageObj->setTitle($activePage['title']);
+            $pageObj->setRoof($activePage['roof']);
+            $pageObj->setCategory($this->utilities->createCategoryFromSlug($activePage['slug']));
+            $pageObj->setCreator($activePage['username']);
+            $pageObj->setFullName($activePage['realName']);
+
+            array_push($pageObjectArray, $pageObj);
+        }
+        $currentPage = $this->request->hasArgument('currentPage') ? $this->request->getArgument('currentPage') : 1;
+
+        $this->buildPagination($pageObjectArray, $itemsperpage, $currentPage);
+
+        $this->moduleTemplate->setContent($this->view->render());
+        return $this->htmlResponse($this->moduleTemplate->renderContent());
+    }
+
+    public function showLast90Action()
+    {
+        $this->utilities = GeneralUtility::makeInstance(Utilities::class);
+        $activePagesExpiredInlast90days = $this->activePageRepository->findExpiredRecordsInTheLast30OR90Days(90);
+        $itemsperpage = $this->settings['itemsPerPage'] ?? 50;
+
+        $pageObjectArray = [];
+
+        foreach ($activePagesExpiredInlast90days as $activePage) {
+            $pageObj = new ActivePage();
+            $pageObj->setUid($activePage['uid']);
+            $pageObj->setStarttime($activePage['starttime']);
+            $pageObj->setEndtime($activePage['endtime']);
+            $pageObj->setTitle($activePage['title']);
+            $pageObj->setRoof($activePage['roof']);
+            $pageObj->setCategory($this->utilities->createCategoryFromSlug($activePage['slug']));
+            $pageObj->setCreator($activePage['username']);
+            $pageObj->setFullName($activePage['realName']);
+
+            array_push($pageObjectArray, $pageObj);
+        }
+        $currentPage = $this->request->hasArgument('currentPage') ? $this->request->getArgument('currentPage') : 1;
+
+        $this->buildPagination($pageObjectArray, $itemsperpage, $currentPage);
+
+        $this->moduleTemplate->setContent($this->view->render());
+        return $this->htmlResponse($this->moduleTemplate->renderContent());
+    }
+
+    /**
+     * @param array $activePages
+     * @param int $currentPage
+     * @param int $itemsperpage
+     *
+     */
+    protected function buildPagination(array $activePages, int $itemsperpage, int $currentPage = 1)
+    {
+        $arrayPaginator = new ArrayPaginator($activePages, $currentPage, $itemsperpage);
+        $paging = new SimplePagination($arrayPaginator);
+        $totalNumberOfRecords = count($activePages);
+
+        $cPage = $arrayPaginator->getCurrentPageNumber();
+        $controlleractionName = $this->request->getControllerActionName();
+        $actioName = '';
+
+        switch($controlleractionName) {
+            case 'index':
+                $actionName = 'index';
+                break;
+            case 'showLast30':
+                $actionName = 'showLast30';
+                break;
+            case 'showLast90':
+                $actionName = 'showLast90';
+                break;
+        }
+
+        $this->view->assignMultiple(
+            [
+                'cpage' => $cPage,
+                'totalRecords' => $totalNumberOfRecords,
+                'activepages' => $activePages,
+                'paginator' => $arrayPaginator,
+                'paging' => $paging,
+                'pages' => range(1, $paging->getLastPageNumber()),
+                'actionName' => $actionName
+            ]
+        );
+    }
 }

+ 1 - 1
Classes/Utils/Gedoens.php → Classes/Utils/Utilities.php

@@ -2,7 +2,7 @@
 
 namespace Meramo\Pagemanager\Utils;
 
-class Gedoens
+class Utilities
 {
     /**
      * Create category from slug