/app/code/core/Mage/Backend/Block/Widget/Grid/Column/Filter/Date.php
https://bitbucket.org/sunil_nextbits/magento2 · PHP · 179 lines · 116 code · 15 blank · 48 comment · 11 complexity · b83df8be504191bdeada8e888a44e8bc MD5 · raw file
- <?php
- /**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @category Mage
- * @package Mage_Backend
- * @copyright Copyright (c) 2012 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
- */
- /**
- * Date grid column filter
- *
- * @category Mage
- * @package Mage_Backend
- * @author Magento Core Team <core@magentocommerce.com>
- * @todo date format
- */
- class Mage_Backend_Block_Widget_Grid_Column_Filter_Date extends Mage_Backend_Block_Widget_Grid_Column_Filter_Abstract
- {
- protected $_locale;
- protected function _prepareLayout()
- {
- if ($head = $this->getLayout()->getBlock('head')) {
- $head->setCanLoadCalendarJs(true);
- }
- return $this;
- }
- public function getHtml()
- {
- $htmlId = Mage::helper('Mage_Core_Helper_Data')->uniqHash($this->_getHtmlId());
- $format = $this->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT);
- $html = '<div class="range" id="' . $htmlId . '_range"><div class="range-line date">'
- . '<span class="label">' . $this->__('From') . ':</span>'
- . '<input type="text" name="' . $this->_getHtmlName() . '[from]" id="' . $htmlId . '_from"'
- . ' value="' . $this->getEscapedValue('from') . '" class="input-text no-changes" '
- . $this->getUiId('filter', $this->_getHtmlName(), 'from') . '/>'
- . '</div>';
- $html.= '<div class="range-line date">'
- . '<span class="label">' . $this->__('To') . ' :</span>'
- . '<input type="text" name="' . $this->_getHtmlName() . '[to]" id="' . $htmlId . '_to"'
- . ' value="' . $this->getEscapedValue('to') . '" class="input-text no-changes" '
- . $this->getUiId('filter', $this->_getHtmlName(), 'to') . '/>'
- . '</div></div>';
- $html .= '<input type="hidden" name="'.$this->_getHtmlName() . '[locale]"'
- . ' value="' . $this->getLocale()->getLocaleCode() . '"/>';
- $html .= '<script type="text/javascript">
- (function( $ ) {
- $("#' . $htmlId . '_range").dateRange({
- dateFormat: "' . $format . '",
- buttonImage: "' . $this->getViewFileUrl('images/grid-cal.gif') . '",
- buttonText: "' . $this->escapeHtml($this->__('Date selector')) . '",
- from: {
- id: "' . $htmlId . '_from"
- },
- to: {
- id: "' . $htmlId . '_to"
- }
- })
- })(jQuery)
- </script>';
- return $html;
- }
- public function getEscapedValue($index=null)
- {
- $value = $this->getValue($index);
- if ($value instanceof Zend_Date) {
- return $value->toString($this->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT));
- }
- return $value;
- }
- public function getValue($index=null)
- {
- if ($index) {
- if ($data = $this->getData('value', 'orig_' . $index)) {
- return $data;//date('Y-m-d', strtotime($data));
- }
- return null;
- }
- $value = $this->getData('value');
- if (is_array($value)) {
- $value['date'] = true;
- }
- return $value;
- }
- public function getCondition()
- {
- $value = $this->getValue();
- return $value;
- }
- public function setValue($value)
- {
- if (isset($value['locale'])) {
- if (!empty($value['from'])) {
- $value['orig_from'] = $value['from'];
- $value['from'] = $this->_convertDate($value['from'], $value['locale']);
- }
- if (!empty($value['to'])) {
- $value['orig_to'] = $value['to'];
- $value['to'] = $this->_convertDate($value['to'], $value['locale']);
- }
- }
- if (empty($value['from']) && empty($value['to'])) {
- $value = null;
- }
- $this->setData('value', $value);
- return $this;
- }
- /**
- * Retrieve locale
- *
- * @return Mage_Core_Model_Locale
- */
- public function getLocale()
- {
- if (!$this->_locale) {
- $this->_locale = Mage::app()->getLocale();
- }
- return $this->_locale;
- }
- /**
- * Convert given date to default (UTC) timezone
- *
- * @param string $date
- * @param string $locale
- * @return Zend_Date
- */
- protected function _convertDate($date, $locale)
- {
- try {
- $dateObj = $this->getLocale()->date(null, null, $locale, false);
- //set default timezone for store (admin)
- $dateObj->setTimezone(
- Mage::app()->getStore()->getConfig(Mage_Core_Model_Locale::XML_PATH_DEFAULT_TIMEZONE)
- );
- //set begining of day
- $dateObj->setHour(00);
- $dateObj->setMinute(00);
- $dateObj->setSecond(00);
- //set date with applying timezone of store
- $dateObj->set($date, Zend_Date::DATE_SHORT, $locale);
- //convert store date to default date in UTC timezone without DST
- $dateObj->setTimezone(Mage_Core_Model_Locale::DEFAULT_TIMEZONE);
- return $dateObj;
- } catch (Exception $e) {
- return null;
- }
- }
- }