/** * PreProcess page slots for public view. * * @param array $slots * @param Page $entity */ private function processSlots($slots, $entity) { /** @var \Mautic\CoreBundle\Templating\Helper\AssetsHelper $assetsHelper */ $assetsHelper = $this->factory->getHelper('template.assets'); /** @var \Mautic\CoreBundle\Templating\Helper\SlotsHelper $slotsHelper */ $slotsHelper = $this->factory->getHelper('template.slots'); /** @var \Mautic\CoreBundle\Templating\Helper\TranslatorHelper $translatorHelper */ $translatorHelper = $this->factory->getHelper('template.translator'); $formFactory = $this->get('form.factory'); $slotsHelper->inBuilder(true); $content = $entity->getContent(); foreach ($slots as $slot => $slotConfig) { // backward compatibility - if slotConfig array does not exist if (is_numeric($slot)) { $slot = $slotConfig; $slotConfig = []; } // define default config if does not exist if (!isset($slotConfig['type'])) { $slotConfig['type'] = 'html'; } if (!isset($slotConfig['placeholder'])) { $slotConfig['placeholder'] = 'mautic.page.builder.addcontent'; } $value = isset($content[$slot]) ? $content[$slot] : ''; if ($slotConfig['type'] == 'slideshow') { if (isset($content[$slot])) { $options = json_decode($content[$slot], true); } else { $options = ['width' => '100%', 'height' => '250px', 'background_color' => 'transparent', 'arrow_navigation' => false, 'dot_navigation' => true, 'interval' => 5000, 'pause' => 'hover', 'wrap' => true, 'keyboard' => true]; } // Create sample slides for first time or if all slides were deleted if (empty($options['slides'])) { $options['slides'] = [['order' => 0, 'background-image' => $assetsHelper->getUrl('media/images/mautic_logo_lb200.png'), 'captionheader' => 'Caption 1'], ['order' => 1, 'background-image' => $assetsHelper->getUrl('media/images/mautic_logo_db200.png'), 'captionheader' => 'Caption 2']]; } // Order slides usort($options['slides'], function ($a, $b) { return strcmp($a['order'], $b['order']); }); $options['slot'] = $slot; $options['public'] = false; // create config form $options['configForm'] = $formFactory->createNamedBuilder(null, 'slideshow_config', [], ['data' => $options])->getForm()->createView(); // create slide config forms foreach ($options['slides'] as $key => &$slide) { $slide['key'] = $key; $slide['slot'] = $slot; $slide['form'] = $formFactory->createNamedBuilder(null, 'slideshow_slide_config', [], ['data' => $slide])->getForm()->createView(); } $renderingEngine = $this->container->get('templating'); if (method_exists($renderingEngine, 'getEngine')) { $renderingEngine->getEngine('MauticPageBundle:Page:Slots/slideshow.html.php'); } $slotsHelper->set($slot, $renderingEngine->render('MauticPageBundle:Page:Slots/slideshow.html.php', $options)); } else { $slotsHelper->set($slot, "<div data-slot=\"text\" id=\"slot-{$slot}\">{$value}</div>"); } } //add builder toolbar $slotsHelper->start('builder'); ?> <input type="hidden" id="builder_entity_id" value="<?php echo $entity->getSessionId(); ?> " /> <?php $slotsHelper->stop(); }
/** * PreProcess page slots for public view. * * @deprecated - to be removed in 3.0 * * @param array $slots * @param Page $entity */ private function processSlots($slots, $entity) { /** @var \Mautic\CoreBundle\Templating\Helper\AssetsHelper $assetsHelper */ $assetsHelper = $this->factory->getHelper('template.assets'); /** @var \Mautic\CoreBundle\Templating\Helper\SlotsHelper $slotsHelper */ $slotsHelper = $this->factory->getHelper('template.slots'); $content = $entity->getContent(); foreach ($slots as $slot => $slotConfig) { // backward compatibility - if slotConfig array does not exist if (is_numeric($slot)) { $slot = $slotConfig; $slotConfig = []; } if (isset($slotConfig['type']) && $slotConfig['type'] == 'slideshow') { if (isset($content[$slot])) { $options = json_decode($content[$slot], true); } else { $options = ['width' => '100%', 'height' => '250px', 'background_color' => 'transparent', 'arrow_navigation' => false, 'dot_navigation' => true, 'interval' => 5000, 'pause' => 'hover', 'wrap' => true, 'keyboard' => true]; } // Create sample slides for first time or if all slides were deleted if (empty($options['slides'])) { $options['slides'] = [['order' => 0, 'background-image' => $assetsHelper->getUrl('media/images/mautic_logo_lb200.png'), 'captionheader' => 'Caption 1'], ['order' => 1, 'background-image' => $assetsHelper->getUrl('media/images/mautic_logo_db200.png'), 'captionheader' => 'Caption 2']]; } // Order slides usort($options['slides'], function ($a, $b) { return strcmp($a['order'], $b['order']); }); $options['slot'] = $slot; $options['public'] = true; $renderingEngine = $this->container->get('templating')->getEngine('MauticPageBundle:Page:Slots/slideshow.html.php'); $slotsHelper->set($slot, $renderingEngine->render('MauticPageBundle:Page:Slots/slideshow.html.php', $options)); } elseif (isset($slotConfig['type']) && $slotConfig['type'] == 'textarea') { $value = isset($content[$slot]) ? nl2br($content[$slot]) : ""; $slotsHelper->set($slot, $value); } else { // Fallback for other types like html, text, textarea and all unknown $value = isset($content[$slot]) ? $content[$slot] : ""; $slotsHelper->set($slot, $value); } } $parentVariant = $entity->getVariantParent(); $title = !empty($parentVariant) ? $parentVariant->getTitle() : $entity->getTitle(); $slotsHelper->set('pageTitle', $title); }
/** * {@inheritDoc} */ public function getContent() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getContent', array()); return parent::getContent(); }