*/ class Mage_Adminhtml_Block_Cms_Block_Widget_Chooser extends Mage_Adminhtml_Block_Widget_Grid { /** * Block construction, prepare grid params * * @param array $arguments Object data */ public function __construct($arguments=array()) { parent::__construct($arguments); $this->setDefaultSort('block_identifier'); $this->setDefaultDir('ASC'); $this->setUseAjax(true); $this->setDefaultFilter(array('chooser_is_active' => '1')); } /** * Prepare chooser element HTML * * @param Varien_Data_Form_Element_Abstract $element Form Element * @return Varien_Data_Form_Element_Abstract */ public function prepareElementHtml(Varien_Data_Form_Element_Abstract $element) { $uniqId = Mage::helper('core')->uniqHash($element->getId()); $sourceUrl = $this->getUrl('*/cms_block_widget/chooser', array('uniq_id' => $uniqId)); $chooser = $this->getLayout()->createBlock('widget/adminhtml_widget_chooser') ->setElement($element) ->setTranslationHelper($this->getTranslationHelper()) ->setConfig($this->getConfig()) ->setFieldsetId($this->getFieldsetId()) ->setSourceUrl($sourceUrl) ->setUniqId($uniqId); if ($element->getValue()) { $block = Mage::getModel('cms/block')->load($element->getValue()); if ($block->getId()) { $chooser->setLabel($block->getTitle()); } } $element->setData('after_element_html', $chooser->toHtml()); return $element; } /** * Grid Row JS Callback * * @return string */ public function getRowClickCallback() { $chooserJsObject = $this->getId(); $js = ' function (grid, event) { var trElement = Event.findElement(event, "tr"); var blockId = trElement.down("td").innerHTML.replace(/^\s+|\s+$/g,""); var blockTitle = trElement.down("td").next().innerHTML; '.$chooserJsObject.'.setElementValue(blockId); '.$chooserJsObject.'.setElementLabel(blockTitle); '.$chooserJsObject.'.close(); } '; return $js; } /** * Prepare Cms static blocks collection * * @return Mage_Adminhtml_Block_Widget_Grid */ protected function _prepareCollection() { $collection = Mage::getModel('cms/block')->getCollection(); /* @var $collection Mage_Cms_Model_Mysql4_Block_Collection */ $this->setCollection($collection); return parent::_prepareCollection(); } /** * Prepare columns for Cms blocks grid * * @return Mage_Adminhtml_Block_Widget_Grid */ protected function _prepareColumns() { $this->addColumn('chooser_id', array( 'header' => Mage::helper('cms')->__('ID'), 'align' => 'right', 'index' => 'block_id', 'width' => 50 )); $this->addColumn('chooser_title', array( 'header' => Mage::helper('cms')->__('Title'), 'align' => 'left', 'index' => 'title', )); $this->addColumn('chooser_identifier', array( 'header' => Mage::helper('cms')->__('Identifier'), 'align' => 'left', 'index' => 'identifier' )); $this->addColumn('chooser_is_active', array( 'header' => Mage::helper('cms')->__('Status'), 'index' => 'is_active', 'type' => 'options', 'options' => array( 0 => Mage::helper('cms')->__('Disabled'), 1 => Mage::helper('cms')->__('Enabled') ), )); return parent::_prepareColumns(); } public function getGridUrl() { return $this->getUrl('*/cms_block_widget/chooser', array('_current' => true)); } }