/** * @return array */ public function widgetPlaceholderImagesDataProvider() { $result = array(); $model = new Mage_Widget_Model_Widget(); foreach ($model->getWidgetsArray() as $row) { $instance = new Mage_Widget_Model_Widget_Instance(); $config = $instance->setType($row['type'])->getWidgetConfig(); // @codingStandardsIgnoreStart if (isset($config->placeholder_image)) { $result[] = array((string) $config->placeholder_image); } // @codingStandardsIgnoreEnd } return $result; }
public function testComparedProductsWidget() { $model = new Mage_Widget_Model_Widget_Instance(); $config = $model->setType('Mage_Reports_Block_Product_Widget_Compared')->getWidgetConfig(); $templates = $config->xpath('parameters/template/values'); $templates = (array) $templates[0]->children(); $this->assertArrayHasKey('default', $templates); $this->assertArrayHasKey('list', $templates); $this->assertArrayHasKey('list_default', $templates); $this->assertArrayHasKey('list_names', $templates); $this->assertArrayHasKey('list_images', $templates); $blocks = $config->xpath('supported_containers'); $blocks = (array) $blocks[0]->children(); $this->assertArrayHasKey('left_column', $blocks); $this->assertArrayHasKey('main_content', $blocks); $this->assertArrayHasKey('right_column', $blocks); }
/** * Generate layout update xml * * @param string $blockReference * @param string $position * @return string */ public function generateLayoutUpdateXml($blockReference, $templatePath = '') { $xml = parent::generateLayoutUpdateXml($blockReference, $templatePath); if ($xml && $this->getSortOrder() == 0 && strpos($xml, 'before=') === false) { $xml = str_replace('<block ', '<block before="-" ', $xml); } return $xml; }
/** * Collect all declared widget blocks and templates * * @return array */ public function widgetTemplatesDataProvider() { $result = array(); $model = new Mage_Widget_Model_Widget(); foreach ($model->getWidgetsArray() as $row) { $instance = new Mage_Widget_Model_Widget_Instance(); $config = $instance->setType($row['type'])->getWidgetConfig(); $class = Mage::getConfig()->getBlockClassName($row['type']); if (is_subclass_of($class, 'Mage_Core_Block_Template')) { $templates = $config->xpath('/widgets/' . $row['code'] . '/parameters/template/values/*/value'); foreach ($templates as $template) { $result[] = array($class, (string) $template); } } } return $result; }
public function testSetGetType() { $model = new Mage_Widget_Model_Widget_Instance(); $this->assertEmpty($model->getType()); $model->setType('test-test'); $this->assertEquals('test/test', $model->getType()); $model->setData('instance_type', 'test-test'); $this->assertEquals('test/test', $model->getType()); }
/** * Prepare and save layout updates data * * @param Mage_Widget_Model_Widget_Instance $widgetInstance * @param array $pageGroupData * @return array of inserted layout updates ids */ protected function _saveLayoutUpdates($widgetInstance, $pageGroupData) { $write = $this->_getWriteAdapter(); $pageLayoutUpdateIds = array(); $storeIds = $this->_prepareStoreIds($widgetInstance->getStoreIds()); foreach ($pageGroupData['layout_handle_updates'] as $handle) { $this->_getWriteAdapter()->insert($this->getTable('core/layout_update'), array('handle' => $handle, 'xml' => $widgetInstance->generateLayoutUpdateXml($pageGroupData['block_reference'], $pageGroupData['template']), 'sort_order' => $widgetInstance->getSortOrder())); $layoutUpdateId = $this->_getWriteAdapter()->lastInsertId(); $pageLayoutUpdateIds[] = $layoutUpdateId; foreach ($storeIds as $storeId) { $this->_getWriteAdapter()->insert($this->getTable('core/layout_link'), array('store_id' => $storeId, 'area' => $widgetInstance->getArea(), 'package' => $widgetInstance->getPackage(), 'theme' => $widgetInstance->getTheme(), 'layout_update_id' => $layoutUpdateId)); } } return $pageLayoutUpdateIds; }
/** * Prepare and save layout updates data * * @param Mage_Widget_Model_Widget_Instance $widgetInstance * @param array $pageGroupData * @return array of inserted layout updates ids */ protected function _saveLayoutUpdates($widgetInstance, $pageGroupData) { $writeAdapter = $this->_getWriteAdapter(); $pageLayoutUpdateIds = array(); $storeIds = $this->_prepareStoreIds($widgetInstance->getStoreIds()); $layoutUpdateTable = $this->getTable('core/layout_update'); $layoutUpdateLinkTable = $this->getTable('core/layout_link'); foreach ($pageGroupData['layout_handle_updates'] as $handle) { $xml = $widgetInstance->generateLayoutUpdateXml($pageGroupData['block_reference'], $pageGroupData['template']); $insert = array('handle' => $handle, 'xml' => $xml); if (strlen($widgetInstance->getSortOrder())) { $insert['sort_order'] = $widgetInstance->getSortOrder(); } $writeAdapter->insert($layoutUpdateTable, $insert); $layoutUpdateId = $writeAdapter->lastInsertId($layoutUpdateTable); $pageLayoutUpdateIds[] = $layoutUpdateId; $data = array(); foreach ($storeIds as $storeId) { $data[] = array('store_id' => $storeId, 'area' => $widgetInstance->getArea(), 'package' => $widgetInstance->getPackage(), 'theme' => $widgetInstance->getTheme(), 'layout_update_id' => $layoutUpdateId); } $writeAdapter->insertMultiple($layoutUpdateLinkTable, $data); } return $pageLayoutUpdateIds; }
protected function _construct() { parent::_construct(); $this->_layoutHandles['specific_cms_page'] = self::ALL_PAGE_LAYOUT_HANDLE; $this->_specificEntitiesLayoutHandles['specific_cms_page'] = self::SPECIFIC_PAGE_LAYOUT_HANDLE; }
/** * Validate widget instance before delete * * @param Mage_Widget_Model_Widget_Instance $model */ public function widgetInstanceDeleteBefore($model) { $originalStoreIds = $model->getResource()->lookupStoreIds($model->getId()); if (!$this->_role->hasExclusiveStoreAccess($originalStoreIds)) { $this->_throwDelete(); } }
/** * @param Mage_Widget_Model_Widget_Instance $model * @depends testGetWidgetConfig */ public function testGenerateLayoutUpdateXml(Mage_Widget_Model_Widget_Instance $model) { $this->assertEquals('', $model->generateLayoutUpdateXml('content')); $model->setId('test_id')->setPackageTheme('default/demo'); $result = $model->generateLayoutUpdateXml('content'); $this->assertContains('<reference name="content">', $result); $this->assertContains('<block type="' . $model->getType() . '"', $result); }
/** * Row click url * * @param Mage_Widget_Model_Widget_Instance $row * @return string */ public function getRowUrl($row) { return $this->getUrl('*/*/edit', array('instance_id' => $row->getId())); }