76c569007d006552cdd581ed2e0c70354d33d700

Author: k-kishida

Date: 2010-02-11 19:30:10 +0900

Some filter bug fixed.

diff --git a/app/controllers/components/queries.php b/app/controllers/components/queries.php index d180af3..d78a08a 100755 --- a/app/controllers/components/queries.php +++ b/app/controllers/components/queries.php @@ -26,37 +26,38 @@ class QueriesComponent extends Object } if (isset($self->params['query_id'])) { } else { - if ($self->_project) $this->query_filter_cond[] = array('Issue.project_id' => $self->_project['Project']['id']); + if ($self->_project) $this->query_filter_cond = array('Issue.project_id' => $self->_project['Project']['id']); if (isset($self->params['url']['set_filter'], $self->params['form']['fields']) || $forse_set_filter) { foreach ($self->params['form']['fields'] as $field) { $operator = $self->params['form']['operators'][$field]; - $value = isset($self->params['form']['values'][$field]) ? $self->params['form']['values'][$field] : null; + $values = isset($self->params['form']['values'][$field]) ? $self->params['form']['values'][$field] : null; if (isset($available_filters[$field])) { $show_filters[$field] = $available_filters[$field]; $self->data['Filter']['fields_' . $field] = $field; $self->data['Filter']['operators_' . $field] = $operator; - $self->data['Filter']['values_' . $field] = $value; + $self->data['Filter']['values_' . $field] = $values; } } } } foreach ($show_filters as $field => $options) { $operator = $self->data['Filter']['operators_' . $field]; - $value = $self->data['Filter']['values_' . $field]; + $values = $self->data['Filter']['values_' . $field]; switch ($field) { case 'author_id': case 'assigned_to_id': - if ($value == 'me') { - if ($self->current_user) { - $value = $self->current_user['id']; - } else { - continue; + foreach($values as $index=>$value) { + if ($value == 'me') { + if ($self->current_user) { + $values[$index] = $self->current_user['id']; + } } } break; } - if ($add_filter_cond = $Query->get_filter_cond('Issue', $field, $operator, $value)) { + if ($add_filter_cond = $Query->get_filter_cond('Issue', $field, $operator, $values)) { $query['Query']['filter_cond'][] = $add_filter_cond; + $this->query_filter_cond = am($this->query_filter_cond, $add_filter_cond); } } $self->set('available_filters', $available_filters); diff --git a/app/models/query.php b/app/models/query.php index e6e4884..a45d1e5 100644 --- a/app/models/query.php +++ b/app/models/query.php @@ -429,7 +429,7 @@ class Query extends AppModel # Time.now.at_beginning_of_week # sql = "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)] case '~': - $operator = 'like'; + $operator = ' like'; $values = '%' . str_replace('%', '%%', $values) . '%'; break; case '!~': diff --git a/app/views/elements/queries/filters.ctp b/app/views/elements/queries/filters.ctp index 73fb865..7a88692 100755 --- a/app/views/elements/queries/filters.ctp +++ b/app/views/elements/queries/filters.ctp @@ -79,7 +79,13 @@ function toggle_multi_select(field) { case 'list_status': case 'list_subprojects': ?> - <?php echo $form->select('Filter.values_' . $field, $filter['values'], '1', am(count($filter['values']) > 1 ? array('multiple' => 'true'): a(), array('name' => 'values[' . $field . ']', 'class' => 'select-small', 'style' => 'vertical-align: top;', 'id' => 'values_' . $field)), false) ?> + <?php + $default_values = "1"; + if(!empty($this->data['Filter']['values_' . $field])) { + $default_values = $this->data['Filter']['values_' . $field]; + } + echo $form->select('Filter.values_' . $field, $filter['values'], $default_values, am(count($filter['values']) > 1 ? array('multiple' => 'true'): a(), array('name' => 'values[' . $field . ']', 'class' => 'select-small', 'style' => 'vertical-align: top;', 'id' => 'values_' . $field)), false); + ?> <?php echo $html->link($html->image('bullet_toggle_plus.png'), '#', array('onclick' => "toggle_multi_select('" . $javascript->escapeString($field) . "')", 'style' => 'vertical-align: bottom'), null, false) ?> <?php break;