Beispiel #1
0
 /**
  * Wrap each element of a page that is being rendered, with a block-level HTML-element to highlight it in VDE
  *
  * Subscriber to event 'core_layout_render_element'
  *
  * @param Varien_Event_Observer $observer
  */
 public function wrapPageElement(Varien_Event_Observer $observer)
 {
     if (!$this->_getSession()->isDesignEditorActive()) {
         return;
     }
     if (!$this->_wrappingRenderer) {
         $this->_wrappingRenderer = Mage::getModel('Mage_DesignEditor_Block_Template', array('template' => 'wrapping.phtml'));
     }
     $event = $observer->getEvent();
     /** @var $layout Mage_Core_Model_Layout */
     $layout = $event->getData('layout');
     $elementName = $event->getData('element_name');
     /** @var $transport Varien_Object */
     $transport = $event->getData('transport');
     $block = $layout->getBlock($elementName);
     $isVde = $block && 0 === strpos(get_class($block), 'Mage_DesignEditor_Block_');
     $manipulationAllowed = $layout->isManipulationAllowed($elementName) && !$isVde;
     $isContainer = $layout->isContainer($elementName);
     if ($manipulationAllowed || $isContainer) {
         $elementId = 'vde_element_' . rtrim(strtr(base64_encode($elementName), '+/', '-_'), '=');
         $this->_wrappingRenderer->setData(array('element_id' => $elementId, 'element_title' => $layout->getElementProperty($elementName, 'label') ?: $elementName, 'element_html' => $transport->getData('output'), 'is_manipulation_allowed' => $manipulationAllowed, 'is_container' => $isContainer, 'element_name' => $elementName));
         $transport->setData('output', $this->_wrappingRenderer->toHtml());
     }
     /* Inject toolbar at the very beginning of the page */
     if ($elementName == 'after_body_start') {
         $elementHtml = $transport->getData('output');
         $toolbarHtml = $layout->renderElement('design_editor_toolbar');
         $transport->setData('output', $toolbarHtml . $elementHtml);
     }
 }