/**
  * Sets up this test case
  *
  * @return void
  */
 public function setUp()
 {
     $this->view = $this->getAccessibleMock('Tx_Fluid_View_StandaloneView', array('dummy'), array(), '', FALSE);
     $this->mockTemplateParser = $this->getMock('Tx_Fluid_Core_Parser_TemplateParser');
     $this->mockParsedTemplate = $this->getMock('Tx_Fluid_Core_Parser_ParsedTemplateInterface');
     $this->mockTemplateParser->expects($this->any())->method('parse')->will($this->returnValue($this->mockParsedTemplate));
     $this->mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
     $this->mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
     $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('Tx_Extbase_MVC_Web_Request');
     $this->mockUriBuilder = $this->getMock('Tx_Extbase_MVC_Web_Routing_UriBuilder');
     $this->mockFlashMessages = $this->getMock('Tx_Extbase_MVC_Controller_FlashMessages');
     $this->mockContentObject = $this->getMock('tslib_cObj');
     $this->mockControllerContext = $this->getMock('Tx_Extbase_MVC_Controller_ControllerContext');
     $this->mockControllerContext->expects($this->any())->method('getRequest')->will($this->returnValue($this->mockRequest));
     $this->mockViewHelperVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_ViewHelperVariableContainer');
     $this->mockRenderingContext = $this->getMock('Tx_Fluid_Core_Rendering_RenderingContextInterface');
     $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);
     t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $this->mockObjectManager);
     t3lib_div::addInstance('tslib_cObj', $this->mockContentObject);
 }
 /**
  * Loads the template source and render the template.
  * If "layoutName" is set in a PostParseFacet callback, it will render the file with the given layout.
  *
  * @param string $actionName If set, the view of the specified action will be rendered instead. Default is the action specified in the Request object
  * @return string Rendered Template
  * @author Sebastian Kurfürst <*****@*****.**>
  * @author Robert Lemke <*****@*****.**>
  * @api
  */
 public function render($actionName = NULL)
 {
     $this->baseRenderingContext->setControllerContext($this->controllerContext);
     $this->templateParser->setConfiguration($this->buildParserConfiguration());
     $parsedTemplate = $this->templateParser->parse($this->getTemplateSource($actionName));
     if ($this->isLayoutDefinedInTemplate($parsedTemplate)) {
         $this->startRendering(self::RENDERING_LAYOUT, $parsedTemplate, $this->baseRenderingContext);
         $parsedLayout = $this->templateParser->parse($this->getLayoutSource($this->getLayoutNameInTemplate($parsedTemplate)));
         $output = $parsedLayout->render($this->baseRenderingContext);
         $this->stopRendering();
     } else {
         $this->startRendering(self::RENDERING_TEMPLATE, $parsedTemplate, $this->baseRenderingContext);
         $output = $parsedTemplate->render($this->baseRenderingContext);
         $this->stopRendering();
     }
     return $output;
 }
 /**
  * Call the view helper associated with this object.
  *
  * First, it evaluates the arguments of the view helper.
  *
  * If the view helper implements Tx_Fluid_Core_ViewHelper_Facets_ChildNodeAccessInterface,
  * it calls setChildNodes(array childNodes) on the view helper.
  *
  * Afterwards, checks that the view helper did not leave a variable lying around.
  *
  * @param Tx_Fluid_Core_Rendering_RenderingContextInterface $renderingContext
  * @return object evaluated node after the view helper has been called.
  * @author Sebastian Kurfürst <*****@*****.**>
  * @author Karsten Dambekalns <*****@*****.**>
  * @todo check recreation of viewhelper when revisiting caching
  */
 public function evaluate(Tx_Fluid_Core_Rendering_RenderingContextInterface $renderingContext)
 {
     $objectManager = $renderingContext->getObjectManager();
     $contextVariables = $renderingContext->getTemplateVariableContainer()->getAllIdentifiers();
     if ($this->viewHelpersByContext->contains($renderingContext)) {
         $viewHelper = $this->viewHelpersByContext[$renderingContext];
     } else {
         $viewHelper = clone $this->uninitializedViewHelper;
         $this->viewHelpersByContext->attach($renderingContext, $viewHelper);
     }
     $evaluatedArguments = array();
     $renderMethodParameters = array();
     if (count($viewHelper->prepareArguments())) {
         foreach ($viewHelper->prepareArguments() as $argumentName => $argumentDefinition) {
             if (isset($this->arguments[$argumentName])) {
                 $argumentValue = $this->arguments[$argumentName];
                 $evaluatedArguments[$argumentName] = $this->convertArgumentValue($argumentValue, $argumentDefinition->getType(), $renderingContext);
             } else {
                 $evaluatedArguments[$argumentName] = $argumentDefinition->getDefaultValue();
             }
             if ($argumentDefinition->isMethodParameter()) {
                 $renderMethodParameters[$argumentName] = $evaluatedArguments[$argumentName];
             }
         }
     }
     $viewHelperArguments = $objectManager->create('Tx_Fluid_Core_ViewHelper_Arguments', $evaluatedArguments);
     $viewHelper->setArguments($viewHelperArguments);
     $viewHelper->setTemplateVariableContainer($renderingContext->getTemplateVariableContainer());
     if ($renderingContext->getControllerContext() !== NULL) {
         $viewHelper->setControllerContext($renderingContext->getControllerContext());
     }
     $viewHelper->setViewHelperVariableContainer($renderingContext->getViewHelperVariableContainer());
     $viewHelper->setViewHelperNode($this);
     $viewHelper->setRenderingContext($renderingContext);
     if ($viewHelper instanceof Tx_Fluid_Core_ViewHelper_Facets_ChildNodeAccessInterface) {
         $viewHelper->setChildNodes($this->childNodes);
     }
     $output = $viewHelper->initializeArgumentsAndRender($renderMethodParameters);
     return $output;
 }
Beispiel #4
0
 /**
  * @param Tx_Fluid_Core_Rendering_RenderingContextInterface $context
  * @param mixed $var
  * @return boolean
  */
 protected function determineBooleanOf($context, $var)
 {
     if ($context->getViewHelperVariableContainer()->exists('Tx_Vhs_ViewHelpers_SwitchViewHelper', $var)) {
         return $context->getViewHelperVariableContainer()->get('Tx_Vhs_ViewHelpers_SwitchViewHelper', $var);
     }
     return FALSE;
 }
 /**
  * @test
  * @author Sebastian Kurfürst <*****@*****.**>
  */
 public function viewHelperVariableContainerCanBeReadCorrectly()
 {
     $viewHelperVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_ViewHelperVariableContainer');
     $this->renderingContext->setViewHelperVariableContainer($viewHelperVariableContainer);
     $this->assertSame($viewHelperVariableContainer, $this->renderingContext->getViewHelperVariableContainer());
 }