[Rt-commit] rt branch, 4.4/preview-searches, created. rt-4.4.4-90-gf38c2d7f0

? sunnavy sunnavy at bestpractical.com
Wed Mar 11 15:01:04 EDT 2020


The branch, 4.4/preview-searches has been created
        at  f38c2d7f00d25066aed06e2ccd62dfea834a3079 (commit)

- Log -----------------------------------------------------------------
commit f38c2d7f00d25066aed06e2ccd62dfea834a3079
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Mar 12 01:50:10 2020 +0800

    Add new page where admins can preview results of search modules

diff --git a/share/html/Admin/Tools/PreviewSearches.html b/share/html/Admin/Tools/PreviewSearches.html
new file mode 100644
index 000000000..7f4afc394
--- /dev/null
+++ b/share/html/Admin/Tools/PreviewSearches.html
@@ -0,0 +1,143 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
+%#                                          <sales at 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 => loc('Preview results of search modules') &>
+<& /Elements/Tabs &>
+
+<p align="center">
+  <i><&|/l&>Search modules are mainly for bin/rt-crontool, check there for more infomation.</&></i>
+</p>
+
+<form method="POST" action="PreviewSearches.html">
+  <table>
+    <tr>
+      <td align="right"><&|/l&>Search Module</&>:</td>
+      <td>
+        <select name="Search">
+%       for my $module ( @modules ) {
+          <option value="<% $module %>" <% $module eq $Search ? 'selected="selected"' : '' |n%>><% $module %></option>
+%       }
+        </select>
+      </td>
+    </tr>
+    <tr>
+      <td align="right"><&|/l&>Search argument</&>:</td>
+      <td><input name="SearchArg" size="60" value="<% $SearchArg %>" /></td>
+    </tr>
+    <tr>
+      <td align="right"><&|/l&>Format</&>:</td>
+      <td><textarea name="Format" rows="8" cols="72"><% $Format %></textarea></td>
+    </tr>
+    <tr>
+      <td align="right"><&|/l&>Rows per page</&>:</td>
+      <td>
+        <& /Elements/SelectResultsPerPage, Name => "Rows", Default => $Rows &>
+      </td>
+    </tr>
+  </table>
+  <& /Elements/Submit, Label => loc('Run') &>
+</form>
+
+% if ( $tickets ) {
+
+<&| /Widgets/TitleBox, title => loc('Found [quant,_1,ticket,tickets]', $tickets->CountAll) &>
+
+<& /Elements/CollectionList,
+    Collection => $tickets,
+    AllowSorting => 1,
+    Rows => $Rows,
+    Page => $Page,
+    Format => $Format,
+    SearchArg => $SearchArg,
+    Search => $Search,
+    PassArguments => [qw(Format Rows Page Order OrderBy Search SearchArg)],
+&>
+
+</&>
+% }
+
+<%INIT>
+
+use List::MoreUtils 'uniq';
+my @modules;
+for my $root (@INC) {
+    my $mask = File::Spec->catfile( $root, qw(RT Search *.pm) );
+    for my $file ( glob $mask ) {
+        my ($name) = $file =~ /(\w+).pm$/;
+        next if $name =~ /^(?:FromSQL|Simple)$/;
+        push @modules, "RT::Search::$name";
+    }
+}
+
+ at modules = sort( uniq(@modules) );
+
+my $tickets;
+if ( $Search ) {
+    if ( $Search->require ) {
+        $tickets = RT::Tickets->new( $session{CurrentUser} );
+        my $search = $Search->new(
+            TicketsObj  => $tickets,
+            Argument    => $SearchArg,
+            CurrentUser => $session{CurrentUser},
+        );
+        $search->Prepare();
+    }
+    else {
+        $RT::Logger->error("Couldn't load $Search: $@");
+        Abort( loc( "Couldn't load [_1]", $Search ) );
+    }
+}
+
+</%INIT>
+
+<%ARGS>
+$Search => ''
+$SearchArg => ''
+$Format => RT->Config->Get('DefaultSearchResultFormat')
+$Page => 1
+$Rows => 50
+</%ARGS>
diff --git a/share/html/Elements/Tabs b/share/html/Elements/Tabs
index 7a75b39d7..333c8618c 100644
--- a/share/html/Elements/Tabs
+++ b/share/html/Elements/Tabs
@@ -295,6 +295,11 @@ my $build_admin_menu = sub {
         description => loc('Permanently wipeout data from RT'),
         path        => '/Admin/Tools/Shredder',
     );
+    $admin_tools->child( preview_searches =>
+        title       => loc('Preview Searches'),
+        description => loc('Preview results of search modules'),
+        path        => '/Admin/Tools/PreviewSearches.html',
+    );
 
     if ( $request_path =~ m{^/Admin/(Queues|Users|Groups|CustomFields|CustomRoles)} ) {
         my $type = $1;

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


More information about the rt-commit mailing list