Index: admin_templates/incs/grid_blocks.tpl =================================================================== --- admin_templates/incs/grid_blocks.tpl (revision 13909) +++ admin_templates/incs/grid_blocks.tpl (working copy) @@ -416,8 +416,22 @@ + + + + + + + +
+ + style="display: none;"> +
}); + + $(document).ready( + function () { + $('#' + jq('_date_preset')).change( + function ($e) { + var $option = $('option:selected', this); + + $('#' + jq('')).val( $option.attr('from_value') ); + $('#' + jq('')).val( $option.attr('to_value') ); + } + ); + } + ); Index: kernel/db/db_tag_processor.php =================================================================== --- kernel/db/db_tag_processor.php (revision 13890) +++ kernel/db/db_tag_processor.php (working copy) @@ -2134,6 +2134,67 @@ } /** + * Prints date range filter presets + * + * @param Array $params + * @return string + */ + function DateRangeFilterPresets($params) + { + // get date format, used in filter + if ($params['calendar_format']) { + $format = $params['calendar_format']; + } + else { + $format = $this->Format( Array ('field' => $params['sort_field'] . '_date', 'input_format' => 1) ); + } + + $presets = Array ( + 'today' => Array ( + 'title' => 'la_opt_Today', + 'from_value' => adodb_date($format), + 'to_value' => adodb_date($format) + ), + + 'yesterday' => Array ( + 'title' => 'la_opt_Yesterday', + 'from_value' => adodb_date($format, strtotime('-1 day')), + 'to_value' => adodb_date($format, strtotime('-1 day')) + ), + + 'last_week' => Array ( + 'title' => 'la_opt_LastWeek', + 'from_value' => adodb_date($format, strtotime('-6 days')), + 'to_value' => adodb_date($format, adodb_mktime()), + ), + + 'last_month' => Array ( + 'title' => 'la_opt_LastMonth', + 'from_value' => adodb_date($format, strtotime('-29 days')), + 'to_value' => adodb_date($format, adodb_mktime()), + ), + ); + + $ret = ''; + $block_params = $this->prepareTagParams($params); + $block_params['name'] = $params['render_as']; + + // get current filter values + $from_value = $this->SearchField( array_merge($params, Array ('type' => 'from')) ); + $to_value = $this->SearchField( array_merge($params, Array ('type' => 'to')) ); + + foreach ($presets as $preset_name => $preset_data) { + $block_params['preset'] = $preset_name; + $block_params = array_merge($block_params, $preset_data); + $block_params['selected'] = $preset_data['from_value'] == $from_value && $preset_data['to_value'] == $to_value; + + $ret .= $this->Application->ParseBlock($block_params); + } + + return $ret; + } + + /** * Tells, that at least one of search filters is used by now * * @param Array $params Index: units/admin/admin_events_handler.php =================================================================== --- units/admin/admin_events_handler.php (revision 13862) +++ units/admin/admin_events_handler.php (working copy) @@ -315,7 +315,7 @@ // numeric null field if (preg_match('/(On|Date)$/', $field_info['Field']) || $field_info['Field'] == 'Modified') { $field_options['formatter'] = 'kDateFormatter'; - $grid_col_options['filter_block'] = 'grid_date_rage_filter'; + $grid_col_options['filter_block'] = 'grid_date_range_filter'; } }