PHP SOLUTIONS

This is the blog for getting Idea regarding PHP, Magento, jQuery and JavaScript for Customization.

Wednesday, 5 September 2012

Magento : Add tabs in custom module in magento admin



/* Here, Created Multiple field for this module form */

A)  This is a Form.php files Where you can create your Custom Field's as per Requirement
  Path for your File is  "app\code\local\[Namespace]\[Module Name]\Block\Adminhtml\[Modele Name]\Edit\Tab\Form.php"


  protected function _prepareForm()
  {
      $form = new Varien_Data_Form();
      $this->setForm($form);
      $fieldset = $form->addFieldset('beautygirl_form', array('legend'=>Mage::helper('beautygirl')->__('Item information')));
   
      $fieldset->addField('title', 'text', array(
          'label'     => Mage::helper('beautygirl')->__('Title'),
          'class'     => 'required-entry',
          'required'  => true,
          'name'      => 'title',
      ));

 $fieldset->addField('status', 'select', array(
          'label'     => Mage::helper('beautygirl')->__('Status'),
          'name'      => 'status',
          'values'    => array(
              array(
                  'value'     => 1,
                  'label'     => Mage::helper('beautygirl')->__('Enabled'),
              ),

              array(
                  'value'     => 2,
                  'label'     => Mage::helper('beautygirl')->__('Disabled'),
              ),
          ),
      ));

  $fieldset->addField('startdate', 'date', array(
            'name'      => 'startdate',
            'title'     => Mage::helper('beautygirl')->__('Start Date'),
            'label'     => Mage::helper('beautygirl')->__('Start Date'),
'image'  => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'/adminhtml/default/default/images/grid-cal.gif',
//'format' => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT),
          //'format' => 'dd-MM-yyyy',
  'format' => 'yyyy-MM-dd',
//'format' => Varien_Date::DATE_INTERNAL_FORMAT,
            'required'  => true,
        ));

$fieldset->addField('enddate', 'date', array(
            'name'      => 'enddate',
            'title'     => Mage::helper('beautygirl')->__('End Date'),
            'label'     => Mage::helper('beautygirl')->__('End Date'),
'image'  => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'/adminhtml/default/default/images/grid-cal.gif',
//'format' => 'MM-dd-yyyy',
'format' => 'yyyy-MM-dd',
            'required'  => true,
        ));


      $fieldset->addField('filename', 'file', array(
          'label'     => Mage::helper('beautygirl')->__('File'),
          'required'  => true,
          'name'      => 'filename',
 ));

 $fieldset->addField('girlone', 'text', array(
          'label'     => Mage::helper('beautygirl')->__('Girl One'),
          'class'     => 'required-entry',
          'required'  => true,
          'name'      => 'girlone',
      ));
       
      $fieldset->addField('girlonecontent', 'editor', array(
          'name'      => 'girlonecontent',
          'label'     => Mage::helper('beautygirl')->__('Content'),
          'title'     => Mage::helper('beautygirl')->__('Content'),
          'style'     => 'width:700px; height:500px;',
          'wysiwyg'   => false,
          'required'  => true,
      ));

   
      if ( Mage::getSingleton('adminhtml/session')->getBeautygirlData() )
      {
          $form->setValues(Mage::getSingleton('adminhtml/session')->getBeautygirlData());
          Mage::getSingleton('adminhtml/session')->setBeautygirlData(null);
      } elseif ( Mage::registry('beautygirl_data') ) {
          $form->setValues(Mage::registry('beautygirl_data')->getData());
      }
      return parent::_prepareForm();
  }
}


B) This is the Second Step ::: app\code\local\[Namespace] \[Module Name]\controller/Adminhtml/yourcontrollerfile.php

/* For save your Module Item open controller file of module */
/* path = controller/Adminhtml/yourcontrollerfile.php*/
/* Here change two functions ""editAction"" and ""SaveAction"" */


In EditAction
/* Here I Use Example for create 2 extra tabs Mean I have Tabs Like this */
/* 1. Form[Default]  2. Form1  3.  Form2 */

