[Rt-commit] r13400 - in rt/3.8/branches/3.8.0-releng: . lib/RT lib/RT/Graph share/html/Admin/Groups share/html/Elements share/html/Install share/html/NoAuth/css/web2 share/html/Search/Elements share/html/Ticket/Elements

jesse at bestpractical.com jesse at bestpractical.com
Wed Jun 18 17:07:37 EDT 2008


Author: jesse
Date: Wed Jun 18 17:07:37 2008
New Revision: 13400

Removed:
   rt/3.8/branches/3.8.0-releng/share/html/Install/Password.html
Modified:
   rt/3.8/branches/3.8.0-releng/   (props changed)
   rt/3.8/branches/3.8.0-releng/lib/RT/EmailParser.pm
   rt/3.8/branches/3.8.0-releng/lib/RT/Graph/Tickets.pm
   rt/3.8/branches/3.8.0-releng/lib/RT/Installer.pm
   rt/3.8/branches/3.8.0-releng/lib/RT/SharedSetting.pm
   rt/3.8/branches/3.8.0-releng/share/html/Admin/Groups/Members.html
   rt/3.8/branches/3.8.0-releng/share/html/Elements/PageLayout
   rt/3.8/branches/3.8.0-releng/share/html/Elements/QueryString
   rt/3.8/branches/3.8.0-releng/share/html/Elements/SelectTimeUnits
   rt/3.8/branches/3.8.0-releng/share/html/Elements/ShowSearch
   rt/3.8/branches/3.8.0-releng/share/html/Elements/ShowUserConcise
   rt/3.8/branches/3.8.0-releng/share/html/Install/Basics.html
   rt/3.8/branches/3.8.0-releng/share/html/Install/DatabaseDetails.html
   rt/3.8/branches/3.8.0-releng/share/html/Install/DatabaseType.html
   rt/3.8/branches/3.8.0-releng/share/html/Install/Emails.html
   rt/3.8/branches/3.8.0-releng/share/html/Install/Finish.html
   rt/3.8/branches/3.8.0-releng/share/html/Install/Initialize.html
   rt/3.8/branches/3.8.0-releng/share/html/Install/Sendmail.html
   rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/base.css
   rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/forms.css
   rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/ticket-search.css
   rt/3.8/branches/3.8.0-releng/share/html/Search/Edit.html
   rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/ConditionRow
   rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectChartType
   rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectGroup
   rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectGroupBy
   rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectPersonType
   rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectSearchObject
   rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectSearchesForObjects
   rt/3.8/branches/3.8.0-releng/share/html/Ticket/Elements/Tabs

Log:
* Installer cleanups
* Query builder UI cleanups
* Ticket charting cleanups
* Bugfix for unwritable tempdirs when trying to receive messages through the mailgate


Modified: rt/3.8/branches/3.8.0-releng/lib/RT/EmailParser.pm
==============================================================================
--- rt/3.8/branches/3.8.0-releng/lib/RT/EmailParser.pm	(original)
+++ rt/3.8/branches/3.8.0-releng/lib/RT/EmailParser.pm	Wed Jun 18 17:07:37 2008
@@ -475,29 +475,40 @@
     # Set up output directory for files; we use $RT::VarPath instead
     # of File::Spec->tmpdir (e.g., /tmp) beacuse it isn't always
     # writable.
-    my $tmpdir = File::Temp::tempdir( DIR => $RT::VarPath, CLEANUP => 1 );
-    push ( @{ $self->{'AttachmentDirs'} ||= [] }, $tmpdir );
-    $parser->output_dir($tmpdir);
-    $parser->filer->ignore_filename(1);
+    my $tmpdir;
+    if ( -w $RT::VarPath ) {
+        $tmpdir = File::Temp::tempdir( DIR => $RT::VarPath, CLEANUP => 1 );
+    } elsif (-w File::Spec->tmpdir) {
+        $tmpdir = File::Temp::tempdir( TMPDIR => 1, CLEANUP => 1 );
+    } else {
+        $RT::Logger->crit("Neither the RT var directory ($RT::VarPath) nor the system tmpdir (@{[File::Spec->tmpdir]}) are writable; falling back to in-memory parsing!");
+    }
 
     #If someone includes a message, extract it
     $parser->extract_nested_messages(1);
-
     $parser->extract_uuencode(1);    ### default is false
 
