[Rt-commit] rt branch, 3.999-trunk, updated. db86191ec66d3ca6ae99e50806852f76ec0332e5
jesse
jesse at bestpractical.com
Mon Nov 9 20:07:27 EST 2009
The branch, 3.999-trunk has been updated
via db86191ec66d3ca6ae99e50806852f76ec0332e5 (commit)
via 16cd93818ea0b28f345233e9ea091dd8b7a50be7 (commit)
via 88166e3ac034c1bf395c3c34c8006b7cb1dc5523 (commit)
via 3929bac863d189217ca0987f3b5165c8a691da85 (commit)
from 3a06d322d6262a9d3f1e0b0ee2c016610fab8ee4 (commit)
Summary of changes:
lib/RT/Dispatcher.pm | 57 +++++++++++++++++++
lib/RT/Interface/Web/QueryBuilder.pm | 4 +-
lib/RT/Interface/Web/QueryBuilder/Tree.pm | 4 +-
share/html/Search/Build.html | 88 ++++++-----------------------
4 files changed, 78 insertions(+), 75 deletions(-)
- Log -----------------------------------------------------------------
commit 3929bac863d189217ca0987f3b5165c8a691da85
Author: Jesse Vincent <jesse at bestpractical.com>
Date: Mon Nov 9 15:32:14 2009 -0500
15 more loc down.
diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index 0618596..fed1532 100644
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -52,8 +52,8 @@ sub process_query {
my $self = shift;
my $tree = shift;
my $selected = shift;
- my $new = shift || [];
+ my $new = $self->process_query_additions || [];
my @NewSelection = ();
my $ARGS = Jifty->web->request->arguments;
@@ -256,7 +256,7 @@ sub process_query_additions {
);
}
}
- return @new_values;
+ return \@new_values;
}
sub load_saved_search {
diff --git a/lib/RT/Interface/Web/QueryBuilder/Tree.pm b/lib/RT/Interface/Web/QueryBuilder/Tree.pm
index 08330e3..2723340 100755
--- a/lib/RT/Interface/Web/QueryBuilder/Tree.pm
+++ b/lib/RT/Interface/Web/QueryBuilder/Tree.pm
@@ -120,7 +120,7 @@ sub get_referenced_queues {
return $queues;
}
-=head2 get_query_and_option_list SELECTED_NODES
+=head2 get_query_option_list SELECTED_NODES
Given an array reference of tree nodes that have been selected by the user,
traverses the tree and returns the equivalent SQL query and a list of hashes
@@ -134,7 +134,7 @@ level of indentation for the option.
=cut
-sub get_query_and_option_list {
+sub get_query_option_list {
my $self = shift;
my $selected_nodes = shift;
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 9c39baf..b845686 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -67,18 +67,18 @@
%#
<&| /_elements/wrapper, title => _("Query Builder") &>
<& /Ticket/Elements/Tabs,
- current_tab => "Search/Build.html?".$query_string,
+ current_tab => "Search/Build.html?".$querystring,
title => _("Query Builder"),
- %$query,
+ %$current_search,
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="<% $current_search->{'query'} || '' %>" />
+<input type="hidden" class="hidden" name="format" value="<% $current_search->{'format'} || '' %>" />
<div id="pick-criteria">
- <& Elements/PickCriteria, query => $query->{'query'}, queues => $queues &>
+ <& Elements/PickCriteria, query => $current_search->{'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 => $current_search &>
</div>
<span id="display-options">
<& Elements/DisplayOptions,
- %ARGS, %$query,
+ %ARGS, %$current_search,
available_columns => $available_columns,
current_format => $current_format,
&>
@@ -105,65 +105,50 @@
</&>
<%INIT>
-my ( $saved_search, $query, $results ) = RT::Interface::Web::QueryBuilder->setup_query();
+my $querystring = '';
+my @clauses = ();
-my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
+my ( $saved_search, $current_search, $results ) = RT::Interface::Web::QueryBuilder->setup_query();
-push @$results, $tree->parse_sql( query => $query->{query} );
-my @options = $tree->get_displayed_nodes;
-my @current_values = grep defined, @options[@clauses];
+my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
+push @$results, $tree->parse_sql( query => $current_search->{query} );
-my @new_values = RT::Interface::Web::QueryBuilder->process_query_additions();
+my $current_values = [ ( $tree->get_displayed_nodes() )[@clauses] ];
-push @$results, RT::Interface::Web::QueryBuilder->process_query( $tree, \@current_values, \@new_values, );
+push @$results, RT::Interface::Web::QueryBuilder->process_query( $tree, $current_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;
+my $parsed_query = $tree->get_query_option_list($current_values);
-my $queues = $tree->get_referenced_queues;
+$current_search->{'query'} = join ' ', map $_->{'TEXT'}, @$parsed_query;
# Deal with format changes
-my ( $new_format, $available_columns, $current_format ) = RT::Interface::Web::QueryBuilder->build_format_string(
+my ( $available_columns, $current_format );
+ ( $current_search->{'format'}, $available_columns, $current_format )
+ = RT::Interface::Web::QueryBuilder->build_format_string(
%{ Jifty->web->request->arguments },
queues => $queues,
- format => $query->{'format'}
-);
-
-$query->{'format'} = $new_format;
+ format => $current_search->{'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 @$results, RT::Interface::Web::QueryBuilder->save_search( $query, $saved_search );
-}
+push @$results, RT::Interface::Web::QueryBuilder->save_search( $current_search, $saved_search )
+ if ( Jifty->web->request->argument('saved_search_save') || Jifty->web->request->argument('saved_search_copy') );
# 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'},
- }
-);
-
-# Show the results, if we were asked.
-my $query_string = '';
+Jifty->web->session->set( 'CurrentSearchHash', { %$saved_search, %$current_search, } );
# 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);
+ $querystring = 'new_query=1';
+} elsif ( $current_search->{'query'} ) {
+ $querystring = RT::Interface::Web->format_query_params(%$current_search);
}
-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?" . $querystring )
+ if ( Jifty->web->request->argument('do_search') );
</%INIT>
<%ARGS>
- at clauses => ()
</%ARGS>
commit 88166e3ac034c1bf395c3c34c8006b7cb1dc5523
Author: Jesse Vincent <jesse at bestpractical.com>
Date: Mon Nov 9 19:09:10 2009 -0500
make it not explode
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index b845686..ab7b82f 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -104,10 +104,7 @@
</form>
</&>
<%INIT>
-
my $querystring = '';
-my @clauses = ();
-
my ( $saved_search, $current_search, $results ) = RT::Interface::Web::QueryBuilder->setup_query();
my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
@@ -151,4 +148,5 @@ Jifty->web->redirect( Jifty->web->url . "Search/Results.html?" . $querystring )
</%INIT>
<%ARGS>
+ at clauses => ()
</%ARGS>
commit 16cd93818ea0b28f345233e9ea091dd8b7a50be7
Author: Jesse Vincent <jesse at bestpractical.com>
Date: Mon Nov 9 19:24:15 2009 -0500
unraveling the mysteries of "selected_clauses"
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index ab7b82f..1cf4530 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -105,12 +105,13 @@
</&>
<%INIT>
my $querystring = '';
+my $selected_clauses = Jifty->web->request->argument('clauses');
my ( $saved_search, $current_search, $results ) = RT::Interface::Web::QueryBuilder->setup_query();
my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
push @$results, $tree->parse_sql( query => $current_search->{query} );
-my $current_values = [ ( $tree->get_displayed_nodes() )[@clauses] ];
+my $current_values = [ ( $tree->get_displayed_nodes() )[ref $selected_clauses ? @$selected_clauses : $selected_clauses] ];
push @$results, RT::Interface::Web::QueryBuilder->process_query( $tree, $current_values );
@@ -146,7 +147,3 @@ Jifty->web->redirect( Jifty->web->url . "Search/Results.html?" . $querystring )
if ( Jifty->web->request->argument('do_search') );
</%INIT>
-
-<%ARGS>
- at clauses => ()
-</%ARGS>
commit db86191ec66d3ca6ae99e50806852f76ec0332e5
Author: Jesse Vincent <jesse at bestpractical.com>
Date: Mon Nov 9 20:02:46 2009 -0500
yay! now Search/Build.html has no init block
diff --git a/lib/RT/Dispatcher.pm b/lib/RT/Dispatcher.pm
index 13da26a..485d2f4 100644
--- a/lib/RT/Dispatcher.pm
+++ b/lib/RT/Dispatcher.pm
@@ -178,6 +178,63 @@ on qr{^/Ticket/Graphs/(\d+)} => run {
show( '/Ticket/Graphs/Render' );
};
+before qr{^/Search/Build.html} => run {
+ my $querystring = '';
+ my $selected_clauses = Jifty->web->request->argument('clauses');
+ my ( $saved_search, $current_search, $results ) = RT::Interface::Web::QueryBuilder->setup_query();
+
+ my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
+ push @$results, $tree->parse_sql( query => $current_search->{query} );
+
+ my $current_values
+ = [ ( $tree->get_displayed_nodes() )[ ref $selected_clauses ? @$selected_clauses : $selected_clauses ] ];
+
+ push @$results, RT::Interface::Web::QueryBuilder->process_query( $tree, $current_values );
+
+ my $queues = $tree->get_referenced_queues;
+ my $parsed_query = $tree->get_query_option_list($current_values);
+
+ $current_search->{'query'} = join ' ', map $_->{'TEXT'}, @$parsed_query;
+
+ # Deal with format changes
+ my ( $available_columns, $current_format );
+ ( $current_search->{'format'}, $available_columns, $current_format )
+ = RT::Interface::Web::QueryBuilder->build_format_string(
+ %{ Jifty->web->request->arguments },
+ queues => $queues,
+ format => $current_search->{'format'}
+ );
+
+ # if we're asked to save the current search, save it
+ push @$results, RT::Interface::Web::QueryBuilder->save_search( $current_search, $saved_search )
+ if ( Jifty->web->request->argument('saved_search_save') || Jifty->web->request->argument('saved_search_copy') );
+
+ # Push the updates into the session so we don't lose 'em
+ Jifty->web->session->set( 'CurrentSearchHash', { %$saved_search, %$current_search, } );
+
+ # Build a query_string for the tabs
+ if ( Jifty->web->request->argument('new_query') ) {
+ $querystring = 'new_query=1';
+ } elsif ( $current_search->{'query'} ) {
+ $querystring = RT::Interface::Web->format_query_params(%$current_search);
+ }
+
+ Jifty->web->redirect( Jifty->web->url . "Search/Results.html?" . $querystring )
+ if ( Jifty->web->request->argument('do_search') );
+
+ set current_search => $current_search;
+ set current_format => $current_format;
+ set available_columns => $available_columns;
+ set saved_search => $saved_search;
+ set results => $results;
+ set parsed_query => $parsed_query;
+ set querystring => $querystring;
+ set queues => $queues;
+
+};
+
+
+
# Backward compatibility with old RT URLs
before '/NoAuth/Logout.html' => run { redirect '/logout' };
diff --git a/share/html/Search/Build.html b/share/html/Search/Build.html
index 1cf4530..116efc4 100644
--- a/share/html/Search/Build.html
+++ b/share/html/Search/Build.html
@@ -103,47 +103,13 @@
</span>
</form>
</&>
-<%INIT>
-my $querystring = '';
-my $selected_clauses = Jifty->web->request->argument('clauses');
-my ( $saved_search, $current_search, $results ) = RT::Interface::Web::QueryBuilder->setup_query();
-
-my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND');
-push @$results, $tree->parse_sql( query => $current_search->{query} );
-
-my $current_values = [ ( $tree->get_displayed_nodes() )[ref $selected_clauses ? @$selected_clauses : $selected_clauses] ];
-
-push @$results, RT::Interface::Web::QueryBuilder->process_query( $tree, $current_values );
-
-my $queues = $tree->get_referenced_queues;
-my $parsed_query = $tree->get_query_option_list($current_values);
-
-$current_search->{'query'} = join ' ', map $_->{'TEXT'}, @$parsed_query;
-
-# Deal with format changes
-my ( $available_columns, $current_format );
- ( $current_search->{'format'}, $available_columns, $current_format )
- = RT::Interface::Web::QueryBuilder->build_format_string(
- %{ Jifty->web->request->arguments },
- queues => $queues,
- format => $current_search->{'format'}
- );
-
-# if we're asked to save the current search, save it
-push @$results, RT::Interface::Web::QueryBuilder->save_search( $current_search, $saved_search )
- if ( Jifty->web->request->argument('saved_search_save') || Jifty->web->request->argument('saved_search_copy') );
-
-# Push the updates into the session so we don't lose 'em
-Jifty->web->session->set( 'CurrentSearchHash', { %$saved_search, %$current_search, } );
-
-# Build a query_string for the tabs
-if ( Jifty->web->request->argument('new_query') ) {
- $querystring = 'new_query=1';
-} elsif ( $current_search->{'query'} ) {
- $querystring = RT::Interface::Web->format_query_params(%$current_search);
-}
-
-Jifty->web->redirect( Jifty->web->url . "Search/Results.html?" . $querystring )
- if ( Jifty->web->request->argument('do_search') );
-
-</%INIT>
+<%args>
+$available_columns
+$current_search
+$saved_search
+$current_format
+$results
+$parsed_query
+$querystring
+$queues
+</%args>
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list