public function editAction() {
$id     = $this->getRequest()->getParam('id');
$model  = Mage::getModel('beautygirl/beautygirl')->load($id);

if ($model->getId() || $id == 0) {
$data = Mage::getSingleton('adminhtml/session')->getFormData(true);
if (!empty($data)) {
$model->setData($data);
}

$data1 = Mage::getSingleton('adminhtml/session')->getForm1Data(true);
if (!empty($data1)) {
$model->setData($data1);
}

$data2 = Mage::getSingleton('adminhtml/session')->getForm2Data(true);
if (!empty($data2)) {
$model->setData($data2);
}
        }


In SaveAction

/* Here I Use Example for create 2 extra tabs Mean I have Tabs Like this */
/* 1. Form[Default]  2. Form1  3.  Form2 */
/* In Save Action, We Save Data of Forms Which are created By us */


public function saveAction() {
if ($data = $this->getRequest()->getPost()) {

if(isset($_FILES['filename']['name']) && ($_FILES['filename']['name'] != '')  &&
     (isset($_FILES['filename1']['name']) && ($_FILES['filename1']['name'] != '')) &&
     (isset($_FILES['filename2']['name']) && ($_FILES['filename2']['name'] != ''))) {


try {
/* Starting upload */ 
/* This is Upload Image of Forms FileUpload Field */

$uploader = new Varien_File_Uploader('filename');
$uploader1 = new Varien_File_Uploader('filename1');
$uploader2 = new Varien_File_Uploader('filename2');


              // Any extention would work
          $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
          $uploader->setAllowRenameFiles(false);
          // Any extention would work
          $uploader1->setAllowedExtensions(array('jpg','jpeg','gif','png'));
$uploader1->setAllowRenameFiles(false);
// Any extention would work
          $uploader2->setAllowedExtensions(array('jpg','jpeg','gif','png'));
          $uploader2->setAllowRenameFiles(false);



             // Set the file upload mode
          // false -> get the file directly in the specified folder
          // true -> get the file in the product like folders
          // (file.jpg will go in something like /media/f/i/file.jpg)
          $uploader->setFilesDispersion(false);
          $uploader1->setFilesDispersion(false);
          $uploader2->setFilesDispersion(false);



              // We set media as the upload dir
$path = Mage::getBaseDir('skin') . DS.('frontend').DS.('default').DS.('beautydem').DS.('images').DS.('Beautygirl').DS ;
$uploader->save($path, $_FILES['filename']['name'] );
          // We set media as the upload dir
          $path1 = Mage::getBaseDir('skin') . DS.('frontend').DS.('default').DS.('beautydem').DS.('images').DS.('Beautygirl').DS ;
$uploader1->save($path1, $_FILES['filename1']['name']);
          $path2 = Mage::getBaseDir('skin') . DS.('frontend').DS.('default').DS.('beautydem').DS.('images').DS.('Beautygirl').DS ;
          $uploader2->save($path2, $_FILES['filename2']['name']);





}
    catch (Exception $e)
   {
   
  }
     
          //this way the name is saved in DB
  $data['filename'] = $_FILES['filename']['name'];
$data['filename1'] = $_FILES['filename1']['name'];
$data['filename2'] = $_FILES['filename2']['name'];
   }

            /* If you use multiselection then for insert value as comm seperated in database use below lines */

           $data['girloneproductid']=implode(',',$data['girloneproductid']);
         $data['girltwoproductid']=implode(',',$data['girltwoproductid']);
$data['girlthreeproductid']=implode(',',$data['girlthreeproductid'])



$model = Mage::getModel('beautygirl/beautygirl');
         $model->setData($data)
        ->setId($this->getRequest()->getParam('id'));

try
  {
if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL)
          {
              $model->setCreatedTime(now())
            ->setUpdateTime(now());
        }
          else
          {
$model->setUpdateTime(now());
}

$model->save();
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('beautygirl')->__('Item was successfully saved'));
Mage::getSingleton('adminhtml/session')->setFormData(false);
       Mage::getSingleton('adminhtml/session')->setForm1Data(false);
Mage::getSingleton('adminhtml/session')->setForm2Data(false);


         $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
         return;
        }
        }
        Mage::getSingleton('adminhtml/session')->addError(Mage::helper('beautygirl')->__('Unable to find item to save'));
        $this->_redirect('*/*/');
}

