1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_Wishlist
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27: /**
28: * Wishlist block customer items
29: *
30: * @category Mage
31: * @package Mage_Wishlist
32: * @author Magento Core Team <core@magentocommerce.com>
33: */
34: class Mage_Wishlist_Block_Customer_Wishlist_Item_Options extends Mage_Wishlist_Block_Abstract
35: {
36: /*
37: * List of product options rendering configurations by product type
38: *
39: * @var array
40: */
41: protected $_optionsCfg = array('default' => array(
42: 'helper' => 'catalog/product_configuration',
43: 'template' => 'wishlist/options_list.phtml'
44: ));
45:
46: /**
47: * Initialize block
48: */
49: public function __construct()
50: {
51: parent::__construct();
52: Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
53: }
54:
55: /*
56: * Adds config for rendering product type options
57: *
58: * @param string $productType
59: * @param string $helperName
60: * @param null|string $template
61: * @return Mage_Wishlist_Block_Customer_Wishlist_Item_Options
62: */
63: public function addOptionsRenderCfg($productType, $helperName, $template = null)
64: {
65: $this->_optionsCfg[$productType] = array('helper' => $helperName, 'template' => $template);
66: return $this;
67: }
68:
69: /**
70: * Get item options renderer config
71: *
72: * @param string $productType
73: * @return array|null
74: */
75: public function getOptionsRenderCfg($productType)
76: {
77: if (isset($this->_optionsCfg[$productType])) {
78: return $this->_optionsCfg[$productType];
79: } elseif (isset($this->_optionsCfg['default'])) {
80: return $this->_optionsCfg['default'];
81: } else {
82: return null;
83: }
84: }
85:
86: /**
87: * Render block html
88: *
89: * @return string
90: */
91: protected function _toHtml()
92: {
93: $cfg = $this->getOptionsRenderCfg($this->getItem()->getProduct()->getTypeId());
94: if (!$cfg) {
95: return '';
96: }
97:
98: $helper = Mage::helper($cfg['helper']);
99: if (!($helper instanceof Mage_Catalog_Helper_Product_Configuration_Interface)) {
100: Mage::throwException($this->__("Helper for wishlist options rendering doesn't implement required interface."));
101: }
102:
103: if ($cfg['template']) {
104: $template = $cfg['template'];
105: } else {
106: $cfgDefault = $this->getOptionsRenderCfg('default');
107: if (!$cfgDefault) {
108: return '';
109: }
110: $template = $cfgDefault['template'];
111: }
112:
113: $this->setTemplate($template)
114: ->setOptionList($helper->getOptions($this->getItem()));
115: return parent::_toHtml();
116: }
117: }
118: