
jesse at bestpractical
Nov 6, 2009, 9:04 PM
Post #1 of 1
(58 views)
Permalink
|
|
rt branch, librarize-search-logic, updated. 9983649af1cfb9b516d122a4bb453bd31f277e1a
|
|
The branch, librarize-search-logic has been updated via 9983649af1cfb9b516d122a4bb453bd31f277e1a (commit) via 8d398ddac8b27c12e7cae11588ed2f0c2fc959b0 (commit) via e7a3c2ed6a7e575e86ef8011a14f5ba4c1edf3c7 (commit) via ef6f9eea610a6c8fc063d345865104b35540c5a0 (commit) from d23386b2de2a02a150e2f7e664a4d9b931ee72e7 (commit) Summary of changes: lib/RT/Interface/Web/QueryBuilder.pm | 40 +++++++++++++++---- share/html/Search/Build.html | 71 ++++++++++++++------------------- 2 files changed, 61 insertions(+), 50 deletions(-) - Log ----------------------------------------------------------------- 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); } ----------------------------------------------------------------------- _______________________________________________ Rt-commit mailing list Rt-commit[at]lists.bestpractical.com http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-commit
|