Magento Filter product grid

<?php
class Pixel_Filterproducts_Model_Observer extends Varien_Event_Observer{

    protected $_productAttributeUser;
    protected $_currentAdminuser;
    protected $_masterAdminRoleId;

    public function __construct(){

        $this->_productAttributeUser = 'vendorid';
        $this->_currentAdminuser = Mage::getSingleton('admin/session')->getUser();
        $this->_masterAdminRoleId = 1;

    }

    /*
    ** List Products Filter by Particular Users
    */
    public function filterProductsByUsers($observer){

        if(Mage::getDesign()->getArea() != 'adminhtml' || $this->_currentAdminuser->getRole()->getRoleId() == $this->_masterAdminRoleId)
        return;
        $event = $observer->getEvent();
        $collection = $event->getCollection()->addAttributeToFilter( 'vendorid', array('eq' =>$this->_currentAdminuser->getUserId() ) );
        /*$count = count($collection->getData());
        if($count > 1)
        echo '
            <style type="text/css">
                .scalable.add{ display:none;}
            </style>
        ';*/
        return $this;

    }
    /*
    ** Before save the product user id should be update for current product
    */
    public function beforeSaveProductUserId($observer){
        if($this->_masterAdminRoleId != $this->_currentAdminuser->getRole()->getRoleId()){
            $observer->getProduct()->setData($this->_productAttributeUser, $this->_currentAdminuser->getUserId());
        }else{
            $_orgPro = Mage::getModel('catalog/product')->load($observer->getProduct()->getId());
            $observer->getProduct()->setData($this->_productAttributeUser, $this->_currentAdminuser->getUserId());
            if($_orgPro->getUser())
            $observer->getProduct()->setData($this->_productAttributeUser, $_orgPro->getVendorid());
        }
    }
}
?>









<?xml version="1.0"?>
<config>
    <modules>
        <Pixel_Filterproducts>
            <version>1.0.0</version>
        </Pixel_Filterproducts>
    </modules>
   
    <global>
         <models>
            <pixel_filterproducts>
                 <class>Pixel_Filterproducts_Model</class>
            </pixel_filterproducts>
        </models>
        <blocks>
            <pixel_filterproducts>
                <class>Pixel_Filterproducts_Block</class>
            </pixel_filterproducts>
            <adminhtml>
                <rewrite>
                    <catalog_product_grid>Pixel_Filterproducts_Block_Adminhtml_Catalog_Product_Grid</catalog_product_grid>
                    <catalog_product>Pixel_Filterproducts_Block_Adminhtml_Catalog_Product</catalog_product>
                </rewrite>
            </adminhtml>
        </blocks>

        <events>
            <catalog_product_collection_load_before>
                <observers>
                    <pixel_filterproducts>
                        <type>singleton</type>
                        <class>pixel_filterproducts/observer</class>
                        <method>filterProductsByUsers</method>
                    </pixel_filterproducts>
                </observers>
            </catalog_product_collection_load_before>
            <catalog_product_save_before>
                <observers>
                    <pixel_filterproducts>
                        <type>singleton</type>
                        <class>pixel_filterproducts/observer</class>
                        <method>beforeSaveProductUserId</method>
                    </pixel_filterproducts>
                </observers>
            </catalog_product_save_before>
        </events>
    </global>
   
</config>













<?php
class Pixel_Filterproducts_Block_Adminhtml_Catalog_Product_Grid extends Mage_Adminhtml_Block_Catalog_Product_Grid{

    protected function _prepareColumns()
    {
        $user_options = array();
        $adminUserModel = Mage::getModel('admin/user');
        $userCollection = $adminUserModel->getCollection()->load();
        foreach ($userCollection as $use_coll)
        {
            $user_options[$use_coll->getId()] = $use_coll->getFirstname();
        }
      
       $user = Mage::getSingleton('admin/session');
       $userId = $user->getUser()->getUserId();
       if($userId == 1)
       {
            $this->addColumn('Vendor',
                array(
                    'header'=> Mage::helper('catalog')->__('Vendor'),
                    'type' => 'options',
                    'renderer' => 'Pixel_Filterproducts_Block_Adminhtml_Catalog_Product_Renderer_Vendor',
                    'index'=>'vendorid',
                    'options'=> $user_options,
                   
                )
             );
        }
         $ban_options = array();
         $banner = Mage::getModel('banner/banner')->getCollection();
            foreach ($banner as $ban)
            {
                $banner_options[$ban->getCode()] = $ban->getName();
            }
       /* $this->addColumn('banner', array(
            'header'    =>  Mage::helper('catalog')->__('Banner'),
            'width'     =>  '100',
            'renderer' => 'Pixel_Filterproducts_Block_Adminhtml_Catalog_Product_Renderer_Banner',
            'type'      =>  'options',
            'options'   =>  $banner_options,
            'index' => 'banner',
           
        ));*/
        return parent::_prepareColumns();
    }

}
?>


<?php
class Pixel_Filterproducts_Block_Adminhtml_Catalog_Product_Renderer_Vendor extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract{

    protected $_productAttributeUser;
    public function __construct(){
        $this->_productAttributeUser = 'vendorid';
    }
    public function render(Varien_Object $row){
        $row = Mage::getModel('catalog/product')->load($row->getEntityId());
        if($_userId = $row->getData($this->_productAttributeUser)){
            $_userTmp = Mage::getSingleton('admin/user')->load($_userId);
            //print_r($_userTmp->getUserId());
            if($_userTmp)
            return $_userTmp->getFirstname().' '.$_userTmp->getLastname();
        }
        return;
    }
  
}
?>

Share this

Related Posts

Previous
Next Post »

Pageviews from the past week