diff options
5 files changed, 316 insertions, 1 deletions
| diff --git a/rt/share/html/RTx/Statistics/Elements/CollectionAsTable/ParseFormat b/rt/share/html/RTx/Statistics/Elements/CollectionAsTable/ParseFormat new file mode 100644 index 000000000..a482f817e --- /dev/null +++ b/rt/share/html/RTx/Statistics/Elements/CollectionAsTable/ParseFormat @@ -0,0 +1,109 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%#  +%# COPYRIGHT: +%#   +%# This software is Copyright (c) 1996-2005 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., 675 Mass Ave, Cambridge, MA 02139, USA. +%#  +%#  +%# 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 +</%ARGS> + +<%init> +use Regexp::Common; +my @Columns; + +while ($Format =~ /($RE{delimited}{-delim=>qq{\'"}}|[{}\w.]+)/go) { +    my $col = $1; + +    if ($col =~ /^$RE{quoted}$/o) { +        substr($col,0,1) = ""; +        substr($col,-1,1) = ""; +    } + +    my $colref; + +    # kfh at mqsoftware.com added this to be able +    # to create columns where the actual heading and value +    # aren't know ahead of time.  For instance queue names. +    # it will work with subcols, but all subcols will have the same KEY +    if ( $col =~ s!/KEY:([^/]+)!!io ) { +        $colref->{'keyname'} = $1; +    } +    if ( $col =~ s!/STYLE:([^/]+)!!io ) { +        $colref->{'style'} = $1; +    } +    if ( $col =~ s!/CLASS:([^/]+)!!io ) { +        $colref->{'class'} = $1; +    } +    if ( $col =~ s!/TITLE:([^/]+)!!io ) { +        $colref->{'title'} = $1; +    } +    if ( $col =~ s!/ALIGN:([^\/]+)!!io ) { +        $colref->{'align'} = $1; +    } +    if ( $col =~ /__(.*?)__/gio ) { +        my @subcols; +        while ( $col =~ s/^(.*?)__(.*?)__//o ) { +            push ( @subcols, $1 ) if ($1); +            push ( @subcols, "__$2__" ); +            $colref->{'attribute'} = $2; +        } +        push ( @subcols, $col ); +        @{ $colref->{'output'} } = @subcols; +    } +    else { +        @{ $colref->{'output'} } = ( "__" . $col . "__" ); +        $colref->{'attribute'} = $col; +    } +     +    if ( !$colref->{'title'} && grep { /^__(.*?)__$/io } +        @{ $colref->{'output'} } ) +    {    +        $colref->{'title'}     = $1; +        $colref->{'attribute'} = $1; +    } + + +    push @Columns, $colref; +} +    return(@Columns); +</%init> diff --git a/rt/share/html/RTx/Statistics/Elements/CollectionAsTable/Row b/rt/share/html/RTx/Statistics/Elements/CollectionAsTable/Row new file mode 100644 index 000000000..bcfabe5c3 --- /dev/null +++ b/rt/share/html/RTx/Statistics/Elements/CollectionAsTable/Row @@ -0,0 +1,112 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%#  +%# COPYRIGHT: +%#   +%# This software is Copyright (c) 1996-2005 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., 675 Mass Ave, Cambridge, MA 02139, USA. +%#  +%#  +%# 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> +$i => undef +@Format => undef +$record => undef +$maxitems => undef +$Depth => undef +$Warning => undef +</%ARGS> + +<%PERL> +$m->out('<TR class="' . ( $Warning ? 'warnline' : $i % 2 ? 'oddline' : 'evenline' ) . '" >' ); +my $item; +foreach my $column (@Format) { +    if ( $column->{title} eq 'NEWLINE' ) { +        while ( $item < $maxitems ) { +            $m->out(qq{<td class="collection-as-table"> </td>\n}); +            $item++; +        } +        $item = 0; +        $m->out('</TR>'); +        $m->out('<TR class="' +              . ( $Warning ? 'warnline' : $i % 2 ? 'oddline' : 'evenline' ) +              . '" >' ); +        next; +    } +    $item++; +    $m->out('<td class="collection-as-table" '); +    $m->out( 'align="' . $column->{align} . '"' ) if ( $column->{align} ); +    $m->out( 'style="' . $column->{style} . '"' ) if ( $column->{style} ); +    $m->out('>'); +    foreach my $subcol ( @{ $column->{output} } ) { +        if ( $subcol =~ /^__(.*?)__$/o ) { +            my $col   = $1; +            my $value = $m->comp( +                '/RTx/Statistics/Elements/StatColumnMap', +                Name => $col, +                Attr => 'value' +            ); +            my @out; + +            if ( $value && ref($value) ) { + +                # All HTML snippets are returned by the callback function +                # as scalar references.  Data fetched from the objects are +                # plain scalars, and needs to be escaped properly. +                @out = +                    map { +                        ref($_) ? $$_ : $m->interp->apply_escapes( $_ => 'h' ) +                      } &{$value}( $record, $i, $column->{keyname} ); +                ; +            } +            else { + +                # Simple value; just escape it. +                @out = $m->interp->apply_escapes( $value => 'h' ); +            } +            s/\n/<br>/gs for @out; +            $m->out( @out ); +        } +        else { +            $m->out($subcol); +        } +    } +    $m->out('</td>'); +} +$m->out('</TR>'); +</%PERL> diff --git a/rt/share/html/RTx/Statistics/Elements/ControlsAsTable/ControlBox b/rt/share/html/RTx/Statistics/Elements/ControlsAsTable/ControlBox new file mode 100644 index 000000000..e2b5c1430 --- /dev/null +++ b/rt/share/html/RTx/Statistics/Elements/ControlsAsTable/ControlBox @@ -0,0 +1,89 @@ +<TD VALIGN="top"> + +<&/Widgets/TitleBoxStart, title => $Title, &> + +        <table border="0" cellpadding="1" cellspacing="0"> +% if (defined $ShowStatus) { +          <tr> +            <td class="collection-as-table" style="text-align:left;">Show Status:</td> +            <td COLSPAN=3 class="collection-as-table" style="text-align:left;"> +	      <& /Elements/SelectStatus, Name=>"status", Default => $Status, DefaultValue => undef &> +	    </td> +          </tr> +% } +% if (defined $ShowSingleQueue) { +          <tr> +            <td class="collection-as-table" style="text-align:left;">Show Queue:</td> +            <td COLSPAN=3 class="collection-as-table" style="text-align:left;"> +	      <& /Elements/SelectQueue, Name=>"Queue", Default=>$Queue ,ShowNullOption=>0,  +	             CheckQueueRight=>'SeeQueue' &> +	    </td> +          </tr> +% } +% if (defined $ShowDates) { +          <tr> +	    <& /RTx/Statistics/Elements/DateSelectRow, Label => "Start Date:",  +              refMonth => $sMonth, nameMonth => "sMonth",  +	      refDay => $sDay, nameDay => "sDay", +	      refYear => $sYear, nameYear => "sYear" &> +          </tr> +          <tr> +  	    <& /RTx/Statistics/Elements/DateSelectRow, Label => "End Date:",  +              refMonth => $eMonth, nameMonth => "eMonth",  +  	      refDay => $eDay, nameDay => "eDay", +	      refYear => $eYear, nameYear => "eYear" &> +          </tr> +          <tr> +  	    <td class="collection-as-table" style="text-align:left;">Show Weekends:</td> +  	    <td class="collection-as-table" style="text-align:left;"> +  	      <select name=weekends> +  	        <option value=0 <% (!$weekends) && 'selected' %> >No</option> +  	        <option value=1 <% $weekends && 'selected' %> >Yes</option> +  	      </select> +  	    </td> +  	  </tr> +% } +% if (defined $ShowMultiQueues) { +          <tr> +% if (defined $ShowDates) { +%# If we're showing the dates, we put these side by side. +            <td COLSPAN=2 class="collection-as-table" style="text-align:left;">Select All Queues: <input type=checkbox name="AddAllCheck"></td> +	    <td COLSPAN=3 class="collection-as-table" > +	      <& /RTx/Statistics/Elements/SelectMultiQueue, Name=>"queues", Selected=>$queues_ref,  +                 ShowNullOption=>0, CheckQueueRight=>'SeeQueue', Size => 10, NamedValues => 1 &> +            </td> +% } else { +            <td COLSPAN=3 class="collection-as-table" style="text-align:left;"> +	      <& /RTx/Statistics/Elements/SelectMultiQueue, Name=>"queues", Selected=>$queues_ref,  +                 ShowNullOption=>0, CheckQueueRight=>'SeeQueue', Size => 10, NamedValues => 1 &> +            </td> +          </tr> +          <tr> +            <td class="collection-as-table" style="text-align:left;">Select All Queues: <input type=checkbox name="AddAllCheck"></td> +% } +          </tr> +% } +	  <& /RTx/Statistics/Elements/ControlsAsTable/UpdatePage &> +        </table> + +<&/Widgets/TitleBoxEnd&> + +</TD></TR></TABLE> +<%args> +$Title => undef +$ShowMultiQueues => undef +$queues_ref => undef +$ShowDates => undef +$sMonth => undef +$sDay => undef +$sYear => undef +$eMonth => undef +$eDay => undef +$eYear => undef +$weekends => undef +$ShowSingleQueue => undef +$Queue => undef +$ShowStatus => undef +$Status => undef +</%args> + diff --git a/rt/share/html/RTx/Statistics/Elements/ControlsAsTable/UpdatePage b/rt/share/html/RTx/Statistics/Elements/ControlsAsTable/UpdatePage new file mode 100644 index 000000000..dc173d444 --- /dev/null +++ b/rt/share/html/RTx/Statistics/Elements/ControlsAsTable/UpdatePage @@ -0,0 +1,5 @@ +<tr> +  <td colspan="4" style="text-align:center;padding-top:3px;"> +    <INPUT TYPE="submit" VALUE="<&|/l&>Update Page</&>"> +  </td> +</tr> diff --git a/rt/share/html/RTx/Statistics/Elements/GraphBox b/rt/share/html/RTx/Statistics/Elements/GraphBox index d4855264e..14c502a9d 100644 --- a/rt/share/html/RTx/Statistics/Elements/GraphBox +++ b/rt/share/html/RTx/Statistics/Elements/GraphBox @@ -1,4 +1,4 @@ -<TABLE><TR><TD> +<TABLE><TR><TD VALIGN="top">  <&/Widgets/TitleBoxStart,   	title      => 'Download Chart as Image', | 
