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_Adminhtml
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: * Theme grid column filter
29: *
30: * @category Mage
31: * @package Mage_Adminhtml
32: * @author Magento Core Team <core@magentocommerce.com>
33: */
34: class Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Theme
35: extends Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Abstract
36: {
37: /**
38: * Retrieve filter HTML
39: *
40: * @return string
41: */
42: public function getHtml()
43: {
44: $options = $this->getOptions();
45: if ($this->getColumn()->getWithEmpty()) {
46: array_unshift($options, array(
47: 'value' => '',
48: 'label' => ''
49: ));
50: }
51: $html = sprintf('<select name="%s" id="%s" class="no-changes">', $this->_getHtmlName(), $this->_getHtmlId())
52: . $this->_drawOptions($options)
53: . '</select>';
54: return $html;
55: }
56:
57: /**
58: * Retrieve options setted in column.
59: * Or load if options was not set.
60: *
61: * @return array
62: */
63: public function getOptions()
64: {
65: $options = $this->getColumn()->getOptions();
66: if (empty($options) || !is_array($options)) {
67: $options = Mage::getModel('core/design_source_design')
68: ->setIsFullLabel(true)->getAllOptions(false);
69: }
70: return $options;
71: }
72:
73: /**
74: * Render SELECT options
75: *
76: * @param array $options
77: * @return string
78: */
79: protected function _drawOptions($options)
80: {
81: if (empty($options) || !is_array($options)) {
82: return '';
83: }
84:
85: $value = $this->getValue();
86: $html = '';
87:
88: foreach ($options as $option) {
89: if (!isset($option['value']) || !isset($option['label'])) {
90: continue;
91: }
92: if (is_array($option['value'])) {
93: $html .= '<optgroup label="'.$option['label'].'">'
94: . $this->_drawOptions($option['value'])
95: . '</optgroup>';
96: } else {
97: $selected = (($option['value'] == $value && (!is_null($value))) ? ' selected="selected"' : '');
98: $html .= '<option value="'.$option['value'].'"'.$selected.'>'.$option['label'].'</option>';
99: }
100: }
101:
102: return $html;
103: }
104:
105: /**
106: * Retrieve filter condition for collection
107: *
108: * @return mixed
109: */
110: public function getCondition()
111: {
112: if (is_null($this->getValue())) {
113: return null;
114: }
115: $value = $this->getValue();
116: if ($value == 'all') {
117: $value = '';
118: }
119: return array('eq' => $value);
120: }
121: }
122: