Example #1
0
 /**
  * Sets up this test case
  *
  * @return void
  */
 public function setUp()
 {
     $this->view = $this->getAccessibleMock('TYPO3\\Fluid\\View\\StandaloneView', array('dummy'), array(), '', FALSE);
     $this->mockTemplateParser = $this->getMock('TYPO3\\Fluid\\Core\\Parser\\TemplateParser');
     $this->mockParsedTemplate = $this->getMock('TYPO3\\Fluid\\Core\\Parser\\ParsedTemplateInterface');
     $this->mockTemplateParser->expects($this->any())->method('parse')->will($this->returnValue($this->mockParsedTemplate));
     $this->mockConfigurationManager = $this->getMock('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManagerInterface');
     $this->mockObjectManager = $this->getMock('TYPO3\\Fluid\\Object\\ObjectManagerInterface');
     $this->mockObjectManager->expects($this->any())->method('get')->will($this->returnCallback(array($this, 'objectManagerCallback')));
     $this->mockObjectManager->expects($this->any())->method('create')->will($this->returnCallback(array($this, 'objectManagerCallback')));
     $this->mockRequest = $this->getMock('TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request');
     $this->mockUriBuilder = $this->getMock('TYPO3\\CMS\\Extbase\\Mvc\\Web\\Routing\\UriBuilder');
     $this->mockFlashMessages = $this->getMock('TYPO3\\CMS\\Extbase\\Mvc\\Controller\\FlashMessages');
     $this->mockContentObject = $this->getMock('TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer');
     $this->mockControllerContext = $this->getMock('TYPO3\\CMS\\Extbase\\Mvc\\Controller\\ControllerContext');
     $this->mockControllerContext->expects($this->any())->method('getRequest')->will($this->returnValue($this->mockRequest));
     $this->mockViewHelperVariableContainer = $this->getMock('TYPO3\\Fluid\\Core\\ViewHelper\\ViewHelperVariableContainer');
     $this->mockRenderingContext = $this->getMock('TYPO3\\Fluid\\Core\\Rendering\\RenderingContext');
     $this->mockRenderingContext->expects($this->any())->method('getControllerContext')->will($this->returnValue($this->mockControllerContext));
     $this->mockRenderingContext->expects($this->any())->method('getViewHelperVariableContainer')->will($this->returnValue($this->mockViewHelperVariableContainer));
     $this->view->injectTemplateParser($this->mockTemplateParser);
     $this->view->injectObjectManager($this->mockObjectManager);
     $this->view->setRenderingContext($this->mockRenderingContext);
     $this->mockTemplateCompiler = $this->getMock('TYPO3\\Fluid\\Core\\Compiler\\TemplateCompiler');
     $this->view->_set('templateCompiler', $this->mockTemplateCompiler);
     $this->singletonInstances = \TYPO3\CMS\Core\Utility\GeneralUtility::getSingletonInstances();
     \TYPO3\CMS\Core\Utility\GeneralUtility::setSingletonInstance('TYPO3\\Fluid\\Object\\ObjectManagerInterface', $this->mockObjectManager);
     \TYPO3\CMS\Core\Utility\GeneralUtility::addInstance('TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer', $this->mockContentObject);
 }
Example #2
0
 /**
  * @param array $arguments
  * @param Closure $renderChildrenClosure
  * @param \TYPO3\Fluid\Core\Rendering\RenderingContextInterface $renderingContext
  * @return string
  */
 public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, \TYPO3\Fluid\Core\Rendering\RenderingContextInterface $renderingContext)
 {
     $templateVariableContainer = $renderingContext->getTemplateVariableContainer();
     if ($arguments['each'] === NULL) {
         return '';
     }
     if (is_object($arguments['each']) && !$arguments['each'] instanceof \Traversable) {
         throw new \TYPO3\Fluid\Core\ViewHelper\Exception('ForViewHelper only supports arrays and objects implementing Traversable interface', 1248728393);
     }
     if ($arguments['reverse'] === TRUE) {
         // array_reverse only supports arrays
         if (is_object($arguments['each'])) {
             $arguments['each'] = iterator_to_array($arguments['each']);
         }
         $arguments['each'] = array_reverse($arguments['each']);
     }
     $iterationData = array('index' => 0, 'cycle' => 1, 'total' => count($arguments['each']));
     $output = '';
     foreach ($arguments['each'] as $keyValue => $singleElement) {
         $templateVariableContainer->add($arguments['as'], $singleElement);
         if ($arguments['key'] !== '') {
             $templateVariableContainer->add($arguments['key'], $keyValue);
         }
         if ($arguments['iteration'] !== NULL) {
             $iterationData['isFirst'] = $iterationData['cycle'] === 1;
             $iterationData['isLast'] = $iterationData['cycle'] === $iterationData['total'];
             $iterationData['isEven'] = $iterationData['cycle'] % 2 === 0;
             $iterationData['isOdd'] = !$iterationData['isEven'];
             $templateVariableContainer->add($arguments['iteration'], $iterationData);
             $iterationData['index']++;
             $iterationData['cycle']++;
         }
         $output .= $renderChildrenClosure();
         $templateVariableContainer->remove($arguments['as']);
         if ($arguments['key'] !== '') {
             $templateVariableContainer->remove($arguments['key']);
         }
         if ($arguments['iteration'] !== NULL) {
             $templateVariableContainer->remove($arguments['iteration']);
         }
     }
     return $output;
 }
