76c569007d006552cdd581ed2e0c70354d33d700
Author: k-kishida
Date: 2010-02-11 19:30:10 +0900
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;
