/** * @magentoAppIsolation enabled */ public function testAddActionLayoutHandles() { $this->_model->getRequest()->setRouteName('test')->setControllerName('controller')->setActionName('action'); $this->_model->addActionLayoutHandles(); $handles = $this->_model->getLayout()->getUpdate()->getHandles(); $this->assertContains('test_controller_action', $handles); }
/** * @magentoAppIsolation enabled */ public function testAddActionLayoutHandles() { $this->_model->getRequest()->setRouteName('Test')->setControllerName('Controller')->setActionName('Action'); $this->_model->addActionLayoutHandles(); $handles = $this->_model->getLayout()->getUpdate()->getHandles(); $this->assertContains('test_controller_action', $handles); $this->assertNotContains('STORE_' . Mage::app()->getStore()->getCode(), $handles); }
/** * Renders CMS page * * @param Mage_Core_Controller_Front_Action|Mage_Core_Controller_Varien_Action $action * @param integer $pageId * @param bool $renderLayout * @return boolean */ protected function _renderPage(Mage_Core_Controller_Varien_Action $action, $pageId = null, $renderLayout = true) { $page = Mage::getSingleton('Mage_Cms_Model_Page'); if (!is_null($pageId) && $pageId !== $page->getId()) { $delimeterPosition = strrpos($pageId, '|'); if ($delimeterPosition) { $pageId = substr($pageId, 0, $delimeterPosition); } $page->setStoreId(Mage::app()->getStore()->getId()); if (!$page->load($pageId)) { return false; } } if (!$page->getId()) { return false; } $inRange = Mage::app()->getLocale()->isStoreDateInInterval(null, $page->getCustomThemeFrom(), $page->getCustomThemeTo()); if ($page->getCustomTheme()) { if ($inRange) { Mage::getDesign()->setDesignTheme($page->getCustomTheme()); } } $action->addPageLayoutHandles(array('id' => $page->getIdentifier())); $action->addActionLayoutHandles(); if ($page->getRootTemplate()) { $handle = $page->getCustomRootTemplate() && $page->getCustomRootTemplate() != 'empty' && $inRange ? $page->getCustomRootTemplate() : $page->getRootTemplate(); $action->getLayout()->helper('Mage_Page_Helper_Layout')->applyHandle($handle); } Mage::dispatchEvent('cms_page_render', array('page' => $page, 'controller_action' => $action)); $action->loadLayoutUpdates(); $layoutUpdate = $page->getCustomLayoutUpdateXml() && $inRange ? $page->getCustomLayoutUpdateXml() : $page->getLayoutUpdateXml(); if (!empty($layoutUpdate)) { $action->getLayout()->getUpdate()->addUpdate($layoutUpdate); } $action->generateLayoutXml()->generateLayoutBlocks(); $contentHeadingBlock = $action->getLayout()->getBlock('page_content_heading'); if ($contentHeadingBlock) { $contentHeading = $this->escapeHtml($page->getContentHeading()); $contentHeadingBlock->setContentHeading($contentHeading); } if ($page->getRootTemplate()) { $action->getLayout()->helper('Mage_Page_Helper_Layout')->applyTemplate($page->getRootTemplate()); } /* @TODO: Move catalog and checkout storage types to appropriate modules */ $messageBlock = $action->getLayout()->getMessagesBlock(); foreach (array('Mage_Catalog_Model_Session', 'Mage_Checkout_Model_Session', 'Mage_Customer_Model_Session') as $storageType) { $storage = Mage::getSingleton($storageType); if ($storage) { $messageBlock->addStorageType($storageType); $messageBlock->addMessages($storage->getMessages(true)); } } if ($renderLayout) { $action->renderLayout(); } return true; }
/** * @param string $route * @param string $controller * @param string $action * @param array $expected * * @magentoAppIsolation enabled * @magentoConfigFixture global/dev/page_type/render_inherited 1 * @dataProvider addActionLayoutHandlesInheritedDataProvider */ public function testAddActionLayoutHandlesInherited($route, $controller, $action, $expected) { $this->_model->getRequest()->setRouteName($route)->setControllerName($controller)->setActionName($action); $this->_model->addActionLayoutHandles(); $handles = $this->_model->getLayout()->getUpdate()->getHandles(); foreach ($expected as $expectedHandle) { $this->assertContains($expectedHandle, $handles); } }
/** * Renders CMS page * * @param Mage_Core_Controller_Front_Action $action * @param integer $pageId * @param bool $renderLayout * @return boolean */ protected function _renderPage(Mage_Core_Controller_Varien_Action $action, $pageId = null, $renderLayout = true) { $page = Mage::getSingleton('cms/page'); if (!is_null($pageId) && $pageId !== $page->getId()) { $delimeterPosition = strrpos($pageId, '|'); if ($delimeterPosition) { $pageId = substr($pageId, 0, $delimeterPosition); } $page->setStoreId(Mage::app()->getStore()->getId()); if (!$page->load($pageId)) { return false; } } if (!$page->getId()) { return false; } $inRange = Mage::app()->getLocale()->isStoreDateInInterval(null, $page->getCustomThemeFrom(), $page->getCustomThemeTo()); if ($page->getCustomTheme()) { if ($inRange) { list($package, $theme) = explode('/', $page->getCustomTheme()); Mage::getSingleton('core/design_package')->setPackageName($package)->setTheme($theme); } } $action->getLayout()->getUpdate()->addHandle('default')->addHandle('cms_page'); $action->addActionLayoutHandles(); if ($page->getRootTemplate()) { $handle = $page->getCustomRootTemplate() && $page->getCustomRootTemplate() != 'empty' && $inRange ? $page->getCustomRootTemplate() : $page->getRootTemplate(); $action->getLayout()->helper('page/layout')->applyHandle($handle); } Mage::dispatchEvent('cms_page_render', array('page' => $page, 'controller_action' => $action)); $action->loadLayoutUpdates(); $layoutUpdate = $page->getCustomLayoutUpdateXml() && $inRange ? $page->getCustomLayoutUpdateXml() : $page->getLayoutUpdateXml(); $action->getLayout()->getUpdate()->addUpdate($layoutUpdate); $action->generateLayoutXml()->generateLayoutBlocks(); $contentHeadingBlock = $action->getLayout()->getBlock('page_content_heading'); if ($contentHeadingBlock) { $contentHeadingBlock->setContentHeading($page->getContentHeading()); } if ($page->getRootTemplate()) { $action->getLayout()->helper('page/layout')->applyTemplate($page->getRootTemplate()); } // @nelkaake Replaced with next line to separate dependency: foreach (array('catalog/session', 'checkout/session') as $class_name) { foreach (array('core/session', 'customer/session') as $class_name) { $storage = Mage::getSingleton($class_name); if ($storage) { $action->getLayout()->getMessagesBlock()->addMessages($storage->getMessages(true)); } } if ($renderLayout) { $action->renderLayout(); } return true; }