示例#1
0
 /**
  * Apply default parameters to grid block
  * 
  * @param Mage_Adminhtml_Block_Widget_Grid $grid Grid block instance
  * @return this
  */
 public function applyDefaultToGridBlock(Mage_Adminhtml_Block_Widget_Grid $grid)
 {
     if ($default = $this->_getData('default_page')) {
         $grid->blcg_setDefaultPage($default);
     }
     if (($default = $this->_getData('default_limit')) && in_array($default, $this->getPaginationValues())) {
         $grid->blcg_setDefaultLimit($default);
     }
     if ($default = $this->_getData('default_sort')) {
         $grid->blcg_setDefaultSort($default);
     }
     if ($default = $this->_getData('default_dir')) {
         $grid->blcg_setDefaultDir($default);
     }
     if ($filters = $this->_getData('default_filter')) {
         if (is_array($filters = @unserialize($filters))) {
             // Only apply still valid filters
             $columns = $this->getColumns(false, true);
             $appliable = array();
             $attributesRenderers = $this->getAvailableAttributesRendererTypes();
             foreach ($filters as $columnId => $filter) {
                 if (isset($columns[$columnId])) {
                     $column = $columns[$columnId];
                     // Basically, those are the same verifications than the ones in verifyGridBlockFilters()
                     if ($filter['column']['origin'] == $column['origin']) {
                         if ($this->isCollectionColumnOrigin($column['origin'])) {
                             $valid = $filter['column']['renderer_type'] == $column['renderer_type'];
                         } elseif ($this->isAttributeColumnOrigin($column['origin'])) {
                             $valid = $filter['column']['renderer_type'] == $attributesRenderers[$column['index']];
                         } elseif ($this->isCustomColumnOrigin($column['origin'])) {
                             $oldIndex = $filter['column']['index'];
                             $typeModel = Mage::getSingleton('customgrid/grid_type');
                             $rendererTypes = array('old' => $filter['column']['renderer_type'], 'new' => $column['renderer_type']);
                             $customParams = array('old' => $typeModel->decodeParameters($filter['column']['custom_params'], true), 'new' => $typeModel->decodeParameters($column['custom_params'], true));
                             if ($oldIndex != $column['index'] || !is_object($column['custom_column']) || $column['custom_column']->shouldInvalidateFilters($this, $column, $customParams, $rendererTypes)) {
                                 $valid = false;
                             } else {
                                 $valid = true;
                             }
                         } else {
                             $valid = true;
                         }
                         if ($valid) {
                             $appliable[$columnId] = $filter['value'];
                         }
                     }
                 }
             }
             $grid->blcg_setDefaultFilter($appliable);
         }
     }
     return $this;
 }