/**
  * @param \Twig_Environment $environment
  * @param array $context
  * @param string $id
  * @param string $template
  * @return string
  */
 public function renderGrid(\Twig_Environment $environment, $context, $id, $template = 'IntegratedWebsiteBundle:Page:grid.html.twig')
 {
     if (isset($context['form']) && ($form = $context['form']) instanceof FormView) {
         /** @var FormView $form */
         foreach ($form->offsetGet('grids') as $grid) {
             if ($grid->vars['value'] instanceof Grid && $grid->vars['value']->getId() == $id) {
                 return $this->renderer->searchAndRenderBlock($grid, 'row');
             }
         }
         if (isset($form->vars['value']) && ($page = $form->vars['value']) instanceof Page) {
             /** @var Page $page */
             $grid = new Grid();
             $grid->setId($id);
             $page->addGrid($grid);
             $form = $this->form->create('integrated_website_page', $page)->createView();
             // Render form for the newly added grid
             return $this->renderer->searchAndRenderBlock($form->offsetGet('grids')->offsetGet($page->indexOf($grid)), 'row');
         }
     }
     if (isset($context['page']) && ($page = $context['page']) instanceof Page) {
         /** @var Page $page */
         return $environment->render($template, ['grid' => $page->getGrid($id)]);
     }
 }
Esempio n. 2
0
 /**
  * Renders only specified fields. Useful for dynamic ajax forms.
  */
 protected function processRender(FormInterface $form, Request $request)
 {
     $presenter = $this->getPresenter();
     if (!$presenter->isAjax()) {
         throw new BadRequestException('The render signal is only allowed in ajax mode.');
     }
     $fields = $request->getPost($this->lookupPath('Nette\\Application\\UI\\Presenter', true) . self::NAME_SEPARATOR . 'fields');
     if (!$fields) {
         throw new BadRequestException('No fields specified for rendering.');
     }
     $form->handleRequest($request);
     if (!$form->isSubmitted()) {
         throw new BadRequestException('The form was not submitted.');
     }
     $view = $this->getView();
     $widgets = [];
     foreach ($fields as $field) {
         // Validate the field identifier for security reasons. A dot in the identifier would be particularly dangerous.
         if (!Strings::match($field, '~^(?:\\[\\w++\\])++$~')) {
             throw new BadRequestException(sprintf('Field identifier "%s" contains unallowed characters.', $field));
         }
         // Skip duplicates. The renderer would return an empty string on second try.
         if (isset($widgets[$field])) {
             continue;
         }
         // Wrap an exception from PropertyAccessor in a BadRequestException.
         try {
             $fieldView = $this->propertyAccessor->getValue($view, $field);
         } catch (ExceptionInterface $e) {
             throw new BadRequestException(sprintf('FormView not found for field identifier "%s".', $field), 0, $e);
         }
         // Render the field widget.
         $widgets[$field] = $this->renderer->searchAndRenderBlock($fieldView, 'widget');
     }
     $this->getPresenter()->sendJson((object) ['widgets' => $widgets]);
 }
Esempio n. 3
0
 /**
  * {@inheritdoc}
  */
 public function initRuntime(\Twig_Environment $environment)
 {
     $this->renderer->setEnvironment($environment);
 }
Esempio n. 4
0
 /**
  * Render Function Form Javascript
  *
  * @param FormView $view
  *
  * @return string
  */
 public function renderJavascript(FormView $view)
 {
     return $this->renderer->searchAndRenderBlock($view, 'javascript');
 }
Esempio n. 5
0
 /**
  * Makes a technical name human readable.
  *
  * @param string $text The text to humanize.
  *
  * @return string The humanized text.
  */
 public function humanize($text)
 {
     return $this->renderer->humanize($text);
 }
Esempio n. 6
0
 /**
  * @param TwigRendererInterface $innerRenderer
  * @param FormRendererEngineInterface $formRendererEngine
  * @param \Twig_Environment $environment
  */
 public function __construct(TwigRendererInterface $innerRenderer, FormRendererEngineInterface $formRendererEngine, \Twig_Environment $environment)
 {
     $innerRenderer->setEnvironment($environment);
     parent::__construct($innerRenderer, $formRendererEngine);
 }
Esempio n. 7
0
 /**
  * @param TwigRendererInterface $innerRenderer
  * @param \Twig_Environment     $environment
  */
 public function __construct(TwigRendererInterface $innerRenderer, \Twig_Environment $environment)
 {
     $innerRenderer->setEnvironment($environment);
     parent::__construct($innerRenderer);
 }