‪TYPO3CMS  11.5
ActionMenuViewHelper.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
19 use TYPO3\CMS\Core\Page\JavaScriptRenderer;
20 use TYPO3\CMS\Core\Page\PageRenderer;
21 use TYPO3Fluid\Fluid\Core\Compiler\TemplateCompiler;
22 use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\ViewHelperNode;
23 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
24 
54 class ‪ActionMenuViewHelper extends AbstractTagBasedViewHelper
55 {
59  protected ‪$tagName = 'select';
60 
66  protected ‪$childNodes = [];
67 
73  public function ‪initializeArguments()
74  {
75  parent::initializeArguments();
76  $this->registerArgument('defaultController', 'string', 'The default controller to be used');
77  }
78 
84  public function ‪render()
85  {
86  $options = '';
87  foreach ($this->childNodes as $childNode) {
88  if ($childNode instanceof ViewHelperNode) {
89  $options .= $childNode->evaluate($this->renderingContext);
90  }
91  }
92  $this->tag->addAttributes([
93  'data-global-event' => 'change',
94  'data-action-navigate' => '$value',
95  ]);
96  $this->tag->setContent($options);
97  return $this->‪loadRequireJsModule('TYPO3/CMS/Backend/GlobalEventHandler')
98  . '<div class="docheader-funcmenu">' . $this->tag->render() . '</div>';
99  }
100 
108  public function ‪compile($argumentsName, $closureName, &$initializationPhpCode, ViewHelperNode $node, TemplateCompiler $compiler)
109  {
110  // @TODO: replace with a true compiling method to make compilable!
111  $compiler->disable();
112  return null;
113  }
114 
120  protected function ‪loadRequireJsModule(string $name): string
121  {
122  $javaScriptRenderer = JavaScriptRenderer::create();
123  $javaScriptRenderer->addJavaScriptModuleInstruction(
125  );
126  return $javaScriptRenderer->render();
127  }
128 }
‪TYPO3\CMS\Fluid\ViewHelpers\Be\Menus\ActionMenuViewHelper\compile
‪compile($argumentsName, $closureName, &$initializationPhpCode, ViewHelperNode $node, TemplateCompiler $compiler)
Definition: ActionMenuViewHelper.php:106
‪TYPO3\CMS\Fluid\ViewHelpers\Be\Menus\ActionMenuViewHelper\$tagName
‪string $tagName
Definition: ActionMenuViewHelper.php:58
‪TYPO3\CMS\Fluid\ViewHelpers\Be\Menus\ActionMenuViewHelper\loadRequireJsModule
‪loadRequireJsModule(string $name)
Definition: ActionMenuViewHelper.php:118
‪TYPO3\CMS\Fluid\ViewHelpers\Be\Menus\ActionMenuViewHelper\render
‪string render()
Definition: ActionMenuViewHelper.php:82
‪TYPO3\CMS\Fluid\ViewHelpers\Be\Menus\ActionMenuViewHelper\initializeArguments
‪initializeArguments()
Definition: ActionMenuViewHelper.php:71
‪TYPO3\CMS\Core\Page\JavaScriptModuleInstruction
Definition: JavaScriptModuleInstruction.php:23
‪TYPO3\CMS\Core\Page\JavaScriptModuleInstruction\forRequireJS
‪static self forRequireJS(string $name, string $exportName=null)
Definition: JavaScriptModuleInstruction.php:49
‪TYPO3\CMS\Fluid\ViewHelpers\Be\Menus\ActionMenuViewHelper
Definition: ActionMenuViewHelper.php:55
‪TYPO3\CMS\Fluid\ViewHelpers\Be\Menus\ActionMenuViewHelper\$childNodes
‪array $childNodes
Definition: ActionMenuViewHelper.php:64
‪TYPO3\CMS\Fluid\ViewHelpers\Be\Menus
Definition: ActionMenuItemGroupViewHelper.php:16