-    # Set up the prefix for files with auto-generated names:
-    $parser->output_prefix("part");
-
-    # do _not_ store each msg as in-core scalar;
-
-    $parser->output_to_core(0);
-
-    # From the MIME::Parser docs:
-    # "Normally, tmpfiles are created when needed during parsing, and destroyed automatically when they go out of scope"
-    # Turns out that the default is to recycle tempfiles
-    # Temp files should never be recycled, especially when running under perl taint checking
-    
-    $parser->tmp_recycling(0) if $parser->can('tmp_recycling');
+    if ($tmpdir) {
+        # If we got a writable tmpdir, write to disk
+        push ( @{ $self->{'AttachmentDirs'} ||= [] }, $tmpdir );
+        $parser->output_dir($tmpdir);
+        $parser->filer->ignore_filename(1);
+
+        # Set up the prefix for files with auto-generated names:
+        $parser->output_prefix("part");
+
+        # From the MIME::Parser docs:
+        # "Normally, tmpfiles are created when needed during parsing, and destroyed automatically when they go out of scope"
+        # Turns out that the default is to recycle tempfiles
+        # Temp files should never be recycled, especially when running under perl taint checking
+
+        $parser->tmp_recycling(0) if $parser->can('tmp_recycling');
+    } else {
+        # Otherwise, fall back to storing it in memory
+        $parser->output_to_core(1);
+        $parser->tmp_to_core(1);
+        $parser->use_inner_files(1);
+    }
 
 }
 

Modified: rt/3.8/branches/3.8.0-releng/lib/RT/Graph/Tickets.pm
==============================================================================
--- rt/3.8/branches/3.8.0-releng/lib/RT/Graph/Tickets.pm	(original)
+++ rt/3.8/branches/3.8.0-releng/lib/RT/Graph/Tickets.pm	Wed Jun 18 17:07:37 2008
@@ -233,7 +233,9 @@
     my @fields = $self->_PropertiesToFields( %args );
     if ( @fields ) {
         unshift @fields, $args{'Ticket'}->id;
-        $node_style{'label'} = gv_escape( '{ '. join( ' | ', map { s/(?=[{}|])/\\/g; $_ }  @fields ) .' }' );
+        my $label = join ' | ', map { s/(?=[{}|])/\\/g; $_ } @fields;
+        $label = "{ $label }" if ($args{'Direction'} || 'TB') =~ /^(?:TB|BT)$/;
+        $node_style{'label'} = gv_escape( $label );
         $node_style{'shape'} = 'record';
     }
     
@@ -311,10 +313,10 @@
             next if $args{'SeenEdge'}{ $link->id }++;
 
             my $target = $link->TargetObj;
-            next unless $target->isa('RT::Ticket');
+            next unless $target && $target->isa('RT::Ticket');
 
             my $base = $link->BaseObj;
-            next unless $target->isa('RT::Ticket');
+            next unless $base && $base->isa('RT::Ticket');
 
             my $next = $target->id == $args{'Ticket'}->id? $base : $target;
 

Modified: rt/3.8/branches/3.8.0-releng/lib/RT/Installer.pm
==============================================================================
--- rt/3.8/branches/3.8.0-releng/lib/RT/Installer.pm	(original)
+++ rt/3.8/branches/3.8.0-releng/lib/RT/Installer.pm	Wed Jun 18 17:07:37 2008
@@ -124,7 +124,6 @@
             Description =>
               'RT database password',    #loc
             Type => 'password',
-            Hints => 'The default password is "rt_pass"',
         },
     },
     DatabaseRequireSSL => {
@@ -140,12 +139,6 @@
             Hints => 'Set this to your internet domain. (ex: example.com)' #loc
         },
     },
-    Organization => {
-        Widget          => '/Widgets/Form/String',
-        WidgetArguments => {
-            Description => 'Organization',                  #loc
-        },
-    },
     MinimumPasswordLength => {
         Widget          => '/Widgets/Form/Integer',
         WidgetArguments => {
@@ -160,12 +153,6 @@
             Type => 'password',
         },
     },
