00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 class Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Date extends Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Abstract
00036 {
00037 protected $_locale;
00038
00039 protected function _prepareLayout()
00040 {
00041 if ($head = $this->getLayout()->getBlock('head')) {
00042 $head->setCanLoadCalendarJs(true);
00043 }
00044 return $this;
00045 }
00046
00047 public function getHtml()
00048 {
00049 $htmlId = $this->_getHtmlId() . microtime(true);
00050 $format = $this->getLocale()->getDateStrFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT);
00051 $html = '<div class="range"><div class="range-line date">
00052 <span class="label">' . Mage::helper('adminhtml')->__('From').':</span>
00053 <input type="text" name="'.$this->_getHtmlName().'[from]" id="'.$htmlId.'_from" value="'.$this->getEscapedValue('from').'" class="input-text no-changes"/>
00054 <img src="' . Mage::getDesign()->getSkinUrl('images/grid-cal.gif') . '" alt="" class="v-middle" id="'.$htmlId.'_from_trig" title="'.$this->htmlEscape(Mage::helper('adminhtml')->__('Date selector')).'"/>
00055 </div>';
00056 $html.= '<div class="range-line date">
00057 <span class="label">' . Mage::helper('adminhtml')->__('To').' :</span>
00058 <input type="text" name="'.$this->_getHtmlName().'[to]" id="'.$htmlId.'_to" value="'.$this->getEscapedValue('to').'" class="input-text no-changes"/>
00059 <img src="' . Mage::getDesign()->getSkinUrl('images/grid-cal.gif') . '" alt="" class="v-middle" id="'.$htmlId.'_to_trig" title="'.$this->htmlEscape(Mage::helper('adminhtml')->__('Date selector')).'"/>
00060 </div></div>';
00061 $html.= '<input type="hidden" name="'.$this->_getHtmlName().'[locale]" value="'.$this->getLocale()->getLocaleCode().'"/>';
00062 $html.= '<script type="text/javascript">
00063 Calendar.setup({
00064 inputField : "'.$htmlId.'_from",
00065 ifFormat : "'.$format.'",
00066 button : "'.$htmlId.'_from_trig",
00067 align : "Bl",
00068 singleClick : true
00069 });
00070 Calendar.setup({
00071 inputField : "'.$htmlId.'_to",
00072 ifFormat : "'.$format.'",
00073 button : "'.$htmlId.'_to_trig",
00074 align : "Bl",
00075 singleClick : true
00076 });
00077 </script>';
00078 return $html;
00079 }
00080 public function getEscapedValue($index=null)
00081 {
00082 $value = $this->getValue($index);
00083 if ($value instanceof Zend_Date) {
00084 return $value->toString($this->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT));
00085 }
00086 return $value;
00087 }
00088
00089 public function getValue($index=null)
00090 {
00091 if ($index) {
00092 if ($data = $this->getData('value', 'orig_' . $index)) {
00093 return $data;
00094 }
00095 return null;
00096 }
00097 $value = $this->getData('value');
00098 if (is_array($value)) {
00099 $value['date'] = true;
00100 }
00101 return $value;
00102 }
00103
00104 public function getCondition()
00105 {
00106 $value = $this->getValue();
00107
00108 return $value;
00109 }
00110
00111 public function setValue($value)
00112 {
00113 if (isset($value['locale'])) {
00114 if (!empty($value['from'])) {
00115 $value['orig_from'] = $value['from'];
00116 $value['from'] = $this->_convertDate($value['from'], $value['locale']);
00117 }
00118 if (!empty($value['to'])) {
00119 $value['orig_to'] = $value['to'];
00120 $value['to'] = $this->_convertDate($value['to'], $value['locale']);
00121 }
00122 }
00123 if (empty($value['from']) && empty($value['to'])) {
00124 $value = null;
00125 }
00126 $this->setData('value', $value);
00127 return $this;
00128 }
00129
00130
00131
00132
00133
00134
00135 public function getLocale()
00136 {
00137 if (!$this->_locale) {
00138 $this->_locale = Mage::app()->getLocale();
00139 }
00140 return $this->_locale;
00141 }
00142
00143
00144
00145
00146
00147
00148
00149
00150 protected function _convertDate($date, $locale)
00151 {
00152 try {
00153 $dateObj = $this->getLocale()->date(null, null, $locale, false);
00154
00155
00156 $dateObj->setTimezone(Mage::app()->getStore()->getConfig(Mage_Core_Model_Locale::XML_PATH_DEFAULT_TIMEZONE));
00157
00158
00159 $dateObj->setHour(00);
00160 $dateObj->setMinute(00);
00161 $dateObj->setSecond(00);
00162
00163
00164 $dateObj->set($date, Zend_Date::DATE_SHORT, $locale);
00165
00166
00167 $dateObj->setTimezone(Mage_Core_Model_Locale::DEFAULT_TIMEZONE);
00168
00169 return $dateObj;
00170 }
00171 catch (Exception $e) {
00172 return null;
00173 }
00174 }
00175 }