public function configureAction()
 {
     $id = (int) $this->getRequest()->getParam('id');
     $quoteItem = null;
     $cart = $this->_getCart();
     if ($id) {
         $quoteItem = $cart->getQuote()->getItemById($id);
     }
     if (!$quoteItem) {
         $this->_getSession()->addError($this->__('Quote item is not found.'));
         $this->_redirect('checkout/cart');
         return;
     }
     try {
         $params = new Varien_Object();
         $params->setCategoryId(false);
         $params->setConfigureMode(true);
         $params->setBuyRequest($quoteItem->getBuyRequest());
         $id = $quoteItem->getProduct()->getId();
         $parentIds = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($id);
         if (is_array($parentIds) && count($parentIds)) {
             $id = current($parentIds);
         }
         Mage::helper('catalog/product_view')->prepareAndRender($id, $this, $params);
     } catch (Exception $e) {
         $this->_getSession()->addError($this->__('Cannot configure product.'));
         Mage::logException($e);
         $this->_goBack();
         return;
     }
 }
 /**
  * Action to reconfigure cart item
  * Modified to allow configuration of simple items assigned to configurables.
  */
 public function configureAction()
 {
     // Extract item and product to configure
     $id = (int) $this->getRequest()->getParam('id');
     $quoteItem = null;
     $cart = $this->_getCart();
     if ($id) {
         $quoteItem = $cart->getQuote()->getItemById($id);
     }
     $productId = $quoteItem->getProduct()->getId();
     //Check to see if this is a simple assigned to a configurable.
     if ($quoteItem->getOptionByCode('cpid')) {
         $cpid = $quoteItem->getOptionByCode('cpid')->getValue();
         $productId = (int) $cpid;
     }
     if (!$quoteItem) {
         $this->_getSession()->addError($this->__('Quote item is not found.'));
         $this->_redirect('checkout/cart');
         return;
     }
     try {
         $params = new Varien_Object();
         $params->setCategoryId(false);
         $params->setConfigureMode(true);
         $params->setBuyRequest($quoteItem->getBuyRequest());
         Mage::helper('catalog/product_view')->prepareAndRender($productId, $this, $params);
     } catch (Exception $e) {
         $this->_getSession()->addError($this->__('Cannot configure product: ' . $quoteItem->getProduct()->getId()));
         Mage::logException($e);
         $this->_goBack();
         return;
     }
 }
Example #3
0
 /**
  * Action to reconfigure cart item
  */
 public function configureAction()
 {
     // Extract item and product to configure
     $id = (int) $this->getRequest()->getParam('id');
     $quoteItem = null;
     $cart = $this->_getCart();
     if ($id) {
         $quoteItem = $cart->getQuote()->getItemById($id);
     }
     if (!$quoteItem) {
         $this->_getSession()->addError($this->__('Quote item is not found.'));
         $this->_redirect('checkout/cart');
         return;
     }
     try {
         $params = new Varien_Object();
         $params->setCategoryId(false);
         $params->setConfigureMode(true);
         $params->setBuyRequest($quoteItem->getBuyRequest());
         Mage::helper('Mage_Catalog_Helper_Product_View')->prepareAndRender($quoteItem->getProduct()->getId(), $this, $params);
     } catch (Exception $e) {
         $this->_getSession()->addError($this->__('Cannot configure product.'));
         Mage::logException($e);
         $this->_goBack();
         return;
     }
 }