Saturday, 1 September 2012

Magento : Get Category name,Product ID and SKU in Multi-selection field in admin for custom module which created using module creator

For this you can change on this file path

local/yourmodule/block/adminhtml/yourmodulename/edit/tab/form.phtml

you use below functions,

<?php

class Addon_Testing_Block_Adminhtml_Testing_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
{
    // This for get category detail

    public function buildCategoriesMultiselectValues(Varien_Data_Tree_Node $node, $values, $level = 0)
    {
        $level++;
        //-----new start for only 3 level category
        if($level>3)
        {
        return $values;    
        }
        //-----new close
        $values[$node->getId()]['value'] =  $node->getId();
        $values[$node->getId()]['label'] = str_repeat("---", $level) . $node->getName();
       
        foreach ($node->getChildren() as $child)
        {
            $values = $this->buildCategoriesMultiselectValues($child, $values, $level);
           print_r($values); 
        }
       
        return $values;
    }
   
    public function load_tree()
    {
        $tree = Mage::getResourceSingleton('catalog/category_tree')->load();
   
        $store = 1;
        $parentId = 1;
   
        $tree = Mage::getResourceSingleton('catalog/category_tree')->load();
   
        $root = $tree->getNodeById($parentId);
       
        if($root && $root->getId() == 1)
        {
            $root->setName(Mage::helper('catalog')->__('Root'));
        }
       
        $collection = Mage::getModel('catalog/category')->getCollection()
            ->setStoreId($store)
            ->addAttributeToSelect('name')
            ->addAttributeToSelect('is_active');
       
        $tree->addCollectionData($collection, true);

        return $this->buildCategoriesMultiselectValues($root, array());   
    }
   
  //This is for product id
    function getProductCollection()
    {
       $model = Mage::getModel('catalog/product'); //getting product model
        $collection = $model->getCollection(); //products collection
       
       
                 $count = 0;
       
                foreach ($collection as $product) //loop for getting products
                {
                    $a = $count++;
                    $values[$a]['value'] = $a;
                    $values[$a]['label'] = $product->getId();
                 }                                          
                return $values;               
    }
   
     // This is for Product Sku
    function getProductCollectionskus()
    {
       $model = Mage::getModel('catalog/product'); //getting product model
        $collection = $model->getCollection(); //products collection
           
                $count = 0;
       
                foreach ($collection as $product) //loop for getting products
                {
                    $a = $count++;
                    $values[$a]['value'] = $a;
                    $values[$a]['label'] = $product->getSku();
                }                                             
                return $values;               
    }
  protected function _prepareForm()
  {
      $form = new Varien_Data_Form();
      $this->setForm($form);
      $fieldset = $form->addFieldset('testing_form', array('legend'=>Mage::helper('testing')->__('Item information')));
    
      $fieldset->addField('title', 'text', array(
          'label'     => Mage::helper('testing')->__('Title'),
          'class'     => 'required-entry',
          'required'  => true,
          'name'      => 'title',
      ));
     
       $fieldset->addField('girl', 'text', array(
          'label'     => Mage::helper('testing')->__('Girl'),
          'class'     => 'required-entry',
          'required'  => true,
          'name'      => 'girl',
      ));


      $fieldset->addField('filename', 'file', array(
          'label'     => Mage::helper('testing')->__('File'),
          'required'  => false,
          'name'      => 'filename',
      ));
   
     // Here, call above Functions
      $pids = $this->getProductCollection();
      $skus = $this->getProductCollectionskus();
      $categories_values = $this->load_tree();
      //echo "<pre>";
      //print_r($pids);
      //echo "</pre>";     
      //$categories_values = $this->load_tree();
        //echo '<pre>';            
        //print_r($skus);
        //echo "</pre>";
     
    $fieldset->addField('productid', 'multiselect', array(
                'name' => 'productid',
                'label' => Mage::helper('testing')->__('Select Product ID'),                  
                'required' => true ,               
                'values' => $pids,
               
                ));       
               
    $fieldset->addField('productsku', 'multiselect', array(
                'name' => 'productsku',
                'label' => Mage::helper('testing')->__('Select Product Sku'),                  
                'required' => true ,               
                'values' => $skus,               
                ));   
               
    $fieldset->addField('productsku', 'multiselect', array(
                'name' => 'productsku',
                'label' => Mage::helper('testing')->__('Select Category'),                  
                'required' => true ,               
                'values' => $categories_values,               
                ));              
               
     
     
       $fieldset->addField('content', 'editor', array(
          'name'      => 'content',
          'label'     => Mage::helper('testing')->__('Content'),
          'title'     => Mage::helper('testing')->__('Content'),
          'style'     => 'width:700px; height:500px;',
          'wysiwyg'   => false,
          'required'  => true,       
      ));
       
      $fieldset->addField('status', 'select', array(
          'label'     => Mage::helper('testing')->__('Status'),
          'name'      => 'status',
          'values'    => array(
              array(
                  'value'     => 1,
                  'label'     => Mage::helper('testing')->__('Enabled'),
              ),

              array(
                  'value'     => 2,
                  'label'     => Mage::helper('testing')->__('Disabled'),
              ),
          ),
      ));         
    
      if ( Mage::getSingleton('adminhtml/session')->getTestingData() )
      {
          $form->setValues(Mage::getSingleton('adminhtml/session')->getTestingData());
          Mage::getSingleton('adminhtml/session')->setTestingData(null);
      } elseif ( Mage::registry('testing_data') ) {
          $form->setValues(Mage::registry('testing_data')->getData());
      }
      return parent::_prepareForm();
  }
}