-    MaxAttachmentSize => {
-        Widget          => '/Widgets/Form/Integer',
-        WidgetArguments => {
-            Description => 'Max attachment size( in bytes )',             #loc
-        },
-    },
     OwnerEmail => {
         Widget          => '/Widgets/Form/String',
         WidgetArguments => {
@@ -287,17 +274,22 @@
         $content =~ s/^\s*1;\s*$//m;
     }
 
+    # make organization the same as rtname
+    $RT::Installer->{InstallConfig}{Organization} =
+        $RT::Installer->{InstallConfig}{rtname};
+
     if ( open my $fh, '>', $file  ) {
         for ( keys %{$RT::Installer->{InstallConfig}} ) {
             # we don't want to store root's password in config.
             next if $_ eq 'Password';
 
-            if (defined $RT::Installer->{InstallConfig}{$_}) {
-                # remove obsolete settings we'll add later
-                $content =~ s/^\s* Set \s* \( \s* \$$_ .*$//xm;
+            $RT::Installer->{InstallConfig}{$_} = '' unless defined
+                $RT::Installer->{InstallConfig}{$_};
+
+            # remove obsolete settings we'll add later
+            $content =~ s/^\s* Set \s* \( \s* \$$_ .*$//xm;
 
-                $content .= "Set( \$$_, '$RT::Installer->{InstallConfig}{$_}' );\n";
-            }
+            $content .= "Set( \$$_, '$RT::Installer->{InstallConfig}{$_}' );\n";
         }
         $content .= "1;\n";
         print $fh $content;

Modified: rt/3.8/branches/3.8.0-releng/lib/RT/SharedSetting.pm
==============================================================================
--- rt/3.8/branches/3.8.0-releng/lib/RT/SharedSetting.pm	(original)
+++ rt/3.8/branches/3.8.0-releng/lib/RT/SharedSetting.pm	Wed Jun 18 17:07:37 2008
@@ -319,8 +319,13 @@
 
 sub _load_privacy_object {
     my ($self, $obj_type, $obj_id) = @_;
-    if ( $obj_type eq 'RT::User' && $obj_id == $self->CurrentUser->Id)  {
-        return $self->CurrentUser->UserObj;
+    if ( $obj_type eq 'RT::User' ) {
+        if ( $obj_id == $self->CurrentUser->Id ) {
+            return $self->CurrentUser->UserObj;
+        } else {
+            $RT::Logger->warning("User #". $self->CurrentUser->Id ." tried to load container user #". $obj_id);
+            return undef;
+        }
     }
     elsif ($obj_type eq 'RT::Group') {
         my $group = RT::Group->new($self->CurrentUser);
@@ -331,7 +336,11 @@
         return RT::System->new($self->CurrentUser);
     }
 
-    $RT::Logger->error("Tried to load a " . $self->ObjectName . " belonging to an $obj_type, which is neither a user nor a group");
+    $RT::Logger->error(
+        "Tried to load a ". $self->ObjectName 
+        ." belonging to an $obj_type, which is neither a user nor a group"
+    );
+
     return undef;
 }
 

Modified: rt/3.8/branches/3.8.0-releng/share/html/Admin/Groups/Members.html
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Admin/Groups/Members.html	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Admin/Groups/Members.html	Wed Jun 18 17:07:37 2008
@@ -75,7 +75,7 @@
 <br />
 <br />
 <&|/l&>Users</&>
-% my $Users = $Group->UserMembersObj;
+% my $Users = $Group->UserMembersObj( Recursively => 0 );
 % $Users->OrderBy( FIELD => $UserOrderBy, ORDER => $UserOrder );
 <ul>
 % while ( my $user = $Users->Next ) {

Modified: rt/3.8/branches/3.8.0-releng/share/html/Elements/PageLayout
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Elements/PageLayout	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Elements/PageLayout	Wed Jun 18 17:07:37 2008
@@ -79,8 +79,8 @@
          my $current = $page_tabs->{current_toptab} || "";
          my $path    = $page_tabs->{$tab}->{'path'} || "";
          
-         $path    =~ s#/index.html$##gi;
-         $current =~ s#/index.html$##gi;
+         $path    =~ s#(/index\.html)?(\?)?$##gi;
+         $current =~ s#(/index\.html)?(\?)?$##gi;
          
          $sep = $toptabs->{$tab}->{'separator'} ? 1 : 0;
          $class->{a} = $path eq $current ? ' class="selected"' : undef;
@@ -91,7 +91,6 @@
          push @li, 'post-separator' if $postsep;
          push @li, 'last' if $tab eq $tabs[-1];
          $class->{li} = join ' ', @li;
-     
 </%perl>
     <li<% $class->{li} ? qq[ class="$class->{li}"] : ''|n %>><% $count > 1 && !$postsep && "&#183; "|n%><a href="<%RT->Config->Get('WebPath')%>/<%$page_tabs->{$tab}->{'path'}%>"<%$class->{a}|n%><% $class->{a} ? ' name="focus"' : ''|n %>><% $page_tabs->{$tab}->{'title'} %></a></li>
 %

Modified: rt/3.8/branches/3.8.0-releng/share/html/Elements/QueryString
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Elements/QueryString	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Elements/QueryString	Wed Jun 18 17:07:37 2008
@@ -47,7 +47,8 @@
 %# END BPS TAGGED BLOCK }}}
 <%INIT>
 my @params;
-while ( my ($key, $value) = each %ARGS ) {
+for my $key (sort keys %ARGS) {
+    my $value = $ARGS{$key};
     next unless defined $value;
     $key = $m->interp->apply_escapes( $key, 'u' );
     if( UNIVERSAL::isa( $value, 'ARRAY' ) ) {
@@ -58,5 +59,6 @@
         push @params, $key ."=". $m->interp->apply_escapes($value, 'u');
     }
 }
-return join '&', @params;
+
+return join '&', sort(@params);
 </%INIT>

Modified: rt/3.8/branches/3.8.0-releng/share/html/Elements/SelectTimeUnits
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Elements/SelectTimeUnits	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Elements/SelectTimeUnits	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<select name="<% $Name %>">
+<select class="TimeUnits" id="<% $Name %>" name="<% $Name %>">
 <option value="minutes" selected="selected"><% loc('Minutes') %></option>
 <option value="hours"><% loc('Hours') %></option>
 </select>

Modified: rt/3.8/branches/3.8.0-releng/share/html/Elements/ShowSearch
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Elements/ShowSearch	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Elements/ShowSearch	Wed Jun 18 17:07:37 2008
@@ -62,9 +62,13 @@
 
 if ($SavedSearch) {
     my ( $container_object, $search_id ) = _parse_saved_search($SavedSearch);
+    unless ( $container_object ) {
+        $m->out(loc("Either you have no rights to view saved search [_1] or identifier is incorrect", $SavedSearch));
+        return;
+    }
     $search = $container_object->Attributes->WithId($search_id);
     unless ( $search->Id && ref( $SearchArg = $search->Content ) eq 'HASH' ) {
-        $m->out("Saved Search $SavedSearch not found") unless $IgnoreMissing;
+        $m->out(loc("Saved Search [_1] not found", $SavedSearch)) unless $IgnoreMissing;
         return;
     }
     $SearchArg->{'SearchType'} ||= 'Ticket';

Modified: rt/3.8/branches/3.8.0-releng/share/html/Elements/ShowUserConcise
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Elements/ShowUserConcise	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Elements/ShowUserConcise	Wed Jun 18 17:07:37 2008
@@ -50,8 +50,8 @@
 if ($User) {
     my $printable;
     if ( $User->Privileged ) {
-             $printable = $User->NickName
-          || $User->RealName
+             $printable = $User->RealName
+          || $User->NickName
           || $User->Name
           || $User->EmailAddress;
     }

Modified: rt/3.8/branches/3.8.0-releng/share/html/Install/Basics.html
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Install/Basics.html	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Install/Basics.html	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<&| Elements/Wrapper, Title => 'Customize Basics' &> 
+<&| Elements/Wrapper, Title => 'Step 3 of 7: Customize Basics' &> 
 
 <& /Elements/ListActions, actions => \@results &>
 
@@ -54,7 +54,7 @@
     CurrentValue => RT::Installer->CurrentValues(@Types) &>
 
 <input type="hidden" name="Run" value="1">
-<& /Elements/Submit, Label => loc('Next: Customize Password for Users in RT'), Back => 1,
+<& /Elements/Submit, Label => loc('Next: Customize Email Addresses'), Back => 1,
     BackLabel => loc('Back: Customize Database Details') &>
 </form>
 </&>
@@ -63,7 +63,7 @@
 <%init>
 my @results;
 
-my @Types = qw/rtname Organization WebDomain WebPort Timezone/;
+my @Types = qw/rtname WebDomain WebPort Timezone Password/;
 
 if ( $Run ) {
 
@@ -84,7 +84,7 @@
 
     unless ( @results ) {
         RT::Interface::Web::Redirect(RT->Config->Get('WebURL') .
-'Install/Password.html');
+'Install/Emails.html');
     }
 }
 

Modified: rt/3.8/branches/3.8.0-releng/share/html/Install/DatabaseDetails.html
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Install/DatabaseDetails.html	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Install/DatabaseDetails.html	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<&| Elements/Wrapper, Title => 'Check your database credentials' &> 
+<&| Elements/Wrapper, Title => 'Step 2 of 7: Check your database credentials' &> 
 
 <& /Elements/ListActions, actions => \@results &>
 
@@ -57,7 +57,9 @@
             $RT::Installer->{InstallConfig}{DatabaseAdmin} ||
             ( $db_type eq 'mysql' ? 'root'
               : $db_type eq 'Pg' ? 'postgres'
-              : '' ) }
+              : '' ),
+       DatabasePassword => '' 
+        }
                     &>
 <input type="hidden" name="Run" value="1">
 

Modified: rt/3.8/branches/3.8.0-releng/share/html/Install/DatabaseType.html
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Install/DatabaseType.html	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Install/DatabaseType.html	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<&|Elements/Wrapper, Title => 'Choose a database engine' &>
+<&|Elements/Wrapper, Title => 'Step 1 of 7: Choose a database engine' &>
 
 <& /Elements/ListActions, actions => \@results &>
 

Modified: rt/3.8/branches/3.8.0-releng/share/html/Install/Emails.html
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Install/Emails.html	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Install/Emails.html	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<&| Elements/Wrapper, Title => 'Customize Email Addresses' &> 
+<&| Elements/Wrapper, Title => 'Step 4 of 7: Customize Email Addresses' &> 
 
 <& /Elements/ListActions, actions => \@results &>
 
@@ -55,7 +55,7 @@
 
 <input type="hidden" name="Run" value="1">
 <& /Elements/Submit, Label => loc('Next: Email Configuration'), Back => 1,
-    BackLabel => loc('Back: Customize Password for Users in RT') &>
+    BackLabel => loc('Back: Customize Basics') &>
 </form>
 </&>
 <%init>
@@ -71,7 +71,7 @@
 
     if ( $Back ) {
         RT::Interface::Web::Redirect(RT->Config->Get('WebURL') .
-'Install/Password.html');
+'Install/Basics.html');
     }
 
     unless ( @results ) {

Modified: rt/3.8/branches/3.8.0-releng/share/html/Install/Finish.html
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Install/Finish.html	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Install/Finish.html	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<&| Elements/Wrapper, Title => 'Finish' &> 
+<&| Elements/Wrapper, Title => 'Step 7 of 7: Finish' &> 
 
 <div class="intro">
 <p>

Modified: rt/3.8/branches/3.8.0-releng/share/html/Install/Initialize.html
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Install/Initialize.html	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Install/Initialize.html	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<&|Elements/Wrapper, Title => 'Initialize Database' &> 
+<&|Elements/Wrapper, Title => 'Step 6 of 7: Initialize Database' &> 
 
 <& /Elements/ListActions, actions => \@results &>
 

Modified: rt/3.8/branches/3.8.0-releng/share/html/Install/Sendmail.html
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Install/Sendmail.html	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Install/Sendmail.html	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<&|Elements/Wrapper, Title => 'Email Configuration' &> 
+<&|Elements/Wrapper, Title => 'Step 5 of 7: Email Configuration' &> 
 
 <& /Elements/ListActions, actions => \@results &>
 
@@ -62,7 +62,7 @@
 <%init>
 my @results;
 
-my @Types = qw/MaxAttachmentSize SendmailArguments SendmailBounceArguments SendmailPath/;
+my @Types = qw/SendmailArguments SendmailBounceArguments SendmailPath/;
 
 if ( $Run ) {
 
@@ -75,11 +75,6 @@
 'Install/Emails.html');
     }
 
-    for ( qw/MaxAttachmentSize/ ) {
-        if ( $ARGS{$_} && $ARGS{$_} !~ /^\d+$/ ) {
-            push @results, "Invalid $_: it should be a number";
-        }
-    }
 
     unless ( -e $ARGS{SendmailPath} ) {
         push @results, "$ARGS{SendmailPath} doesn't exist.";

Modified: rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/base.css
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/base.css	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/base.css	Wed Jun 18 17:07:37 2008
@@ -55,7 +55,6 @@
 a {
   color: #000;
   text-decoration: none;
-  font-weight: bold;
 }
 
 

Modified: rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/forms.css
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/forms.css	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/forms.css	Wed Jun 18 17:07:37 2008
@@ -219,3 +219,8 @@
     z-index: 150;
 }
 
+.value .TimeUnits{
+    margin-left: .5em;
+    width: 7em;
+}
+

Modified: rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/ticket-search.css
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/ticket-search.css	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/NoAuth/css/web2/ticket-search.css	Wed Jun 18 17:07:37 2008
@@ -50,9 +50,7 @@
 }
 
 #comp-Search-Build #pick-criteria select {
-    background: #eee;
-    border: 1px solid #eee;
-
+ width: 8em;
 }
 
 #comp-Search-Build #pick-criteria tr {
@@ -60,11 +58,12 @@
 }
 
 #comp-Search-Build #pick-criteria td.label {
-    font-size: 0.9em;
-    padding-right: 0.2em;
+    font: message-box;    
+    padding-right: 0.5em;
 }
 
 #comp-Search-Build #pick-criteria td.label * {