Example #4
0
 /**
  * Action to reconfigure wishlist item
  */
 public function configureAction()
 {
     $id = (int) $this->getRequest()->getParam('id');
     try {
         /* @var $item Mage_Wishlist_Model_Item */
         $item = Mage::getModel('wishlist/item');
         $item->loadWithOptions($id);
         if (!$item->getId()) {
             Mage::throwException($this->__('Cannot load wishlist item'));
         }
         $wishlist = $this->_getWishlist($item->getWishlistId());
         if (!$wishlist) {
             return $this->norouteAction();
         }
         Mage::register('wishlist_item', $item);
         $params = new Varien_Object();
         $params->setCategoryId(false);
         $params->setConfigureMode(true);
         $buyRequest = $item->getBuyRequest();
         if (!$buyRequest->getQty() && $item->getQty()) {
             $buyRequest->setQty($item->getQty());
         }
         if ($buyRequest->getQty() && !$item->getQty()) {
             $item->setQty($buyRequest->getQty());
             Mage::helper('wishlist')->calculate();
         }
         $params->setBuyRequest($buyRequest);
         Mage::helper('catalog/product_view')->prepareAndRender($item->getProductId(), $this, $params);
     } catch (Mage_Core_Exception $e) {
         Mage::getSingleton('customer/session')->addError($e->getMessage());
         $this->_redirect('*');
         return;
     } catch (Exception $e) {
         Mage::getSingleton('customer/session')->addError($this->__('Cannot configure product'));
         Mage::logException($e);
         $this->_redirect('*');
         return;
     }
 }
 /**
  * Action to reconfigure cart item
  */
 public function configureAction()
 {
     // Extract item and product to configure
     $id = (int) $this->getRequest()->getParam('id');
     $quoteItem = null;
     try {
         $cart = $this->_getCart();
         $quoteItem = $cart->getQuote()->getItemById($id);
         if (!$quoteItem) {
             $this->_message($this->__('Quote item is not found.'), self::MESSAGE_STATUS_ERROR);
             return;
         }
         $params = new Varien_Object();
         $params->setCategoryId(false);
         $params->setConfigureMode(true);
         $params->setBuyRequest($quoteItem->getBuyRequest());
         $productHelper = Mage::helper('catalog/product');
         $buyRequest = $params->getBuyRequest();
         /** @var $product Mage_Catalog_Model_Product */
         $product = $productHelper->initProduct($quoteItem->getProduct()->getId(), $this, $params);
         if ($buyRequest) {
             $productHelper->prepareProductOptions($product, $buyRequest);
         }
         if ($params->hasConfigureMode()) {
             $product->setConfigureMode($params->getConfigureMode());
         }
         $this->loadLayout(false);
         $this->getLayout()->getBlock('xmlconnect.catalog.product')->setProduct($product);
         $this->renderLayout();
     } catch (Exception $e) {
         $this->_message($this->__('Cannot configure product.'), self::MESSAGE_STATUS_ERROR);
         Mage::logException($e);
         return;
     }
 }
 /**
  * Configure failed item options
  *
  * @return void
  */
 public function configureFailedAction()
 {
     $id = (int) $this->getRequest()->getParam('id');
     $qty = $this->getRequest()->getParam('qty', 1);
     try {
         $params = new Varien_Object();
         $params->setCategoryId(false);
         $params->setConfigureMode(true);
         $buyRequest = new Varien_Object(array('product' => $id, 'qty' => $qty));
         $params->setBuyRequest($buyRequest);
         Mage::helper('catalog/product_view')->prepareAndRender($id, $this, $params);
     } catch (Mage_Core_Exception $e) {
         $this->_getCustomerSession()->addError($e->getMessage());
         $this->_redirect('*');
         return;
     } catch (Exception $e) {
         $this->_getCustomerSession()->addError($this->__('Cannot configure product'));
         Mage::logException($e);
         $this->_redirect('*');
         return;
     }
 }
 public function editAction()
 {
     $id = (int) $this->getRequest()->getParam('id');
     $quoteItem = null;
     $cart = $this->_getCart();
     if ('POST' != $this->getRequest()->getMethod()) {
         if ($id) {
             $quoteItem = $cart->getQuote()->getItemById($id);
         }
         if (!$quoteItem) {
             $this->_getSession()->addError(Mage::helper('checkout')->__('Quote item is not found.'));
             $this->_goBack();
             return;
         }
         try {
             $params = new Varien_Object();
             $params->setCategoryId(false);
             $params->setConfigureMode(true);
             $params->setBuyRequest($quoteItem->getBuyRequest());
             Mage::helper('icart/catalog_product_view')->prepareAndRender($quoteItem->getProduct()->getId(), $this, $params);
         } catch (Exception $e) {
             $this->_getSession()->addError(Mage::helper('checkout')->__('Cannot configure product.'));
             Mage::logException($e);
             $this->_goBack();
             return;
         }
         return;
     }
     $params = $this->getRequest()->getParams();
     if (!isset($params['options'])) {
         $params['options'] = array();
     }
     try {
         if (isset($params['qty'])) {
             $filter = new Zend_Filter_LocalizedToNormalized(array('locale' => Mage::app()->getLocale()->getLocaleCode()));
             $params['qty'] = $filter->filter($params['qty']);
         }
         $quoteItem = $cart->getQuote()->getItemById($id);
         if (!$quoteItem) {
             Mage::throwException(Mage::helper('checkout')->__('Quote item is not found.'));
         }
         if (isset($params['qty']) && $params['qty'] == 0) {
             $isRemoveItemFlag = true;
             $cart->removeItem($id);
         } else {
             $isRemoveItemFlag = false;
             $item = $cart->updateItem($id, new Varien_Object($params));
             if (is_string($item)) {
                 Mage::throwException($item);
             }
             if ($item->getHasError()) {
                 Mage::throwException($item->getMessage());
             }
             $related = $this->getRequest()->getParam('related_product');
             if (!empty($related)) {
                 $cart->addProductsByIds(explode(',', $related));
             }
         }
         $cart->save();
         $this->_getSession()->setCartWasUpdated(true);
         Mage::dispatchEvent('checkout_cart_update_item_complete', array('item' => $item, 'request' => $this->getRequest(), 'response' => $this->getResponse()));
         if (!$this->_getSession()->getNoCartRedirect(true)) {
             if (!$cart->getQuote()->getHasError()) {
                 if ($isRemoveItemFlag) {
                     $message = Mage::helper('icart')->__('%s was deleted form your shopping cart.', Mage::helper('core')->htmlEscape($quoteItem->getName()));
                 } else {
                     $message = Mage::helper('checkout')->__('%s was updated in your shopping cart.', Mage::helper('core')->htmlEscape($item->getProduct()->getName()));
                 }
                 $this->_getSession()->addSuccess($message);
             }
             //$this->_goBack();
         }
     } catch (Mage_Core_Exception $e) {
         if ($this->_getSession()->getUseNotice(true)) {
             $this->_getSession()->addNotice($e->getMessage());
         } else {
             $messages = array_unique(explode("\n", $e->getMessage()));
             foreach ($messages as $message) {
                 $this->_getSession()->addError($message);
             }
         }
         $this->getRequest()->setParam('error', 1);
     } catch (Exception $e) {
         $this->_getSession()->addException($e, Mage::helper('checkout')->__('Cannot update the item.'));
         Mage::logException($e);
         $this->getRequest()->setParam('error', 1);
     }
     $this->_forward('added');
 }
