|
|
@@ -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,
|