[Rt-commit] rt branch, 3.999-trunk, updated. b1befea01c969a08b6cc8dee572d0ebe6d27e21f

jesse jesse at bestpractical.com
Sat Nov 7 00:15:25 EST 2009


The branch, 3.999-trunk has been updated
       via  b1befea01c969a08b6cc8dee572d0ebe6d27e21f (commit)
       via  d4d7d5530b3fce152a9bab37725b85dabbc4394f (commit)
       via  9983649af1cfb9b516d122a4bb453bd31f277e1a (commit)
       via  8d398ddac8b27c12e7cae11588ed2f0c2fc959b0 (commit)
       via  e7a3c2ed6a7e575e86ef8011a14f5ba4c1edf3c7 (commit)
       via  ef6f9eea610a6c8fc063d345865104b35540c5a0 (commit)
       via  d23386b2de2a02a150e2f7e664a4d9b931ee72e7 (commit)
       via  ecc49ef36d2e2f1a6fa726decae3670af8582f26 (commit)
       via  52e00bf2709798bd5eb63fac7adcb9970f5aa840 (commit)
       via  27cfe643ef3a6309ad0877dd928f9d59434b301e (commit)
       via  6afbe47e066099cfe87d2030a5ee7dff263a7465 (commit)
       via  25d69933c91b683cbc913812044c87f5c5c2312d (commit)
       via  b59581df5b8eab0ba7cfc207e0e6a8dbf998b50e (commit)
       via  12204037e3c29765fbbca46eeced23cdf27b8543 (commit)
       via  b0b6def3db958817ff6705ef75de887757b66701 (commit)
       via  297ef780c6f9f7de719ff69a0e02414e38b9d53d (commit)
       via  496e6da26fbfede00e693d54efd08f68ab1f2244 (commit)
      from  30d6694fb8f6608b9e6d04a45317211b34dee17a (commit)

Summary of changes:
 lib/RT/Interface/Web/QueryBuilder.pm    |  129 ++++++++++++++++++++----
 lib/RT/Report/Tickets.pm                |    2 +-
 share/html/Elements/SelectOwner         |    6 +-
 share/html/Prefs/Search.html            |    2 +-
 share/html/Search/Build.html            |  171 +++++++------------------------
 share/html/Search/Elements/EditQuery    |    6 +-
 share/html/Search/Elements/PickCFs      |    8 +-
 share/html/Search/Elements/PickCriteria |    4 +-
 share/html/Ticket/Graphs/index.html     |    5 +-
 9 files changed, 164 insertions(+), 169 deletions(-)

- Log -----------------------------------------------------------------
commit 496e6da26fbfede00e693d54efd08f68ab1f2244
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 14:20:40 2009 -0500

    Move some HTML generation out of Search/Build.html's init block

diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 473843f..370387d 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -92,7 +92,7 @@
 <& Elements/EditQuery,
     %ARGS,
     actions => \@actions,
-    optionlist => $optionlist,
+    parsed_query => $parsed_query,
 	description => $saved_search->{'description'},
     &>
 </div>