Example #3
0
 /**
  * Assigns multiple values to the JSON output.
  * However, only the key "value" is accepted.
  *
  * @param array $values Keys and values - only a value with key "value" is considered
  * @return \TYPO3\Fluid\View\AbstractTemplateView the instance of this view to allow chaining
  * @api
  */
 public function assignMultiple(array $values)
 {
     $templateVariableContainer = $this->baseRenderingContext->getTemplateVariableContainer();
     foreach ($values as $key => $value) {
         if ($templateVariableContainer->exists($key)) {
             $templateVariableContainer->remove($key);
         }
         $templateVariableContainer->add($key, $value);
     }
     return $this;
 }
 /**
  * @param array $arguments
  * @param \Closure $renderChildrenClosure
  * @param RenderingContextInterface $renderingContext
  * @return string
  * @throws ViewHelper\Exception
  */
 public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
 {
     $templateVariableContainer = $renderingContext->getTemplateVariableContainer();
     if ($arguments['each'] === NULL) {
         return '';
     }
     if (!is_array($arguments['each'])) {
         throw new ViewHelper\Exception('DataSheetViewHelper only supports arrays and objects', 1248728393);
     }
     $iterationData = array('index' => 0, 'cycle' => 1, 'total' => count($arguments['each']));
     $output = '';
     foreach ($arguments['each'] as $keyValue => $singleElement) {
         $templateVariableContainer->add($arguments['as'], $singleElement);
         if ($arguments['key'] !== '') {
             $templateVariableContainer->add($arguments['key'], $keyValue);
         }
         if ($arguments['iteration'] !== NULL) {
             $iterationData['isFirst'] = $iterationData['cycle'] === 1;
             $iterationData['isLast'] = $iterationData['cycle'] === $iterationData['total'];
             $iterationData['isEven'] = $iterationData['cycle'] % 2 === 0;
             $iterationData['isOdd'] = !$iterationData['isEven'];
             $templateVariableContainer->add($arguments['iteration'], $iterationData);
             $iterationData['index']++;
             $iterationData['cycle']++;
         }
         $output .= $renderChildrenClosure();
         $templateVariableContainer->remove($arguments['as']);
         if ($arguments['key'] !== '') {
             $templateVariableContainer->remove($arguments['key']);
         }
         if ($arguments['iteration'] !== NULL) {
             $templateVariableContainer->remove($arguments['iteration']);
         }
     }
     return $output;
 }
 /**
  * Renders a section on its own, i.e. without the a surrounding template.
  *
  * In this case, we just emulate that a surrounding (empty) layout exists,
  * and trigger the normal rendering flow then.
  *
  * @param string $sectionName Name of section to render
  * @param array $variables The variables to use
  * @param boolean $ignoreUnknown Ignore an unknown section and just return an empty string
  * @return string rendered template for the section
  */
 protected function renderStandaloneSection($sectionName, array $variables = NULL, $ignoreUnknown = FALSE)
 {
     $templateIdentifier = $this->getTemplateIdentifier();
     if ($this->templateCompiler->has($templateIdentifier)) {
         $parsedTemplate = $this->templateCompiler->get($templateIdentifier);
     } else {
         $this->templateParser->setConfiguration($this->buildParserConfiguration());
         $parsedTemplate = $this->templateParser->parse($this->getTemplateSource());
         if ($parsedTemplate->isCompilable()) {
             $this->templateCompiler->store($templateIdentifier, $parsedTemplate);
         }
     }
     $this->baseRenderingContext->setControllerContext($this->controllerContext);
     $this->startRendering(self::RENDERING_LAYOUT, $parsedTemplate, $this->baseRenderingContext);
     $output = $this->renderSection($sectionName, $variables, $ignoreUnknown);
     $this->stopRendering();
     return $output;
 }
 /**
  * @param RenderingContextInterface $renderingContext
  * @return void
  */
 public function setRenderingContext(RenderingContextInterface $renderingContext)
 {
     $this->renderingContext = $renderingContext;
     $this->templateVariableContainer = $renderingContext->getTemplateVariableContainer();
     if ($renderingContext->getControllerContext() !== NULL) {
         $this->controllerContext = $renderingContext->getControllerContext();
     }
     $this->viewHelperVariableContainer = $renderingContext->getViewHelperVariableContainer();
 }
 /**
  * @test
  */
 public function viewHelperVariableContainerCanBeReadCorrectly()
 {
     $viewHelperVariableContainer = $this->getMock(\TYPO3\Fluid\Core\ViewHelper\ViewHelperVariableContainer::class);
     $this->renderingContext->injectViewHelperVariableContainer($viewHelperVariableContainer);
     $this->assertSame($viewHelperVariableContainer, $this->renderingContext->getViewHelperVariableContainer());
 }
 /**
  * @param \TYPO3\Fluid\Core\Rendering\RenderingContextInterface $renderingContext
  * @return void
  */
 public function setRenderingContext(\TYPO3\Fluid\Core\Rendering\RenderingContextInterface $renderingContext)
 {
     $this->renderingContext = $renderingContext;
     $this->templateVariableContainer = $renderingContext->getTemplateVariableContainer();
     $this->viewHelperVariableContainer = $renderingContext->getViewHelperVariableContainer();
 }