Example #1
0
 /**
  * @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;
 }
Example #2
0
 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);
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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;
 }
Example #5
0
 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;
 }
Example #7
0
 /**
  * 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;
 }
Example #8
0
 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;
 }
Example #9
0
 /**
  * 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();
     }
 }
Example #10
0
 /**
  * @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);
 }
Example #11
0
 /**
  * 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()));
 }