@@ -126,7 +126,7 @@ if ($new_query) {
     # Wipe all data-carrying variables clear if we want a new
     # search, or we're deleting an old one..
     %query = ();
-	$saved_search = { id => 'new'};
+    $saved_search = { id => 'new' };
 
     # ..then wipe the sessionand the search results.
     Jifty->web->session->remove('CurrentSearchHash');
@@ -212,15 +212,8 @@ foreach my $arg ( keys %ARGS ) {
 push @actions, RT::Interface::Web::QueryBuilder->process_query( \%ARGS, $tree, \@current_values, \@new_values, );
 
 #  Rebuild $Query based on the additions / movements
-
-my $optionlist_arrayref;
-( $query{'query'}, $optionlist_arrayref ) = $tree->get_query_and_option_list( \@current_values );
-
-my $optionlist = join "\n", map {
-          qq(<option value="$_->{INDEX}" $_->{SELECTED}>)
-        . ( "&nbsp;" x ( 5 * $_->{DEPTH} ) )
-        . Jifty->web->escape( $_->{TEXT})
-        . qq(</option>) } @$optionlist_arrayref;
+my $parsed_query;
+( $query{'query'}, $parsed_query ) = $tree->get_query_and_option_list( \@current_values );
 
 my $queues = $tree->get_referenced_queues;
 
diff --git a/share/html/Search/Elements/EditQuery b/share/html/Search/Elements/EditQuery
index 19f9cc8..b319815 100644
--- a/share/html/Search/Elements/EditQuery
+++ b/share/html/Search/Elements/EditQuery
@@ -49,7 +49,9 @@
 <&|/Widgets/TitleBox, title => join(': ', grep defined, _("Current search"), $description) &>
 
 <select size="10" name="clauses" style="width: 100%" multiple="multiple">
-% $m->out($optionlist);
+% for (@$parsed_query)  {
+% $m->out(	qq(<option value="$_->{INDEX}" $_->{SELECTED}>) . ( "&nbsp;" x ( 5 * $_->{DEPTH} ) ) . Jifty->web->escape( $_->{TEXT}) . qq(</option>\n)); 
+% }
 </select>
 
 <p align="center">
@@ -65,6 +67,6 @@
 </&>
 <%ARGS>
 $description => undef
-$optionlist => ''
+$parsed_query => ''
 $actions => []
 </%ARGS>

commit 297ef780c6f9f7de719ff69a0e02414e38b9d53d
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 14:40:29 2009 -0500

    cfqueues -> queues. the list of queues doesn't care that it's primarily used for custom field enumeration

diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index 92f84c3..d59cb09 100644
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -346,7 +346,7 @@ sub build_format_string {
     my $self = shift;
     my %args = (
         format                  => undef,
-        cfqueues                => undef,
+        queues                => undef,
         face                    => undef,
         size                    => undef,
         link                    => undef,
@@ -386,7 +386,7 @@ sub build_format_string {
         );    # loc_qw
 
     my $CustomFields = RT::Model::CustomFieldCollection->new();
-    foreach my $id ( keys %{$args{cfqueues}} ) {
+    foreach my $id ( keys %{$args{queues}} ) {
 
         # Gotta load up the $queue object, since queues get stored by name now. my $id
         my $queue = RT::Model::Queue->new();
@@ -394,7 +394,7 @@ sub build_format_string {
         unless ( $queue->id ) {
 
             # XXX TODO: This ancient code dates from a former developer
-            # we have no idea what it means or why cfqueues are so encoded.
+            # we have no idea what it means or why queues are so encoded.
             $id =~ s/^.'*(.*).'*$/$1/;
             $queue->load($id);
         }
diff --git a/lib/RT/Report/Tickets.pm b/lib/RT/Report/Tickets.pm
index 6dfacfb..304d929 100644
--- a/lib/RT/Report/Tickets.pm
+++ b/lib/RT/Report/Tickets.pm
@@ -96,7 +96,7 @@ sub groupings {
             unless ( $queue->id ) {
 
                 # XXX TODO: This ancient code dates from a former developer
-                # we have no idea what it means or why cfqueues are so encoded.
+                # we have no idea what it means or why queues are so encoded.
                 $id =~ s/^.'*(.*).'*$/$1/;
                 $queue->load($id);
             }
diff --git a/share/html/Elements/SelectOwner b/share/html/Elements/SelectOwner
index bea54e6..2f281a6 100755
--- a/share/html/Elements/SelectOwner
+++ b/share/html/Elements/SelectOwner
@@ -71,8 +71,8 @@ if ($ticket_obj) {
     @objects = ($ticket_obj);
 } elsif ($queue_obj) {
     @objects = ($queue_obj);
-} elsif ($cfqueues) {
-    @objects = keys %{$cfqueues};
+} elsif ($queues) {
+    @objects = keys %{$queues};
 } else {
 # Let's check rights on an empty queue object. that will do a search
 # for any queue.
@@ -131,5 +131,5 @@ $ticket_obj => undef
 $default_value => 1
 $default_label => "-"
 $value_attribute => 'id'
-$cfqueues => undef
+$queues => undef
 </%ARGS>
diff --git a/share/html/Prefs/Search.html b/share/html/Prefs/Search.html
index 6e62506..94f527a 100644
--- a/share/html/Prefs/Search.html
+++ b/share/html/Prefs/Search.html
@@ -99,7 +99,7 @@ $ARGS{'order_by'} = join '|', grep defined && /\S/, (ref $ARGS{'order_by'})? @{$
 
 my ( $AvailableColumns, $current_format );
 ( $ARGS{format}, $AvailableColumns, $current_format ) = RT::Interface::Web::QueryBuilder->build_format_string(
-    cfqueues => {}, %ARGS
+    queues => {}, %ARGS
 );
 
 if ($ARGS{'save'}) {
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 370387d..8232943 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -82,7 +82,7 @@
 
 
 <div id="pick-criteria">
-    <& Elements/PickCriteria, query => $query{'query'}, cfqueues => $queues &>
+    <& Elements/PickCriteria, query => $query{'query'}, queues => $queues &>
 </div>
 <& /Elements/Submit,  label => _('Add these terms'), name => 'add_clause'&>
 <& /Elements/Submit, label => _('Add these terms and Search'), name => 'do_search'&>
@@ -222,7 +222,7 @@ my ( $available_columns, $current_format );
 
 ( $query{'format'}, $available_columns, $current_format ) = RT::Interface::Web::QueryBuilder->build_format_string(
     %ARGS,
-    cfqueues => $queues,
+    queues => $queues,
     format   => $query{'format'},
 );
 
diff --git a/share/html/Search/Elements/PickCFs b/share/html/Search/Elements/PickCFs
index 681821a..f08aeee 100644
--- a/share/html/Search/Elements/PickCFs
+++ b/share/html/Search/Elements/PickCFs
@@ -50,13 +50,13 @@
 % }
 <%INIT>
 my $CustomFields = RT::Model::CustomFieldCollection->new( current_user => Jifty->web->current_user );
-foreach my $id (keys %cfqueues) {
+foreach my $id (keys %queues) {
     # Gotta load up the $queue object, since queues get stored by name now. my $id
     my $queue = RT::Model::Queue->new( current_user => Jifty->web->current_user );
     $queue->load($id);
     unless ($queue->id) {
         # XXX TODO: This ancient code dates from a former developer
-        # we have no idea what it means or why cfqueues are so encoded.
+        # we have no idea what it means or why queues are so encoded.
         $id =~ s/^.'*(.*).'*$/$1/;
 
         # unescape internal quotes
@@ -95,10 +95,10 @@ while ( my $CustomField = $CustomFields->next ) {
     push @lines, \%line;
 }
 
-$m->callback( Conditions => \@lines, Queues => \%cfqueues );
+$m->callback( Conditions => \@lines, Queues => \%queues );
 
 </%INIT>
 
 <%ARGS>
-%cfqueues => undef
+%queues => undef
 </%ARGS>
diff --git a/share/html/Search/Elements/PickCriteria b/share/html/Search/Elements/PickCriteria
index 9bf8732..a2d48dd 100644
--- a/share/html/Search/Elements/PickCriteria
+++ b/share/html/Search/Elements/PickCriteria
@@ -52,7 +52,7 @@
 
 
 <& PickBasics &>
-<& PickCFs, cfqueues => \%cfqueues &>
+<& PickCFs, queues => \%queues &>
 
 <tr class="separator"><td colspan="3"><hr /></td></tr>
 <tr>
@@ -68,5 +68,5 @@
 <%ARGS>
 $addquery => 0
 $query => undef
-%cfqueues => undef
+%queues => undef
 </%ARGS>

commit b0b6def3db958817ff6705ef75de887757b66701
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 15:33:52 2009 -0500

    extract query update into a sub

diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 8232943..f05d75a 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -77,17 +77,11 @@
 <input type="hidden" class="hidden" name="saved_search_id" value="<% $saved_search->{'id'} || '' %>" />
 <input type="hidden" class="hidden" name="query" value="<% $query{'query'} || '' %>" />
 <input type="hidden" class="hidden" name="format" value="<% $query{'format'} || '' %>" />
-
-
-
-
 <div id="pick-criteria">
     <& Elements/PickCriteria, query => $query{'query'}, queues => $queues &>
 </div>
 <& /Elements/Submit,  label => _('Add these terms'), name => 'add_clause'&>
 <& /Elements/Submit, label => _('Add these terms and Search'), name => 'do_search'&>
-
-
 <div id="editquery">
 <& Elements/EditQuery,
     %ARGS,
@@ -99,22 +93,15 @@
 <div id="editsearches">
     <& Elements/EditSearches, %$saved_search, current_search => \%query &>
 </div>
-
-
-
 <span id="display-options">
-
 <& Elements/DisplayOptions,
     %ARGS, %query,
     available_columns => $available_columns,
     current_format    => $current_format,
 &>
-
 <& /Elements/Submit, label => _('Update format and Search'), name => 'do_search', id=>"formatbuttons"&>
 </span>
-
 </form>
-
 </&>
 <%INIT>
 my $saved_search = {};
@@ -122,7 +109,6 @@ my %query = map { $_ => $ARGS{$_} } qw(query format order_by order rows_per_page
 my @actions = RT::Interface::Web::QueryBuilder->load_saved_search( \%ARGS, \%query, $saved_search );
 
 if ($new_query) {
-
     # Wipe all data-carrying variables clear if we want a new
     # search, or we're deleting an old one..
     %query = ();
@@ -139,16 +125,14 @@ if ($new_query) {
     my $prefs   = Jifty->web->current_user->user_object->preferences("SearchDisplay") || {};
     my $default = { query => '', format => '', order_by => 'id', order => 'ASC', rows_per_page => 50 };
 
-    for (qw(query format order_by order rows_per_page)) {
-        $query{$_} = $current->{$_} unless defined $query{$_};
-        $query{$_} = $prefs->{$_}   unless defined $query{$_};
-        $query{$_} = $default->{$_} unless defined $query{$_};
+    for my $param (qw(query format order_by order rows_per_page)) {
+        $query{$param} = $current->{$param} unless defined $query{$param};
+        $query{$param} = $prefs->{$param}   unless defined $query{$param};
+        $query{$param} = $default->{$param} unless defined $query{$param};
     }
 
-    for (qw(order order_by)) {
-        if ( ref $query{$_} eq "ARRAY" ) {
-            $query{$_} = join( '|', @{ $query{$_} } );
-        }
+    for my $param  (qw(order order_by)) {
+       $query{$param} = join( '|', @{ $query{$param} } ) if ( ref $query{$param} eq "ARRAY" ) 
     }
 
     $query{'format'} = RT::Interface::Web->scrub_html( $query{'format'} ) if ( $query{'format'} );
@@ -160,55 +144,60 @@ push @actions, $tree->parse_sql( query => $query{query} );
 
 my @options        = $tree->get_displayed_nodes;
 my @current_values = grep defined, @options[@clauses];
-my @new_values     = ();
 
-foreach my $arg ( keys %ARGS ) {
 
-    #  Try to find if we're adding a clause
-    next
-        unless $arg =~ m/^value_of_(\w+|'CF.{.*?}')$/
-            && ( ref $ARGS{$arg} eq "ARRAY" ? grep $_ ne '', @{ $ARGS{$arg} } : $ARGS{$arg} ne '' );
+my $process_args = sub {
+    my $cgi_args = shift;
+    my @new_values;
+    foreach my $arg ( keys %$cgi_args ) {
 
-    my $field = $1;
+        #  Try to find if we're adding a clause
+        next
+            unless $arg =~ m/^value_of_(\w+|'CF.{.*?}')$/
+                && ( ref $cgi_args->{$arg} eq "ARRAY"
+                    ? grep $_ ne '', @{ $cgi_args->{$arg} }
+                    : $cgi_args->{$arg} ne '' );
 
-    #figure out if it's a grouping
-    my $keyword = $ARGS{ $field . "_field" } || $field;
+        my $field = $1;
 
-    my $op_name  = $field . "_op";
-    my $op_value = 'value_of_' . $field;
+        #figure out if it's a grouping
+        my $keyword  = $cgi_args->{ $field . "_field" } || $field;
+        my $op_name  = $field . "_op";
+        my $op_value = 'value_of_' . $field;
 
-    # we may have many keys/values to iterate over, because there
-    # may be more than one CF with the same name.
-    my @ops    = ref $ARGS{$op_value} ? @{ $ARGS{$op_name} }  : $ARGS{$op_name};
-    my @values = ref $ARGS{$op_value} ? @{ $ARGS{$op_value} } : $ARGS{$op_value};
+        # we may have many keys/values to iterate over, because there
+        # may be more than one CF with the same name.
+        my @ops    = ref $cgi_args->{$op_value} ? @{ $cgi_args->{$op_name} }  : $cgi_args->{$op_name};
+        my @values = ref $cgi_args->{$op_value} ? @{ $cgi_args->{$op_value} } : $cgi_args->{$op_value};
 
-    Jifty->log->debug("Bad Parameters passed into Query Builder") unless @ops == @values;
+        Jifty->log->debug("Bad Parameters passed into Query Builder") unless @ops == @values;
 
-    for ( my $i = 0; $i < @ops; $i++ ) {
-        my ( $op, $value ) = ( $ops[$i], $values[$i] );
-        next if !defined $value || $value eq '';
+        for ( my $i = 0; $i < @ops; $i++ ) {
+            my ( $op, $value ) = ( $ops[$i], $values[$i] );
+            next if !defined $value || $value eq '';
 
-        if ( $value eq 'NULL' && $op =~ /=/ ) {
-            if ( $op eq '=' ) {
+            if ( $value eq 'NULL' && $op eq '=' ) {
                 $op = "IS";
-            } elsif ( $op eq '!=' ) {
+            } elsif ( $value eq 'NULL' && $op eq '!=' ) {
                 $op = "IS NOT";
-            }
-        } else {
-            $value =~ s/'/\\'/g;
-            $value = "'$value'" unless $value =~ /^\d+$/;
-        }
-
-        push @new_values, RT::Interface::Web::QueryBuilder::Tree->new(
-            {   Key   => $keyword,
-                Op    => $op,
-                Value => $value
+            } else {
+                $value =~ s/'/\\'/g;
+                $value = "'$value'" unless $value =~ /^\d+$/;
             }
 
-        );
-    }
-}
+            push @new_values,
+                RT::Interface::Web::QueryBuilder::Tree->new(
+                {   Key   => $keyword,
+                    Op    => $op,
+                    Value => $value
+                }
+                );
+        }
+		}
+		return @new_values;
+};
 
+my @new_values     = $process_args->(\%ARGS);
 push @actions, RT::Interface::Web::QueryBuilder->process_query( \%ARGS, $tree, \@current_values, \@new_values, );
 
 #  Rebuild $Query based on the additions / movements
@@ -231,8 +220,7 @@ push @actions, RT::Interface::Web::QueryBuilder->save_search( \%ARGS, \%query, $
 
 #  Push the updates into the session so we don't loose 'em
 
-Jifty->web->session->set( 'CurrentSearchHash',
-    {   %query,
+Jifty->web->session->set( 'CurrentSearchHash', {   %query,
 	search_id   => $saved_search->{'id'},
 	object      => $saved_search->{'object'},
 	description => $saved_search->{'description'},

commit 12204037e3c29765fbbca46eeced23cdf27b8543
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 15:52:47 2009 -0500

    move "get new query bits" out of <%init> and into lib

diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index d59cb09..c38d01f 100644
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -160,6 +160,58 @@ sub process_query {
     return @results;
 }
 
+sub process_query_additions {
+	my $self = shift;
+    my $cgi_args = shift;
+    my @new_values;
+    foreach my $arg ( keys %$cgi_args ) {
+
+        #  Try to find if we're adding a clause
+        next
+            unless $arg =~ m/^value_of_(\w+|'CF.{.*?}')$/
+                && (ref $cgi_args->{$arg} eq "ARRAY"
+                    ? grep $_ ne '', @{ $cgi_args->{$arg} }
+                    : $cgi_args->{$arg} ne ''
+                );
+
+        my $field = $1;
+
+        #figure out if it's a grouping
+        my $keyword  = $cgi_args->{ $field . "_field" } || $field;
+        my $op_name  = $field . "_op";
+        my $op_value = 'value_of_' . $field;
+
+        # we may have many keys/values to iterate over, because there
+        # may be more than one CF with the same name.
+        my @ops    = ref $cgi_args->{$op_value} ? @{ $cgi_args->{$op_name} }  : $cgi_args->{$op_name};
+        my @values = ref $cgi_args->{$op_value} ? @{ $cgi_args->{$op_value} } : $cgi_args->{$op_value};
+
+        Jifty->log->debug("Bad Parameters passed into Query Builder") unless @ops == @values;
+
+        for ( my $i = 0; $i < @ops; $i++ ) {
+            my ( $op, $value ) = ( $ops[$i], $values[$i] );
+            next if !defined $value || $value eq '';
+
+            if ( $value eq 'NULL' && $op eq '=' ) {
+                $op = "IS";
+            } elsif ( $value eq 'NULL' && $op eq '!=' ) {
+                $op = "IS NOT";
+            } else {
+                $value =~ s/'/\\'/g;
+                $value = "'$value'" unless $value =~ /^\d+$/;
+            }
+
+            push @new_values,
+                RT::Interface::Web::QueryBuilder::Tree->new(
+                {   Key   => $keyword,
+                    Op    => $op,
+                    Value => $value
+                }
+                );
+        }
+    }
+    return @new_values;
+};
 
 sub load_saved_search {
     my $self          = shift;
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index f05d75a..176d843 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -146,58 +146,8 @@ my @options        = $tree->get_displayed_nodes;
 my @current_values = grep defined, @options[@clauses];
 
 
-my $process_args = sub {
-    my $cgi_args = shift;
-    my @new_values;
-    foreach my $arg ( keys %$cgi_args ) {
-
-        #  Try to find if we're adding a clause
-        next
-            unless $arg =~ m/^value_of_(\w+|'CF.{.*?}')$/
-                && ( ref $cgi_args->{$arg} eq "ARRAY"
-                    ? grep $_ ne '', @{ $cgi_args->{$arg} }
-                    : $cgi_args->{$arg} ne '' );
-
-        my $field = $1;
-
-        #figure out if it's a grouping
-        my $keyword  = $cgi_args->{ $field . "_field" } || $field;
-        my $op_name  = $field . "_op";
-        my $op_value = 'value_of_' . $field;
-
-        # we may have many keys/values to iterate over, because there
-        # may be more than one CF with the same name.
-        my @ops    = ref $cgi_args->{$op_value} ? @{ $cgi_args->{$op_name} }  : $cgi_args->{$op_name};
-        my @values = ref $cgi_args->{$op_value} ? @{ $cgi_args->{$op_value} } : $cgi_args->{$op_value};
-
-        Jifty->log->debug("Bad Parameters passed into Query Builder") unless @ops == @values;
-
-        for ( my $i = 0; $i < @ops; $i++ ) {
-            my ( $op, $value ) = ( $ops[$i], $values[$i] );
-            next if !defined $value || $value eq '';
-
-            if ( $value eq 'NULL' && $op eq '=' ) {
-                $op = "IS";
-            } elsif ( $value eq 'NULL' && $op eq '!=' ) {
-                $op = "IS NOT";
-            } else {
-                $value =~ s/'/\\'/g;
-                $value = "'$value'" unless $value =~ /^\d+$/;
-            }
-
-            push @new_values,
-                RT::Interface::Web::QueryBuilder::Tree->new(
-                {   Key   => $keyword,
-                    Op    => $op,
-                    Value => $value
-                }
-                );
-        }
-		}
-		return @new_values;
-};
-
-my @new_values     = $process_args->(\%ARGS);
+
+my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions( \%ARGS );
 push @actions, RT::Interface::Web::QueryBuilder->process_query( \%ARGS, $tree, \@current_values, \@new_values, );
 
 #  Rebuild $Query based on the additions / movements

commit b59581df5b8eab0ba7cfc207e0e6a8dbf998b50e
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 16:00:18 2009 -0500

    extract some defaults-setting into a sub

diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 176d843..bf4e6b0 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -119,7 +119,10 @@ if ($new_query) {
     Jifty->web->session->get('tickets')->clean_slate if defined Jifty->web->session->get('tickets');
 }
 
-{    # Attempt to load what we can from the session and preferences, set defaults
+
+
+my $set_query_defaults = sub {
+	# Attempt to load what we can from the session and preferences, set defaults
 
     my $current = Jifty->web->session->get('CurrentSearchHash');
     my $prefs   = Jifty->web->current_user->user_object->preferences("SearchDisplay") || {};
@@ -135,8 +138,12 @@ if ($new_query) {
        $query{$param} = join( '|', @{ $query{$param} } ) if ( ref $query{$param} eq "ARRAY" ) 
     }
 
-    $query{'format'} = RT::Interface::Web->scrub_html( $query{'format'} ) if ( $query{'format'} );
-}
+	$query{'format'} = RT::Interface::Web->scrub_html( $query{'format'} ) if ( $query{'format'} );
+	return %query;
+};
+
+%query = $set_query_defaults->(%query);
+
 
 my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
 push @actions, $tree->parse_sql( query => $query{query} );

commit 25d69933c91b683cbc913812044c87f5c5c2312d
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 16:10:48 2009 -0500

    extract out query default setting into lib

diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index c38d01f..b58bad8 100644
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -2,6 +2,31 @@ package RT::Interface::Web::QueryBuilder;
 use warnings;
 use strict;
 
+
+sub set_query_defaults {
+	my $self = shift;
+	my %query = (@_);
+	# Attempt to load what we can from the session and preferences, set defaults
+
+    my $current = Jifty->web->session->get('CurrentSearchHash');
+    my $prefs   = Jifty->web->current_user->user_object->preferences("SearchDisplay") || {};
+    my $default = { query => '', format => '', order_by => 'id', order => 'ASC', rows_per_page => 50 };
+
+    for my $param (qw(query format order_by order rows_per_page)) {
+        $query{$param} = $current->{$param} unless defined $query{$param};
+        $query{$param} = $prefs->{$param}   unless defined $query{$param};
+        $query{$param} = $default->{$param} unless defined $query{$param};
+    }
+
+    for my $param  (qw(order order_by)) {
+       $query{$param} = join( '|', @{ $query{$param} } ) if ( ref $query{$param} eq "ARRAY" ) 
+    }
+
+	$query{'format'} = RT::Interface::Web->scrub_html( $query{'format'} ) if ( $query{'format'} );
+	return %query;
+}
+
+
 sub process_query {
     my $self     = shift;
     my $ARGS     = shift;
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index bf4e6b0..44dc383 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -121,28 +121,8 @@ if ($new_query) {
 
 
 
-my $set_query_defaults = sub {
-	# Attempt to load what we can from the session and preferences, set defaults
 
-    my $current = Jifty->web->session->get('CurrentSearchHash');
-    my $prefs   = Jifty->web->current_user->user_object->preferences("SearchDisplay") || {};
-    my $default = { query => '', format => '', order_by => 'id', order => 'ASC', rows_per_page => 50 };
-
-    for my $param (qw(query format order_by order rows_per_page)) {
-        $query{$param} = $current->{$param} unless defined $query{$param};
-        $query{$param} = $prefs->{$param}   unless defined $query{$param};
-        $query{$param} = $default->{$param} unless defined $query{$param};
-    }
-
-    for my $param  (qw(order order_by)) {
-       $query{$param} = join( '|', @{ $query{$param} } ) if ( ref $query{$param} eq "ARRAY" ) 
-    }
-
-	$query{'format'} = RT::Interface::Web->scrub_html( $query{'format'} ) if ( $query{'format'} );
-	return %query;
-};
-
-%query = $set_query_defaults->(%query);
+%query = RT::Interface::Web::QueryBuilder->set_query_defaults(%query);
 
 
 my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');

commit 6afbe47e066099cfe87d2030a5ee7dff263a7465
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 16:17:06 2009 -0500

    move the "should we save a search" check back out to the calling code

diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index b58bad8..68c511a 100644
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -310,12 +310,10 @@ sub load_saved_search {
 
 sub save_search {
     my $self          = shift;
-    my $ARGS          = shift;
     my $query         = shift;
     my $saved_search  = shift;
     my $search_fields = shift || [qw( query format order_by order rows_per_page)];
 
-    return unless $ARGS->{'saved_search_save'} || $ARGS->{'saved_search_copy'};
 
     my @results;
     my $obj  = $saved_search->{'object'};
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 44dc383..cd5c8ac 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -153,8 +153,9 @@ my ( $available_columns, $current_format );
 );
 
 # if we're asked to save the current search, save it
-push @actions, RT::Interface::Web::QueryBuilder->save_search( \%ARGS, \%query, $saved_search );
-
+if( $ARGS{'saved_search_save'} || $ARGS{'saved_search_copy'}) {
+push @actions, RT::Interface::Web::QueryBuilder->save_search( \%query, $saved_search );
+}	
 #  Push the updates into the session so we don't loose 'em
 
 Jifty->web->session->set( 'CurrentSearchHash', {   %query,
diff --git a/share/html/Ticket/Graphs/index.html b/share/html/Ticket/Graphs/index.html
index 52ab0aa..b78c265 100644
--- a/share/html/Ticket/Graphs/index.html
+++ b/share/html/Ticket/Graphs/index.html
@@ -99,7 +99,8 @@ if ( $ARGS{'show_links'} && !ref $ARGS{'show_links'} ) {
 $ARGS{'show_links'} = [ grep $_ ne $ARGS{'leading_link'}, @{ $ARGS{'show_links'} } ];
 $ARGS{'max_depth'} = 3 unless defined $ARGS{'max_depth'} && length $ARGS{'max_depth'};
 
-push @results, RT::Interface::Web::QueryBuilder->save_search(\%ARGS, \%ARGS, $saved_search, \@save_arguments);
-
+if( $ARGS{'saved_search_save'} || $ARGS{'saved_search_copy'}) {
+push @results, RT::Interface::Web::QueryBuilder->save_search(\%ARGS, $saved_search, \@save_arguments);
+}
 my $title = _( "Ticket #%1 relationships graph", $id );
 </%INIT>

commit 27cfe643ef3a6309ad0877dd928f9d59434b301e
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 16:18:12 2009 -0500

    minor

diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index cd5c8ac..62eedfa 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -156,7 +156,7 @@ my ( $available_columns, $current_format );
 if( $ARGS{'saved_search_save'} || $ARGS{'saved_search_copy'}) {
 push @actions, RT::Interface::Web::QueryBuilder->save_search( \%query, $saved_search );
 }	
-#  Push the updates into the session so we don't loose 'em
+#  Push the updates into the session so we don't lose 'em
 
 Jifty->web->session->set( 'CurrentSearchHash', {   %query,
 	search_id   => $saved_search->{'id'},

commit 52e00bf2709798bd5eb63fac7adcb9970f5aa840
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 16:25:08 2009 -0500

    minor tidying

diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 62eedfa..b5d2399 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -154,7 +154,7 @@ my ( $available_columns, $current_format );
 
 # if we're asked to save the current search, save it
 if( $ARGS{'saved_search_save'} || $ARGS{'saved_search_copy'}) {
-push @actions, RT::Interface::Web::QueryBuilder->save_search( \%query, $saved_search );
+    push @actions, RT::Interface::Web::QueryBuilder->save_search( \%query, $saved_search );
 }	
 #  Push the updates into the session so we don't lose 'em
 

commit ecc49ef36d2e2f1a6fa726decae3670af8582f26
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 16:25:56 2009 -0500

    perltidy

diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index 68c511a..cd397c0 100644
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -2,11 +2,11 @@ package RT::Interface::Web::QueryBuilder;
 use warnings;
 use strict;
 
-
 sub set_query_defaults {
-	my $self = shift;
-	my %query = (@_);
-	# Attempt to load what we can from the session and preferences, set defaults
+    my $self  = shift;
+    my %query = (@_);
+
+    # Attempt to load what we can from the session and preferences, set defaults
 
     my $current = Jifty->web->session->get('CurrentSearchHash');
     my $prefs   = Jifty->web->current_user->user_object->preferences("SearchDisplay") || {};
@@ -18,15 +18,14 @@ sub set_query_defaults {
         $query{$param} = $default->{$param} unless defined $query{$param};
     }
 
-    for my $param  (qw(order order_by)) {
-       $query{$param} = join( '|', @{ $query{$param} } ) if ( ref $query{$param} eq "ARRAY" ) 
+    for my $param (qw(order order_by)) {
+        $query{$param} = join( '|', @{ $query{$param} } ) if ( ref $query{$param} eq "ARRAY" );
     }
 
-	$query{'format'} = RT::Interface::Web->scrub_html( $query{'format'} ) if ( $query{'format'} );
-	return %query;
+    $query{'format'} = RT::Interface::Web->scrub_html( $query{'format'} ) if ( $query{'format'} );
+    return %query;
 }
 
-
 sub process_query {
     my $self     = shift;
     my $ARGS     = shift;
@@ -186,7 +185,7 @@ sub process_query {
 }
 
 sub process_query_additions {
-	my $self = shift;
+    my $self     = shift;
     my $cgi_args = shift;
     my @new_values;
     foreach my $arg ( keys %$cgi_args ) {
@@ -236,7 +235,7 @@ sub process_query_additions {
         }
     }
     return @new_values;
-};
+}
 
 sub load_saved_search {
     my $self          = shift;
@@ -307,18 +306,16 @@ sub load_saved_search {
     return @results;
 }
 
-
 sub save_search {
     my $self          = shift;
     my $query         = shift;
     my $saved_search  = shift;
     my $search_fields = shift || [qw( query format order_by order rows_per_page)];
 
-
     my @results;
-    my $obj  = $saved_search->{'object'};
-    my $id   = $saved_search->{'id'};
-    my $desc = $saved_search->{'description'};
+    my $obj     = $saved_search->{'object'};
+    my $id      = $saved_search->{'id'};
+    my $desc    = $saved_search->{'description'};
     my $privacy = $saved_search->{'Privacy'};
 
     my %params = map { $_ => $query->{$_} } @$search_fields;
@@ -416,12 +413,11 @@ sub _load_container_object {
     return RT::SavedSearch->new()->_load_privacy_object( $obj_type, $obj_id );
 }
 
-
 sub build_format_string {
     my $self = shift;
     my %args = (
         format                  => undef,
-        queues                => undef,
+        queues                  => undef,
         face                    => undef,
         size                    => undef,
         link                    => undef,
@@ -434,9 +430,8 @@ sub build_format_string {
         current_display_columns => undef,
         @_
     );
-		
-	
-	$args{format} = RT->config->get('default_search_result_format') unless $args{format};
+
+    $args{format} = RT->config->get('default_search_result_format') unless $args{format};
 
     # All the things we can display in the format string by default
     my @fields = qw(
@@ -461,7 +456,7 @@ sub build_format_string {
         );    # loc_qw
 
     my $CustomFields = RT::Model::CustomFieldCollection->new();
-    foreach my $id ( keys %{$args{queues}} ) {
+    foreach my $id ( keys %{ $args{queues} } ) {
 
         # Gotta load up the $queue object, since queues get stored by name now. my $id
         my $queue = RT::Model::Queue->new();
@@ -537,9 +532,9 @@ sub build_format_string {
                     $column{Prefix} .= "<i>";
                     $column{Suffix} .= "</i>";
                 }
-                if ($args{size}) {
-                    $column{Prefix} .= "<" . Jifty->web->escape($args{size}) . ">";
-                    $column{Suffix} .= "</" . Jifty->web->escape($args{size}) . ">";
+                if ( $args{size} ) {
+                    $column{Prefix} .= "<" . Jifty->web->escape( $args{size} ) . ">";
+                    $column{Suffix} .= "</" . Jifty->web->escape( $args{size} ) . ">";
                 }
                 if ( $args{link} eq "Display" ) {
                     $column{Prefix} .= q{<a HREF="__WebPath__/Ticket/Display.html?id=__id__">};
@@ -594,5 +589,4 @@ sub build_format_string {
 
 }
 
-
 1;

commit d23386b2de2a02a150e2f7e664a4d9b931ee72e7
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 16:26:16 2009 -0500

    whitespace

diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index b5d2399..0afb095 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -120,20 +120,14 @@ if ($new_query) {
 }
 
 
-
-
 %query = RT::Interface::Web::QueryBuilder->set_query_defaults(%query);
-
-
 my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
-push @actions, $tree->parse_sql( query => $query{query} );
 
+push @actions, $tree->parse_sql( query => $query{query} );
 
 my @options        = $tree->get_displayed_nodes;
 my @current_values = grep defined, @options[@clauses];
 
-
-
 my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions( \%ARGS );
 push @actions, RT::Interface::Web::QueryBuilder->process_query( \%ARGS, $tree, \@current_values, \@new_values, );
 

commit ef6f9eea610a6c8fc063d345865104b35540c5a0
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 22:32:36 2009 -0500

    switching over to a jifty api from a mason one

diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 0afb095..c12a89b 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -105,10 +105,10 @@
 </&>
 <%INIT>
 my $saved_search = {};
-my %query = map { $_ => $ARGS{$_} } qw(query format order_by order rows_per_page);
+my %query = map { $_ => Jifty->web->request->argument($_) } qw(query format order_by order rows_per_page);
 my @actions = RT::Interface::Web::QueryBuilder->load_saved_search( \%ARGS, \%query, $saved_search );
 
-if ($new_query) {
+if (Jifty->web->request->argument('new_query')) {
     # Wipe all data-carrying variables clear if we want a new
     # search, or we're deleting an old one..
     %query = ();
@@ -132,19 +132,20 @@ my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions( \%AR
 push @actions, RT::Interface::Web::QueryBuilder->process_query( \%ARGS, $tree, \@current_values, \@new_values, );
 
 #  Rebuild $Query based on the additions / movements
-my $parsed_query;
-( $query{'query'}, $parsed_query ) = $tree->get_query_and_option_list( \@current_values );
+my ( $new_serialized_query, $parsed_query ) = $tree->get_query_and_option_list( \@current_values );
+$query{'query'} = $new_serialized_query;
+
 
 my $queues = $tree->get_referenced_queues;
 
 #  Deal with format changes
-my ( $available_columns, $current_format );
-
-( $query{'format'}, $available_columns, $current_format ) = RT::Interface::Web::QueryBuilder->build_format_string(
+my ($new_format, $available_columns, $current_format ) = 
+	RT::Interface::Web::QueryBuilder->build_format_string(
     %ARGS,
     queues => $queues,
-    format   => $query{'format'},
-);
+    format   => $query{'format'});
+
+$query{'format'} = $new_format;
 
 # if we're asked to save the current search, save it
 if( $ARGS{'saved_search_save'} || $ARGS{'saved_search_copy'}) {
@@ -163,7 +164,7 @@ Jifty->web->session->set( 'CurrentSearchHash', {   %query,
 my $query_string = '';
 
 #  Build a query_string for the tabs
-if ($new_query) {
+if (Jifty->web->request->argument('new_query')) {
     $query_string = 'new_query=1';
 } elsif ( $query{'query'} ) {
     $query_string = RT::Interface::Web->format_query_params(%query);
@@ -176,6 +177,5 @@ if ( $ARGS{'do_search'} ) {
 </%INIT>
 
 <%ARGS>
-$new_query => 0
 @clauses => ()
 </%ARGS>

commit e7a3c2ed6a7e575e86ef8011a14f5ba4c1edf3c7
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 22:51:05 2009 -0500

    %query -> $query

diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index cd397c0..322db26 100644
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -4,7 +4,7 @@ use strict;
 
 sub set_query_defaults {
     my $self  = shift;
-    my %query = (@_);
+    my $query = shift;
 
     # Attempt to load what we can from the session and preferences, set defaults
 
@@ -13,17 +13,16 @@ sub set_query_defaults {
     my $default = { query => '', format => '', order_by => 'id', order => 'ASC', rows_per_page => 50 };
 
     for my $param (qw(query format order_by order rows_per_page)) {
-        $query{$param} = $current->{$param} unless defined $query{$param};
-        $query{$param} = $prefs->{$param}   unless defined $query{$param};
-        $query{$param} = $default->{$param} unless defined $query{$param};
+        $query->{$param} = $current->{$param} unless defined $query->{$param};
+        $query->{$param} = $prefs->{$param}   unless defined $query->{$param};
+        $query->{$param} = $default->{$param} unless defined $query->{$param};
     }
 
     for my $param (qw(order order_by)) {
-        $query{$param} = join( '|', @{ $query{$param} } ) if ( ref $query{$param} eq "ARRAY" );
+        $query->{$param} = join( '|', @{ $query->{$param} } ) if ( ref $query->{$param} eq "ARRAY" );
     }
 
-    $query{'format'} = RT::Interface::Web->scrub_html( $query{'format'} ) if ( $query{'format'} );
-    return %query;
+    $query->{'format'} = RT::Interface::Web->scrub_html( $query->{'format'} ) if ( $query->{'format'} );
 }
 
 sub process_query {
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index c12a89b..8b7081b 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -69,16 +69,16 @@
 <& /Ticket/Elements/Tabs, 
     current_tab => "Search/Build.html?".$query_string, 
     title => _("Query Builder"),
-    %query,
+    %$query,
 	saved_search_id => $saved_search->{'id'},
 &>
 
 <form method="post" action="Build.html" name="build_query">
 <input type="hidden" class="hidden" name="saved_search_id" value="<% $saved_search->{'id'} || '' %>" />
-<input type="hidden" class="hidden" name="query" value="<% $query{'query'} || '' %>" />
-<input type="hidden" class="hidden" name="format" value="<% $query{'format'} || '' %>" />
+<input type="hidden" class="hidden" name="query" value="<% $query->{'query'} || '' %>" />
+<input type="hidden" class="hidden" name="format" value="<% $query->{'format'} || '' %>" />
 <div id="pick-criteria">
-    <& Elements/PickCriteria, query => $query{'query'}, queues => $queues &>
+	<& Elements/PickCriteria, query => $query->{'query'}, queues => $queues &>
 </div>
 <& /Elements/Submit,  label => _('Add these terms'), name => 'add_clause'&>
 <& /Elements/Submit, label => _('Add these terms and Search'), name => 'do_search'&>
@@ -91,11 +91,11 @@
     &>
 </div>
 <div id="editsearches">
-    <& Elements/EditSearches, %$saved_search, current_search => \%query &>
+    <& Elements/EditSearches, %$saved_search, current_search => $query &>
 </div>
 <span id="display-options">
 <& Elements/DisplayOptions,
-    %ARGS, %query,
+    %ARGS, %$query,
     available_columns => $available_columns,
     current_format    => $current_format,
 &>
@@ -105,13 +105,13 @@
 </&>
 <%INIT>
 my $saved_search = {};
-my %query = map { $_ => Jifty->web->request->argument($_) } qw(query format order_by order rows_per_page);
-my @actions = RT::Interface::Web::QueryBuilder->load_saved_search( \%ARGS, \%query, $saved_search );
+my $query = {map { $_ => Jifty->web->request->argument($_) } qw(query format order_by order rows_per_page)};
+my @actions = RT::Interface::Web::QueryBuilder->load_saved_search( \%ARGS, $query, $saved_search );
 
 if (Jifty->web->request->argument('new_query')) {
     # Wipe all data-carrying variables clear if we want a new
     # search, or we're deleting an old one..
-    %query = ();
+	$query = {};
     $saved_search = { id => 'new' };
 
     # ..then wipe the sessionand the search results.
@@ -120,10 +120,11 @@ if (Jifty->web->request->argument('new_query')) {
 }
 
 
-%query = RT::Interface::Web::QueryBuilder->set_query_defaults(%query);
+RT::Interface::Web::QueryBuilder->set_query_defaults($query);
+
 my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
 
-push @actions, $tree->parse_sql( query => $query{query} );
+push @actions, $tree->parse_sql( query => $query->{query} );
 
 my @options        = $tree->get_displayed_nodes;
 my @current_values = grep defined, @options[@clauses];
@@ -133,7 +134,7 @@ push @actions, RT::Interface::Web::QueryBuilder->process_query( \%ARGS, $tree, \
 
 #  Rebuild $Query based on the additions / movements
 my ( $new_serialized_query, $parsed_query ) = $tree->get_query_and_option_list( \@current_values );
-$query{'query'} = $new_serialized_query;
+$query->{'query'} = $new_serialized_query;
 
 
 my $queues = $tree->get_referenced_queues;
@@ -143,17 +144,17 @@ my ($new_format, $available_columns, $current_format ) =
 	RT::Interface::Web::QueryBuilder->build_format_string(
     %ARGS,
     queues => $queues,
-    format   => $query{'format'});
+	format   => $query->{'format'});
 
-$query{'format'} = $new_format;
+	$query->{'format'} = $new_format;
 
 # if we're asked to save the current search, save it
 if( $ARGS{'saved_search_save'} || $ARGS{'saved_search_copy'}) {
-    push @actions, RT::Interface::Web::QueryBuilder->save_search( \%query, $saved_search );
+    push @actions, RT::Interface::Web::QueryBuilder->save_search( $query, $saved_search );
 }	
 #  Push the updates into the session so we don't lose 'em
 
-Jifty->web->session->set( 'CurrentSearchHash', {   %query,
+Jifty->web->session->set( 'CurrentSearchHash', {   %$query,
 	search_id   => $saved_search->{'id'},
 	object      => $saved_search->{'object'},
 	description => $saved_search->{'description'},
@@ -166,8 +167,8 @@ my $query_string = '';
 #  Build a query_string for the tabs
 if (Jifty->web->request->argument('new_query')) {
     $query_string = 'new_query=1';
-} elsif ( $query{'query'} ) {
-    $query_string = RT::Interface::Web->format_query_params(%query);
+	} elsif ( $query->{'query'} ) {
+    $query_string = RT::Interface::Web->format_query_params(%$query);
 }
 
 if ( $ARGS{'do_search'} ) {

commit 8d398ddac8b27c12e7cae11588ed2f0c2fc959b0
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Fri Nov 6 23:03:39 2009 -0500

    Search setup moved into lib

diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index 322db26..13f93dd 100644
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -2,6 +2,29 @@ package RT::Interface::Web::QueryBuilder;
 use warnings;
 use strict;
 
+sub setup_query {
+
+    my $saved_search = {};
+    my $query = { map { $_ => Jifty->web->request->argument($_) } qw(query format order_by order rows_per_page) };
+    my @actions = RT::Interface::Web::QueryBuilder->load_saved_search( Jifty->web->request->arguments(), $query, $saved_search );
+
+    if ( Jifty->web->request->argument('new_query') ) {
+
+        # Wipe all data-carrying variables clear if we want a new
+        # search, or we're deleting an old one..
+        $query = {};
+        $saved_search = { id => 'new' };
+
+        # ..then wipe the sessionand the search results.
+        Jifty->web->session->remove('CurrentSearchHash');
+        Jifty->web->session->get('tickets')->clean_slate if defined Jifty->web->session->get('tickets');
+    }
+
+    RT::Interface::Web::QueryBuilder->set_query_defaults($query);
+    return ( $saved_search, $query, \@actions );
+}
+
+
 sub set_query_defaults {
     my $self  = shift;
     my $query = shift;
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 8b7081b..cb706da 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -104,32 +104,20 @@
 </form>
 </&>
 <%INIT>
-my $saved_search = {};
-my $query = {map { $_ => Jifty->web->request->argument($_) } qw(query format order_by order rows_per_page)};
-my @actions = RT::Interface::Web::QueryBuilder->load_saved_search( \%ARGS, $query, $saved_search );
 
-if (Jifty->web->request->argument('new_query')) {
-    # Wipe all data-carrying variables clear if we want a new
-    # search, or we're deleting an old one..
-	$query = {};
-    $saved_search = { id => 'new' };
-
-    # ..then wipe the sessionand the search results.
-    Jifty->web->session->remove('CurrentSearchHash');
-    Jifty->web->session->get('tickets')->clean_slate if defined Jifty->web->session->get('tickets');
-}
 
+my ($saved_search, $query, $results) = RT::Interface::Web::QueryBuilder->setup_query();
 
-RT::Interface::Web::QueryBuilder->set_query_defaults($query);
+my @actions = @$results;
 
 my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
 
 push @actions, $tree->parse_sql( query => $query->{query} );
-
 my @options        = $tree->get_displayed_nodes;
 my @current_values = grep defined, @options[@clauses];
 
 my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions( \%ARGS );
+
 push @actions, RT::Interface::Web::QueryBuilder->process_query( \%ARGS, $tree, \@current_values, \@new_values, );
 
 #  Rebuild $Query based on the additions / movements

commit 9983649af1cfb9b516d122a4bb453bd31f277e1a
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Sat Nov 7 00:02:51 2009 -0500

    Further stabbing of %ARGS

diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index 13f93dd..0618596 100644
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -50,13 +50,13 @@ sub set_query_defaults {
 
 sub process_query {
     my $self     = shift;
-    my $ARGS     = shift;
     my $tree     = shift;
     my $selected = shift;
     my $new      = shift || [];
 
     my @NewSelection = ();
 
+    my $ARGS = Jifty->web->request->arguments;
     my @results;
     if ( $ARGS->{'up'} || $ARGS->{'down'} ) {
         if (@$selected) {
@@ -208,7 +208,7 @@ sub process_query {
 
 sub process_query_additions {
     my $self     = shift;
-    my $cgi_args = shift;
+    my $cgi_args = Jifty->web->request->arguments();
     my @new_values;
     foreach my $arg ( keys %$cgi_args ) {
 
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index cb706da..9b03252 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -116,9 +116,9 @@ push @actions, $tree->parse_sql( query => $query->{query} );
 my @options        = $tree->get_displayed_nodes;
 my @current_values = grep defined, @options[@clauses];
 
-my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions( \%ARGS );
+my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions( );
 
-push @actions, RT::Interface::Web::QueryBuilder->process_query( \%ARGS, $tree, \@current_values, \@new_values, );
+push @actions, RT::Interface::Web::QueryBuilder->process_query(  $tree, \@current_values, \@new_values, );
 
 #  Rebuild $Query based on the additions / movements
 my ( $new_serialized_query, $parsed_query ) = $tree->get_query_and_option_list( \@current_values );
@@ -130,14 +130,14 @@ my $queues = $tree->get_referenced_queues;
 #  Deal with format changes
 my ($new_format, $available_columns, $current_format ) = 
 	RT::Interface::Web::QueryBuilder->build_format_string(
-    %ARGS,
+	%{Jifty->web->request->arguments},
     queues => $queues,
 	format   => $query->{'format'});
 
 	$query->{'format'} = $new_format;
 
 # if we're asked to save the current search, save it
-if( $ARGS{'saved_search_save'} || $ARGS{'saved_search_copy'}) {
+if( Jifty->web->request->argument('saved_search_save') || Jifty->web->request->argument('saved_search_copy')) {
     push @actions, RT::Interface::Web::QueryBuilder->save_search( $query, $saved_search );
 }	
 #  Push the updates into the session so we don't lose 'em
@@ -159,7 +159,7 @@ if (Jifty->web->request->argument('new_query')) {
     $query_string = RT::Interface::Web->format_query_params(%$query);
 }
 
-if ( $ARGS{'do_search'} ) {
+if ( Jifty->web->request->argument('do_search') ) {
 	Jifty->web->redirect( Jifty->web->url . "Search/Results.html?" .$query_string);
 }
 

commit d4d7d5530b3fce152a9bab37725b85dabbc4394f
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Sat Nov 7 00:10:08 2009 -0500

    "actions" -> "results"

diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 9b03252..ffc7437 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -85,7 +85,7 @@
 <div id="editquery">
 <& Elements/EditQuery,
     %ARGS,
-    actions => \@actions,
+	actions => $results,
     parsed_query => $parsed_query,
 	description => $saved_search->{'description'},
     &>
@@ -108,17 +108,16 @@
 
 my ($saved_search, $query, $results) = RT::Interface::Web::QueryBuilder->setup_query();
 
-my @actions = @$results;
 
 my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
 
-push @actions, $tree->parse_sql( query => $query->{query} );
+push @$results, $tree->parse_sql( query => $query->{query} );
 my @options        = $tree->get_displayed_nodes;
 my @current_values = grep defined, @options[@clauses];
 
 my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions( );
 
-push @actions, RT::Interface::Web::QueryBuilder->process_query(  $tree, \@current_values, \@new_values, );
+push @$results, RT::Interface::Web::QueryBuilder->process_query(  $tree, \@current_values, \@new_values, );
 
 #  Rebuild $Query based on the additions / movements
 my ( $new_serialized_query, $parsed_query ) = $tree->get_query_and_option_list( \@current_values );
@@ -138,7 +137,7 @@ my ($new_format, $available_columns, $current_format ) =
 
 # if we're asked to save the current search, save it
 if( Jifty->web->request->argument('saved_search_save') || Jifty->web->request->argument('saved_search_copy')) {
-    push @actions, RT::Interface::Web::QueryBuilder->save_search( $query, $saved_search );
+    push @$results, RT::Interface::Web::QueryBuilder->save_search( $query, $saved_search );
 }	
 #  Push the updates into the session so we don't lose 'em
 

commit b1befea01c969a08b6cc8dee572d0ebe6d27e21f
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Sat Nov 7 00:12:30 2009 -0500

    perltidy

diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index ffc7437..9c39baf 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -105,46 +105,46 @@
 </&>
 <%INIT>
 
-
-my ($saved_search, $query, $results) = RT::Interface::Web::QueryBuilder->setup_query();
-
+my ( $saved_search, $query, $results ) = RT::Interface::Web::QueryBuilder->setup_query();
 
 my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
 
 push @$results, $tree->parse_sql( query => $query->{query} );
-my @options        = $tree->get_displayed_nodes;
+my @options = $tree->get_displayed_nodes;
 my @current_values = grep defined, @options[@clauses];
 
-my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions( );
+my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions();
 
-push @$results, RT::Interface::Web::QueryBuilder->process_query(  $tree, \@current_values, \@new_values, );
+push @$results, RT::Interface::Web::QueryBuilder->process_query( $tree, \@current_values, \@new_values, );
 
 #  Rebuild $Query based on the additions / movements
 my ( $new_serialized_query, $parsed_query ) = $tree->get_query_and_option_list( \@current_values );
 $query->{'query'} = $new_serialized_query;
 
-
 my $queues = $tree->get_referenced_queues;
 
 #  Deal with format changes
-my ($new_format, $available_columns, $current_format ) = 
-	RT::Interface::Web::QueryBuilder->build_format_string(
-	%{Jifty->web->request->arguments},
+my ( $new_format, $available_columns, $current_format ) = RT::Interface::Web::QueryBuilder->build_format_string(
+    %{ Jifty->web->request->arguments },
     queues => $queues,
-	format   => $query->{'format'});
+    format => $query->{'format'}
+);
 
-	$query->{'format'} = $new_format;
+$query->{'format'} = $new_format;
 
 # if we're asked to save the current search, save it
-if( Jifty->web->request->argument('saved_search_save') || Jifty->web->request->argument('saved_search_copy')) {
+if ( Jifty->web->request->argument('saved_search_save') || Jifty->web->request->argument('saved_search_copy') ) {
     push @$results, RT::Interface::Web::QueryBuilder->save_search( $query, $saved_search );
-}	
+}
+
 #  Push the updates into the session so we don't lose 'em
 
-Jifty->web->session->set( 'CurrentSearchHash', {   %$query,
-	search_id   => $saved_search->{'id'},
-	object      => $saved_search->{'object'},
-	description => $saved_search->{'description'},
+Jifty->web->session->set(
+    'CurrentSearchHash',
+    {   %$query,
+        search_id   => $saved_search->{'id'},
+        object      => $saved_search->{'object'},
+        description => $saved_search->{'description'},
     }
 );
 
@@ -152,14 +152,14 @@ Jifty->web->session->set( 'CurrentSearchHash', {   %$query,
 my $query_string = '';
 
 #  Build a query_string for the tabs
-if (Jifty->web->request->argument('new_query')) {
+if ( Jifty->web->request->argument('new_query') ) {
     $query_string = 'new_query=1';
-	} elsif ( $query->{'query'} ) {
+} elsif ( $query->{'query'} ) {
     $query_string = RT::Interface::Web->format_query_params(%$query);
 }
 
 if ( Jifty->web->request->argument('do_search') ) {
-	Jifty->web->redirect( Jifty->web->url . "Search/Results.html?" .$query_string);
+    Jifty->web->redirect( Jifty->web->url . "Search/Results.html?" . $query_string );
 }
 
 </%INIT>

-----------------------------------------------------------------------


More information about the Rt-commit mailing list