+ width: 8.5em;
 }
 
 #comp-Search-Build #pick-criteria td.label select {
@@ -74,25 +73,34 @@
 #comp-Search-Build #pick-criteria td.operator {
  padding-right: 0.5em;
  text-align: right;
- font-size: 0.9em;
+
+ width: 1em;
 }
 #comp-Search-Build #pick-criteria td.operator select {
  text-align: right;
 }
 
+#comp-Search-Build #pick-criteria td.value #ValueOfDate,
+#comp-Search-Build #pick-criteria td.value select{
+ width: 7em;
+}
+
 #comp-Search-Build #pick-criteria td.value input,
 #comp-Search-Build #pick-criteria td.value select {
- font-size: 0.9em;
- max-width: 14em;
+ width: 14em;
+}
+
+#comp-Search-Build #pick-criteria td.value #ValueOfTime,
+#comp-Search-Build #pick-criteria td.value #ValueOfTime-TimeUnits{
+ width: 7em;
 }
 
 #comp-Search-Build #pick-criteria td.value {
-  padding-right: 0.5em;
+ padding-right: 0.5em;
  text-align: left;
- font-size: 0.9em;
+ font: message-box;
 }
 
-
 #comp-Search-Build #editquery, #comp-Search-Build #editsearches{
   position: absolute;
   margin-top: 0.2em;

