Ver Fonte

create indexAction in BackendController

jabongwa há 2 anos atrás
pai
commit
75151e03a8
1 ficheiros alterados com 85 adições e 85 exclusões
  1. 85 85
      Classes/Controller/BackendController.php

+ 85 - 85
Classes/Controller/BackendController.php

@@ -5,85 +5,60 @@ namespace Meramo\Pagemanager\Controller;
 use Meramo\Pagemanager\Domain\Model\ActivePage;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
 use Meramo\Pagemanager\Domain\Repository\ActivePageRepository;
-//use TYPO3\CMS\Backend\View\BackendTemplateView;
 use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
+use TYPO3\CMS\Core\Pagination\ArrayPaginator;
+use TYPO3\CMS\Core\Pagination\SimplePagination;
+use TYPO3\CMS\Backend\Template\Components\Menu\Menu;
+use TYPO3\CMS\Backend\Template\ModuleTemplate;
+use TYPO3\CMS\Backend\Template\ModuleTemplateFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext;
+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 TYPO3\CMS\Extbase\Utility\DebuggerUtility;
-use TYPO3\CMS\Core\Pagination\ArrayPaginator;
-use TYPO3\CMS\Core\Pagination\SimplePagination;
 
 class BackendController extends ActionController
 {
-  /**
-   * BackendTemplateContainer
-   *
-   * @var \TYPO3\CMS\Backend\View\BackendTemplateView
-   */
-  protected $view;
-  /**
-   * Backend Template Container
-   * 
-   * @var string
-   * @return string
-   */
-  protected $defaultViewObjectName = \TYPO3\CMS\Backend\View\BackendTemplateView::class;
+  protected ModuleTemplateFactory $moduleTemplateFactory;
+  protected ModuleTemplate $moduleTemplate;
+  protected PageRenderer $pageRenderer;
 
   /**
    * @var activePageRepository
    */
   protected $activePageRepository;
 
-  public function __construct(ActivePageRepository $activePageRepository)
-  {
+  public function __construct(
+    ActivePageRepository $activePageRepository
+  ) {
     $this->activePageRepository = $activePageRepository;
   }
 
-  protected function translate($key, $arguments): string
-  {
-    return LocalizationUtility::translate(
-      $key,
-      'pagemanager',
-      $arguments
-    );
-  }
-
-  /**
-   * @return ViewInterface
-   */
-  protected function resolveView(): \TYPO3\CMS\Backend\View\BackendTemplateView
-  {
-    $view = parent::resolveView();
-
-    $view->assignMultiple([
-      'extensionName' => $this->request->getControllerExtensionName(),
-      'controllerName' => $this->request->getControllerName(),
-      'actionName'     => $this->request->getControllerActionName()
-    ]);
-    // var_dump($view);
-    return $view;
-  }
-
-
-
-  protected function generateMenu()
+  protected function initializeView(ViewInterface $view)
   {
     $menuItems = [
-      'activePage' => [
+      'index' => [
         'controller' => 'Backend',
         'action' => 'index',
         'label' => 'Heute oder demnächst auslaufende Beiträge'
-      ]
+      ],
+      'expiredlast30' => [
+        'controller' => 'Backend',
+        'action' => 'lastthirdtydays',
+        'label' => 'Beiträge, die in den letzten 30 Tagen ausgelaufen sind'
+      ],
+      'expiredlast90' => [
+        'controller' => 'Backend',
+        'action' => 'lastninetydays',
+        'label' => 'Beiträge, die in den letzten 90 Tagen ausgelaufen sind'
+      ],
     ];
 
-    // Generate Backend Active select Box
-    $menu = $this->view->getModuleTemplate()->getDocHeaderComponent()->getMenuRegistry()->makeMenu();
-    $menu->setIdentifier('PageManagerModuleMenu');
+    $this->moduleTemplateFactory = GeneralUtility::makeInstance(ModuleTemplateFactory::class);
+    $this->moduleTemplate = $this->moduleTemplateFactory->create($this->request);
 
-    // $menu = GeneralUtility::makeInstance(Menu::class);
-    // $menu->setIdentifier('PageManagerModuleMenu');
+    $menu = $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->makeMenu();
+    $menu->setIdentifier('PageManagerModuleMenu');
 
     foreach ($menuItems as $menuItemConfig) {
       $isActive = false;
@@ -92,34 +67,62 @@ class BackendController extends ActionController
           $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 getHref($controller, $action, $parameters = [])
+  // protected function addMainMenu(string $currentAction): void
+  // {
+  //   $this->uriBuilder->setRequest($this->request);
+  //   $menu = $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->makeMenu();
+  //   $menu->setIdentifier('PageManagerModuleMenu');
+  //   $menu->addMenuItem(
+  //     $menu->makeMenuItem()
+  //       ->setTitle('Heute oder demnächst auslaufende Beiträge')
+  //       ->setHref($this->uriBuilder->uriFor('index'))
+  //       ->setActive($currentAction === 'index')
+  //   );
+  //   if ($currentAction === 'last30days') {
+  //     $menu->addMenuItem(
+  //       $menu->makeMenuItem()
+  //         ->setTitle('Beiträge, die in den letzten 30 Tagen ausgelaufen sind')
+  //         ->setHref($this->uriBuilder->uriFor('last30days'))
+  //         ->setActive(true)
+  //     );
+  //   }
+  //   if ($currentAction === 'lastninetydays') {
+  //     $menu->addMenuItem(
+  //       $menu->makeMenuItem()
+  //         ->setTitle('Beiträge, die in den letzten 30 Tagen ausgelaufen sind')
+  //         ->setHref($this->uriBuilder->uriFor('lastninetydays'))
+  //         ->setActive(true)
+  //     );
+  //   }
+
+  //   $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->addMenu($menu);
+  // }
+
+  protected function translate($key, $arguments): string
   {
-    $uriBuilder = $this->objectManager->get(UriBuilder::class);
-    $uriBuilder->setRequest($this->request);
-    return $uriBuilder->reset()->uriFor($action, $parameters, $controller);
+    return LocalizationUtility::translate(
+      $key,
+      'pagemanager',
+      $arguments
+    );
   }
 
-  /**
-   * Initialize view
-   * 
-   * @param ViewInterface $view
-   */
-  protected function initializeView(ViewInterface $view)
+  protected function getHref($controller, $action, $parameters = [])
   {
-    if ($view instanceof \TYPO3\CMS\Backend\View\BackendTemplateView) {
-      /** @var \TYPO3\CMS\Backend\View\BackendTemplateView $view */
-      parent::initializeView($view);
-      //$this->generateMenu();
-    }
+    $this->uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
+    $this->uriBuilder->setRequest($this->request);
+
+    return $this->uriBuilder->reset()->uriFor($action, $parameters, $controller);
   }
 
   public function createCategoryFromSlug($slug)
@@ -136,13 +139,13 @@ class BackendController extends ActionController
     return $data[0];
   }
 
-  public function indexAction()
+  public function indexAction(): ResponseInterface
   {
     $activePages = $this->activePageRepository->findActivePagesAndPageCreatetors();
+    $itemsperpage = $this->settings['itemsPerPage'] ?? 50;
 
     $pageObjectArray = [];
 
-    //DebuggerUtility::var_dump($activePages);
     foreach ($activePages as $activePage) {
       $pageObj = new ActivePage();
       $pageObj->setUid($activePage['uid']);
@@ -157,23 +160,20 @@ class BackendController extends ActionController
       array_push($pageObjectArray, $pageObj);
     }
     $currentPage = $this->request->hasArgument('currentPage') ? $this->request->getArgument('currentPage') : 1;
-    $itemsPerPage  = $this->settings['itemsPerPage'];
-    // if (count($pageObjectArray) > $numberPerPage) {
-    //   $itemsPerPage = $numberPerPage;
-    // } else {
-    //   $itemsPerPage = 25;
-    // }
-    $this->buildPagination($pageObjectArray, $currentPage, $itemsPerPage);
 
+    $this->buildPagination($pageObjectArray, $itemsperpage, $currentPage);
 
-    // $this->view->assign('activePages', $pageObjectArray);
+    $this->moduleTemplate->setContent($this->view->render());
+    return $this->htmlResponse($this->moduleTemplate->renderContent());
   }
 
-  public function lastthirdtydays()
+  public function show30Action()
   {
     $activePagesExpiredInlast30days = $this->activePageRepository->findExpiredRecordsInTheLast30Days();
-    
+
+
     $this->view->assign('last30days', $activePagesExpiredInlast30days);
+    return $this->htmlResponse();
   }
 
   /**
@@ -182,14 +182,14 @@ class BackendController extends ActionController
    * @param int $itemsperpage 
    * 
    */
-  protected function buildPagination(array $activePages, int $currentPage = 1, 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();
-  
+
     $this->view->assignMultiple(
       [
         'cpage' => $cPage,