Example #8
0
 public function checkoutCartConfigure($observer)
 {
     $action = $observer->getEvent()->getControllerAction();
     if ($action->getRequest()->getParam('iswebposcart') == 'true') {
         $id = (int) $action->getRequest()->getParam('id');
         $quoteItem = null;
         $cart = $this->_getCart();
         if ($id) {
             $quoteItem = $cart->getQuote()->getItemById($id);
         }
         $result = array();
         if (!$quoteItem) {
             $action->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
             return $action->getResponse()->setBody('');
         }
         $viewHelper = Mage::helper('catalog/product_view');
         $params = new Varien_Object();
         $params->setCategoryId(false);
         $params->setConfigureMode(true);
         $params->setBuyRequest($quoteItem->getBuyRequest());
         $productHelper = Mage::helper('catalog/product');
         $productId = $quoteItem->getProduct()->getId();
         try {
             $product = $productHelper->initProduct($productId, $action, $params);
             if (!$product) {
                 $this->_getSession()->addError($viewHelper->__('Product is not loaded'));
             } else {
                 if ($buyRequest = $params->getBuyRequest()) {
                     $productHelper->prepareProductOptions($product, $buyRequest);
                 }
                 $product->setConfigureMode(true);
                 Mage::dispatchEvent('catalog_controller_product_view', array('product' => $product));
                 $viewHelper->initProductLayout($product, $action);
                 $result['hasOptions'] = true;
                 /* Daniel - doesn't allow add out of stock product to cart */
                 if (!$product->isAvailable()) {
                     $result['outofstock'] = true;
                 }
                 /* end */
             }
         } catch (Exception $e) {
             $this->_getSession()->addError(Mage::helper('checkout')->__('Cannot configure product.'));
         }
         $action->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
         $params = $action->getRequest()->getParams();
         try {
             if (isset($params['groupmessage']) && $action->getLayout()->getMessagesBlock()) {
                 $action->getLayout()->getMessagesBlock()->addMessages($this->_getSession()->getMessages(true));
                 $action->getLayout()->getMessagesBlock()->setEscapeMessageFlag($this->_getSession()->getEscapeMessages(true));
                 $result['message'] = $action->getLayout()->getMessagesBlock()->getGroupedHtml();
             } else {
                 $this->_getSession()->getMessages(true);
                 $this->_getSession()->getEscapeMessages(true);
             }
             if (isset($result['hasOptions'])) {
                 if ($typeBlock = Mage::getStoreConfig("webpos/product/{$product->getTypeId()}")) {
                     $productBlock = $action->getLayout()->createBlock($typeBlock, 'ajaxcart_product_view');
                 } else {
                     $productBlock = $action->getLayout()->createBlock('webpos/product_view', 'ajaxcart_product_view');
                 }
                 $productBlock->setData('submit_route_data', array('route' => 'checkout/cart/updateItemOptions', 'params' => array('id' => $id)));
                 /* add all js
                 			$result['optionjs'] = $productBlock->getJsItems();
                 			*/
                 /* Daniel - updated - js from colorselectorplus */
                 $optionjss = array();
                 /* add js from other extensions - for example: 
                 			$optionjss[] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS).'cjm/colorselectorplus/colorselected.js';
                 			$optionjss[] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);.'js/colorselectorplus/colorselected.js';
                 			*/
                 $result['optionjs'] = $optionjss;
                 /* end */
                 $result['optionhtml'] = $productBlock->toHtml();
             }
         } catch (Exception $e) {
         }
         $action->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
     }
 }