Modified: rt/3.8/branches/3.8.0-releng/share/html/Search/Edit.html
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Search/Edit.html	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Search/Edit.html	Wed Jun 18 17:07:37 2008
@@ -76,7 +76,7 @@
 my $QueryString = $m->comp('/Elements/QueryString',
                            Query   => $Query,
                            Format  => $Format,
-                           Rows    => $Rows,
+                           RowsPerPage    => $Rows,
                            OrderBy => $OrderBy,
                            Order   => $Order,
                           );

Modified: rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/ConditionRow
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/ConditionRow	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/ConditionRow	Wed Jun 18 17:07:37 2008
@@ -76,11 +76,11 @@
     if ( $box->{'Type'} eq 'text' ) {
         my $default = $box->{'Default'} || '';
         my $size = $box->{'Size'}? qq{size="$box->{'Size'}"} : '';
-        return qq{<input name="$name" value="$default" $size />};
+        return qq{<input id="$name" name="$name" value="$default" $size />};
     }
     if ( $box->{'Type'} eq 'select' ) {
         my $res = '';
-        $res .= qq{<select name="$name">};
+        $res .= qq{<select id="$name" name="$name">};
         my @options = @{ $box->{'Options'} };
         while( my $k = shift @options ) {
             my $v = shift @options;

Modified: rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectChartType
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectChartType	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectChartType	Wed Jun 18 17:07:37 2008
@@ -49,7 +49,7 @@
 $Name => 'ChartType'
 $Default => 'bar'
 </%args>
-<select name="<%$Name%>">
+<select id="<%$Name%>" name="<%$Name%>">
 % foreach my $option qw(bar pie) {
 <option value="<%$option%>"<% $option eq $Default ? qq[ selected="selected"] : '' |n %>><%loc($option)%></option>
 % }

Modified: rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectGroup
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectGroup	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectGroup	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<select name="<%$Name%>">
+<select id="<%$Name%>" name="<%$Name%>">
 % if ($AllowNull) {
 <option value="">-</option>
 % }

Modified: rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectGroupBy
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectGroupBy	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectGroupBy	Wed Jun 18 17:07:37 2008
@@ -50,7 +50,7 @@
 $Default => 'Status'
 $Query   => ''
 </%args>
-<select name="<% $Name %>">
+<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>

Modified: rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectPersonType
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectPersonType	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectPersonType	Wed Jun 18 17:07:37 2008
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<select name="<%$Name%>">
+<select id="<%$Name%>" name="<%$Name%>">
 % if ($AllowNull) {
 <option value="">-</option>
 % }

Modified: rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectSearchObject
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectSearchObject	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectSearchObject	Wed Jun 18 17:07:37 2008
@@ -56,7 +56,7 @@
     $default_privacy = ref($Object).'-'.$Object->Id;
 }
 </%init>
-<select name="<%$Name%>">
+<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) {

Modified: rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectSearchesForObjects
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectSearchesForObjects	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Search/Elements/SelectSearchesForObjects	Wed Jun 18 17:07:37 2008
@@ -50,7 +50,7 @@
 $Name => undef
 $SearchType => 'Ticket',
 </%args>
-<select name="<%$Name%>">
+<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>

Modified: rt/3.8/branches/3.8.0-releng/share/html/Ticket/Elements/Tabs
==============================================================================
--- rt/3.8/branches/3.8.0-releng/share/html/Ticket/Elements/Tabs	(original)
+++ rt/3.8/branches/3.8.0-releng/share/html/Ticket/Elements/Tabs	Wed Jun 18 17:07:37 2008
@@ -53,7 +53,6 @@
     current_toptab => $current_toptab,
     Title => $Title &> 
 <%INIT>
-
 my $tabs = {};
 my $current_toptab = "Search/Build.html", my $searchtabs = {};
 my $actions;
@@ -236,31 +235,33 @@
 }
 
 my $args = '';
