Ejemplo n.º 1
0
 /**
  * Add the activation status column to the customer grid block.
  *
  * This is used from different events when displaying the block as well as
  * during exporting the grid to CSV or XML.
  *
  * @param Mage_Adminhtml_Block_Widget_Grid $block
  */
 protected function _addActivationStatusColumn(Mage_Adminhtml_Block_Widget_Grid $block)
 {
     /** @var $helper Netzarbeiter_CustomerActivation_Helper_Data */
     $helper = Mage::helper('customeractivation');
     // Add the attribute as a column to the grid
     $block->addColumnAfter('customer_activated', array('header' => $helper->__('Customer Activated'), 'align' => 'center', 'width' => '80px', 'type' => 'options', 'options' => array('0' => $helper->__('No'), '1' => $helper->__('Yes')), 'default' => '0', 'index' => 'customer_activated', 'renderer' => 'customeractivation/adminhtml_widget_grid_column_renderer_boolean'), 'customer_since');
     // Set the new columns order.. otherwise our column would be the last one
     $block->sortColumnsByOrder();
 }
Ejemplo n.º 2
0
 /**
  * Apply columns values to grid block
  * 
  * @param Mage_Adminhtml_Block_Widget_Grid $grid Grid block instance
  * @param bool $applyFromCollection Whether values from collection columns should be applied
  * @return this
  */
 public function applyColumnsToGridBlock(Mage_Adminhtml_Block_Widget_Grid $grid, $applyFromCollection)
 {
     $gridIds = array_keys($grid->getColumns());
     $columnsOrders = array();
     $columns = $this->getColumns();
     uasort($columns, array($this, '_sortColumns'));
     $attributes = $this->getAvailableAttributes();
     foreach ($columns as $column) {
         if (!in_array($column['id'], $gridIds)) {
             if ($column['is_visible'] && !$column['missing'] && (!$this->isCollectionColumnOrigin($column['origin']) || $applyFromCollection)) {
                 // Add from collection/attribute visible and not missing columns
                 $lockedValues = $this->getColumnLockedValues($column['id']);
                 $data = array('header' => $column['header'], 'align' => $column['align'], 'width' => $column['width'], 'index' => $column['index']);
                 $data = array_merge($data, array_intersect_key($lockedValues, $data));
                 if ($this->isCollectionColumnOrigin($column['origin'])) {
                     if (isset($lockedValues['renderer']) || !is_null($column['renderer_type'])) {
                         // Add collection specific column values
                         if (isset($lockedValues['renderer'])) {
                             $rendererType = $lockedValues['renderer'];
                             $rendererParams = $rendererType == $column['renderer_type'] ? $column['renderer_params'] : array();
                         } else {
                             $rendererType = $column['renderer_type'];
                             $rendererParams = $column['renderer_params'];
                         }
                         $data = array_merge($data, $this->_getCollectionColumnGridValues($rendererType, $rendererParams, $column['index'], $grid->blcg_getStore()));
                     }
                 } elseif ($this->isAttributeColumnOrigin($column['origin'])) {
                     if (!isset($attributes[$column['index']])) {
                         // Unknown attribute
                         continue;
                     }
                     if (is_null($column['store_id'])) {
                         // Grid's store
                         $store = $grid->blcg_getStore();
                     } else {
                         // Specific store
                         $store = Mage::app()->getStore($column['store_id']);
                     }
                     // Use auto-generated unique ID as index
                     $alias = self::GRID_COLUMN_ATTRIBUTE_GRID_ALIAS . str_replace(self::GRID_COLUMN_ATTRIBUTE_ID_PREFIX, '', $column['id']);
                     $data['index'] = $alias;
                     // Tell grid to select current attribute
                     $grid->blcg_addAdditionalAttribute(array('alias' => $alias, 'attribute' => $attributes[$column['index']], 'bind' => 'entity_id', 'filter' => null, 'join_type' => 'left', 'store_id' => $store->getId()));
                     // Add attribute specific column values
                     $data = array_merge($data, $this->_getAttributeColumnGridValues($attributes[$column['index']], $column['renderer_params'], $store));
                 }
                 if (isset($lockedValues['config_values']) && is_array($lockedValues['config_values'])) {
                     $data = array_merge($data, $lockedValues['config_values']);
                 }
                 $grid->addColumn($column['id'], $data);
                 $columnsOrders[] = $column['id'];
             }
         } else {
             if ($column['is_visible']) {
                 // Update visible columns
                 $grid->getColumn($column['id'])->setWidth($column['width'])->setAlign($column['align'])->setHeader($column['header']);
                 $columnsOrders[] = $column['id'];
             } else {
                 // Remove not visible columns
                 $grid->blcg_removeColumn($column['id']);
             }
         }
     }
     // Apply columns orders
     $grid->blcg_resetColumnsOrder();
     $previousId = null;
     foreach ($columnsOrders as $columnId) {
         if (!is_null($previousId)) {
             $grid->addColumnsOrder($columnId, $previousId);
         }
         $previousId = $columnId;
     }
     $grid->sortColumnsByOrder();
     return $this;
 }