diff options
Diffstat (limited to 'rt/share/html/Search')
35 files changed, 0 insertions, 4672 deletions
diff --git a/rt/share/html/Search/Build.html b/rt/share/html/Search/Build.html deleted file mode 100644 index c5067d5d1..000000000 --- a/rt/share/html/Search/Build.html +++ /dev/null @@ -1,323 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -%# -%# Data flow here: -%# The page receives a Query from the previous page, and maybe arguments -%# corresponding to actions. (If it doesn't get a Query argument, it pulls -%# one out of the session hash. Also, it could be getting just a raw query from -%# Build/Edit.html (Advanced).) -%# -%# After doing some stuff with default arguments and saved searches, the ParseQuery -%# function (which is similar to, but not the same as, _parser in RT/Tickets_Overlay_SQL) -%# converts the Query into a RT::Interface::Web::QueryBuilder::Tree. This mason file -%# then adds stuff to or modifies the tree based on the actions that had been requested -%# by clicking buttons. It then calls GetQueryAndOptionList on the tree to generate -%# the SQL query (which is saved as a hidden input) and the option list for the Clauses -%# box in the top right corner. -%# -%# Worthwhile refactoring: the tree manipulation code for the actions could use some cleaning -%# up. The node-adding code is different in the "add" actions from in ParseQuery, which leads -%# to things like ParseQuery correctly not quoting numbers in numerical fields, while the "add" -%# action does quote it (this breaks SQLite). -%# -<& /Elements/Header, Title => $title &> -<& /Ticket/Elements/Tabs, - current_tab => "Search/Build.html?".$QueryString, - Title => $title, - %query, - SavedSearchId => $saved_search{'Id'}, - SavedChartSearchId => $ARGS{SavedChartSearchId}, -&> - -<form method="post" action="Build.html" name="BuildQuery"> -<input type="hidden" class="hidden" name="SavedSearchId" value="<% $saved_search{'Id'} %>" /> -<input type="hidden" class="hidden" name="SavedChartSearchId" value="<% $ARGS{'SavedChartSearchId'} %>" /> -<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'}, cfqueues => $queues &> -<& /Elements/Submit, Label => loc('Add these terms'), Name => 'AddClause'&> -<& /Elements/Submit, Label => loc('Add these terms and Search'), Name => 'DoSearch'&> -</div> - - -<div id="editquery"> -<& Elements/EditQuery, - %ARGS, - actions => \@actions, - optionlist => $optionlist, - Description => $saved_search{'Description'}, - &> -</div> -<div id="editsearches"> - <& Elements/EditSearches, %saved_search, CurrentSearch => \%query &> -</div> - -<span id="display-options"> -<& Elements/DisplayOptions, - %ARGS, %query, - AvailableColumns => $AvailableColumns, - CurrentFormat => $CurrentFormat, -&> -<& /Elements/Submit, Label => loc('Update format and Search'), Name => 'DoSearch', id=>"formatbuttons"&> -</span> -</form> - -<%INIT> -use RT::Interface::Web::QueryBuilder; -use RT::Interface::Web::QueryBuilder::Tree; - -$ARGS{SavedChartSearchId} ||= 'new'; - -my $title = loc("Query Builder"); - -my %query; -for( qw(Query Format OrderBy Order RowsPerPage) ) { - $query{$_} = $ARGS{$_}; -} - -my %saved_search; -my @actions = $m->comp( 'Elements/EditSearches:Init', %ARGS, Query => \%query, SavedSearch => \%saved_search); - -if ( $NewQuery ) { - - # 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 session out.. - delete $session{'CurrentSearchHash'}; - - # ..and the search results. - $session{'tickets'}->CleanSlate if defined $session{'tickets'}; -} - -{ # Attempt to load what we can from the session and preferences, set defaults - - my $current = $session{'CurrentSearchHash'}; - my $prefs = $session{'CurrentUser'}->UserObj->Preferences("SearchDisplay") || {}; - my $default = { Query => '', Format => '', OrderBy => 'id', Order => 'ASC', RowsPerPage => 50 }; - - for( qw(Query Format OrderBy Order RowsPerPage) ) { - $query{$_} = $current->{$_} unless defined $query{$_}; - $query{$_} = $prefs->{$_} unless defined $query{$_}; - $query{$_} = $default->{$_} unless defined $query{$_}; - } - - for( qw(Order OrderBy) ) { - if (ref $query{$_} eq "ARRAY") { - $query{$_} = join( '|', @{ $query{$_} } ); - } - } - if ( $query{'Format'} ) { - # Clean unwanted junk from the format - $query{'Format'} = $m->comp( '/Elements/ScrubHTML', Content => $query{'Format'} ); - } -} - -my $ParseQuery = sub { - my ($string, $results) = @_; - - my $tree = RT::Interface::Web::QueryBuilder::Tree->new('AND'); - @$results = $tree->ParseSQL( Query => $string, CurrentUser => $session{'CurrentUser'} ); - - return $tree; -}; - -my @parse_results; -my $tree = $ParseQuery->( $query{'Query'}, \@parse_results ); - -# if parsing went poorly, send them to the edit page to fix it -if ( @parse_results ) { - return $m->comp( "Edit.html", Query => $query{'Query'}, actions => \@actions ); -} - -my @options = $tree->GetDisplayedNodes; -my @current_values = grep defined, @options[@clauses]; -my @new_values = (); - -# {{{ Try to find if we're adding a clause -foreach my $arg ( keys %ARGS ) { - next unless $arg =~ m/^ValueOf(\w+|'CF.{.*?}')$/ - && ( ref $ARGS{$arg} eq "ARRAY" - ? grep $_ ne '', @{ $ARGS{$arg} } - : $ARGS{$arg} ne '' ); - - # We're adding a $1 clause - my $field = $1; - - my ($op, $value); - - #figure out if it's a grouping - my $keyword = $ARGS{ $field . "Field" } || $field; - - my ( @ops, @values ); - if ( ref $ARGS{ 'ValueOf' . $field } eq "ARRAY" ) { - # we have many keys/values to iterate over, because there is - # more than one CF with the same name. - @ops = @{ $ARGS{ $field . 'Op' } }; - @values = @{ $ARGS{ 'ValueOf' . $field } }; - } - else { - @ops = ( $ARGS{ $field . 'Op' } ); - @values = ( $ARGS{ 'ValueOf' . $field } ); - } - $RT::Logger->error("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 =~ /=/ ) { - if ( $op eq '=' ) { - $op = "IS"; - } - elsif ( $op eq '!=' ) { - $op = "IS NOT"; - } - - # This isn't "right", but... - # It has to be this way until #5182 is fixed - $value = "'NULL'"; - } - else { - $value =~ s/'/\\'/g; - $value = "'$value'" unless $value =~ /^\d+$/; - } - - my $clause = { - Key => $keyword, - Op => $op, - Value => $value - }; - - push @new_values, RT::Interface::Web::QueryBuilder::Tree->new($clause); - } -} - -# }}} - -push @actions, $m->comp('Elements/EditQuery:Process', - %ARGS, - Tree => $tree, - Selected => \@current_values, - New => \@new_values, -); - -# {{{ Rebuild $Query based on the additions / movements - -my $optionlist_arrayref; -($query{'Query'}, $optionlist_arrayref) = $tree->GetQueryAndOptionList(\@current_values); - -my $optionlist = join "\n", map { qq(<option value="$_->{INDEX}" $_->{SELECTED}>) - . (" " x (5 * $_->{DEPTH})) - . $m->interp->apply_escapes($_->{TEXT}, 'h') . qq(</option>) } @$optionlist_arrayref; - -# }}} - -my $queues = $tree->GetReferencedQueues; - -# {{{ Deal with format changes -my ( $AvailableColumns, $CurrentFormat ); -( $query{'Format'}, $AvailableColumns, $CurrentFormat ) = $m->comp( - 'Elements/BuildFormatString', - %ARGS, - cfqueues => $queues, - Format => $query{'Format'}, -); - -# }}} - -# if we're asked to save the current search, save it -push @actions, $m->comp( 'Elements/EditSearches:Save', %ARGS, Query => \%query, SavedSearch => \%saved_search); - -# {{{ Push the updates into the session so we don't loose 'em - -$session{'CurrentSearchHash'} = { - %query, - SearchId => $saved_search{'Id'}, - Object => $saved_search{'Object'}, - Description => $saved_search{'Description'}, -}; - -# }}} - -# {{{ Show the results, if we were asked. - -if ( $ARGS{'DoSearch'} ) { - $m->comp( 'Results.html', %query, SavedChartSearchId => $ARGS{'SavedChartSearchId'}, ); - $m->comp( '/Elements/Footer' ); - $m->abort; -} - -# }}} - -# {{{ Build a querystring for the tabs - -my $QueryString = ''; -if ($NewQuery) { - $QueryString = 'NewQuery=1'; -} -elsif ( $query{'Query'} ) { - $QueryString = $m->comp('/Elements/QueryString', %query ); -} - -# }}} - -</%INIT> - -<%ARGS> -$NewQuery => 0 -@clauses => () -</%ARGS> diff --git a/rt/share/html/Search/Bulk.html b/rt/share/html/Search/Bulk.html deleted file mode 100755 index f2ca45c26..000000000 --- a/rt/share/html/Search/Bulk.html +++ /dev/null @@ -1,448 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<& /Elements/Header, Title => $title &> -<& /Ticket/Elements/Tabs, - current_tab => "Search/Bulk.html", - Title => $title, - Format => $ARGS{'Format'}, # we don't want the locally modified one - Query => $Query, - Rows => $Rows, - OrderBy => $OrderBy, - Order => $Order, - SavedSearchId => $SavedSearchId, - SavedChartSearchId => $SavedChartSearchId, - &> - -<& /Elements/ListActions, actions => \@results &> -<form method="post" action="<% RT->Config->Get('WebPath') %>/Search/Bulk.html" enctype="multipart/form-data"> -% foreach my $var qw(Query Format OrderBy Order Rows Page SavedChartSearchId) { -<input type="hidden" class="hidden" name="<%$var%>" value="<%$ARGS{$var} || ''%>" /> -%} -<& /Elements/CollectionList, - Query => $Query, - DisplayFormat => $Format, - Format => $ARGS{'Format'}, - Verbatim => 1, - AllowSorting => 1, - OrderBy => $OrderBy, - Order => $Order, - Rows => $Rows, - Page => $Page, - BaseURL => RT->Config->Get('WebPath')."/Search/Bulk.html?", - Class => 'RT::Tickets' - &> - -% $m->callback(CallbackName => 'AfterTicketList', ARGSRef => \%ARGS); - -<hr /> - -<& /Elements/Submit, Label => loc('Update'), CheckAll => 1, ClearAll => 1 &> -<br /> -<&|/Widgets/TitleBox, title => $title &> -<table> -<tr> -<td valign="top"> -<table> -<tr><td class="label"> <&|/l&>Make Owner</&>: </td> -<td class="value"> <& /Elements/SelectOwner, Name => "Owner" &> (<input type="checkbox" class="checkbox" name="ForceOwnerChange" /> <&|/l&>Force change</&>) </td></tr> -<tr><td class="label"> <&|/l&>Add Requestor</&>: </td> -<td class="value"> <input name="AddRequestor" size="20" /> </td></tr> -<tr><td class="label"> <&|/l&>Remove Requestor</&>: </td> -<td class="value"> <input name="DeleteRequestor" size="20" /> </td></tr> -<tr><td class="label"> <&|/l&>Add Cc</&>: </td> -<td class="value"> <input name="AddCc" size="20" /> </td></tr> -<tr><td class="label"> <&|/l&>Remove Cc</&>: </td> -<td class="value"> <input name="DeleteCc" size="20" /> </td></tr> -<tr><td class="label"> <&|/l&>Add AdminCc</&>: </td> -<td class="value"> <input name="AddAdminCc" size="20" /> </td></tr> -<tr><td class="label"> <&|/l&>Remove AdminCc</&>: </td> -<td class="value"> <input name="DeleteAdminCc" size="20" /> </td></tr> -</table> -</td> -<td valign="top"> -<table> -<tr><td class="label"> <&|/l&>Make subject</&>: </td> -<td class="value"> <input name="Subject" size="20" /> </td></tr> -<tr><td class="label"> <&|/l&>Make priority</&>: </td> -<td class="value"> <& /Elements/SelectPriority, Name => "Priority" &> </td></tr> -<tr><td class="label"> <&|/l&>Make queue</&>: </td> -<td class="value"> <& /Elements/SelectQueue, Name => "Queue" &> </td></tr> -<tr><td class="label"> <&|/l&>Make Status</&>: </td> -<td class="value"> <& /Elements/SelectStatus, Name => "Status" &> </td></tr> -<tr><td class="label"> <&|/l&>Make date Starts</&>: </td> -<td class="value"> <& /Elements/SelectDate, Name => "Starts_Date", ShowTime => 0, Default => '' &> </td></tr> -<tr><td class="label"> <&|/l&>Make date Started</&>: </td> -<td class="value"> <& /Elements/SelectDate, Name => "Started_Date", ShowTime => 0, Default => '' &> </td></tr> -<tr><td class="label"> <&|/l&>Make date Told</&>: </td> -<td class="value"> <& /Elements/SelectDate, Name => "Told_Date", ShowTime => 0, Default => '' &> </td></tr> -<tr><td class="label"> <&|/l&>Make date Due</&>: </td> -<td class="value"> <& /Elements/SelectDate, Name => "Due_Date", ShowTime => 0, Default => '' &> </td></tr> -<tr><td class="label"> <&|/l&>Make date Resolved</&>: </td> -<td class="value"> <& /Elements/SelectDate, Name => "Resolved_Date", ShowTime => 0, Default => '' &> </td></tr> -</table> - -</td> -</tr> -</table> -</&> -<&| /Widgets/TitleBox, title => loc('Add comments or replies to selected tickets') &> -<table> -<tr><td align="right"><&|/l&>Update Type</&>:</td> -<td><select name="UpdateType"> - <option value="private" ><&|/l&>Comments (not sent to requestors)</&></option> -<option value="response" ><&|/l&>Reply to requestors</&></option> -</select> -</td></tr> -<tr><td align="right"><&|/l&>Subject</&>:</td><td> <input name="UpdateSubject" size="60" value="" /></td></tr> -% while (my $CF = $TxnCFs->Next()) { -<tr> -<td align="right"><% $CF->Name %>:</td> -<td><& /Elements/EditCustomField, - CustomField => $CF, - NamePrefix => "Object-RT::Transaction--CustomField-" - &><em><% $CF->FriendlyType %></em></td> -</td></tr> -% } # end if while -% if (exists $session{'Attachments'}) { -<tr><td><&|/l&>Attached file</&>:</td> -<td> -<&|/l&>Check box to delete</&><br /> -% foreach my $attach_name (keys %{$session{'Attachments'}}) { -<input type="checkbox" class="checkbox" name="DeleteAttach-<%$attach_name%>" value="1" /><%$attach_name%><br /> -% } # end of foreach -</td> -</tr> -% } # end of if - - <tr><td align="right"><&|/l&>Attach</&>:</td><td><input name="Attach" type="file" /> - <input type="submit" class="button" name="AddMoreAttach" value="<&|/l&>Add More Files</&>" /> - <input type="hidden" class="hidden" name="UpdateAttach" value="1" /></td></tr> - <tr><td class="labeltop"><&|/l&>Message</&>:</td><td> -%# Currently, bulk update always starts with Comment not Reply selected, so we check this unconditionally -% my $IncludeSignature = RT->Config->Get('MessageBoxIncludeSignatureOnComment'); -<& /Elements/MessageBox, Name => "UpdateContent", IncludeSignature => $IncludeSignature &> - </td></tr> - </table> - -</&> - -<%perl> -my $cfs = RT::CustomFields->new($session{'CurrentUser'}); -$cfs->LimitToGlobal(); -$cfs->LimitToQueue($_) for keys %$seen_queues; -</%perl> - -% if ($cfs->Count) { -<&|/Widgets/TitleBox, title => loc('Edit Custom Fields'), color => "#336633"&> -<table> -<tr> -<th><&|/l&>Name</&></th> -<th><&|/l&>Add values</&></th> -<th><&|/l&>Delete values</&></th> -</tr> -% while (my $cf = $cfs->Next()) { -<tr> -<td class="label"><% loc($cf->Name) %><br /> -<em>(<%$cf->FriendlyType%>)</em></td> -% my $rows = 5; -% my @add = (NamePrefix => 'Bulk-Add-CustomField-', CustomField => $cf, Rows => $rows, Multiple => ($cf->MaxValues ==1 ? 0 : 1) , Cols => 25); -% my @del = (NamePrefix => 'Bulk-Delete-CustomField-', CustomField => $cf, Rows => $rows, Multiple => 1, Cols => 25); -% if ($cf->Type eq 'Select') { -<td><& /Elements/EditCustomFieldSelect, @add &></td> -<td><& /Elements/EditCustomFieldSelect, @del &></td> -% } elsif ($cf->Type eq 'Combobox') { -<td><& /Elements/EditCustomFieldCombobox, @add &></td> -<td><& /Elements/EditCustomFieldCombobox, @del &></td> -% } elsif ($cf->Type eq 'Freeform') { -<td><& /Elements/EditCustomFieldFreeform, @add &></td> -<td><& /Elements/EditCustomFieldFreeform, @del &></td> -% } elsif ($cf->Type eq 'Text') { -<td><& /Elements/EditCustomFieldText, @add &></td> -<td> </td> -% } else { -% $RT::Logger->crit("Unknown CustomField type: " . $cf->Type); -% } -</tr> -% } -</table> -</&> -% } - -<&|/Widgets/TitleBox, title => loc('Edit Links'), color => "#336633"&> -<em><&|/l&>Enter tickets or URIs to link tickets to. Separate multiple entries with spaces.</&></em><br /> -<& /Ticket/Elements/BulkLinks, Tickets => $Tickets &> -</&> - -<& /Elements/Submit, Label => loc('Update') &> - - -</form> - - -<%INIT> -unless ( defined $Rows ) { - $Rows = $RowsPerPage; - $ARGS{Rows} = $RowsPerPage; -} -my $title = loc("Update multiple tickets"); - -# Iterate through the ARGS hash and remove anything with a null value. -map ( $ARGS{$_} =~ /^$/ && ( delete $ARGS{$_} ), keys %ARGS ); - -my (@results); - -# {{{ deal with deleting uploaded attachments -foreach my $key (keys %ARGS) { - if ($key =~ m/^DeleteAttach-(.+)$/) { - delete $session{'Attachments'}{$1}; - } - $session{'Attachments'} = { %{$session{'Attachments'} || {}} }; -} -# }}} - -# {{{ store the uploaded attachment in session -if ($ARGS{'Attach'}) { # attachment? - my $attachment = MakeMIMEEntity( - AttachmentFieldName => 'Attach' - ); - - my $file_path = Encode::decode_utf8("$ARGS{'Attach'}"); - $session{'Attachments'} = { - %{$session{'Attachments'} || {}}, - $file_path => $attachment, - }; -} -# }}} - -# delete temporary storage entry to make WebUI clean -unless (keys %{$session{'Attachments'}} and $ARGS{'UpdateAttach'}) { - delete $session{'Attachments'}; -} -# }}} - -$Page ||= 1; - -$Format ||= RT->Config->Get('DefaultSearchResultFormat'); - -# inject _CHECKBOX to the first field. -$Format =~ s/'?([^']+)'?,/'___CHECKBOX__$1',/; - -my $Tickets = RT::Tickets->new( $session{'CurrentUser'} ); -$Tickets->FromSQL($Query); -if ( $OrderBy =~ /\|/ ) { - - # Multiple Sorts - my @OrderBy = split /\|/, $OrderBy; - my @Order = split /\|/, $Order; - $Tickets->OrderByCols( - map { { FIELD => $OrderBy[$_], ORDER => $Order[$_] } } - ( 0 .. $#OrderBy ) ); -} -else { - $Tickets->OrderBy( FIELD => $OrderBy, ORDER => $Order ); -} - -$Tickets->RowsPerPage($Rows) if ($Rows); -$Tickets->GotoPage( $Page - 1 ); # SB uses page 0 as the first page - -Abort( loc("No search to operate on.") ) unless ($Tickets); - -# build up a list of all custom fields for tickets that we're displaying, so -# we can display sane edit widgets. - -my $fields = {}; -my $seen_queues = {}; -while ( my $ticket = $Tickets->Next ) { - next if $seen_queues->{ $ticket->Queue }++; - - my $custom_fields = $ticket->CustomFields; - while ( my $field = $custom_fields->Next ) { - $fields->{ $field->id } = $field; - } -} - -#Iterate through each ticket we've been handed -my @linkresults; -my %queues; - -$Tickets->RedoSearch(); - -# pull out the labels for any custom fields we want to update - -my $cf_del_keys; -@$cf_del_keys = grep { /^Bulk-Delete-CustomField/ } keys %ARGS; -my $cf_add_keys; -@$cf_add_keys = grep { /^Bulk-Add-CustomField/ } keys %ARGS; - -unless ( $ARGS{'AddMoreAttach'} ) { - # Add session attachments if any to be processed by ProcessUpdateMessage - $ARGS{'UpdateAttachments'} = $session{'Attachments'} if ( $session{'Attachments'} ); - - while ( my $Ticket = $Tickets->Next ) { - next unless ( $ARGS{ "UpdateTicket" . $Ticket->Id } ); - - #Update the links - $ARGS{'id'} = $Ticket->id; - $queues{ $Ticket->QueueObj->Id }++; - - my @updateresults = ProcessUpdateMessage( - TicketObj => $Ticket, - ARGSRef => \%ARGS, - ); - - #Update the basics. - my @basicresults = - ProcessTicketBasics( TicketObj => $Ticket, ARGSRef => \%ARGS ); - my @dateresults = - ProcessTicketDates( TicketObj => $Ticket, ARGSRef => \%ARGS ); - - #Update the watchers - my @watchresults = - ProcessTicketWatchers( TicketObj => $Ticket, ARGSRef => \%ARGS ); - - foreach my $type qw(MergeInto DependsOn MemberOf RefersTo) { - $ARGS{ $Ticket->id . "-" . $type } = $ARGS{"Ticket-$type"}; - $ARGS{ $type . "-" . $Ticket->id } = $ARGS{"$type-Ticket"}; - } - @linkresults = - ProcessTicketLinks( TicketObj => $Ticket, ARGSRef => \%ARGS ); - foreach my $type qw(MergeInto DependsOn MemberOf RefersTo) { - delete $ARGS{ $type . "-" . $Ticket->id }; - delete $ARGS{ $Ticket->id . "-" . $type }; - } - - my @cfresults; - - foreach my $list ( $cf_add_keys, $cf_del_keys ) { - next unless $list->[0]; - - - my $op; - if ( $list->[0] =~ /Add/ ) { - $op = 'add'; - - } - elsif ( $list->[0] =~ /Del/ ) { - $op = 'del'; - } - else { - $RT::Logger->crit( - "Got an op that was neither add nor delete. can never happen" - . $list->[0] ); - last; - } - - foreach my $key (@$list) { - my ( $cfid, $cf ); - next if $key =~ /CustomField-(\d+)-Category$/; - if ( $key =~ /CustomField-(\d+)-/ ) { - $cfid = $1; - $cf = RT::CustomField->new( $session{'CurrentUser'} ); - $cf->Load($cfid); - } - else {next} - my @values = - ref( $ARGS{$key} ) eq 'ARRAY' - ? @{ $ARGS{$key} } - : ( $ARGS{$key} ); - map { s/(\r\n|\r)/\n/g; } @values; # fix the newlines - # now break the multiline values into multivalues - @values = map { split( /\n/, $_ ) } @values - unless ( $cf->SingleValue ); - - my $current_values = $Ticket->CustomFieldValues($cfid); - foreach my $value (@values) { - if ( $op eq 'del' && $current_values->HasEntry($value) ) { - my ( $id, $msg ) = $Ticket->DeleteCustomFieldValue( - Field => $cfid, - Value => $value - ); - push @cfresults, $msg; - } - - elsif ( $op eq 'add' && !$current_values->HasEntry($value) ) { - my ( $id, $msg ) = $Ticket->AddCustomFieldValue( - Field => $cfid, - Value => $value - ); - push @cfresults, $msg; - } - } - } - } - my @tempresults = ( - @watchresults, @basicresults, @dateresults, - @updateresults, @linkresults, @cfresults - ); - - @tempresults = - map { loc( "Ticket [_1]: [_2]", $Ticket->Id, $_ ) } @tempresults; - - @results = ( @results, @tempresults ); - } - - # Cleanup WebUI - delete $session{'Attachments'}; -} - -my $TxnCFs = RT::CustomFields->new( $session{CurrentUser} ); -$TxnCFs->LimitToLookupType( RT::Transaction->CustomFieldLookupType ); -$TxnCFs->LimitToGlobalOrObjectId( sort keys %queues ); - -</%INIT> -<%args> -$Format => undef -$Page => 1 -$Rows => undef -$RowsPerPage => undef -$Order => 'ASC' -$OrderBy => 'id' -$Query => undef -$SavedSearchId => undef -$SavedChartSearchId => undef -</%args> diff --git a/rt/share/html/Search/Calendar.html b/rt/share/html/Search/Calendar.html deleted file mode 100644 index 9d2b6f546..000000000 --- a/rt/share/html/Search/Calendar.html +++ /dev/null @@ -1,238 +0,0 @@ -<%args> -$Month => (localtime)[4] -$Year => (localtime)[5] + 1900 -$Query => undef -$Format => undef -$Order => undef -$OrderBy => undef -$RowsPerPage => undef -$NewQuery => 0 -</%args> - -<& /Elements/Header, Title => $title &> -<& /Ticket/Elements/Tabs, - current_tab => "Search/Calendar.html?$QueryString", - Title => $title &> -<&| /Widgets/TitleBox, - title => loc('Calendar for ') . $rtdate->GetMonth($Month) . " $Year" , - title_class=> 'inverse', - color => "#993333" &> - -<table width="100%"> -<tr> -<td align="left"> -% my ($PMonth, $PYear) = ($Month - 1, $Year); -% if ($PMonth < 0) { -% $PYear--; -% $PMonth = 11; -% } -<a href="<%$RT::WebPath%>/Search/Calendar.html?Month=<%$PMonth%>&Year=<%$PYear%>&<%$QueryString%>">«<%$rtdate->GetMonth($PMonth)%></a> -</td> -<th align="center"> - <font size="+1"><% $rtdate->GetMonth($Month). " $Year" %></font> -</th> -<td align="right"> -% my ($NMonth, $NYear) = ($Month + 1, $Year); -% if ($NMonth > 11) { -% $NYear++; -% $NMonth = 0; -% } -<a href="<%$RT::WebPath%>/Search/Calendar.html?Month=<%$NMonth%>&Year=<%$NYear%>&<%$QueryString%>"><%$rtdate->GetMonth($NMonth)%>»</a> -</td> -</tr> -</table> - -<table class="rtxcalendar"> - -<thead> -<tr> -% for ( @{$week{$weekstart}} ) { -<th width="14%"><%$rtdate->GetWeekday($_)%></th> -% } -</tr> -</thead> - -<tbody> -<tr> -% while ($date <= $end) { -% -% my $offmonth = $date->month != ($Month + 1); -% my $is_today = (DateTime->compare($today, $date) == 0); -% my $is_yesterday = (DateTime->compare($yesterday, $date) == 0); -% my $is_aweekago = (DateTime->compare($aweekago, $date) == 0); - - <td class="<% $offmonth ? 'offmonth' - : $is_today ? 'today' - : $is_yesterday ? 'yesterday' - : $is_aweekago ? 'aweekago' - : '' - %>" - > - <div class="<% $is_today ? 'todays' - : $offmonth ? 'offmonth' - :'' %>calendardate" - ><%$date->day%></div> - -% my $sp = 3; -% for my $t ( @{ $Tickets{$date->strftime("%F")} } ) { -% $sp--; - <& /Elements/CalendarEvent, Object => $t, Date => $date, DateTypes => \%DateTypes &> -% } - <% ($sp>0) ? '<BR>'x$sp : '' |n %> - - </td> - -% $date = $set->next($date); -% if ( $date->day_of_week == $startday_of_week ) { - </tr><tr> -% } - -% } -</tr> -</tbody> -</table> - -<table width="100%"> -<tr> -<td align="left"> -<a href="<%$RT::WebPath%>/Search/Calendar.html?Month=<%$PMonth%>&Year=<%$PYear%>&<%$QueryString%>">«<%$rtdate->GetMonth($PMonth)%></a> -</td> - -<td valign="top" align="center"> -<form action="<%$RT::WebPath%>/Search/Calendar.html?<%$QueryString%>" method="post"> - -<select name="Month"> -% for (0..11) { -<option value="<%$_%>" <% $_ == $Month ? 'selected' : ''%> ><%$rtdate->GetMonth($_)%></option> -% } -</select> -% my $year = (localtime)[5] + 1900; -<select name="Year"> -% for ( ($year-5) .. ($year+5)) { -<option value="<%$_%>" <% $_ == $Year ? 'selected' : ''%>><%$_%></option> -% } -</select> - -%# <& /Elements/Submit&> -<input type="submit" value="<% loc('Submit') %>" class="button" /> - -</form> -</td> - -<td align="right"> -<a href="<%$RT::WebPath%>/Search/Calendar.html?Month=<%$NMonth%>&Year=<%$NYear%>&<%$QueryString%>"><%$rtdate->GetMonth($NMonth)%>»</a> -</td> -</tr> -</table> - -<table width="100%"> -<tr> - -<td valign="top" rowspan=9> - <BR> - <a href="<%$RT::WebPath%>/Prefs/Calendar.html">Calendar Preferences and Help</a> -</td> - -% foreach my $legend (keys %legend) { - <tr> - <td align="right"> - <img src="<%$RT::WebImagesURL%>/<%$legend%>.png" /> - </td> - <td align="left"> -% my $more = 0; -% foreach ( @{$legend{$legend}} ) { - <% $more++ ? ', ' : '' %> - <&|/l&><% $_ %></&> -% } - </td> - </tr> -% } - -</table> - -</&> - -<%ONCE> - -my %legend = ( - 'created' => ['Created'], - 'due' => ['Due'], - 'resolved' => ['Resolved'], - 'updated' => ['Last Updated'], - 'created_due' => ['Created','Due'], - 'reminder' => ['Reminders'], - 'started' => ['Started'], - 'starts_due' => ['Starts','Due'], -); - -</%ONCE> -<%INIT> -use RTx::Calendar qw(FirstDay LastDay); - -my $title = loc("Calendar"); - -my @DateTypes = qw/Created Starts Started Due LastUpdated Resolved/; - -my $rtdate = RT::Date->new($session{'CurrentUser'}); - -my $weekstart = 'Sunday'; #RT::SiteConfig? user pref? -my %week = ( - 'Saturday' => [6,0..5], - 'Sunday' => [0..6], - 'Monday' => [1..6,0], -); -my $startday_of_week = ${$week{$weekstart}}[0] || 7; -my $endday_of_week = ${$week{$weekstart}}[-1] || 7; - -my $today = DateTime->today; -my $yesterday = $today->clone->subtract( days=>1 ); -my $aweekago = $today->clone->subtract( days=>7 ); -my $date = FirstDay($Year, $Month + 1, $startday_of_week ); -my $end = LastDay ($Year, $Month + 1, $endday_of_week ); - -# use this to loop over days until $end -my $set = DateTime::Set->from_recurrence( - next => sub { $_[0]->truncate( to => 'day' )->add( days => 1 ) } -); - -my $QueryString = - $m->comp( - '/Elements/QueryString', - Query => $Query, - Format => $Format, - Order => $Order, - OrderBy => $OrderBy, - Rows => $RowsPerPage - ) - if ($Query); - -$QueryString ||= 'NewQuery=1'; - -# Default Query and Format -my $TempFormat = "__Starts__ __Due__"; -my $TempQuery = "( Status = 'new' OR Status = 'open' OR Status = 'stalled') - AND ( Owner = '" . $session{CurrentUser}->Id ."' OR Owner = 'Nobody' ) - AND ( Type = 'reminder' OR 'Type' = 'ticket' )"; - -if ( my $Search = RTx::Calendar::SearchDefaultCalendar($session{CurrentUser}) ) { - $TempFormat = $Search->SubValue('Format'); - $TempQuery = $Search->SubValue('Query'); -} - -# we overide them if needed -$TempQuery = $Query if $Query; -$TempFormat = $Format if $Format; - -# we search all date types in Format string -my @Dates = grep { $TempFormat =~ m/__${_}(Relative)?__/ } @DateTypes; - -# used to display or not a date in Element/CalendarEvent -my %DateTypes = map { $_ => 1 } @Dates; - -$TempQuery .= RTx::Calendar::DatesClauses(\@Dates, $date->strftime("%F"), $end->strftime("%F")); - -# print STDERR ("-" x 30), "\n", $TempQuery, "\n"; - -my %Tickets = RTx::Calendar::FindTickets($session{'CurrentUser'}, $TempQuery, \@Dates, $date->strftime("%F"), $end->strftime("%F")); - -</%INIT> diff --git a/rt/share/html/Search/Chart b/rt/share/html/Search/Chart deleted file mode 100644 index abee3e52a..000000000 --- a/rt/share/html/Search/Chart +++ /dev/null @@ -1,204 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -$Query => "id > 0" -$PrimaryGroupBy => 'Queue' -$SecondaryGroupBy => undef -$ChartStyle => 'bars' -</%args> -<%init> -my $chart_class; -use GD; -use GD::Text; - -if ($ChartStyle eq 'pie') { - require GD::Graph::pie; - $chart_class = "GD::Graph::pie"; -} else { - require GD::Graph::bars; - $chart_class = "GD::Graph::bars"; -} - -use RT::Report::Tickets; -my $tix = RT::Report::Tickets->new( $session{'CurrentUser'} ); - -my ($count_name, $value_name) = $tix->SetupGroupings( - Query => $Query, GroupBy => $PrimaryGroupBy, -); - -my %class = ( - Queue => 'RT::Queue', - Owner => 'RT::User', - Creator => 'RT::User', - LastUpdatedBy => 'RT::User', -); -my $class = $class{ $PrimaryGroupBy }; - -my %data; -my $max_value = 0; -my $max_key_length = 0; -while ( my $entry = $tix->Next ) { - my $key; - if ( $class ) { - my $q = $class->new( $session{'CurrentUser'} ); - $q->Load( $entry->LabelValue( $value_name ) ); - $key = $q->Name; - } - else { - $key = $entry->LabelValue($value_name); - } - $key ||= '(no value)'; - - my $value = $entry->__Value( $count_name ); - if ($chart_class eq 'GD::Graph::pie') { - $key = loc($key) ." - ". $value; - } else { - $key = loc($key); - } - $data{ $key } = $value; - $max_value = $value if $max_value < $value; - $max_key_length = length $key if $max_key_length < length $key; -} - -unless (keys %data) { - $data{''} = 0; -} - - -my $chart = $chart_class->new( 600 => 400 ); -$chart->set( pie_height => 60 ) if $chart_class eq 'GD::Graph::pie'; -my %font_config = RT->Config->Get('ChartFont'); -my $font = $font_config{ $session{CurrentUser}->UserObj->Lang || '' } - || $font_config{'others'}; -$chart->set_title_font( $font, 16 ) if $chart->can('set_title_font'); -$chart->set_legend_font( $font, 16 ) if $chart->can('set_legend_font'); -$chart->set_x_label_font( $font, 14 ) if $chart->can('set_x_label_font'); -$chart->set_y_label_font( $font, 14 ) if $chart->can('set_y_label_font'); -$chart->set_label_font( $font, 14 ) if $chart->can('set_label_font'); -$chart->set_x_axis_font( $font, 12 ) if $chart->can('set_x_axis_font'); -$chart->set_y_axis_font( $font, 12 ) if $chart->can('set_y_axis_font'); -$chart->set_values_font( $font, 12 ) if $chart->can('set_values_font'); -$chart->set_value_font( $font, 12 ) if $chart->can('set_value_font'); - -# Pie charts don't like having no input, so we show a special image -# that indicates an error message. Because this is used in an <img> -# context, it can't be a simple error message. Without this check, -# the chart will just be a non-loading image. -if ($tix->Count == 0) { - my $plot = GD::Image->new(600 => 400); - $plot->colorAllocate(255, 255, 255); # background - my $black = $plot->colorAllocate(0, 0, 0); - - require GD::Text::Wrap; - my $error = GD::Text::Wrap->new($plot, - color => $black, - text => loc("No tickets found."), - ); - $error->set_font( $font, 16 ); - $error->draw(0, 0); - - $m->comp( 'SELF:Plot', plot => $plot, %ARGS ); -} - -if ($chart_class eq "GD::Graph::bars") { - $chart->set( - x_label => $tix->Label( $PrimaryGroupBy ), - y_label => loc('Tickets'), - show_values => 1, - bar_spacing => 5, - bargroup_spacing => 10, - x_label_position => 0.6, - y_label_position => 0.6, - values_space => -1, -# the following line to make sure there's enough space for values to show - y_max_value => 5*(int($max_value/5) + 2), -# if there're too many bars or at least one key is too long, use vertical - x_labels_vertical => ( keys(%data) * $max_key_length > 60 ) ? 1 : 0, - ); -} - -# refine values' colors, with both Color::Scheme's help and my own tweak -$chart->{dclrs} = [ - '66cc66', 'ff6666', 'ffcc66', '663399', - '3333cc', - '339933', '993333', '996633', '663399', - '33cc33', 'cc3333', 'cc9933', '6633cc' -]; - -{ - no warnings 'redefine'; - *GD::Graph::pick_data_clr = sub { - my $self = shift; - my $color_hex = $self->{dclrs}[ $_[0] % @{ $self->{dclrs} } - 1 ]; - return map { hex } ( $color_hex =~ /(..)(..)(..)/ ); - }; -} - -my $plot = $chart->plot( [ [sort keys %data], [map $data{$_}, sort keys %data] ] ) or die $chart->error; -$m->comp( 'SELF:Plot', plot => $plot, %ARGS ); -</%init> - -<%METHOD Plot> -<%ARGS> -$plot => undef -</%ARGS> -<%INIT> -my @types = ('png', 'gif'); -for my $type (@types) { - $plot->can($type) - or next; - - $r->content_type("image/$type"); - $m->out( $plot->$type ); - $m->abort(); -} - -die "Your GD library appears to support none of the following image types: " . join(', ', @types); -</%INIT> - -</%METHOD> diff --git a/rt/share/html/Search/Chart.html b/rt/share/html/Search/Chart.html deleted file mode 100644 index fb9f45c66..000000000 --- a/rt/share/html/Search/Chart.html +++ /dev/null @@ -1,98 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -$PrimaryGroupBy => 'Queue' -$SecondaryGroupBy => '' -$ChartStyle => 'bars' -$Description => undef -</%args> -<%init> -$ARGS{SecondaryGroupBy} ||= ''; -$ARGS{Query} ||= 'id > 0'; - -# FIXME: should be factored with RT::Report::Tickets::Label :( -my $PrimaryGroupByLabel; -if ( $PrimaryGroupBy =~ /^(?:CF|CustomField)\.{(.*)}$/ ) { - my $cf = $1; - if ( $cf =~ /\D/ ) { - $PrimaryGroupByLabel = loc( "custom field '[_1]'", $cf ); - } else { - my $obj = RT::CustomField->new( $session{'CurrentUser'} ); - $obj->Load( $cf ); - $PrimaryGroupByLabel = loc( "custom field '[_1]'", $obj->Name ); - } -} else { - $PrimaryGroupByLabel = loc( $PrimaryGroupBy ); -} - -my $title = loc( "Search results grouped by [_1]", $PrimaryGroupByLabel ); - -my $saved_search = $m->comp( '/Widgets/SavedSearch:new', - SearchType => 'Chart', - SearchFields => [qw(Query PrimaryGroupBy SecondaryGroupBy ChartStyle)] ); - -my @actions = $m->comp( '/Widgets/SavedSearch:process', args => \%ARGS, self => $saved_search ); - -</%init> -<& /Elements/Header, Title => $title &> -<& /Ticket/Elements/Tabs, Title => $title, Query => $ARGS{Query}, - SavedChartSearchId => $saved_search->{SearchId} &> -<& /Elements/ListActions, actions => \@actions &> -<& /Search/Elements/Chart, %ARGS &> - -<br /> -<&| /Widgets/TitleBox, title => loc('Graph Properties')&> -<form method="get" action="<%RT->Config->Get('WebPath')%>/Search/Chart.html"> -<input type="hidden" class="hidden" name="Query" value="<% $ARGS{Query} %>" /> -<input type="hidden" class="hidden" name="SavedChartSearchId" value="<% $saved_search->{SearchId} || 'new' %>" /> -<&|/l, $m->scomp('Elements/SelectChartType', Name => 'ChartStyle', Default => $ChartStyle), $m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy', Query => $ARGS{Query}, Default => $PrimaryGroupBy) -&>[_1] chart by [_2]</&><input type="submit" class="button" value="<%loc('Update Graph')%>" /> -</form> -</&> - -<& /Widgets/SavedSearch:show, %ARGS, Action => 'Chart.html', self => $saved_search, Title => loc('Saved charts') &> diff --git a/rt/share/html/Search/Edit.html b/rt/share/html/Search/Edit.html deleted file mode 100755 index e3e2da29a..000000000 --- a/rt/share/html/Search/Edit.html +++ /dev/null @@ -1,99 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<& /Elements/Header, Title => $title&> -<& /Ticket/Elements/Tabs, - current_tab => "Search/Edit.html?".$QueryString, - Title => $title, - Format => $Format, - Query => $Query, - Rows => $Rows, - OrderBy => $OrderBy, - Order => $Order, - SavedSearchId => $SavedSearchId, - SavedChartSearchId => $SavedChartSearchId, -&> - -<& Elements/NewListActions, actions => \@actions &> - -<form method="post" action="Build.html"> -<input type="hidden" class="hidden" name="SavedSearchId" value="<% $SavedSearchId %>" /> -<input type="hidden" class="hidden" name="SavedChartSearchId" value="<% $SavedChartSearchId %>" /> -<&|/Widgets/TitleBox, title => loc('Query'), &> -<textarea name="Query" rows="8" cols="72"><% $Query %></textarea> -</&> -<&|/Widgets/TitleBox, title => loc('Format'), &> -<textarea name="Format" rows="8" cols="72"><% $Format %></textarea> -</&> -<& /Elements/Submit, Label => loc("Apply"), Reset => 1, Caption => loc("Apply your changes")&> -</form> - -<%INIT> -my $title = loc("Edit Query"); -$Format = $m->comp('/Elements/ScrubHTML', Content => $Format); -my $QueryString = $m->comp('/Elements/QueryString', - Query => $Query, - Format => $Format, - RowsPerPage => $Rows, - OrderBy => $OrderBy, - Order => $Order, - ); - -</%INIT> - - -<%ARGS> -$SavedSearchId => 'new' -$SavedChartSearchId => 'new' -$Query => '' -$Format => '' -$Rows => '50' -$OrderBy => 'id' -$Order => 'ASC' - -@actions => () -</%ARGS> diff --git a/rt/share/html/Search/Elements/BuildFormatString b/rt/share/html/Search/Elements/BuildFormatString deleted file mode 100644 index 9935fdf91..000000000 --- a/rt/share/html/Search/Elements/BuildFormatString +++ /dev/null @@ -1,254 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%ARGS> -$Format => RT->Config->Get('DefaultSearchResultFormat') - -%cfqueues => () - -$Face => undef -$Size => undef -$Link => undef -$Title => undef - -$AddCol => undef -$RemoveCol => undef -$ColUp => undef -$ColDown => undef - -$SelectDisplayColumns => undef -$CurrentDisplayColumns => undef -</%ARGS> -<%init> -# This can't be in a <once> block, because otherwise we return the -# same \@fields every request, and keep tacking more CustomFields onto -# it -- and it grows per request. - -# All the things we can display in the format string by default -my @fields = qw( - id QueueName Subject - - Customer - - Status ExtendedStatus UpdateStatus - Type - - OwnerName Requestors Cc AdminCc CreatedBy LastUpdatedBy - - Priority InitialPriority FinalPriority - - TimeWorked TimeLeft TimeEstimated - - Starts StartsRelative - Started StartedRelative - Created CreatedRelative - LastUpdated LastUpdatedRelative - Told ToldRelative - Due DueRelative - Resolved ResolvedRelative - - RefersTo ReferredToBy - DependsOn DependedOnBy - MemberOf Members - Parents Children - - Bookmark - - NEWLINE - -); # loc_qw - -$m->callback( CallbackOnce => 1, CallbackName => 'SetFieldsOnce', Fields => \@fields ); - -my $CustomFields = RT::CustomFields->new( $session{'CurrentUser'}); -foreach my $id (keys %cfqueues) { - # Gotta load up the $queue object, since queues get stored by name now. my $id - my $queue = RT::Queue->new($session{'CurrentUser'}); - $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. - $id =~ s/^.'*(.*).'*$/$1/; - $queue->Load($id); - } - $CustomFields->LimitToQueue($queue->Id); -} -$CustomFields->LimitToGlobal; - -while ( my $CustomField = $CustomFields->Next ) { - push @fields, "CustomField.{" . $CustomField->Name . "}"; -} - -$m->callback( Fields => \@fields, ARGSRef => \%ARGS ); - -my ( @seen); - -$Format ||= RT->Config->Get('DefaultSearchResultFormat'); -my @format = split( /,\s*/, $Format ); -foreach my $field (@format) { - my %column = (); - $field =~ s/'(.*)'/$1/; - my ( $prefix, $suffix ); - if ( $field =~ m/(.*)__(.*)__(.*)/ ) { - $prefix = $1; - $suffix = $3; - $field = $2; - } - $field = "<blank>" if !$field; - $column{Prefix} = $prefix; - $column{Suffix} = $suffix; - $field =~ s/\s*(.*)\s*/$1/; - $column{Column} = $field; - push @seen, \%column; -} - -if ( $RemoveCol ) { - # we do this regex match to avoid a non-numeric warning - my ($index) = $CurrentDisplayColumns =~ /^(\d+)/; - my $column = $seen[$index]; - if ($index) { - delete $seen[$index]; - my @temp = @seen; - @seen = (); - foreach my $element (@temp) { - next unless $element; - push @seen, $element; - } - } -} -elsif ( $AddCol ) { - if ( defined $SelectDisplayColumns ) { - my $selected = $SelectDisplayColumns; - my @columns; - if (ref($selected) eq 'ARRAY') { - @columns = @$selected; - } else { - push @columns, $selected; - } - foreach my $col (@columns) { - my %column = (); - $column{Column} = $col; - - if ( $Face eq "Bold" ) { - $column{Prefix} .= "<b>"; - $column{Suffix} .= "</b>"; - } - if ( $Face eq "Italic" ) { - $column{Prefix} .= "<i>"; - $column{Suffix} .= "</i>"; - } - if ($Size) { - $column{Prefix} .= "<" . $m->interp->apply_escapes( $Size, 'h' ) . ">"; - $column{Suffix} .= "</" . $m->interp->apply_escapes( $Size, 'h' ) . ">"; - } - if ( $Link eq "Display" ) { - $column{Prefix} .= q{<a HREF="__WebPath__/Ticket/Display.html?id=__id__">}; - $column{Suffix} .= "</a>"; - } - elsif ( $Link eq "Take" ) { - $column{Prefix} .= q{<a HREF="__WebPath__/Ticket/Display.html?Action=Take&id=__id__">}; - $column{Suffix} .= "</a>"; - } - elsif ( $Link eq "Respond" ) { - $column{Prefix} .= q{<a HREF="__WebPath__/Ticket/Update.html?Action=Respond&id=__id__">}; - $column{Suffix} .= "</a>"; - } - elsif ( $Link eq "Comment" ) { - $column{Prefix} .= q{<a HREF="__WebPath__/Ticket/Update.html?Action=Comment&id=__id__">}; - $column{Suffix} .= "</a>"; - } - elsif ( $Link eq "Resolve" ) { - $column{Prefix} .= q{<a HREF="__WebPath__/Ticket/Update.html?Action=Comment&DefaultStatus=resolved&id=__id__">}; - $column{Suffix} .= "</a>"; - } - - if ($Title) { - $column{Suffix} .= "/TITLE:" . $m->interp->apply_escapes( $Title, 'h' ); - } - push @seen, \%column; - } - } -} -elsif ( $ColUp ) { - my $index = $CurrentDisplayColumns; - if ( defined $index && ( $index - 1 ) >= 0 ) { - my $column = $seen[$index]; - $seen[$index] = $seen[ $index - 1 ]; - $seen[ $index - 1 ] = $column; - $CurrentDisplayColumns = $index - 1; - } -} -elsif ( $ColDown ) { - my $index = $CurrentDisplayColumns; - if ( defined $index && ( $index + 1 ) < scalar @seen ) { - my $column = $seen[$index]; - $seen[$index] = $seen[ $index + 1 ]; - $seen[ $index + 1 ] = $column; - $CurrentDisplayColumns = $index + 1; - } -} - - -my @format_string; -foreach my $field (@seen) { - next unless $field; - my $row = "'"; - $row .= $field->{'Prefix'} if defined $field->{'Prefix'}; - $row .= "__" . ($field->{'Column'} =~ m/\(/ ? $field->{'Column'} # func, don't escape - : $m->interp->apply_escapes( $field->{'Column'}, 'h' )) . "__" - unless ( $field->{'Column'} eq "<blank>" ); - $row .= $field->{'Suffix'} if defined $field->{'Suffix'}; - $row .= "'"; - push( @format_string, $row ); -} - -$Format = join(",\n", @format_string); - - -return($Format, \@fields, \@seen); - -</%init> diff --git a/rt/share/html/Search/Elements/Chart b/rt/share/html/Search/Elements/Chart deleted file mode 100644 index bf4cd0c1c..000000000 --- a/rt/share/html/Search/Elements/Chart +++ /dev/null @@ -1,151 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -$Query => "id > 0" -$PrimaryGroupBy => 'Queue' -$SecondaryGroupBy => undef -$ChartStyle => 'bars' -</%args> -<%init> -use RT::Report::Tickets; -$PrimaryGroupBy ||= 'Queue'; # make sure PrimaryGroupBy is not undef - -my $tix = RT::Report::Tickets->new( $session{'CurrentUser'} ); -my ($count_name, $value_name) = $tix->SetupGroupings( - Query => $Query, GroupBy => $PrimaryGroupBy, -); - -my %class = ( - Queue => 'RT::Queue', - Owner => 'RT::User', - Creator => 'RT::User', - LastUpdatedBy => 'RT::User', -); -my $class = $class{ $PrimaryGroupBy }; - -my (@keys, @values); -while ( my $entry = $tix->Next ) { - if ($class) { - my $q = $class->new( $session{'CurrentUser'} ); - $q->Load( $entry->LabelValue( $value_name ) ); - push @keys, $q->Name; - } - else { - push @keys, $entry->LabelValue( $value_name ); - } - $keys[-1] ||= loc('(no value)'); - push @values, $entry->__Value( $count_name ); -} - -my %data; -my %loc_keys; -foreach my $key (@keys) { $data{$key} = shift @values; $loc_keys{$key} = loc($key); } -my @sorted_keys = map { $loc_keys{$_}} sort { $loc_keys{$a} cmp $loc_keys{$b} } keys %loc_keys; -my @sorted_values = map { $data{$_}} sort { $loc_keys{$a} cmp $loc_keys{$b} } keys %loc_keys; - - -my $query_string = $m->comp('/Elements/QueryString', %ARGS); -</%init> - -<% loc('Query:') %> <% $Query %><br /> - -% if (RT->Config->Get('DisableGD')) { -<% loc('Graphical charts are not available.') %><br /> -% } else { -<img src="<%RT->Config->Get('WebPath')%>/Search/Chart?<%$query_string|n%>" /><br /> -% } - -<table class="collection-as-table"> -<tr> -<th class="collection-as-table"><% loc($tix->Label($PrimaryGroupBy)) %> -</th> -<th class="collection-as-table"><&|/l&>Tickets</&> -</th> -</tr> -% my ($i,$total); -% while (my $key = shift @sorted_keys) { -% $i++; -% my $value = shift @sorted_values; -% $total += $value; -<tr class="<%$i%2 ? 'evenline' : 'oddline' %>"> -<td class="label collection-as-table"> -%# TODO sadly we don't have "creator.city is null" or alike support yet -%# so no link if the key is undef for now -% if ( $PrimaryGroupBy !~ /(Hourly|Daily|Monthly|Annually)$/ -% && $key ne loc('(no value)') ) { -% my $group = $PrimaryGroupBy; $group =~ s! !.!; -% my %orig_keys = reverse %loc_keys; -% my $QueryString = $m->comp('/Elements/QueryString', -% Query => "$Query and $group = '$orig_keys{$key}'", -% Format => $ARGS{Format}, -% Rows => $ARGS{Rows}, -% OrderBy => $ARGS{OrderBy}, -% Order => $ARGS{Order}, -% ); -<a href=<% RT->Config->Get('WebURL') %>Search/Results.html?<%$QueryString%>><%$key%></a> -% } else { -<% $key %> -% } -</td> -<td class="value collection-as-table"> -<%$value%> -</td> -</tr> -% } - -%$i++; -<tr class="<%$i%2 ? 'evenline' : 'oddline' %>"> -<td class="label collection-as-table"> -<%loc('Total')%> -</td> -<td class="value collection-as-table"> -<%$total||''%> -</td> -</tr> - -</table> diff --git a/rt/share/html/Search/Elements/ConditionRow b/rt/share/html/Search/Elements/ConditionRow deleted file mode 100644 index d45c6621b..000000000 --- a/rt/share/html/Search/Elements/ConditionRow +++ /dev/null @@ -1,97 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<tr> -<td class="label"><% $handle_block->( $Condition->{'Field'}, $Condition->{'Name'} .'Field' ) |n %></td> -<td class="operator"><% $handle_block->( $Condition->{'Op'}, $Condition->{'Name'} .'Op') |n %></td> -<td class="value"><% $handle_block->( $Condition->{'Value'}, 'ValueOf'. $Condition->{'Name'} ) |n %></td> -</tr> -<%INIT> -return unless $Condition && $Condition->{'Name'}; - -$m->callback( Condition => \$Condition ); -return unless $Condition; - -my $handle_block; -$handle_block = sub { - my $box = shift; - return $box unless ref $box; - - my $name = shift; - if ( UNIVERSAL::isa($box, 'ARRAY') ) { - my $res = ''; - $res .= $handle_block->( $_, $name ) foreach @$box; - return $res; - } - - return undef unless UNIVERSAL::isa($box, 'HASH'); - if ( $box->{'Type'} eq 'component' ) { - $box->{'Arguments'} ||= {}, - return $m->scomp( $box->{'Path'}, %{ $box->{'Arguments'} }, Name => $name ); - } - if ( $box->{'Type'} eq 'text' ) { - my $default = $box->{'Default'} || ''; - my $size = $box->{'Size'}? qq{size="$box->{'Size'}"} : ''; - return qq{<input id="$name" name="$name" value="$default" $size />}; - } - if ( $box->{'Type'} eq 'select' ) { - my $res = ''; - $res .= qq{<select id="$name" name="$name">}; - my @options = @{ $box->{'Options'} }; - while( my $k = shift @options ) { - my $v = shift @options; - $res .= qq{<option value="$k">$v</option>}; - } - $res .= qq{</select>}; - return $res; - } -}; - -</%INIT> -<%ARGS> -$Condition => {} -</%ARGS> diff --git a/rt/share/html/Search/Elements/DisplayOptions b/rt/share/html/Search/Elements/DisplayOptions deleted file mode 100644 index 7464ae936..000000000 --- a/rt/share/html/Search/Elements/DisplayOptions +++ /dev/null @@ -1,136 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<&| /Widgets/TitleBox, title => loc("Sorting"), id => 'sorting' &> -<table valign="top"> - -% for my $o (0..3) { -% $Order[$o] ||= ''; $OrderBy[$o] ||= ''; -<tr> -<td class="label"> -% if ($o == 0) { -<&|/l&>Order by</&>: -% } -</td> -<td class="value"> -<select name="OrderBy"> -% if ($o > 0) { -<option value=""><&|/l&>~[none~]</&></option> -% } -% foreach my $field (sort keys %fields) { -% next unless $field; -<option value="<%$field%>" -% if (defined $OrderBy[$o] and $field eq $OrderBy[$o]) { -selected="selected" -% } -><% loc($field) %></option> -% } -</select> -<select name="Order"> -<option value="ASC" -% unless ( ($Order[$o]||'') eq "DESC" ) { -selected="selected" -% } -><&|/l&>Asc</&></option> -<option value="DESC" -% if ( ($Order[$o]||'') eq "DESC" ) { -selected="selected" -% } -><&|/l&>Desc</&></option> -</select> -</td> -</tr> -% } -<tr> -<td class="label"> -<&|/l&>Rows per page</&>: -</td><td class="value"> -<& /Elements/SelectResultsPerPage, - Name => "RowsPerPage", - Default => $RowsPerPage &> -</td> -</tr> -</table> -</&> -<&| /Widgets/TitleBox, title => loc("Display Columns"), id => 'columns' &> -<& EditFormat, %ARGS &> -</&> - -<%INIT> -my $tickets = new RT::Tickets($session{'CurrentUser'}); -my %fields = %{$tickets->FIELDS}; -map { $fields{$_}->[0] =~ /^(?:ENUM|INT|DATE|STRING|ID)$/ || delete $fields{$_} } keys %fields; -delete $fields{'EffectiveId'}; -$fields{'Owner'} = 1; -$fields{ $_ . '.EmailAddress' } = 1 foreach( qw(Requestor Cc AdminCc) ); - -# Add all available CustomFields to the list of sortable columns. -my @cfs = grep /^CustomField/, @{$ARGS{AvailableColumns}}; -$fields{$_}=1 for @cfs; - -# Add PAW sort -$fields{'Custom.Ownership'} = 1; - -$fields{"Customer.$_"} = 1 foreach qw( Number Name ); #Freeside - -my @Order = split /\|/, $Order; -my @OrderBy = split /\|/, $OrderBy; -if ($Order =~ /\|/) { - @Order = split /\|/, $Order; -} else { - @Order = ( $Order ); -} - -</%INIT> - -<%ARGS> -$Order => undef -$OrderBy => undef -$RowsPerPage => undef -$Format => undef -$GroupBy => 'id' -</%ARGS> diff --git a/rt/share/html/Search/Elements/EditFormat b/rt/share/html/Search/Elements/EditFormat deleted file mode 100644 index 9dd616039..000000000 --- a/rt/share/html/Search/Elements/EditFormat +++ /dev/null @@ -1,113 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<table> - -<tr> -<th><&|/l&>Add Columns</&>:</th> -<th><&|/l&>Format</&>:</th> -<th></th> -<th><&|/l&>Show Columns</&>:</th> -</tr> - -<tr> - -<td valign="top"><select size="6" name="SelectDisplayColumns" multiple="multiple"> -% my %seen; -% foreach my $field ( grep !$seen{lc $_}++, @$AvailableColumns) { -<option value="<% $field %>"><% loc($field) %></option> -% } -</select></td> - -<td><&|/l&>Link</&>: -<select name="Link"> -<option value="None">-</option> -<option value="Display"><&|/l&>Display</&></option> -<option value="Take"><&|/l&>Take</&></option> -<option value="Respond"><&|/l&>Respond</&></option> -<option value="Comment"><&|/l&>Comment</&></option> -<option value="Resolve"><&|/l&>Resolve</&></option> -</select> -<br /><&|/l&>Title</&>: <input name="Title" size="10" /> -<br /><&|/l&>Size</&>: -<select name="Size"> -<option value="">-</option> -<option value="Small"><&|/l&>Small</&></option> -<option value="Large"><&|/l&>Large</&></option> -</select> -<br /><&|/l&>Style</&>: -<select name="Face"> -<option value="">-</option> -<option value="Bold"><&|/l&>Bold</&></option> -<option value="Italic"><&|/l&>Italic</&></option> -</select> -</td> - -<td><input type="submit" class="button" name="AddCol" value=" → " /></td> - -<td valign="top"> -<select size="4" name="CurrentDisplayColumns"> -% my $i=0; -% foreach my $field ( @$CurrentFormat ) { -<option value="<% $i++ %>><% $field->{Column} %>"><% loc( $field->{Column} ) %></option> -% } -</select> -<br /> -<center> -<input type="submit" class="button" name="ColUp" value=" ↑ " /> -<input type="submit" class="button" name="ColDown" value=" ↓ " /> -<input type="submit" class="button" name="RemoveCol" value="<%loc('Delete')%>" /> -</center> -</td> - -</tr> -</table> - -<%ARGS> -$CurrentFormat => undef -$AvailableColumns => undef -</%ARGS> diff --git a/rt/share/html/Search/Elements/EditQuery b/rt/share/html/Search/Elements/EditQuery deleted file mode 100644 index 9a10ddff6..000000000 --- a/rt/share/html/Search/Elements/EditQuery +++ /dev/null @@ -1,243 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<& NewListActions, actions => $actions &> -<&|/Widgets/TitleBox, title => join(': ', grep defined, loc("Current search"), $Description) &> - -<select size="10" name="clauses" style="width: 100%" multiple="multiple"> -% $m->out($optionlist); -</select> - -<p align="center"> -<input type="submit" class="button" name="Up" value=" ↑ " /> -<input type="submit" class="button" name="Down" value=" ↓ " /> -<input type="submit" class="button" name="Left" value=" ← " /> -<input type="submit" class="button" name="Right" value=" → " /> -<input type="submit" class="button" name="Toggle" value="<&|/l&>And/Or</&>" /> -<input type="submit" class="button" name="DeleteClause" value="<&|/l&>Delete</&>" /> -%#<input type="submit" class="button" name="EditQuery" value="Advanced" /> -</p> - -</&> -<%ARGS> -$Description => undef -$optionlist => '' -$actions => [] -</%ARGS> - -<%METHOD Process> -<%ARGS> -$Tree -$Selected -@New => () -</%ARGS> -<%INIT> - -my @NewSelection = (); - -my @results; -if ( $ARGS{'Up'} || $ARGS{'Down'} ) { - if (@$Selected) { - foreach my $value (@$Selected) { - my $parent = $value->getParent; - my $index = $value->getIndex; - my $newindex = $index; - $newindex++ if $ARGS{'Down'}; - $newindex-- if $ARGS{'Up'}; - if ( $newindex < 0 || $newindex >= $parent->getChildCount ) { - push( @results, [ loc("error: can't move up"), -1 ] ) if $ARGS{'Up'}; - push( @results, [ loc("error: can't move down"), -1 ] ) if $ARGS{'Down'}; - next; - } - - $parent->removeChild( $index ); - $parent->insertChild( $newindex, $value ); - } - } - else { - push( @results, [ loc("error: nothing to move"), -1 ] ); - } -} -elsif ( $ARGS{"Left"} ) { - if (@$Selected) { - foreach my $value (@$Selected) { - my $parent = $value->getParent; - if( $value->isRoot || $parent->isRoot ) { - push( @results, [ loc("error: can't move left"), -1 ] ); - next; - } - - my $grandparent = $parent->getParent; - if( $grandparent->isRoot ) { - push( @results, [ loc("error: can't move left"), -1 ] ); - next; - } - - my $index = $parent->getIndex; - $parent->removeChild($value); - $grandparent->insertChild( $index, $value ); - if ( $parent->isLeaf ) { - $grandparent->removeChild($parent); - } - } - } - else { - push( @results, [ loc("error: nothing to move"), -1 ] ); - } -} -elsif ( $ARGS{"Right"} ) { - if (@$Selected) { - foreach my $value (@$Selected) { - my $parent = $value->getParent; - my $index = $value->getIndex; - - my $newparent; - if ( $index > 0 ) { - my $sibling = $parent->getChild( $index - 1 ); - $newparent = $sibling unless $sibling->isLeaf; - } - $newparent ||= RT::Interface::Web::QueryBuilder::Tree->new( $ARGS{'AndOr'} || 'AND', $parent ); - - $parent->removeChild($value); - $newparent->addChild($value); - } - } - else { - push( @results, [ loc("error: nothing to move"), -1 ] ); - } -} -elsif ( $ARGS{"DeleteClause"} ) { - if (@$Selected) { - my (@top); - my %Selected = map { $_ => 1 } @$Selected; - foreach my $node ( @$Selected ) { - my $tmp = $node->getParent; - while ( !$Selected{ $tmp } && !$tmp->isRoot ) { - $tmp = $tmp->getParent; - } - next if $Selected{ $tmp }; - push @top, $node; - } - - my %seen; - my @non_siblings_top = grep !$seen{ $_->getParent }++, @top; - - foreach ( @New ) { - my $add = $_->clone; - foreach my $selected( @non_siblings_top ) { - my $newindex = $selected->getIndex + 1; - $selected->insertSibling( $newindex, $add ); - } - $add->getParent->setNodeValue( $ARGS{'AndOr'} ); - push @NewSelection, $add; - } - @New = (); - - while( my $node = shift @top ) { - my $parent = $node->getParent; - $parent->removeChild($node); - $node->DESTROY; - } - @$Selected = (); - } - else { - push( @results, [ loc("error: nothing to delete"), -1 ] ); - } -} -elsif ( $ARGS{"Toggle"} ) { - if (@$Selected) { - my %seen; - my @unique_nodes = grep !$seen{ $_ + 0 }++, - map ref $_->getNodeValue? $_->getParent: $_, - @$Selected; - - foreach my $node ( @unique_nodes ) { - if ( $node->getNodeValue eq 'AND' ) { - $node->setNodeValue('OR'); - } - else { - $node->setNodeValue('AND'); - } - } - } - else { - push( @results, [ loc("error: nothing to toggle"), -1 ] ); - } -} - -if ( @New && @$Selected ) { - my %seen; - my @non_siblings_selected = grep !$seen{ $_->getParent }++, @$Selected; - - foreach ( @New ) { - my $add = $_->clone; - foreach my $selected( @non_siblings_selected ) { - my $newindex = $selected->getIndex + 1; - $selected->insertSibling( $newindex, $add ); - } - $add->getParent->setNodeValue( $ARGS{'AndOr'} ); - push @NewSelection, $add; - } - @$Selected = (); -} -elsif ( @New ) { - foreach ( @New ) { - my $add = $_->clone; - $Tree->addChild( $add ); - push @NewSelection, $add; - } - $Tree->setNodeValue( $ARGS{'AndOr'} ); -} -$_->DESTROY foreach @New; - -push @$Selected, @NewSelection; - -$Tree->PruneChildlessAggregators; - -return @results; -</%INIT> -</%METHOD> diff --git a/rt/share/html/Search/Elements/EditSearches b/rt/share/html/Search/Elements/EditSearches deleted file mode 100644 index 62871fd5f..000000000 --- a/rt/share/html/Search/Elements/EditSearches +++ /dev/null @@ -1,296 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<&| /Widgets/TitleBox, title => loc($Title)&> - -%# Hide all the save functionality if the user shouldn't see it. -% if ( $can_modify ) { -<&|/l&>Privacy:</&> -<& SelectSearchObject, Name => 'SavedSearchOwner', Objects => \@Objects, Object => ( $Object && $Object->id ) ? $Object->Object : '' &> -<br /> -<&|/l&>Description</&>: -<input size="25" name="SavedSearchDescription" value="<% $Description || '' %>" /> - -% if ($Id ne 'new') { -<nobr> -% if ( $Dirty ) { -<input type="submit" class="button" name="SavedSearchRevert" value="<%loc('Revert')%>" /> -% } -<input type="submit" class="button" name="SavedSearchDelete" value="<%loc('Delete')%>" /> -% if ( $AllowCopy ) { -<input type="submit" class="button" name="SavedSearchCopy" value="<%loc('Save as New')%>" /> -% } -</nobr> -% } -% if ( $Object && $Object->Id ) { -<input type="submit" class="button" name="SavedSearchSave" value="<%loc('Update')%>" /> -% } else { -<input type="submit" class="button" name="SavedSearchSave" value="<%loc('Save')%>" /> -%} -% } -<br /> -<hr /> -<&|/l&>Load saved search:</&> -<& SelectSearchesForObjects, Name => 'SavedSearchLoad', Objects => \@Objects, SearchType => $Type &> -<input type="submit" value="<% loc('Load') %>" class="button" /> - -</&> - -<%INIT> -return unless $session{'CurrentUser'}->HasRight( - Right => 'LoadSavedSearch', - Object => $RT::System, -); - -my $can_modify = $session{'CurrentUser'}->HasRight( - Right => 'CreateSavedSearch', - Object => $RT::System, -); - -use RT::SavedSearches; -my @Objects = RT::SavedSearches->new($session{CurrentUser})->_PrivacyObjects; -push @Objects, RT::System->new( $session{'CurrentUser'} ) - if $session{'CurrentUser'}->HasRight( Object=> $RT::System, - Right => 'SuperUser' ); - -my $is_dirty = sub { - my %arg = ( - Query => {}, - SavedSearch => {}, - SearchFields => [qw(Query Format OrderBy Order RowsPerPage)], - @_ - ); - - my $obj = $arg{'SavedSearch'}->{'Object'}; - return 0 unless $obj && $obj->id; - - foreach( @{ $arg{'SearchFields'} } ) { - return 1 if $obj->SubValue( $_ ) ne $arg{'Query'}->{$_}; - } - - return 0; -}; - -# If we're modifying an old query, check if it's been changed -my $Dirty = $is_dirty->( - Query => $CurrentSearch, - SavedSearch => { Id => $Id, Object => $Object, Description => $Description }, - SearchFields => \@SearchFields, -); - -</%INIT> - -<%ARGS> -$Id => 'new' -$Object => undef -$Type => 'Ticket' -$Description => '' -$CurrentSearch => {} -@SearchFields => () -$AllowCopy => 1 -$Title => loc('Saved searches') -</%ARGS> - -<%METHOD Init> -<%ARGS> -$Query => {} -$SavedSearch => {} -@SearchFields => qw(Query Format OrderBy Order RowsPerPage) -</%ARGS> -<%INIT> - -$SavedSearch->{'Id'} = ( $ARGS{Type} && $ARGS{Type} eq 'Chart' ? -$ARGS{'SavedChartSearchId'} : $ARGS{'SavedSearchId'} ) || 'new'; -$SavedSearch->{'Description'} = $ARGS{'SavedSearchDescription'} || undef; -$SavedSearch->{'Privacy'} = $ARGS{'SavedSearchOwner'} || undef; - -my @results; - -if ( $ARGS{'SavedSearchRevert'} ) { - $ARGS{'SavedSearchLoad'} = $SavedSearch->{'Id'}; -} - -if ( $ARGS{'SavedSearchLoad'} ) { - my ($container, $id ) = _parse_saved_search ($ARGS{'SavedSearchLoad'}); - if ( $container ) { - my $search = $container->Attributes->WithId( $id ); - $SavedSearch->{'Id'} = $ARGS{'SavedSearchLoad'}; - $SavedSearch->{'Object'} = $search; - $SavedSearch->{'Description'} = $search->Description; - $Query->{$_} = $search->SubValue($_) foreach @SearchFields; - - if ( $ARGS{'SavedSearchRevert'} ) { - push @results, loc('Loaded original "[_1]" saved search', $SavedSearch->{'Description'} ); - } else { - push @results, loc('Loaded saved search "[_1]"', $SavedSearch->{'Description'} ); - } - } - else { - push @results, loc( 'Can not load saved search "[_1]"', - $ARGS{'SavedSearchLoad'} ); - return @results; - } -} -elsif ( $ARGS{'SavedSearchDelete'} ) { - # We set $SearchId to 'new' above already, so peek into the %ARGS - my ($container, $id) = _parse_saved_search( $SavedSearch->{'Id'} ); - if ( $container && $container->id ) { - # We have the object the entry is an attribute on; delete the entry... - $container->Attributes->DeleteEntry( Name => 'SavedSearch', id => $id ); - } - $SavedSearch->{'Id'} = 'new'; - $SavedSearch->{'Object'} = undef; - $SavedSearch->{'Description'} = undef; - push @results, loc("Deleted saved search"); -} -elsif ( $ARGS{'SavedSearchCopy'} ) { - my ($container, $id ) = _parse_saved_search( $ARGS{'SavedSearchId'} ); - $SavedSearch->{'Object'} = $container->Attributes->WithId( $id ); - if ( $ARGS{'SavedSearchDescription'} && $ARGS{'SavedSearchDescription'} ne $SavedSearch->{'Object'}->Description ) { - $SavedSearch->{'Description'} = $ARGS{'SavedSearchDescription'}; - } else { - $SavedSearch->{'Description'} = loc( "[_1] copy", $SavedSearch->{'Object'}->Description ); - } - $SavedSearch->{'Id'} = 'new'; - $SavedSearch->{'Object'} = undef; -} - -if ( $SavedSearch->{'Id'} && $SavedSearch->{'Id'} ne 'new' - && !$SavedSearch->{'Object'} ) -{ - my ($container, $id ) = _parse_saved_search( $ARGS{'SavedSearchId'} ); - $SavedSearch->{'Object'} = $container->Attributes->WithId( $id ); - $SavedSearch->{'Description'} ||= $SavedSearch->{'Object'}->Description; -} - -return @results; - -</%INIT> -</%METHOD> - -<%METHOD Save> -<%ARGS> -$Query => {} -$SavedSearch => {} -@SearchFields => qw(Query Format OrderBy Order RowsPerPage) -</%ARGS> -<%INIT> - -return unless $ARGS{'SavedSearchSave'} || $ARGS{'SavedSearchCopy'}; - -my @results; -my $obj = $SavedSearch->{'Object'}; -my $id = $SavedSearch->{'Id'}; -my $desc = $SavedSearch->{'Description'}; -my $privacy = $SavedSearch->{'Privacy'}; - -my %params = map { $_ => $Query->{$_} } @SearchFields; -my ($new_obj_type, $new_obj_id) = split(/\-/, ($privacy || '')); - -if ( $obj && $obj->id ) { - # permission check - if ($obj->Object->isa('RT::System')) { - unless ($session{'CurrentUser'}->HasRight( Object=> $RT::System, Right => 'SuperUser')) { - push @results, loc("No permission to save system-wide searches"); - return @results; - } - } - - $obj->SetSubValues( %params ); - $obj->SetDescription( $desc ); - - my $obj_type = ref($obj->Object); - # We need to get current obj_id now, because when we change obj_type to - # RT::System, $obj->Object->Id returns 1, not the old one :( - my $obj_id = $obj->Object->Id; - - if ( $new_obj_type && $new_obj_id ) { - my ($val, $msg); - if ( $new_obj_type ne $obj_type ) { - ($val, $msg ) = $obj->SetObjectType($new_obj_type); - push @results, loc ('Unable to set privacy object: [_1]', $msg) unless ( $val ); - } - if ( $new_obj_id != $obj_id ) { - ($val, $msg) = $obj->SetObjectId($new_obj_id); - push @results, loc ('Unable to set privacy id: [_1]', $msg) unless ( $val ); - } - } else { - push @results, loc('Unable to determine object type or id'); - } - push @results, loc('Updated saved search "[_1]"', $desc); -} -elsif ( $id eq 'new' ) { - my $saved_search = RT::SavedSearch->new( $session{'CurrentUser'} ); - my ($status, $msg) = $saved_search->Save( - Privacy => $privacy, - Name => $desc, - Type => $SavedSearch->{'Type'}, - SearchParams => \%params, - ); - - if ( $status ) { - $SavedSearch->{'Object'} = - $session{'CurrentUser'}->UserObj->Attributes->WithId( $saved_search->Id ); - # Build new SearchId - $SavedSearch->{'Id'} = - ref( $session{'CurrentUser'}->UserObj ) . '-' - . $session{'CurrentUser'}->UserObj->Id - . '-SavedSearch-' - . $SavedSearch->{'Object'}->Id; - } - else { - push @results, loc("Can't find a saved search to work with").': '.loc($msg); - } -} -else { - push @results, loc("Can't save this search"); -} - -return @results; - -</%INIT> -</%METHOD> diff --git a/rt/share/html/Search/Elements/Graph b/rt/share/html/Search/Elements/Graph deleted file mode 100644 index 620cbc59e..000000000 --- a/rt/share/html/Search/Elements/Graph +++ /dev/null @@ -1,50 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%INIT> -return $m->comp('/Ticket/Graphs/Elements/ShowGraph', %ARGS); -</%INIT> diff --git a/rt/share/html/Search/Elements/NewListActions b/rt/share/html/Search/Elements/NewListActions deleted file mode 100644 index 8e2cbab6f..000000000 --- a/rt/share/html/Search/Elements/NewListActions +++ /dev/null @@ -1,66 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<b><%loc('Results')%></b><br /> -% foreach my $action (@actions) { -% my @item = @$action; -% if ($item[1] < 0) { -<font color="red"> -% } - <%$item[0]%><br /> -% if ($item[1] < 0) { -</font> -% } -% } -<br /> -<%init> -@actions = map ref $_? $_: [$_, 0], grep defined && length, @actions; -return unless @actions; -</%init> -<%ARGS> -@actions => undef -</%ARGS> diff --git a/rt/share/html/Search/Elements/PickBasics b/rt/share/html/Search/Elements/PickBasics deleted file mode 100644 index 7e4bc7357..000000000 --- a/rt/share/html/Search/Elements/PickBasics +++ /dev/null @@ -1,214 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -% foreach( @lines ) { -<& ConditionRow, Condition => $_ &> -% } -<%INIT> - -my @lines = ( - { - Name => 'id', - Field => loc('id'), - Op => { - Type => 'component', - Path => '/Elements/SelectEqualityOperator', - }, - Value => { Type => 'text', Size => 5 } - }, - { - Name => 'Attachment', - Field => { - Type => 'component', - Path => '/Elements/SelectAttachmentField', - }, - Op => { - Type => 'component', - Path => '/Elements/SelectBoolean', - Arguments => { - True => loc("matches"), - False => loc("doesn't match"), - TrueVal => 'LIKE', - FalseVal => 'NOT LIKE', - }, - }, - Value => { Type => 'text', Size => 20 }, - }, - { - Name => 'Queue', - Field => loc('Queue'), - Op => { - Type => 'component', - Path => '/Elements/SelectBoolean', - Arguments => { TrueVal=> '=', FalseVal => '!=' }, - }, - Value => { - Type => 'component', - Path => '/Elements/SelectQueue', - Arguments => { NamedValues => 1, CheckQueueRight => 'ShowTicket' }, - }, - }, - { - Name => 'Status', - Field => loc('Status'), - Op => { - Type => 'component', - Path => '/Elements/SelectBoolean', - Arguments => { TrueVal=> '=', FalseVal => '!=' }, - }, - Value => { - Type => 'component', - Path => '/Elements/SelectStatus', - Arguments => { SkipDeleted => 1 }, - }, - }, - { - Name => 'Actor', - Field => { - Type => 'select', - Options => [ - Owner => loc('Owner'), - Creator => loc('Creator'), - LastUpdatedBy => loc('Last updated by'), - ], - }, - Op => { - Type => 'component', - Path => '/Elements/SelectBoolean', - Arguments => { TrueVal=> '=', FalseVal => '!=' }, - }, - Value => { - Type => 'component', - Path => '/Elements/SelectOwner', - Arguments => { ValueAttribute => 'Name' }, - }, - }, - { - Name => 'Watcher', - Field => { - Type => 'component', - Path => 'SelectPersonType', - Arguments => { Default => 'Requestor' }, - }, - Op => { - Type => 'component', - Path => '/Elements/SelectMatch', - }, - Value => { Type => 'text', Size => 20 } - }, - { - Name => 'Date', - Field => { - Type => 'component', - Path => '/Elements/SelectDateType', - }, - Op => { - Type => 'component', - Path => '/Elements/SelectDateRelation', - }, - Value => { - Type => 'component', - Path => '/Elements/SelectDate', - Arguments => { ShowTime => 0, Default => '' }, - }, - }, - { - Name => 'Time', - Field => { - Type => 'select', - Options => [ - TimeWorked => loc('Time Worked'), - TimeEstimated => loc('Time Estimated'), - TimeLeft => loc('Time Left'), - ], - }, - Op => { - Type => 'component', - Path => '/Elements/SelectEqualityOperator', - }, - Value => [ - { Type => 'text', Size => 5 }, - { - Type => 'component', - Path => '/Elements/SelectTimeUnits', - }, - ], - }, - { - Name => 'Priority', - Field => { - Type => 'select', - Options => [ - Priority => loc('Priority'), - InitialPriority => loc('Initial Priority'), - FinalPriority => loc('Final Priority'), - ], - }, - Op => { - Type => 'component', - Path => '/Elements/SelectEqualityOperator', - }, - Value => { - Type => 'component', - Path => '/Elements/SelectPriority', - }, - }, - { - Name => 'Links', - Field => { Type => 'component', Path => 'SelectLinks' }, - Op => { - Type => 'component', - Path => '/Elements/SelectBoolean', - Arguments => { TrueVal=> '=', FalseVal => '!=' }, - }, - Value => { Type => 'text', Size => 5 } - }, -); - -$m->callback( Conditions => \@lines ); - -</%INIT> diff --git a/rt/share/html/Search/Elements/PickCFs b/rt/share/html/Search/Elements/PickCFs deleted file mode 100644 index beda9f733..000000000 --- a/rt/share/html/Search/Elements/PickCFs +++ /dev/null @@ -1,125 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -% foreach( @lines ) { -<& ConditionRow, Condition => $_ &> -% } -<%INIT> -my $CustomFields = RT::CustomFields->new( $session{'CurrentUser'}); -foreach my $id (keys %cfqueues) { - # Gotta load up the $queue object, since queues get stored by name now. my $id - my $queue = RT::Queue->new($session{'CurrentUser'}); - $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. - $id =~ s/^.'*(.*).'*$/$1/; - - # unescape internal quotes - $id =~ s/(\\(.))/$2 eq "'" ? "'" : $1/eg; - - $queue->Load($id); - } - $CustomFields->LimitToQueue($queue->Id); -} -$CustomFields->LimitToGlobal; -$m->callback( - CallbackName => 'MassageCustomFields', - CustomFields => $CustomFields, -); - - -my @lines; -while ( my $CustomField = $CustomFields->Next ) { - my %line; - $line{'Name'} = "'CF.{" . $CustomField->Name . "}'"; - $line{'Field'} = $CustomField->Name; - - # Op - if ($CustomField->Type eq 'Date') { - $line{'Op'} = { - Type => 'component', - Path => '/Elements/SelectDateRelation', - Arguments => {}, - }; - } else { - $line{'Op'} = { - Type => 'component', - Path => '/Elements/SelectCustomFieldOperator', - Arguments => { True => loc("is"), - False => loc("isn't"), - TrueVal=> '=', - FalseVal => '!=', - }, - }; - } - - # Value - if ($CustomField->Type eq 'Date') { - $line{'Value'} = { - Type => 'component', - Path => '/Elements/SelectDate', - Arguments => {}, - }; - } else { - $line{'Value'} = { - Type => 'component', - Path => '/Elements/SelectCustomFieldValue', - Arguments => { CustomField => $CustomField }, - }; - } - - push @lines, \%line; -} - -$m->callback( Conditions => \@lines, Queues => \%cfqueues ); - -</%INIT> - -<%ARGS> -%cfqueues => undef -</%ARGS> diff --git a/rt/share/html/Search/Elements/PickCriteria b/rt/share/html/Search/Elements/PickCriteria deleted file mode 100644 index b024775ef..000000000 --- a/rt/share/html/Search/Elements/PickCriteria +++ /dev/null @@ -1,72 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<&| /Widgets/TitleBox, title => loc('Add Criteria')&> - -<table width="100%" cellspacing="0" cellpadding="0" border="0"> - - - -<& PickBasics &> -<& PickCFs, cfqueues => \%cfqueues &> - -<tr class="separator"><td colspan="3"><hr /></td></tr> -<tr> -<td class="label"><&|/l&>Aggregator</&></td> -<td class="operator" colspan="2"><& SelectAndOr, Name => "AndOr" &></td> - -</tr> - -</table> - -</&> - -<%ARGS> -$addquery => 0 -$query => undef -%cfqueues => undef -</%ARGS> diff --git a/rt/share/html/Search/Elements/ResultViews b/rt/share/html/Search/Elements/ResultViews deleted file mode 100644 index b438b56a0..000000000 --- a/rt/share/html/Search/Elements/ResultViews +++ /dev/null @@ -1,80 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -$QueryString => undef -$Query => undef -$Format => undef -$Rows => undef -$OrderBy => undef -$Order => undef -$RSSFeedURL => undef -$ShortQueryString => undef - -</%args> -<ul class="search-result-views"> -<li><a href="<%RT->Config->Get('WebPath')%>/Search/Results.tsv<%$QueryString%>"><&|/l&>Spreadsheet</&></a></li> -<li><a href="<%$RSSFeedURL%>"><&|/l&>RSS</&></a></li> -<li><a href="<%RT->Config->Get('WebURL')%>/NoAuth/iCal/<% $ical_path %>"><% loc('iCal') %></a></li> -<li><a href="<%RT->Config->Get('WebPath')%>/Tools/Offline.html<%$ShortQueryString%>"><&|/l&>Editable text</&></a></li> -% # Now let callbacks add their extra tools -% $m->callback( %ARGS, CallbackName => 'AfterTools' ); -</ul> -<form method="get" action="<%RT->Config->Get('WebPath')%>/Search/Chart.html"> -% my %hiddens = (Query => $Query, Format => $Format, Rows => $Rows, OrderBy => $OrderBy, Order => $Order); -% foreach my $key (keys(%hiddens)) { -<input type="hidden" class="hidden" name="<%$key%>" value="<%defined($hiddens{$key})?$hiddens{$key}:''%>" /> -% } -<&|/l, $m->scomp('SelectChartType', Name => 'ChartStyle'), $m->scomp('SelectGroupBy', Name => 'PrimaryGroupBy', Query => $Query) -&>[_1] chart by [_2]</&><input type="submit" class="button" value="<%loc('Go')%>" /> -</form> -<%init> -my $ical_path = join '/', map $m->interp->apply_escapes($_, 'u'), - $session{'CurrentUser'}->UserObj->Name, - $session{'CurrentUser'}->UserObj->GenerateAuthString( $Query ), - $Query; -</%init> diff --git a/rt/share/html/Search/Elements/ResultsRSSView b/rt/share/html/Search/Elements/ResultsRSSView deleted file mode 100644 index f335411f8..000000000 --- a/rt/share/html/Search/Elements/ResultsRSSView +++ /dev/null @@ -1,143 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%INIT> -use Encode (); - -my $old_current_user; - -if ( $m->request_comp->path =~ RT->Config->Get('WebNoAuthRegex') ) { - my $path = $m->dhandler_arg; - - my $notfound = sub { - my $mesg = shift; - $r->headers_out->{'Status'} = '404 Not Found'; - $RT::Logger->info("Error encountered in rss generation: $mesg"); - $m->clear_and_abort; - }; - - $notfound->("Invalid path: $path") unless $path =~ m!^([^/]+)/([^/]+)/?!; - - my ( $name, $auth ) = ( $1, $2 ); - - # Unescape parts - $name =~ s/\%([0-9a-z]{2})/chr(hex($1))/gei; - - # convert to perl strings - $name = Encode::decode_utf8($name); - - my $user = RT::User->new($RT::SystemUser); - $user->Load($name); - $notfound->("Invalid user: $user") unless $user->id; - - $notfound->("Invalid authstring") - unless $user->ValidateAuthString( $auth, - $ARGS{Query} . $ARGS{Order} . $ARGS{OrderBy} ); - - $old_current_user = $session{'CurrentUser'}; - my $cu = RT::CurrentUser->new; - $cu->Load($user); - $session{'CurrentUser'} = $cu; -} - -my $Tickets = RT::Tickets->new($session{'CurrentUser'}); -$Tickets->FromSQL($ARGS{'Query'}); -if ($OrderBy =~ /\|/) { - # Multiple Sorts - my @OrderBy = split /\|/,$OrderBy; - my @Order = split /\|/,$Order; - $Tickets->OrderByCols( - map { { FIELD => $OrderBy[$_], ORDER => $Order[$_] } } ( 0 - .. $#OrderBy ) );; -} else { - $Tickets->OrderBy(FIELD => $OrderBy, ORDER => $Order); -} -$r->content_type('application/rss+xml'); - - - - # create an RSS 1.0 file (http://purl.org/rss/1.0/) - use XML::RSS; - my $rss = new XML::RSS (version => '1.0'); - $rss->channel( - title => RT->Config->Get('rtname').": Search " . $ARGS{'Query'}, - link => RT->Config->Get('WebURL'), - description => "", - dc => { - }, - generator => "RT v" . $RT::VERSION, - syn => { - updatePeriod => "hourly", - updateFrequency => "1", - updateBase => "1901-01-01T00:00+00:00", - }, - ); - - - while ( my $Ticket = $Tickets->Next()) { - my $creator_str = $m->scomp('/Elements/ShowUser', User => $Ticket->CreatorObj); - $creator_str =~ s/[\r\n]//g; - $rss->add_item( - title => $Ticket->Subject || loc('No Subject'), - link => RT->Config->Get('WebURL')."Ticket/Display.html?id=".$Ticket->id, - description => $Ticket->Transactions->First->Content, - dc => { creator => $creator_str, - date => $Ticket->CreatedObj->RFC2822, - }, - guid => $Ticket->Queue . '_' . $Ticket->id, - ); - } - -$m->out($rss->as_string); -$session{'CurrentUser'} = $old_current_user if $old_current_user; -$m->abort(); -</%INIT> -<%ARGS> -$OrderBy => 'Created' -$Order => 'ASC' -</%ARGS> - diff --git a/rt/share/html/Search/Elements/SearchPrivacy b/rt/share/html/Search/Elements/SearchPrivacy deleted file mode 100644 index a3640fb01..000000000 --- a/rt/share/html/Search/Elements/SearchPrivacy +++ /dev/null @@ -1,55 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -$Object => undef -</%args> -% if (ref($Object) eq 'RT::User' && $Object->id == $session{'CurrentUser'}->Id) { -<&|/l&>My saved searches</&> -% } else { -<&|/l, $Object->Name&>[_1]'s saved searches</&> -% } diff --git a/rt/share/html/Search/Elements/SearchesForObject b/rt/share/html/Search/Elements/SearchesForObject deleted file mode 100644 index 8534f8df5..000000000 --- a/rt/share/html/Search/Elements/SearchesForObject +++ /dev/null @@ -1,65 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -$Object => undef -</%args> -<%init> -# Returns an array of search objects associated on $Object, -# in the form of [Description, searchObj] -my @result; -while (my $search = $Object->Attributes->Next) { - my $desc; - if ($search->Name eq 'SavedSearch') { - push @result, [$search->Description, $search]; - } - elsif ($search->Name =~ m/^Search - (.*)/) { - push @result, [$1, $search]; - } -} -return @result; -</%init> diff --git a/rt/share/html/Search/Elements/SelectAndOr b/rt/share/html/Search/Elements/SelectAndOr deleted file mode 100644 index 52685ba3f..000000000 --- a/rt/share/html/Search/Elements/SelectAndOr +++ /dev/null @@ -1,53 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<input type="radio" class="radio" name="<%$Name%>" checked="checked" value="AND" /><&|/l&>AND</&> -<input type="radio" class="radio" name="<%$Name%>" value="OR" /><&|/l&>OR</&> - -<%ARGS> -$Name => "Operator" -</%ARGS> diff --git a/rt/share/html/Search/Elements/SelectChartType b/rt/share/html/Search/Elements/SelectChartType deleted file mode 100644 index fcb723497..000000000 --- a/rt/share/html/Search/Elements/SelectChartType +++ /dev/null @@ -1,58 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -$Name => 'ChartType' -$Default => 'bar' -</%args> -<select id="<%$Name%>" name="<%$Name%>"> -% foreach my $option qw(bar pie) { -% # 'bar' # loc -% # 'pie' # loc -<option value="<%$option%>"<% $option eq $Default ? qq[ selected="selected"] : '' |n %>><%loc($option)%></option> -% } -</select> diff --git a/rt/share/html/Search/Elements/SelectGroup b/rt/share/html/Search/Elements/SelectGroup deleted file mode 100644 index f6583b114..000000000 --- a/rt/share/html/Search/Elements/SelectGroup +++ /dev/null @@ -1,67 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<select id="<%$Name%>" name="<%$Name%>"> -% if ($AllowNull) { -<option value="">-</option> -% } -%while (my $group = $groups->Next) { -<option value="<%$group->id%>"<%$group->id eq $Default && qq[ selected="selected"] |n %>><%$group->Name%></option> -%} -</select> - -<%INIT> -my $groups = new RT::Groups($session{'CurrentUser'}); -$groups->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => $Domain); - -</%INIT> -<%ARGS> -$AllowNull => 1 -$Default=> '' -$Name => 'Group' -$Domain => 'UserDefined'; -</%ARGS> diff --git a/rt/share/html/Search/Elements/SelectGroupBy b/rt/share/html/Search/Elements/SelectGroupBy deleted file mode 100644 index 2a1b38718..000000000 --- a/rt/share/html/Search/Elements/SelectGroupBy +++ /dev/null @@ -1,63 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -$Name => 'GroupBy' -$Default => 'Status' -$Query => '' -</%args> -<select id="<% $Name %>" name="<% $Name %>"> -% while (@options) { -% my ($text, $value) = (shift @options, shift @options); -<option value="<% $value %>" <% $value eq $Default ? 'selected="selected"' : '' |n%>><% loc($text) %></option> -% } -</select> -<%init> -use RT::Report::Tickets; -my $report = RT::Report::Tickets->new( $session{'CurrentUser'} ); -my @options = $report->Groupings( Query => $Query ); -</%init> diff --git a/rt/share/html/Search/Elements/SelectLinks b/rt/share/html/Search/Elements/SelectLinks deleted file mode 100644 index 219a19241..000000000 --- a/rt/share/html/Search/Elements/SelectLinks +++ /dev/null @@ -1,66 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<select name="<%$Name%>"> -% foreach (@fields) { -<option value="<%$_%>"><% loc($_) %></option> -% } -</select> -<%ARGS> -$Name => 'LinksField' -</%ARGS> - -<%INIT> -my @fields = ('HasMember', - 'MemberOf', - 'DependsOn', - 'DependedOnBy', - 'RefersTo', - 'ReferredToBy', - 'LinkedTo', - ); -</%INIT> diff --git a/rt/share/html/Search/Elements/SelectPersonType b/rt/share/html/Search/Elements/SelectPersonType deleted file mode 100644 index 5f6ac7365..000000000 --- a/rt/share/html/Search/Elements/SelectPersonType +++ /dev/null @@ -1,84 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<select id="<%$Name%>" name="<%$Name%>"> -% if ($AllowNull) { -<option value="">-</option> -% } -% for my $option (@types) { -% if ($Suffix) { -<option value="<% $option %><% $Suffix %>"<%$option eq $Default && qq[ selected="selected"] |n %> ><%loc($option)%></option> -% next; -% } -% foreach my $subtype (@subtypes) { -<option value="<%"$option.$subtype"%>"<%$option eq $Default && $subtype eq 'EmailAddress' && qq[ selected="selected"] |n %> ><% loc($option) %> <% loc($subtype) %></option> -% } -% } -</select> - -<%INIT> -my @types; -if ($Scope =~ 'queue') { - @types = qw(Cc AdminCc); -} -elsif ($Suffix eq 'Group') { - @types = qw(Requestor Cc AdminCc Watcher); -} -else { - @types = qw(Requestor Cc AdminCc Watcher Owner QueueCc QueueAdminCc QueueWatcher); -} - -my @subtypes = qw(EmailAddress Name RealName Nickname Organization Address1 Address2 WorkPhone HomePhone MobilePhone PagerPhone id); - -</%INIT> -<%ARGS> -$AllowNull => 1 -$Suffix => '' -$Default=>undef -$Scope => 'ticket' -$Name => 'WatcherType' -</%ARGS> diff --git a/rt/share/html/Search/Elements/SelectSearchObject b/rt/share/html/Search/Elements/SelectSearchObject deleted file mode 100644 index c38f5c396..000000000 --- a/rt/share/html/Search/Elements/SelectSearchObject +++ /dev/null @@ -1,68 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -@Objects => undef -$Name => undef -$Object => undef -</%args> -<%init> -my $default_privacy = ''; -if ( $Object && $Object->Id ) { - $default_privacy = ref($Object).'-'.$Object->Id; -} -</%init> -<select id="<%$Name%>" name="<%$Name%>"> -% foreach my $object (@Objects) { -% my $privacy = ref($object).'-'.$object->id; -% if (ref($object) eq 'RT::User' && $object->id == $session{'CurrentUser'}->Id) { -<option value="<%$privacy%>" <% ( $privacy eq $default_privacy ) ? "selected='selected'" : '' |n %> ><&|/l&>My saved searches</&></option> -% } else { -<option value="<%$privacy%>" <% ( $privacy eq $default_privacy ) ? "selected='selected'" : '' |n %> ><&|/l, $object->Name&>[_1]'s saved searches</&></option> -% } -% } -</select> diff --git a/rt/share/html/Search/Elements/SelectSearchesForObjects b/rt/share/html/Search/Elements/SelectSearchesForObjects deleted file mode 100644 index 1a53ad931..000000000 --- a/rt/share/html/Search/Elements/SelectSearchesForObjects +++ /dev/null @@ -1,69 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%args> -@Objects => undef -$Name => undef -$SearchType => 'Ticket', -</%args> -<select id="<%$Name%>" name="<%$Name%>"> -% foreach my $object (@Objects) { -% if (ref($object) eq 'RT::User' && $object->id == $session{'CurrentUser'}->Id) { -<option value=""><&|/l&>My saved searches</&></option> -% } else { -<option value=""></option> -<option value=""><&|/l, $object->Name&>[_1]'s saved searches</&></option> -% } -% my @searches = $object->Attributes->Named('SavedSearch'); -% foreach my $search (@searches) { -% # Skip it if it is not of search type we want. -% next if ($search->SubValue('SearchType') -% && $search->SubValue('SearchType') ne $SearchType); -<option value="<%ref($object)%>-<%$object->id%>-SavedSearch-<%$search->Id%>"> -<%$search->Description||loc('Unnamed search')%></option> -% } -% } -</select> diff --git a/rt/share/html/Search/Graph.html b/rt/share/html/Search/Graph.html deleted file mode 100644 index 4ceb544de..000000000 --- a/rt/share/html/Search/Graph.html +++ /dev/null @@ -1,50 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%INIT> -return $m->comp('/Ticket/Graphs/index.html', %ARGS ); -</%INIT> diff --git a/rt/share/html/Search/Results.html b/rt/share/html/Search/Results.html deleted file mode 100755 index 22858f172..000000000 --- a/rt/share/html/Search/Results.html +++ /dev/null @@ -1,208 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<& /Elements/Header, Title => $title, - Refresh => $session{'tickets_refresh_interval'} || RT->Config->Get('SearchResultsRefreshInterval', $session{'CurrentUser'} ), - RSSAutoDiscovery => $RSSFeedURL, - LinkRel => \%link_rel &> -<& /Ticket/Elements/Tabs, - current_tab => "Search/Results.html".$QueryString, - Title => $title, - Format => $Format, - Query => $Query, - Rows => $Rows, - OrderBy => $OrderBy, - Order => $Order, - SavedSearchId => $SavedSearchId, - SavedChartSearchId => $SavedChartSearchId, - &> -<& /Elements/CollectionList, - Query => $Query, - AllowSorting => 1, - OrderBy => $OrderBy, - Order => $Order, - Rows => $Rows, - Page => $Page, - Format => $Format, - Class => 'RT::Tickets', - BaseURL => $BaseURL - - &> -% my %hiddens = (Query => $Query, Format => $Format, Rows => $Rows, OrderBy => $OrderBy, Order => $Order, HideResults => $HideResults, Page => $Page, SavedChartSearchId => $SavedChartSearchId ); -<div align="right" class="refresh"> -<form method="get" action="<%RT->Config->Get('WebPath')%>/Search/Results.html"> -% foreach my $key (keys(%hiddens)) { -<input type="hidden" class="hidden" name="<%$key%>" value="<% defined($hiddens{$key})?$hiddens{$key}:'' %>" /> -% } -<& /Elements/Refresh, Name => 'TicketsRefreshInterval', Default => $session{'tickets_refresh_interval'}||RT->Config->Get('SearchResultsRefreshInterval', $session{'CurrentUser'}) &> -<input type="submit" class="button" value="<&|/l&>Change</&>" /> -</form> -</div> -<div align="right" class="search-result-actions"> -<& Elements/ResultViews, - Collection => $session{'tickets'}, - QueryString => $QueryString, - Query => $Query, - Format => $Format, - Rows => $Rows, - OrderBy => $OrderBy, - Order => $Order, - RSSFeedURL => $RSSFeedURL, - ShortQueryString => $ShortQueryString, -&> - -% $m->callback( QueryString => $QueryString, CallbackName => 'SearchActions' ); -</div> -<%INIT> -# Read from user preferences -my $prefs = $session{'CurrentUser'}->UserObj->Preferences("SearchDisplay") || {}; - -# These variables are what define a search_hash; this is also -# where we give sane defaults. -$Format ||= $prefs->{'Format'} || RT->Config->Get('DefaultSearchResultFormat'); -$Order ||= $prefs->{'Order'} || 'ASC'; -$OrderBy ||= $prefs->{'OrderBy'} || 'id'; - -# Some forms pass in "RowsPerPage" rather than "Rows" -# We call it RowsPerPage everywhere else. - -if ( !defined($Rows) ) { - if (defined $ARGS{'RowsPerPage'} ) { - $Rows = $ARGS{'RowsPerPage'}; - } elsif ( defined $prefs->{'RowsPerPage'} ) { - $Rows = $prefs->{'RowsPerPage'}; - } else { - $Rows = 50; - } -} -$Page = 1 unless $Page && $Page > 0; - -my ($title, $ticketcount); -$session{'i'}++; -$session{'tickets'} = RT::Tickets->new($session{'CurrentUser'}) ; -$session{'tickets'}->FromSQL($Query) if ($Query); - -if ($OrderBy =~ /\|/) { - # Multiple Sorts - my @OrderBy = split /\|/,$OrderBy; - my @Order = split /\|/,$Order; - $session{'tickets'}->OrderByCols( - map { { FIELD => $OrderBy[$_], ORDER => $Order[$_] } } ( 0 - .. $#OrderBy ) );; -} else { - $session{'tickets'}->OrderBy(FIELD => $OrderBy, ORDER => $Order); -} -$session{'tickets'}->RowsPerPage( $Rows ) if $Rows; -$session{'tickets'}->GotoPage( $Page - 1 ); - -$session{'CurrentSearchHash'} = { - Format => $Format, - Query => $Query, - Page => $Page, - Order => $Order, - OrderBy => $OrderBy, - RowsPerPage => $Rows -}; - - -if ( $session{'tickets'}->Query()) { - $ticketcount = $session{tickets}->CountAll(); - $title = loc('Found [quant,_1,ticket]', $ticketcount); -} else { - $title = loc("Find tickets"); -} - -my $QueryString = "?".$m->comp('/Elements/QueryString', - Query => $Query, - Format => $Format, - Rows => $Rows, - OrderBy => $OrderBy, - Order => $Order, - Page => $Page); -my $ShortQueryString = "?".$m->comp('/Elements/QueryString', Query => $Query); -my $RSSQueryString = "?".$m->comp('/Elements/QueryString', Query => $Query, Order => $Order, OrderBy => $OrderBy); -my $RSSPath = join '/', map $m->interp->apply_escapes($_, 'u'), - $session{'CurrentUser'}->UserObj->Name, - $session{'CurrentUser'}->UserObj->GenerateAuthString( $Query.$Order.$OrderBy ); -my $RSSFeedURL = RT->Config->Get('WebPath')."/NoAuth/rss/$RSSPath/$RSSQueryString"; - -if ($ARGS{'TicketsRefreshInterval'}) { - $session{'tickets_refresh_interval'} = $ARGS{'TicketsRefreshInterval'}; -} - -my %link_rel; -my $genpage = sub { - return $m->comp( - '/Elements/QueryString', - Query => $Query, - Format => $Format, - Rows => $Rows, - OrderBy => $OrderBy, - Order => $Order, - Page => shift(@_), - ); -}; -my $BaseURL = RT->Config->Get('WebPath')."/Search/Results.html?"; -$link_rel{first} = $BaseURL . $genpage->(1) if $Page > 1; -$link_rel{prev} = $BaseURL . $genpage->($Page - 1) if $Page > 1; -$link_rel{next} = $BaseURL . $genpage->($Page + 1) if ($Page * $Rows) < $ticketcount; -$link_rel{last} = $BaseURL . $genpage->(POSIX::ceil($ticketcount/$Rows)) if $Rows and ($Page * $Rows) < $ticketcount; -</%INIT> -<%CLEANUP> -$session{'tickets'}->PrepForSerialization(); -</%CLEANUP> -<%ARGS> -$Query => undef -$Format => undef -$HideResults => 0 -$Rows => undef -$Page => 1 -$OrderBy => undef -$Order => undef -$SavedSearchId => undef -$SavedChartSearchId => undef -</%ARGS> diff --git a/rt/share/html/Search/Results.rdf b/rt/share/html/Search/Results.rdf deleted file mode 100644 index c402b6f8e..000000000 --- a/rt/share/html/Search/Results.rdf +++ /dev/null @@ -1,48 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<& /Search/Elements/ResultsRSSView, %ARGS &> diff --git a/rt/share/html/Search/Results.tsv b/rt/share/html/Search/Results.tsv deleted file mode 100644 index 946a35d02..000000000 --- a/rt/share/html/Search/Results.tsv +++ /dev/null @@ -1,162 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%ARGS> -$Query => '' -$OrderBy => 'id' -$Order => 'ASC' -</%ARGS> -<%INIT> - -my $Tickets = RT::Tickets->new( $session{'CurrentUser'} ); -$Tickets->FromSQL( $Query ); -if ( $OrderBy =~ /\|/ ) { - # Multiple Sorts - my @OrderBy = split /\|/, $OrderBy; - my @Order = split /\|/, $Order; - $Tickets->OrderByCols( - map { { FIELD => $OrderBy[$_], ORDER => $Order[$_] } } - ( 0 .. $#OrderBy ) - ); -} -else { - $Tickets->OrderBy( FIELD => $OrderBy, ORDER => $Order ); -} - -my %cf_id_to_name; -my %cf_name_to_pos; -{ - my $cfs = RT::SQL::PossibleCustomFields( - Query => $Query, CurrentUser => $session{'CurrentUser'}, - ); - while ( my $cf = $cfs->Next ) { - my $name = $cf->Name; - $cf_id_to_name{ $cf->id } = $name; - next if $cf_name_to_pos{ $name }; - - $cf_name_to_pos{ $name } = - (sort { $b <=> $a } values %cf_name_to_pos)[0] + 1; - } -} - -my @attrs = qw( - id QueueObj->Name Subject Status - TimeEstimated TimeWorked TimeLeft - Priority FinalPriority - OwnerObj->Name - Requestors->MemberEmailAddressesAsString - Cc->MemberEmailAddressesAsString - AdminCc->MemberEmailAddressesAsString - DueObj->ISO ToldObj->ISO CreatedObj->ISO - ResolvedObj->ISO LastUpdatedObj->ISO -); - -$r->content_type('application/vnd.ms-excel'); -{ - my @header; - foreach my $attr (@attrs) { - my $label = $attr; - $label =~ s'Obj-.(?:AsString|Name|ISO)''g; - $label =~ s'-\>MemberEmailAddressesAsString''g; - push @header, $label; - } - - $_ += @header - 1 foreach values %cf_name_to_pos; - - foreach my $name ( sort { $cf_name_to_pos{$a} <=> $cf_name_to_pos{$b} } keys %cf_name_to_pos ) { - push @header, "CF-". $name; - } - $m->out(join("\t", @header)); - $m->out("\n"); - $m->flush_buffer; -} - -my $i = 0; -while ( my $Ticket = $Tickets->Next()) { - my @row; - foreach my $attr (@attrs) { - my $value; - if ($attr =~ /(.*)->ISO$/ and $Ticket->$1->Unix <= 0) { - $value = ''; - } else { - my $method = '$Ticket->'.$attr.'()'; - $method =~ s/->ISO\(\)$/->ISO( Timezone => 'user' )/; - $value = eval $method; - if ($@) {die "Failed to find $attr - ". $@}; - } - push @row, $value; - } - - my $values = $Ticket->CustomFieldValues; - $values->OrderByCols; # don't sort them - while (my $value = $values->Next) { - my $pos = $cf_name_to_pos{ $cf_id_to_name{ $value->CustomField } }; - next unless $pos; - - $row[$pos] = '' unless defined $row[$pos]; - $row[$pos] .= ', ' if $row[$pos]; - $row[$pos] .= $value->Content; - } - - # remove tabs from all field values, they screw up the tsv - for (@row) { - $_ = '' unless defined; - $_ =~ s/(?:\n|\r)//g; - $_ =~ s{\t}{ }g; - } - - $m->out(join("\t",@row)); - $m->out("\n"); - - unless (++$i%10) { - $i = 0; - $m->flush_buffer; - } -} - -$m->abort(); -</%INIT> diff --git a/rt/share/html/Search/Simple.html b/rt/share/html/Search/Simple.html deleted file mode 100644 index 2f7996b9c..000000000 --- a/rt/share/html/Search/Simple.html +++ /dev/null @@ -1,106 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work is distributed in the hope that it will be useful, but -%# WITHOUT ANY WARRANTY; without even the implied warranty of -%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%# General Public License for more details. -%# -%# You should have received a copy of the GNU General Public License -%# along with this program; if not, write to the Free Software -%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<& /Elements/Header, Title => $title &> -<& /Elements/Tabs, - current_toptab => "Search/Simple.html", - Title => $title -&> - -% $m->callback( %ARGS, CallbackName => 'PreForm' ); - -<div id="SimpleSearchForm"> -<form action="Simple.html" method="get"> - -<p><&|/l&>Search for tickets. Enter <strong>id</strong> numbers, <strong>queues</strong> by name, Owners by <strong>username</strong> and Requestors by <strong>email address</strong>.</&></p> - -<p><&|/l&>Searching the full text of every ticket can take a long time, but if you need to do it, you can search for any word in full ticket history for any word by typing <b>fulltext:<i>word</i></b>.</&></p> -<p><&|/l&>RT will look for anything else you enter in ticket subjects.</&></p> - -<br /> -<br /> -<div align="center"> -<input name="q" size="60" /><input type="submit" class="button" value="<&|/l&>Search</&>" /> -</div> - -</form> - -% $m->callback( %ARGS, CallbackName => 'PostForm' ); - -</div> - -<%INIT> -my $title = loc("Search for tickets"); -use RT::Search::Googleish; - -if ($q) { - my $tickets = new RT::Tickets( $session{'CurrentUser'} ); - $m->callback( %ARGS, query => \$q, CallbackName => 'ModifyQuery' ); - - if ($q =~ /^#?(\d+)$/) { - RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Ticket/Display.html?id=".$1); - } - - my %args = ( - Argument => $q, - TicketsObj => $tickets, - ); - - $m->callback( %ARGS, CallbackName => 'SearchArgs', args => \%args); - - my $search = RT::Search::Googleish->new(%args); - - $m->comp( "Results.html", Query => $search->QueryToSQL() ); - $m->comp( "/Elements/Footer" ); - $m->abort(); -} -</%INIT> - -<%ARGS> -$q => undef -</%ARGS> - |