+my $has_query = '';
 my %query_args;
+my $search_id = $ARGS{'SavedSearchId'}
+            || $session{'CurrentSearchHash'}->{'SearchId'};
 
-if ( $ARGS{'Query'} or $session{'CurrentSearchHash'}->{'Query'} ) {
-    %query_args = (
+$has_query = 1 if ( $ARGS{'Query'} or $session{'CurrentSearchHash'}->{'Query'} );
+  
+%query_args = (
 
-        SavedSearchId => $ARGS{'SavedSearchId'}
-            || $session{'CurrentSearchHash'}->{'SearchId'},
+        SavedSearchId => ($search_id eq 'new') ? undef : $search_id,
         Query  => $ARGS{'Query'}  || $session{'CurrentSearchHash'}->{'Query'},
         Format => $ARGS{'Format'} || $session{'CurrentSearchHash'}->{'Format'},
         OrderBy => $ARGS{'OrderBy'}
             || $session{'CurrentSearchHash'}->{'OrderBy'},
         Order => $ARGS{'Order'} || $session{'CurrentSearchHash'}->{'Order'},
         Page  => $ARGS{'Page'}  || $session{'CurrentSearchHash'}->{'Page'},
-        Rows  => $ARGS{'Rows'}  || $session{'CurrentSearchHash'}->{'Rows'},
+        RowsPerPage  => $ARGS{'RowsPerPage'}  || $session{'CurrentSearchHash'}->{'RowsPerPage'},
     );
 
     $args = "?" . $m->comp( '/Elements/QueryString', %query_args );
-}
 
 $tabs->{"f"} = {
     path  => "Search/Build.html?NewQuery=1",
     title => loc('New Search')
 };
 $tabs->{"g"} = {
-    path  => "Search/Build.html$args",
+    path  => "Search/Build.html" . (($has_query) ? $args : ''),
     title => loc('Edit Search')
 };
 $tabs->{"h"} = {
@@ -268,7 +269,7 @@
     title     => loc('Advanced'),
     separator => 1
 };
-if ($args) {
+if ($has_query) {
 
     if ( $current_tab =~ m{Search/Results.html} ) {
         $current_tab = "Search/Results.html$args";
@@ -312,6 +313,7 @@
         ? $tabs->{ "s" . $searchtab } = $searchtabs->{$searchtab}
         : $tabs->{ "z_" . $searchtab } = $searchtabs->{$searchtab};
 }
+
 </%INIT>
 
   
@@ -321,4 +323,5 @@
 $current_tab => ''
 $current_subtab => ''
 $Title => undef
+$RowsPerPage => undef
 </%ARGS>


More information about the Rt-commit mailing list