Index: branches/5.2.x/core/units/filters/item_filter_tp.php =================================================================== diff -u -N -r14892 -r14893 --- branches/5.2.x/core/units/filters/item_filter_tp.php (.../item_filter_tp.php) (revision 14892) +++ branches/5.2.x/core/units/filters/item_filter_tp.php (.../item_filter_tp.php) (revision 14893) @@ -90,7 +90,9 @@ $range_start = $range_values['MinValue']; $range_count = $object->GetDBField('RangeCount'); - $range_size = ceil( ($range_values['MaxValue'] - $range_values['MinValue']) / ($range_count /*+ 1*/) ); + $range_size = ceil( ($range_values['MaxValue'] - $range_values['MinValue']) / $range_count ); + $range_values['MaxValue'] = $range_start + $range_size * $range_count; // to compensate diff, created by "ceil" function usage + $formatter_class = $item_list->GetFieldOption($filter_field, 'formatter'); $options = Array (); @@ -173,8 +175,19 @@ $this->Application->SetVar('min_range_value', $range_values['MinValue']); $this->Application->SetVar('max_range_value', $range_values['MaxValue']); - $range_size = ceil( ($range_values['MaxValue'] - $range_values['MinValue']) / ($range_count + 1) ); + $range_size = ceil( ($range_values['MaxValue'] - $range_values['MinValue']) / $range_count ); $this->Application->SetVar('range_step', $range_size); + + if ( $selected_value ) { + list ($from_selected_value, $to_selected_value) = explode('-', $selected_value); + + $this->Application->SetVar('selected_from_range', $from_selected_value); + $this->Application->SetVar('selected_to_range', $to_selected_value); + } + else { + $this->Application->SetVar('selected_from_range', $range_values['MinValue']); + $this->Application->SetVar('selected_to_range', $range_values['MaxValue']); + } } return $ret; Index: branches/5.2.x/core/kernel/db/db_event_handler.php =================================================================== diff -u -N -r14892 -r14893 --- branches/5.2.x/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 14892) +++ branches/5.2.x/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 14893) @@ -1,6 +1,6 @@ Conn->qstrArray(explode('-', $filter_value)); + $filter_value = $table_name . '`' . $filter_field . '` BETWEEN ' . $filter_value[0] . ' AND ' . $filter_value[1]; + break; } - $object->addFilter('item_filter_' . $filter_field, $filter_value); + $object->addFilter('item_filter_' . $filter_field, $filter_value, $object->isVirtualField($filter_field) ? kDBList::HAVING_FILTER : kDBList::WHERE_FILTER); } }