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; } }
/** * 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; } }
/** * 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'); }
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)); } }