Переглянути джерело

some changes of table fields

ksieren 2 роки тому
батько
коміт
71a1e316d1
3 змінених файлів з 189 додано та 124 видалено
  1. 181 121
      Classes/Controller/BackendController.php
  2. 3 0
      ext_localconf.php
  3. 5 3
      ext_tables.sql

+ 181 - 121
Classes/Controller/BackendController.php

@@ -3,6 +3,9 @@
 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;
@@ -20,62 +23,121 @@ use Meramo\Pagemanager\Utils\Gedoens;
 class BackendController extends ActionController
 {
   protected ModuleTemplateFactory $moduleTemplateFactory;
-  protected ModuleTemplate $moduleTemplate;
   protected PageRenderer $pageRenderer;
-
-  /**
-   * @var activePageRepository
-   */
-  protected $activePageRepository;
+  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 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'
-      ],
-    ];
-
-    $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) {
-      $isActive = false;
-      if ($this->request->getControllerName() === $menuItemConfig['controller']) {
-        if ($this->request->getControllerActionName() === $menuItemConfig['action']) {
-          $isActive = true;
+    protected function generateMenu()
+    {
+        $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'
+            ],
+        ];
+        $menu = $this->view->getModuleTemplate()->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;
+                }
+            }
+            $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);
+    }
 
-      $menuItem = $menu->makeMenuItem()
-        ->setTitle($menuItemConfig['label'])
-        ->setHref($this->getHref($menuItemConfig['controller'], $menuItemConfig['action']))
-        ->setActive($isActive);
-      $menu->addMenuItem($menuItem);
+    protected function getHref($controller, $action, $parameters = [])
+    {
+        $uriBuilder = $this->objectManager->get(UriBuilder::class);
+        $uriBuilder->setRequest($this->request);
+        return $uriBuilder->reset()->uriFor($action, $parameters, $controller);
     }
-    $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->addMenu($menu);
-  }
+
+//    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
   {
@@ -86,99 +148,97 @@ class BackendController extends ActionController
     );
   }
 
-  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);
-  }
+//  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);
+      $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->moduleTemplate->setContent($this->view->render());
-    return $this->htmlResponse($this->moduleTemplate->renderContent());
+      $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;
+      $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->buildPagination($pageObjectArray, $itemsperpage, $currentPage);
 
-    $this->moduleTemplate->setContent($this->view->render());
-    return $this->htmlResponse($this->moduleTemplate->renderContent());
+      $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());
+      $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());
   }
 
   /**

+ 3 - 0
ext_localconf.php

@@ -0,0 +1,3 @@
+<?php
+
+defined('TYPO3_MODE') || die();

+ 5 - 3
ext_tables.sql

@@ -1,4 +1,6 @@
 CREATE TABLE pages (
-    roof varchar(255) DEFAULT '' NOT NULL,
-    red_status varchar(255) DEFAULT '' NOT NULL
-);
+    roof varchar(2048) DEFAULT '',
+    red_status smallint DEFAULT -1
+);
+
+-- roof VARCHAR(2048) CHARACTER SET utf8mb4 DEFAULT '' COLLATE `utf8mb4_unicode_ci`