예제 #1
0
    /**
     * 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();
    }
예제 #2
0
 /**
  * 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();
 }