Thursday, 23 August 2012

Magento : Get order detail on checkout success page


You can get Order Detail using this,

File Location = frontend/base/default/template/checkout/success.phtml

<?php

echo $order = Mage::getModel('sales/order')->load(Mage::getSingleton('checkout/session')->getLastOrderId());
$items = $order->getAllItems();
foreach ($items as $item){
$product = $item->getProduct();
$proids = $item->getProductId();
$name = $item->getName();
$storeId = 1;
echo "<br/>";
}
?>

Reference

http://developerafroz.blogspot.in/2012_01_01_archive.html

http://store.redstage.com/blog/2012/05/31/magento-1-5-fedex-shipping

http://smashingspy.com/32-best-jquery-popup-window-dialog-box-example/

http://xhtmlandcsshelp.blogspot.in/2010_10_01_archive.html

http://spenserbaldwin.com/magento/show-product-review-on-product-page

http://www.desv.us/how-to-use-select-update-delete-and-insert-queries-in-magento.html

http://www.desv.us/category/magento-tutorials/page/3

http://www.imagedia.com/2010/02/how-to-change-order-status-in-magento/

skype = boy-named-sue

//For the Admin Part

http://www.excellencemagentoblog.com/magento-admin-form-field

http://magentools.com/blog/magento-certification-preparation-study-guide-answers/ // Magento Exam


http://tim-bezhashvyly.github.io/media/four-ways-to-customize-a-cart-item.pdf  

Tuesday, 21 August 2012

Magento : Enable / Disable magento admin debug mode

Just run this query:


==> INSERT INTO core_config_data (scope, scope_id, path, value)
VALUES ('default', 0, 'dev/debug/template_hints', 1),
('default', 0, 'dev/debug/template_hints_blocks', 1);


To disable them again, run this query

==> UPDATE core_config_data set value = 0 where scope = 'default' and scope_id = 0 and path ='dev/debug/template_hints'\


To enable again run this query

==> UPDATE core_config_data set value = 1 where scope = 'default' and scope_id = 0 and path ='dev/debug/template_hints'

Thursday, 16 August 2012

Magento : After logout redirect on home directly

Put This on Customer/logout.phtml

In script

comment setTimeout(function(){ location.href = '<?php //echo $this->getUrl()?>'}5000);

replace with this

setTimeout(function(){ location.href = '<?php //echo $this->getUrl()

    $customerLoginURL = Mage::getBaseUrl();

    Mage::app()->getFrontController()->getResponse()->setRedirect

    ($customerLoginURL)->sendResponse();

     ?>'},5000);