[Rt-commit] r8417 - in rt/branches/3.7-EXPERIMENTAL: . bin etc html html/Admin/Elements html/Admin/Global html/Admin/Users html/Elements html/Elements/CollectionAsTable html/Elements/RT__Template html/Elements/RT__Ticket html/Elements/RT__User html/NoAuth/css html/NoAuth/css/3.4-compat html/NoAuth/css/3.5-default html/NoAuth/css/web2 html/NoAuth/images html/NoAuth/js html/Search html/Search/Elements html/Ticket html/Ticket/Elements html/User html/Widgets lib/RT lib/RT/Interface lib/RT/Interface/Web

clkao at bestpractical.com clkao at bestpractical.com
Tue Aug 7 03:03:34 EDT 2007


Author: clkao
Date: Tue Aug  7 03:03:31 2007
New Revision: 8417

Added:
   rt/branches/3.7-EXPERIMENTAL/html/Elements/ColumnMap
   rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__Template/
   rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__Template/ColumnMap
   rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__User/
   rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__User/ColumnMap
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/local.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/approvals.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/body.css   (contents, props changed)
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/footer.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/forms.css   (contents, props changed)
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/header.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/login.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/logo.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/main.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/misc.css   (contents, props changed)
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/nav-left.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/nav.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/quickbar.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/ticket.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/titlebox.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/transactions.css   (contents, props changed)
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/yui.css
   rt/branches/3.7-EXPERIMENTAL/html/dhandler
Modified:
   rt/branches/3.7-EXPERIMENTAL/   (props changed)
   rt/branches/3.7-EXPERIMENTAL/bin/rt-mailgate.in
   rt/branches/3.7-EXPERIMENTAL/etc/initialdata
   rt/branches/3.7-EXPERIMENTAL/html/Admin/Elements/EditTemplates
   rt/branches/3.7-EXPERIMENTAL/html/Admin/Elements/ShowKeyInfo
   rt/branches/3.7-EXPERIMENTAL/html/Admin/Global/MyRT.html
   rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/Modify.html
   rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/MyRT.html
   rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/index.html
   rt/branches/3.7-EXPERIMENTAL/html/Elements/CollectionAsTable/Header
   rt/branches/3.7-EXPERIMENTAL/html/Elements/CollectionAsTable/Row
   rt/branches/3.7-EXPERIMENTAL/html/Elements/Login
   rt/branches/3.7-EXPERIMENTAL/html/Elements/PageLayout
   rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__Ticket/ColumnMap
   rt/branches/3.7-EXPERIMENTAL/html/Elements/SelectOwner
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.4-compat/misc.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/main.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/misc.css
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/autohandler
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/images/autohandler
   rt/branches/3.7-EXPERIMENTAL/html/NoAuth/js/autohandler
   rt/branches/3.7-EXPERIMENTAL/html/Search/Build.html
   rt/branches/3.7-EXPERIMENTAL/html/Search/Elements/EditSearches
   rt/branches/3.7-EXPERIMENTAL/html/Search/Elements/PickCriteria
   rt/branches/3.7-EXPERIMENTAL/html/SelfService/Prefs.html
   rt/branches/3.7-EXPERIMENTAL/html/Ticket/Display.html
   rt/branches/3.7-EXPERIMENTAL/html/Ticket/Elements/ShowHistory
   rt/branches/3.7-EXPERIMENTAL/html/Ticket/Elements/ShowMessageStanza
   rt/branches/3.7-EXPERIMENTAL/html/User/Prefs.html
   rt/branches/3.7-EXPERIMENTAL/html/Widgets/TitleBoxStart
   rt/branches/3.7-EXPERIMENTAL/lib/RT/CurrentUser.pm
   rt/branches/3.7-EXPERIMENTAL/lib/RT/Date.pm
   rt/branches/3.7-EXPERIMENTAL/lib/RT/Interface/Web.pm
   rt/branches/3.7-EXPERIMENTAL/lib/RT/Interface/Web/Handler.pm
   rt/branches/3.7-EXPERIMENTAL/lib/RT/User_Overlay.pm
   rt/branches/3.7-EXPERIMENTAL/lib/RT/Users_Overlay.pm

Log:
re-merge all changes on 3.7 after the test rename merge from tunis.

Modified: rt/branches/3.7-EXPERIMENTAL/bin/rt-mailgate.in
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/bin/rt-mailgate.in	(original)
+++ rt/branches/3.7-EXPERIMENTAL/bin/rt-mailgate.in	Tue Aug  7 03:03:31 2007
@@ -52,17 +52,21 @@
 
 =cut
 
-
 use strict;
+use warnings;
+
 use Getopt::Long;
 use LWP::UserAgent;
+use HTTP::Request::Common qw($DYNAMIC_FILE_UPLOAD);
+$DYNAMIC_FILE_UPLOAD = 1;
 
 use constant EX_TEMPFAIL => 75;
+use constant BUFFER_SIZE => 8192;
 
 my %opts;
 GetOptions( \%opts, "queue=s", "action=s", "url=s", "jar=s", "help", "debug", "extension=s", "timeout=i" );
 
-if ( $opts{help} ) {
+if ( $opts{'help'} ) {
     require Pod::Usage;
     import Pod::Usage;
     pod2usage("RT Mail Gateway\n");
@@ -74,61 +78,63 @@
     exit 1;
 }
 
-my $ua      = LWP::UserAgent->new();
-$ua->cookie_jar( { file => $opts{jar} } );
+my $ua = new LWP::UserAgent;
+$ua->cookie_jar( { file => $opts{'jar'} } ) if $opts{'jar'};
 
 my %args = (
-    queue   => $opts{queue},
-    action  => $opts{action},
+    queue       => $opts{'queue'},
+    action      => ($opts{'action'} || 'correspond'),
     SessionType => 'REST',    # Surpress login box
 );
 
-# Read the message in from STDIN
-$args{'message'} = do { local (@ARGV, $/); <> };
-unless ( $args{message} =~ /\S/ ) {
-    print STDERR "$0: no message passed on STDIN!\n";
-    exit 0;
-}
-
 if ( ($opts{'extension'} || '') =~ /^(?:action|queue|ticket)$/i ) {
     $args{ lc $opts{'extension'} } = $ENV{'EXTENSION'};
 } elsif ( $opts{'extension'} && $ENV{'EXTENSION'} ) {
     print STDERR "Value of the --extension argument is not action, queue or ticket"
-        .", but environment variable EXTENSION is also defined. The former is ignored.";
+        .", but environment variable EXTENSION is also defined. The former is ignored.\n";
 }
 
 # add ENV{'EXTENSION'} as X-RT-MailExtension to the message header
 if ( my $value = ( $ENV{'EXTENSION'} || $opts{'extension'} ) ) {
-    # prepare value to avoid MIME format brakage
+    # prepare value to avoid MIME format breakage
     # strip trailing newline symbols
     $value =~ s/(\r*\n)+$//;
     # make a correct multiline header field,
     # with tabs in the beginning of each line
     $value =~ s/(\r*\n)/$1\t/g;
-    $args{'message'} = "X-RT-Mail-Extension: $value\n"
-        . $args{'message'};
-    print $args{'message'};
+    $opts{'headers'} .= "X-RT-Mail-Extension: $value\n";
 }
 
-# Set up cookie here.
+# Read the message in from STDIN
+my %message = write_down_message();
+unless( $message{'filename'} ) {
+    $args{'message'} = [
+        undef, '',
+        'Content-Type' => 'application/octet-stream',
+        Content => ${ $message{'content'} },
+    ];
+} else {
+    $args{'message'} = [
+        $message{'filename'}, '',
+        'Content-Type' => 'application/octet-stream',
+    ];
+}
 
 my $full_url = $opts{'url'}. "/REST/1.0/NoAuth/mail-gateway";
-warn "Connecting to $full_url" if $opts{'debug'};
-
-
+print STDERR "$0: connecting to $full_url\n" if $opts{'debug'};
 
-$ua->timeout(exists($opts{'timeout'}) ? $opts{'timeout'} : 180);
-my $r = $ua->post( $full_url, {%args} );
+$ua->timeout( exists( $opts{'timeout'} )? $opts{'timeout'}: 180 );
+my $r = $ua->post( $full_url, \%args, Content_Type => 'form-data' );
 check_failure($r);
 
 my $content = $r->content;
-warn $content if ($opts{debug});
+print STDERR $content ."\n" if $opts{'debug'};
 
 if ( $content !~ /^(ok|not ok)/ ) {
 
     # It's not the server's fault if the mail is bogus. We just want to know that
     # *something* came out of the server.
-    warn <<EOF;
+    print STDERR <<EOF;
 RT server error.
 
 The RT server which handled your email did not behave as expected. It
@@ -137,16 +143,19 @@
 $content
 EOF
 
-exit EX_TEMPFAIL;
-
+    exit EX_TEMPFAIL;
 }
 
 exit;
 
+END {
+    unlink $message{'filename'} if $message{'filename'};
+}
+
 
 sub check_failure {
     my $r = shift;
-    return if $r->is_success();
+    return if $r->is_success;
 
     # This ordinarily oughtn't to be able to happen, suggests a bug in RT.
     # So only load these heavy modules when they're needed.
@@ -154,17 +163,62 @@
     require HTML::FormatText;
 
     my $error = $r->error_as_HTML;
-    my $tree  = HTML::TreeBuilder->new->parse($error);
+    my $tree  = HTML::TreeBuilder->new->parse( $error );
     $tree->eof;
 
     # It'll be a cold day in hell before RT sends out bounces in HTML
-    my $formatter = HTML::FormatText->new( leftmargin  => 0,
-                                           rightmargin => 50 );
-    warn $formatter->format($tree);
-    warn "This is $0 exiting because of an undefined server error" if ($opts{debug});
+    my $formatter = HTML::FormatText->new(
+        leftmargin  => 0,
+        rightmargin => 50,
+    );
+    print STDERR $formatter->format( $tree );
+    print STDERR "\n$0: undefined server error\n" if $opts{'debug'};
     exit EX_TEMPFAIL;
 }
 
+sub write_down_message {
+    use File::Temp qw(tempfile);
+
+    my ($fh, $filename) = tempfile('rt-mailgate-XXXX', SUFIX => '.bin');
+    unless( $fh ) {
+        print STDERR "$0: couldn't create temp file, using memory\n";
+
+        my $message = \do { local (@ARGV, $/); <> };
+        unless ( $$message =~ /\S/ ) {
+            print STDERR "$0: no message passed on STDIN\n";
+            exit 0;
+        }
+        $$message = $opts{'headers'} . $$message if $opts{'headers'};
+        return ( content => $message );
+    }
+
+    binmode $fh;
+    binmode \*STDIN;
+    
+    print $fh $opts{'headers'} if $opts{'headers'};
+
+    my $buf; my $empty = 1;
+    while(1) {
+        my $status = read \*STDIN, $buf, BUFFER_SIZE;
+        unless ( defined $status ) {
+            print STDERR "$0: couldn't read message: $!\n";
+            exit EX_TEMPFAIL;
+        } elsif ( !$status ) {
+            last;
+        }
+        $empty = 0 if $buf =~ /\S/;
+        print $fh $buf;
+    };
+    close $fh;
+
+    if ( $empty ) {
+        print STDERR "$0: no message passed on STDIN\n";
+        exit 0;
+    }
+    print STDERR "$0: temp file is '$filename'\n" if $opts{'debug'};
+    return (filename => $filename);
+}
+
 
 =head1 SYNOPSIS
 

Modified: rt/branches/3.7-EXPERIMENTAL/etc/initialdata
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/etc/initialdata	(original)
+++ rt/branches/3.7-EXPERIMENTAL/etc/initialdata	Tue Aug  7 03:03:31 2007
@@ -438,6 +438,20 @@
   }
 }}
     },
+    {  Queue       => 0,
+       Name        => "PasswordChange",    # loc
+       Description =>
+         "Inform user that his password has been reset", # loc
+       Content => q{Subject: [{RT->Config->Get('rtname')}] Password reset
+
+Greetings,
+
+Someone at {$ENV{'REMOTE_ADDR'}} requested a password reset for you on {RT->Config->Get('WebURL')}
+
+Your new password is:
+  {$NewPassword}
+}
+    },
 );
 # }}}
 

Modified: rt/branches/3.7-EXPERIMENTAL/html/Admin/Elements/EditTemplates
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Admin/Elements/EditTemplates	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Admin/Elements/EditTemplates	Tue Aug  7 03:03:31 2007
@@ -1,128 +1,80 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%#  
-%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
-%#                                          <jesse 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/copyleft/gpl.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/ListActions, actions => \@actions &>
 
 <form method="get" action="Templates.html">
-<input type="hidden" class="hidden" name="id" value="<%$id%>" />
+<input type="hidden" class="hidden" name="id" value="<% $id %>" />
 
-% if ($Templates->Count == 0 ) {
+% unless ( $Templates->Count ) {
 <p><i><&|/l&>(No templates)</&></i></p>
 % } else {
-<table>
-<tr>
-<th>
+
 <i><&|/l&>(Check box to delete)</&></i>
-</th>
-<th>
-</th>
-</tr>
-% my $count;
-% while (my $TemplateObj = $Templates->Next) { 
-<tr>
-<td>
-<input type="checkbox" class="checkbox" name="DeleteTemplate-<%$TemplateObj->Id%>" value="1" />
-</td>
-<td>
-<a href="Template.html?Queue=<%$id%>&Template=<%$TemplateObj->id()%>">
-<strong><% loc($TemplateObj->Name) %></strong></a>
-<br /><% loc($TemplateObj->Description) %>
-</td>
-</tr>
 
-% }
-</table>
+<& /Elements/CollectionList,
+    OrderBy       => 'id',
+    Order         => 'ASC',
+    BaseURL       => 'Templates.html?',
+    %ARGS,
+    DisplayFormat => '__CheckBox.{DeleteTemplates}__,'. $Format,
+    Format        => $Format,
+    Collection    => $Templates,
+    AllowSorting  => 1,
+    PassArguments => [qw(Format Rows Page Order OrderBy FindDisabledQueues)],
+&>
 % }
 
 <& /Elements/Submit, Label => loc('Delete Template') &>
 </form>
 
 <%INIT>
-my $Templates = RT::Templates->new($session{'CurrentUser'});
-my $QueueObj = RT::Queue->new($session{'CurrentUser'});
-my @actions;
+my $dir_path = $m->request_comp->dir_path;
+$Format ||= qq{'<a href="__WebPath__$dir_path/Template.html?Queue=$id&Template=__id__">__id__</a>/TITLE:#'}
+    .qq{,'<a href="__WebPath__$dir_path/Template.html?Queue=$id&Template=__id__">__Name__</a>/TITLE:Name'}
+    .qq{,'__Description__'};
 
-if ($id)  {
-        $QueueObj->Load($id);                        
-}
+my $QueueObj = RT::Queue->new( $session{'CurrentUser'} );
+$QueueObj->Load( $id ) if $id;
 
-if ($QueueObj->id) {
-	$Templates->LimitToQueue($id);
-}                                            
-else {                                       
-        $Templates->LimitToGlobal();
-}                                           
+my $Templates = RT::Templates->new($session{'CurrentUser'});
+if ( $QueueObj->id ) {
+    $Templates->LimitToQueue( $id );
+}
+else {
+    $Templates->LimitToGlobal;
+}
 
 # Now let callbacks add their extra limits
 $m->callback( %ARGS, Templates => $Templates );
+$Templates->RedoSearch;
 
-# {{{ deal with deleting existing templates
+# deal with deleting existing templates
+my @actions;
+# backwards compatibility, use DeleteTemplates array for this
 foreach my $key (keys %ARGS) {
-  # {{{ if we're trying to delete the template
-  if ($key =~ /^DeleteTemplate-(\d+)/) {
-    my $id = $1;
-    my $TemplateObj = RT::Template->new($session{'CurrentUser'});
-    $TemplateObj->Load($id);
+    next unless $key =~ /^DeleteTemplate-(\d+)/;
+    push @DeleteTemplates, $1;
+}
+
+foreach my $id( @DeleteTemplates ) {
+    my $TemplateObj = RT::Template->new( $session{'CurrentUser'} );
+    $TemplateObj->Load( $id );
+    unless ( $TemplateObj->id ) {
+        push @actions, loc("Couldn't load template #[_1]", $id);
+        next;
+    }
+
     my ($retval, $msg) = $TemplateObj->Delete;
-    if ($retval) {
-      push @actions, loc("Template deleted");
+    if ( $retval ) {
+        push @actions, loc("Template #[_1] deleted", $id);
     }
     else {
-      push @actions, $msg;
+        push @actions, $msg;
     }
-  }
-  # }}}
 }
-# }}}
 </%INIT>
 <%ARGS>
 $id => 0
-$title => undef
-$Move => undef
-$Source => undef
-$Template => undef
+
+$Format => undef
+
+ at DeleteTemplates => ()
 </%ARGS>

Modified: rt/branches/3.7-EXPERIMENTAL/html/Admin/Elements/ShowKeyInfo
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Admin/Elements/ShowKeyInfo	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Admin/Elements/ShowKeyInfo	Tue Aug  7 03:03:31 2007
@@ -64,7 +64,7 @@
 % foreach my $uinfo( @{ $res{'info'}{'User'} } ) {
 <tr><th><% loc('User (created - expire)') %>:</th>
 <td><% $uinfo->{'String'} %>\
-(<% $uinfo->{'Created'}->AsString( Time => 0 ) %> - \
+(<% $uinfo->{'Created'}? $uinfo->{'Created'}->AsString( Time => 0 ): loc('never') %> - \
 <% $uinfo->{'Expire'}? $uinfo->{'Expire'}->AsString( Time => 0 ): loc('never') %>)
 </td></tr>
 % }

Modified: rt/branches/3.7-EXPERIMENTAL/html/Admin/Global/MyRT.html
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Admin/Global/MyRT.html	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Admin/Global/MyRT.html	Tue Aug  7 03:03:31 2007
@@ -63,7 +63,7 @@
 <%init>
 my @actions;
 
-my @items = map { [ "component-$_", $_ ] } sort RT->Config->Get('HomepageComponents');
+my @items = map { [ "component-$_", $_ ] } sort @{ RT->Config->Get('HomepageComponents') };
 my $sys = RT::System->new( $session{'CurrentUser'} );
 # XXX: put this in savedsearches_to_portlet_items
 for ( $m->comp( "/Search/Elements/SearchesForObject",

Modified: rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/Modify.html
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/Modify.html	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/Modify.html	Tue Aug  7 03:03:31 2007
@@ -121,14 +121,14 @@
 <&|/l&>New Password</&>:
 </td>
 <td align="left">
-<input type="password" name="Pass1" />
+<input type="password" name="Pass1" autocomplete="off" />
 </td>
 </tr>
 <tr><td align="right">
 <&|/l&>Retype Password</&>:
 </td>
 <td>
-<input type="password" name="Pass2" />
+<input type="password" name="Pass2" autocomplete="off" />
 </td>
 </tr>
 </table>

Modified: rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/MyRT.html
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/MyRT.html	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/MyRT.html	Tue Aug  7 03:03:31 2007
@@ -83,7 +83,7 @@
 my ($default_portlets) = RT::System->new($session{'CurrentUser'})->Attributes->Named('HomepageSettings');
 my $portlets  = $UserObj->Preferences('HomepageSettings', $default_portlets ? $default_portlets->Content  : {});
 
-my %allowed_components = map {$_ => 1} RT->Config->Get('HomepageComponents');
+my %allowed_components = map {$_ => 1} @{RT->Config->Get('HomepageComponents')};
 my @items;
 
 push @items, map {["component-$_", $_]} sort keys %allowed_components;

Modified: rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/index.html
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/index.html	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Admin/Users/index.html	Tue Aug  7 03:03:31 2007
@@ -50,67 +50,87 @@
     current_subtab => 'Admin/Users/',
     Title => loc('Select a user') &>
 
-<h1><%$caption%></h1>
+<h1><% $caption %></h1>
 <p><&|/l&>Select a user</&>:</p>
-<ul>
 % unless ( $users->Count ) {
 <li><em><&|/l&>No users matching search criteria found.</&></em></li>
-% }
+% } else {
 
-% my @ids;
-% while ( $user = $users->Next ) {
-%    push @ids, $user->Id;
-<li><a href="Modify.html?id=<% $user->id %>"><& /Elements/ShowUser, User => $user &></a></li>
-%}
-</ul>
-% if ( my $ids = join(',', @ids) ) {
-<em>(<a href="<%RT->Config->Get('WebPath')%>/Download/Tabular/User/<% $ids %>/Users.tsv"><&|/l&>Download as a tab-delimited file</&></a>)</em><br />
+<& /Elements/CollectionList,
+    OrderBy => 'Name',
+    Order => 'ASC',
+    Rows  => 100,
+    BaseURL => RT->Config->Get('WebPath') .'/Admin/Users/index.html?',
+    %ARGS,
+    Format => $Format,
+    Collection => $users,
+    AllowSorting => 1,
+    PassArguments => [qw(Format Rows Page Order OrderBy UserString UserOp UserField IdLike EmailLike FindDisabledUsers)],
+&>
+
+% my $ids = join ',', map $_->id, @{ $users->ItemsArrayRef };
+% if ( $ids ) {
+<div align="right"><em>
+(<a href="<%RT->Config->Get('WebPath')%>/Download/Tabular/User/<% $ids %>/Users.tsv">
+<&|/l&>Download as a tab-delimited file</&>
+</a>)</em></div>
 % }
 
 <br /><br />
-<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html">
+% }
 
+<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html">
+% foreach my $field( qw(Format Rows Page Order OrderBy) ) {
+%     next unless defined $ARGS{ $field } && length $ARGS{ $field };
+<input type="hidden" name="<% $field %>" value="<% $ARGS{ $field } %>" />
+% }
 <&|/l&>Find people whose</&> <& /Elements/SelectUsers &><br />
-<input type="checkbox" class="checkbox" name="FindDisabledUsers" value="1" /> <&|/l&>Include disabled users in search.</&>
+<input type="checkbox" class="checkbox" name="FindDisabledUsers" value="1" <% $FindDisabledUsers? 'checked="checked"': '' %> />
+<&|/l&>Include disabled users in search.</&>
 <br />
 <div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" /></div> 
 </form>
 
 <%INIT>
-my ($user, $caption);
-my $users = new RT::Users($session{'CurrentUser'});
+my $caption;
+my $users = RT::Users->new( $session{'CurrentUser'} );
+$users->{'find_disabled_rows'} = 1 if $FindDisabledUsers;
 
-if ($FindDisabledUsers) {
-	$users->{'find_disabled_rows'} = 1;
-}
-
-if (length $UserString) {
+if ( length $UserString ) {
     $caption = loc("Users matching search criteria");
-    if ($UserField =~ /^CustomField-(\d+)/) {
-	$users->LimitCustomField(
-	    CUSTOMFIELD => $1,
-	    OPERATOR => $UserOp,
-	    VALUE => $UserString,
-	); 
+    if ( $UserField =~ /^CustomField-(\d+)/ ) {
+        $users->LimitCustomField(
+            CUSTOMFIELD => $1,
+            OPERATOR => $UserOp,
+            VALUE => $UserString,
+        ); 
     }
     else {
-	$users->Limit(
-	    FIELD => $UserField,
-	    OPERATOR => $UserOp,
-	    VALUE => $UserString,
-	); 
+        $users->Limit(
+            FIELD => $UserField,
+            OPERATOR => $UserOp,
+            VALUE => $UserString,
+        ); 
     }
 }
 else {
     $caption = loc("Privileged users");
     $users->LimitToPrivileged;
 }
+
+$Format ||= q{'<a href="__WebPath__/Admin/Users/Modify.html?id=__id__">__id__</a>/TITLE:#'}
+    .q{,'<a href="__WebPath__/Admin/Users/Modify.html?id=__id__">__Name__</a>/TITLE:Name'}
+    .q{,__RealName__, __EmailAddress__};
+
 </%INIT>
 <%ARGS>
+$Format => undef,
+
 $UserString => undef
 $UserOp => '='
 $UserField => 'Name'
 $IdLike => undef
 $EmailLike => undef
+
 $FindDisabledUsers => 0
 </%ARGS>

Modified: rt/branches/3.7-EXPERIMENTAL/html/Elements/CollectionAsTable/Header
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Elements/CollectionAsTable/Header	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Elements/CollectionAsTable/Header	Tue Aug  7 03:03:31 2007
@@ -92,10 +92,10 @@
     $m->out('<th class="collection-as-table">');
 
     $title =~ s/^__(.*)__$/$1/o;
-    my $tmp = $m->comp(
-        "/Elements/$Class/ColumnMap",
-        Name => $title,
-        Attr => 'title',
+    my $tmp = $m->comp( '/Elements/ColumnMap',
+        Class => $Class,
+        Name  => $title,
+        Attr  => 'title',
     );
 
     unless( $tmp ) {

Modified: rt/branches/3.7-EXPERIMENTAL/html/Elements/CollectionAsTable/Row
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Elements/CollectionAsTable/Row	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Elements/CollectionAsTable/Row	Tue Aug  7 03:03:31 2007
@@ -88,9 +88,10 @@
         my $col = $1;
         unless ( exists $ColumnMap->{ $col } ) {
             $ColumnMap->{ $col } = $m->comp(
-                "/Elements/$Class/ColumnMap",
-                Name => $col,
-                Attr => 'value'
+                "/Elements/ColumnMap",
+                Class => $Class,
+                Name  => $col,
+                Attr  => 'value'
             );
         }
 

Added: rt/branches/3.7-EXPERIMENTAL/html/Elements/ColumnMap
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/Elements/ColumnMap	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,109 @@
+<%ARGS>
+$Class => 'RT__Ticket'
+$Name
+$Attr  => undef
+</%ARGS>
+<%ONCE>
+
+# This is scary and should totally be refactored -- jesse
+my $COLUMN_MAP = {
+    id => {
+        attribute => 'id',
+        align     => 'right',
+        value     => sub { return $_[0]->id }
+    },
+
+    Created => {
+        attribute => 'Created',
+        title     => 'Created',
+        value     => sub { return $_[0]->CreatedObj->AsString }
+    },
+    CreatedRelative => {
+        attribute => 'Created',
+        title     => 'Created',
+        value     => sub { return $_[0]->CreatedObj->AgeAsString }
+    },
+    CreatedBy => {
+        attribute => 'CreatedBy',
+        title => 'Created By',
+        value     => sub { return $_[0]->CreatorObj->Name }
+    },
+    LastUpdated => {
+        attribute => 'LastUpdated',
+        title     => 'Last Updated',
+        value     => sub { return $_[0]->LastUpdatedObj->AsString }
+    },
+    LastUpdatedRelative => {
+        attribute => 'LastUpdated',
+        title     => 'Last Updated',
+        value     => sub { return $_[0]->LastUpdatedObj->AgeAsString }
+    },
+    LastUpdatedBy => {
+        attribute => 'LastUpdatedBy',
+        title     => 'Last Updated By',
+        value     => sub { return $_[0]->LastUpdatedByObj->Name }
+    },
+
+
+    CheckBox => {
+        title => sub {
+            my $name = $_[1] || 'SelectedTickets';
+            my $checked = $m->request_args->{ $name .'All' }? 'checked="checked"': '';
+
+            return \qq{<input type="checkbox" name="${name}All" value="1" $checked
+                              onclick="setCheckbox(this.form, '$name', this.checked)" />};
+        },
+        value => sub {
+            my $id = $_[0]->id;
+
+            my $name = $_[2] || 'SelectedTickets';
+            return \qq{<input type="checkbox" name="$name" value="$id" checked />}
+                if $m->request_args->{ $name . 'All'};
+
+            my $arg = $m->request_args->{ $name };
+            my $checked = '';
+            if ( $arg && ref $arg ) {
+                $checked = 'checked="checked"' if grep $_ == $id, @$arg;
+            }
+            elsif ( $arg ) {
+                $checked = 'checked="checked"' if $arg == $id;
+            }
+            return \qq{<input type="checkbox" name="$name" value="$id" $checked />}
+        },
+    },
+    RadioButton => {
+        title => \'&nbsp;',
+        value => sub {
+            my $id = $_[0]->id;
+
+            my $name = $_[2] || 'SelectedTicket';
+            my $arg = $m->request_args->{ $name };
+            my $checked = '';
+            $checked = 'checked="checked"' if $arg && $arg == $id;
+            return \qq{<input type="radio" name="SelectedTicket" value="$id" $checked />};
+        },
+    },
+};
+
+</%ONCE>
+<%INIT>
+$m->callback( COLUMN_MAP => $COLUMN_MAP, CallbackName => 'Once', CallbackOnce => 1 );
+$m->callback( COLUMN_MAP => $COLUMN_MAP );
+
+# first deal with class specific things
+my $class_map = $m->comp("/Elements/$Class/ColumnMap", Attr => $Attr, Name => $Name );
+return $class_map if $class_map;
+
+# deal with the simple things from the generic map
+if ( $COLUMN_MAP->{$Name} ) {
+    return ( $COLUMN_MAP->{$Name}->{$Attr} );
+}
+# complex things
+elsif ( (my ($mainkey, $subkey) = $Name =~ /^(.*?)\.{(.+)}$/) && $COLUMN_MAP->{$1} ) {
+    return $COLUMN_MAP->{$mainkey}->{$Attr}
+        unless ref $COLUMN_MAP->{$mainkey}->{$Attr} eq 'CODE';
+
+    return sub { $COLUMN_MAP->{$mainkey}->{$Attr}->( @_, $subkey ) };
+}
+
+</%INIT>

Modified: rt/branches/3.7-EXPERIMENTAL/html/Elements/Login
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Elements/Login	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Elements/Login	Tue Aug  7 03:03:31 2007
@@ -96,7 +96,7 @@
 
 <div class="input-row">
     <span class="label"><&|/l&>Password</&>:</span>
-    <span class="input"><input type="password" name="pass" /></span>
+    <span class="input"><input type="password" name="pass" autocomplete="off" /></span>
 </div>
 
 <div class="button-row">

Modified: rt/branches/3.7-EXPERIMENTAL/html/Elements/PageLayout
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Elements/PageLayout	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Elements/PageLayout	Tue Aug  7 03:03:31 2007
@@ -60,7 +60,7 @@
 
 <div id="header">
 <h1><% $title %></h1>
-
+<div id="page-navigation">
 % my $sep       = 0;
 % my $postsep   = 0;
 % my $count     = 0;
@@ -155,7 +155,7 @@
   </ul>
 % }
 </div>
-
+</div>
 <div id="body">
 % $m->callback( %ARGS, CallbackName => 'BeforeBody' );
 % $m->flush_buffer(); # we've got the page laid out, let's flush the buffer;

Added: rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__Template/ColumnMap
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__Template/ColumnMap	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,71 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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
+$Attr => undef
+</%ARGS>
+<%ONCE>
+our $TEMPLATE_COLUMN_MAP = {
+    id => {
+        title     => '#',
+        attribute => 'id',
+        align     => 'right',
+        value     => sub { return $_[0]->id },
+    },
+};
+
+foreach my $col(qw(Name Description)) {
+    $TEMPLATE_COLUMN_MAP->{ $col } = { attribute => $col, value => sub { return $_[0]->$col() } };
+}
+
+</%ONCE>
+<%INIT>
+$m->callback( COLUMN_MAP => $TEMPLATE_COLUMN_MAP, CallbackName => 'ColumnMap', CallbackOnce => 1 );
+return undef unless $TEMPLATE_COLUMN_MAP->{ $Name };
+return $TEMPLATE_COLUMN_MAP->{ $Name }->{ $Attr };
+</%INIT>

Modified: rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__Ticket/ColumnMap
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__Ticket/ColumnMap	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__Ticket/ColumnMap	Tue Aug  7 03:03:31 2007
@@ -102,11 +102,6 @@
         attribute => 'Owner',
         value     => sub { return $_[0]->OwnerObj->Name }
     },
-    id => {
-        attribute => 'id',
-        align     => 'right',
-        value     => sub { return $_[0]->id }
-    },
     Status => {
         attribute => 'Status',
         value     => sub { return loc($_[0]->Status) }
@@ -196,16 +191,6 @@
         attribute => 'Started',
         value     => sub { return $_[0]->StartedObj->AgeAsString }
     },
-    CreatedRelative => {
-        title     => 'Created',
-        attribute => 'Created',
-        value     => sub { return $_[0]->CreatedObj->AgeAsString }
-    },
-    LastUpdatedRelative => {
-        title     => 'Last Updated',
-        attribute => 'LastUpdated',
-        value     => sub { return $_[0]->LastUpdatedObj->AgeAsString }
-    },
     ToldRelative => {
         title     => 'Told',
         attribute => 'Told',
@@ -236,25 +221,6 @@
         attribute => 'Started',
         value     => sub { return $_[0]->StartedObj->AsString }
     },
-    Created => {
-        attribute => 'Created',
-        value     => sub { return $_[0]->CreatedObj->AsString }
-    },
-    CreatedBy => {
-        attribute => 'CreatedBy',
-        title => 'Created By',
-        value     => sub { return $_[0]->CreatorObj->Name }
-    },
-    LastUpdated => {
-        attribute => 'LastUpdated',
-        title     => 'Last Updated',
-        value     => sub { return $_[0]->LastUpdatedObj->AsString }
-    },
-    LastUpdatedBy => {
-        attribute => 'LastUpdatedBy',
-        title     => 'Last Updated By',
-        value     => sub { return $_[0]->LastUpdatedByObj->Name }
-    },
     Told => {
         attribute => 'Told',
         value     => sub { return $_[0]->ToldObj->AsString }

Added: rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__User/ColumnMap
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/Elements/RT__User/ColumnMap	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,73 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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
+$Attr => undef
+</%ARGS>
+<%ONCE>
+our $USER_COLUMN_MAP = {
+    id => {
+        title     => '#',
+        attribute => 'id',
+        align     => 'right',
+        value     => sub { return $_[0]->id },
+    },
+};
+
+foreach my $col(qw(Name RealName NickName EmailAddress Organization 
+    HomePhone WorkPhone MobilePhone PagerPhone Address1 Address2 City State Zip Country))
+{
+    $USER_COLUMN_MAP->{ $col } = { attribute => $col, value => sub { return $_[0]->$col() } };
+}
+
+</%ONCE>
+<%INIT>
+$m->callback( COLUMN_MAP => $USER_COLUMN_MAP, CallbackName => 'ColumnMap', CallbackOnce => 1 );
+return undef unless $USER_COLUMN_MAP->{ $Name };
+return $USER_COLUMN_MAP->{ $Name }->{ $Attr };
+</%INIT>

Modified: rt/branches/3.7-EXPERIMENTAL/html/Elements/SelectOwner
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Elements/SelectOwner	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Elements/SelectOwner	Tue Aug  7 03:03:31 2007
@@ -80,6 +80,7 @@
 
 my %user_uniq_hash;
 
+$m->callback( %ARGS, objects => \@objects, CallbackName => 'UpdateObjectList');
 
 foreach my $object (@objects) {
 	my $Users = RT::Users->new($session{CurrentUser});

Modified: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.4-compat/misc.css
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.4-compat/misc.css	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.4-compat/misc.css	Tue Aug  7 03:03:31 2007
@@ -47,3 +47,32 @@
 %# END BPS TAGGED BLOCK }}}
 .oddline { background: white; }
 .evenline { background: #cecfef; }
+
+
+#comp-Search-Build .titlebox-content {
+    padding-left: 0.7em;
+    padding-right: 0.3em;
+}
+
+#editsearches {
+    width: 55%;
+    float:right;
+    text-align: left;
+    padding-right: 1em;
+}
+
+#editsearches .titlebox-content {
+    padding: 1em;
+}
+
+
+#editquery {
+    width: 40%;
+    float: left;
+    padding-left: 1em;
+}
+
+#pick-criteria {
+    clear: both;
+}
+

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/local.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/local.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,51 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+
+%# This is the file you want to override in local/html for adding
+%# custom css.
+

Modified: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/main.css
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/main.css	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/main.css	Tue Aug  7 03:03:31 2007
@@ -58,4 +58,5 @@
 @import "nav.css";
 @import "header.css";
 @import "footer.css";
+ at import "local.css";
 

Modified: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/misc.css
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/misc.css	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/3.5-default/misc.css	Tue Aug  7 03:03:31 2007
@@ -117,6 +117,30 @@
     padding-right: 0.3em;
 }
 
+
+
+#editsearches {
+    width: 55%;
+    float:right;
+    text-align: left;
+    padding-right: 1em;
+}
+
+#editsearches .titlebox-content {
+    padding: 1em;
+}
+
+
+#editquery {
+    width: 40%;
+    float: left;
+    padding-left: 1em;
+}
+
+#pick-criteria {
+    clear: both;
+}
+
 .shredder-form { line-height: 3em }
 .shredder-form span { margin-left: 1em; margin-right: 1em }
 .shredder-help {

Modified: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/autohandler
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/autohandler	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/autohandler	Tue Aug  7 03:03:31 2007
@@ -46,6 +46,7 @@
 %# 
 %# END BPS TAGGED BLOCK }}}
 <%init>
+RT::Interface::Web::StaticFileHeaders();
 $r->content_type('text/css');
 $m->call_next();
 return();

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/approvals.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/approvals.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,97 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+.approval {
+    margin-bottom: 3em;
+    padding: 0 0 1em 0;
+    border: 1px solid #069;
+}
+
+.approval .name {
+    background: #069;
+    color: white;
+    font-size: 1.1em;
+    padding: 0.2em 0 0.4em 0.2em;
+}
+
+#body .approval .name :link, #body .approval .name :visited {
+    color: white;
+}
+
+.approval .originating-ticket {
+    margin: 0.5em;
+    border: 1px solid #aaa;
+}
+
+.approval .originating-ticket .link {
+    display: block;
+    background: #aaa;
+    padding: 0.2em 0 0.4em 0.2em;
+}
+
+.approval .originating-ticket .info {
+    padding: 0.5em;
+}
+
+#body .approval .originating-ticket .link :link,
+#body .approval .originating-ticket .link :visited {
+    color: black;
+}
+
+.approval .form {
+    margin: 1em 0.5em 0.5em 0.5em;
+}
+
+.approval .form .action, .approval .form .notes {
+    float: left;
+    margin-left: 1em;
+}
+
+.approval .form .action { padding-top: 1em; }
+
+.approval .form .action label { font-weight: normal; }
+.approval .form .notes label  { display: block; }

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/body.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/body.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,78 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+#body {
+    border-left: 10px solid #ccc;
+    border-right: 10px solid #ccc;
+
+}
+
+#body {
+    clear: both;
+}
+
+#body h1 {
+    border-bottom: 1px dotted #069;
+    padding-left: 0.5em;
+}
+
+#body h1, #body h2, #body h3, #body h4, #body h5, #body h6 {
+    color: #930;
+    font-weight: bold;
+}
+
+#body :link { color: #069; }
+
+#body :link, #body :visited {
+    font-weight: bold;
+    text-decoration: none;
+}
+
+#body :link:hover, #body :visited:hover {
+    text-decoration: underline;
+}
+

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/footer.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/footer.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,66 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+
+
+#footer {
+ border-top: 1px solid black;
+ font-size: 1em;
+ text-align: right;
+ padding: 1em;
+ margin-top: 3em;
+ color: #000;
+}
+
+#footer a {
+ color: #000;
+
+}
+
+p#time {
+ display: none;
+}

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/forms.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/forms.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,129 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+form input, form select, form .combobox {
+    border-top: 1px solid #ddd;
+    border-left: 1px solid #ddd;
+    border-bottom: 2px solid #999;
+    border-right: 2px solid #999;
+    padding: 0.25em;
+    background: #eee;
+    font-weight: bold;
+    font-size: 1em;
+    margin: 0.5em 0.5em 0 0.5em;
+}
+
+
+form input.checkbox, form input.radio {
+    border: none;
+    padding: 0;
+}
+
+/* form .entry input, form .value input */
+
+.label, form label, .labeltop {
+    font-weight: bold;
+}
+
+.label-comment {
+    font-weight: normal;
+    font-size: 0.9em;
+}
+
+.labeltop {
+    vertical-align: top;
+}
+
+.submit {
+    font-weight: bold;
+    color: #a00;
+    font-size: 1.1em;
+    padding: 0.3em 1.5em 0 1.5em;
+    border-top: 1px solid #930;
+    margin: 1.5em 0 2.5em 0;
+}
+
+.submit .buttons { float: right; }
+.submit .extra-buttons { float: left; }
+.submit .button { font-size: 0.9em; }
+.submit .submit-clear { display: none; }
+
+.input-row {
+    clear: both;
+    padding: 0.25em;
+}
+
+%# ComboBox styles... some properties like height and width must be dynamically
+%# set in the JS (at least for now).
+.comibobox {
+    border: 2px inset #069;
+    padding-left: 0.5em;
+    padding-bottom: 0.1em;
+}
+
+.combobox .combo-button {
+    padding: 0 2px 0 2px;
+    margin: 0;
+    background: ButtonFace;
+    color: ButtonText;
+    border: 2px outset ButtonHighlight;
+    cursor: default;
+    font-size: 8pt;
+}
+
+.combobox .combo-text {
+    border: none;
+    margin: 0;
+    padding: 0;
+}
+
+.combobox .combo-list {
+    z-index: 200;
+    border: 10px solid red;
+    background: red;
+}
+

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/header.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/header.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,112 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+
+
+body {
+ background: #ccc;
+ text-align: left;
+ padding:0;
+}
+
+div#logo { 
+ width: 100%;
+ height: 4em;
+ background-color:#999;
+ 
+}
+
+div#logo img {
+ float: left;
+ padding: 0em;
+ border: 0;
+}
+
+div#logo span {
+    clear: both;
+    float: left;
+}
+
+
+#header h1 {
+    color: #930;
+    padding-top: 1em;
+    padding-left: .25em;
+    font-weight: bold;
+    text-align: left;
+    font-size: 2em;
+}
+
+#header ul {
+    margin: 0;
+    padding: 0;
+    color: #eee;
+    float: left;
+}
+
+#header :link,
+#header :visited
+{
+    color: white;
+    text-decoration: none;
+}
+
+#header :link.selected,
+#header :visited.selected,
+#header :link:hover,
+#header :visited:hover
+{
+    color: #fc6; /*#ff6;*/
+}
+
+#header :link.selected,
+#header :visited.selected
+{
+    font-weight: bold;
+    text-decoration: underline;
+}
+

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/login.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/login.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,99 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+#login-box {
+    width: 50%;
+    margin: 0 auto 4em auto;
+}
+
+%# More rules only IE will recognize (but are still valid!) to correct for
+%# IE's incorrect handling of auto margins and the W3C defined behavior.
+%# text-align will affect a block element in IE, therefore centering it, like
+%# left and right auto margins *should*
+
+
+#login-box {
+
+    padding-top: 4em;
+
+}
+
+/*
+
+* html #login-box {
+    text-align: center;
+}
+
+
+
+%# ... and align the text back the way it should be
+* html #login-box .titlebox {
+    text-align: left;
+}
+
+#login-box .input-row {
+    padding: 0.5em;
+}
+
+#login-box .input-row .label {
+    width: 8em;
+    float: left;
+    text-align: right;
+    padding: 0.2em 1em 0 0;
+}
+
+#login-box .input-row .input {
+    float: left;
+}
+
+#login-box .button-row {
+    clear: both;
+    padding: 0.5em;
+    float: right;
+}
+
+*/

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/logo.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/logo.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,48 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/main.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/main.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,62 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+ at import "yui.css";
+ at import "misc.css";
+ at import "login.css";
+ at import "logo.css";
+ at import "quickbar.css";
+ at import "body.css";
+ at import "approvals.css";
+ at import "titlebox.css";
+ at import "forms.css";
+ at import "ticket.css";
+ at import "transactions.css";
+ at import "nav.css";
+ at import "header.css";
+ at import "footer.css";
+

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/misc.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/misc.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,149 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+
+.hide, .hidden { display: none !important; }
+
+#body.calpopup {
+    margin-left: 2em;
+}
+
+.calendar {
+    text-align: center;
+    margin: 2em 0 0 0;
+}
+
+.calendar td, .calendar th { padding: 0.1em 0.25em 0.1em 0.25em; }
+
+.calendar caption .month {
+    padding: 0 1em 0 1em;
+    font-size: 1.5em;
+}
+
+.evenline { background-color: white; }
+.oddline { background-color: #ddd; }
+
+td {
+    padding: 0.1em 0.5em 0.1em 0.5em;
+}
+
+.clear { clear: both; }
+
+ul.action-results {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+#comp-Search-Build body {
+}
+
+div.autocomplete {
+    position: absolute;
+    background-color: white;
+    border: 1px solid #888;
+    margin: 0px;
+    padding: 0px;
+}
+div.autocomplete ul {
+    list-style-type: none;
+    margin: 0px;
+    padding: 0px;
+}
+div.autocomplete ul li.selected {
+    background-color: #0088cc;
+    color: #eee;
+}
+div.autocomplete ul li {
+    list-style-type: none;
+    display: block;
+    margin: 0;
+    padding: 2px;
+}
+
+#comp-Search-Build .titlebox-content {
+    padding-left: 0.7em;
+    padding-right: 0.3em;
+}
+
+#editsearches {
+    width: 55%;
+    float:right;
+    text-align: left;
+    padding-right: 1em;
+}
+
+#editsearches .titlebox-content {
+    padding: 1em;
+}
+
+
+#editquery {
+    width: 40%;
+    float: left;
+    padding-left: 1em;
+}
+
+#pick-criteria {
+    clear: both;
+}
+
+.shredder-form { line-height: 3em }
+.shredder-form span { margin-left: 1em; margin-right: 1em }
+.shredder-help {
+    background-color: #ffe99d;
+    margin: 1em 2em;
+    padding: 1em;
+    border-style: solid;
+    border-color: black;
+    border-width: 1px;
+}
+#shredder-select-plugin { border-style: solid; border-color: black; border-width: 1px }
+#shredder-plugin-results { border-style: solid; border-color: black; border-width: 1px; margin-top: 1em; }
+#shredder-plugin-results input { margin-left: 1em; }
+
+.pod-sequence-C { background-color: #eee }
+

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/nav-left.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/nav-left.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,47 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/nav.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/nav.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,143 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+#nav {
+    float: left;
+    clear: both;
+    height: 4em;
+    width: 100%;
+    background: #999;
+    padding-top: 1em;
+}
+
+#nav ul {
+    float: left;
+    clear: left;
+    color: #eee;
+    font-weight: bold;
+    
+    margin: 0;
+    padding: 0;
+     
+}
+
+#nav li ul {
+}
+
+/*
+%# We need the extra padding above for browsers where we display the arrows
+%# but those don't work in IE so we don't want as much spacing
+%# 
+%# IE wrongly matches the selector below even though there isn't an element
+%# above <html> in the doc tree
+*/
+* html #nav li ul {
+    margin-top: 0.25em;
+}
+
+#nav li {
+    display: inline;
+    margin-bottom: 1em;
+    padding: 0.2em 0 0.4em 0;
+}
+
+
+#nav ul div div.wrapper {
+    text-align: left;
+    padding: 0.2em 1em 0.4em 0;
+    margin-left:0;
+}
+
+
+#nav :link,
+#nav :visited
+{
+    color: #ececec;
+    text-decoration: none;
+}
+
+#nav :link.selected,
+#nav :visited.selected,
+#nav :link:hover,
+#nav :visited:hover
+{
+    color: #fc6; /*#ff6;*/
+}
+
+#nav :link.selected,
+#nav :visited.selected
+{
+    text-decoration: underline;
+}
+
+
+
+
+#header #page-menu {
+    width: 100%;
+    height: 3em;
+    margin-top: -3.5em;
+    text-align: left;
+    padding-right: 0em;
+    float: left;
+    clear: both;
+    background: #999;
+}
+
+#header ul li {
+    display: inline;
+}
+
+
+
+#actions-menu  div div div{
+    position: relative;
+    right: 0;
+    top: -2em;
+    float: right;
+    margin-right: 2em;
+}

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/quickbar.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/quickbar.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,105 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+
+#quickbar {
+    position: absolute;
+    right: 0;
+    top: 0;
+    
+}
+#quickbar #quick-personal {
+    display: inline;
+    color: #fff;
+    padding: 0.5em 1em 0 0;
+    float: right;
+}
+
+#quickbar #quick-personal span {
+    font-weight: bold;
+}
+
+#quickbar #quick-personal :link,
+#quickbar #quick-personal :visited
+{
+    color: #fff;
+    font-weight: bold;
+}
+
+#quickbar #quick-personal :link:hover,
+#quickbar #quick-personal :visited:hover
+{
+    color: black;
+}
+
+#quickbar #topactions {
+    float: right;
+    clear: right;
+
+    font-size: 0.9em;
+    padding-right: 1em;
+}
+
+#quickbar #topactions form {
+    display: inline;
+    margin-left: 1em;
+}
+
+#quickbar #topactions form .button {
+    padding: 0 2px 0 2px;
+    font-size: 1em;
+    margin: 0;
+}
+
+#quickbar #topactions form .field {
+    padding: 1px;
+    font-size: 0.9em;
+}
+
+#quickbar #topactions form input.field {
+    padding: 3px;
+}

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/ticket.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/ticket.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,57 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+.ticket-info-cfs .label {
+    vertical-align: top;
+}
+
+.ticket-info-cfs ul {
+    margin: 0;
+    padding: 0;
+    margin-left: 0.5em;
+    list-style: none;
+}

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/titlebox.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/titlebox.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,198 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+.titlebox {
+    margin-bottom: 1em;
+}
+
+.titlebox .titlebox-content {
+    margin-top: -1px;
+    background: #fff;
+    /*padding: 1em 2em 0.5em 2em;*/
+    margin: 0;
+    /*margin: 1em 2em 0.5em 2em;*/
+}
+
+
+
+%# TRS: I wish there was a more elegant way to do this... I essentially need to
+%# select all elements X that do NOT have element Y as a descendant... which I can
+%# fake with the child selector of CSS2, but IE is stupid and does not support that.
+
+
+.titlebox {
+    padding:-right 3px;
+    border-bottom: 3px solid #666;
+    border-right: 3px solid #666;
+    border-left: 1px solid #ccc;
+    border-top: 1px solid #ccc;
+}
+
+
+
+
+.titlebox-content th {
+    background-color: #fff;
+    font-size: 80%;
+    font-weight: bold;
+    text-align: center;
+    padding-top: 0.5em;
+    padding-bottom: 0.5em;
+    border: 1px solid #aaa;
+    border-top:0;
+
+}
+
+.titlebox-content td {
+    text-align:left;
+
+}
+
+#login-box .titlebox .titlebox-content .button
+{
+}
+
+
+
+
+.titlebox .titlebox-title {
+    position: relative;
+    font-weight: bold;
+    color: #930;
+    font-size: 1.2em;
+    padding: 0.2em;
+    padding-left: 3em;
+    background-color: #ddd;
+    text-align: left;
+    border-bottom: 1px solid #ccc;
+}
+
+.titlebox .titlebox-title .right {
+    position: absolute;
+    top: 0.25em;
+    right: 0.5em; font-size: 0.8em;
+    color: #888;
+}
+
+.titlebox .titlebox-title .right .selected { color: #930; }
+
+#body .titlebox .titlebox-title .right :link,
+#body .titlebox .titlebox-title .right :visited {
+    color: #888;
+}
+
+#body .titlebox .titlebox-title .right :link:hover,
+#body .titlebox .titlebox-title .right :visited:hover {
+    color: #930;
+}
+
+.titlebox .titlebox-title .widget a {
+  display: block;
+  padding-top: 1em;
+  width: 2em;
+
+  background: url(<%RT->Config->Get('WebImagesURL')%>/css/rollup-arrow.gif) no-repeat center center;
+  
+  margin: 0;
+  text-indent: -9999px;
+
+  position: absolute;
+  top: 0.4em;
+  left: 0.75em;
+  float: left;
+
+%# Basically IE5 will see those crazy backslashes and prematurely end the rule.
+%# This allows values for IE 5's broken box model to be set before the hack and
+%# the real values to be set after.  We also set voice-family back to whatever it
+%# would have been on the off chance it's actually used.
+  /* WIN IE5 hack */
+  height: 7px;
+  voice-family: "\"}\"";
+  voice-family: inherit;
+  height: 0;
+  overflow: hidden;
+}
+
+%# IE also doesn't support the child selector ">", so we can use it to set values
+%# that only other browsers will see (in this case, playing nice with Opera, which
+%# also suffers from the backslash hack above.)
+html>body .titlebox .titlebox-title .widget a {
+    height: 0;
+    overflow: hidden;
+}
+
+%# Compensates for IE's bad box model by hiding this rule from other browsers
+* html .titlebox .titlebox-title .widget a {
+    background-position: center 0.3em;
+    left: -3.5em;
+}
+
+.titlebox.rolled-up .titlebox-title .widget a {
+    background-image: url(<%RT->Config->Get('WebImagesURL')%>/css/rolldown-arrow.gif);
+}
+
+#body .titlebox .titlebox-title :link,
+#body .titlebox .titlebox-title :visited
+{
+    color: #930;
+    text-decoration: none;
+}
+
+#body .titlebox .titlebox-title :link:hover,
+#body .titlebox .titlebox-title :visited:hover
+{
+    text-decoration: underline;
+}
+
+.titlebox .titlebox-content hr.clear {
+    display: none;
+    visibility: hidden;
+}
+.titlebox .titlebox-content table{
+    padding-left: 1em;
+}
+

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/transactions.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/transactions.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,160 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse 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/copyleft/gpl.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 }}}
+
+.history .titlebox, .summary .titlebox {
+    margin: 1em;
+}
+.history .titlebox, .summary .titlebox table table {
+    margin: 1em;
+
+} 
+.ticket-transaction {
+    padding-bottom: 0.25em;
+    padding-top: 0.25em;
+    border-bottom: 1px solid #ddd;
+    border-right: 3px solid #069;
+}
+
+#ticket-history .ticket-transaction {
+    border-bottom-color: #ccc;
+}
+
+.ticket-transaction.even {
+    background: #eee;
+}
+
+.ticket-transaction .date {
+    font-size: 0.9em;
+    width: 10em;
+}
+
+.ticket-transaction .description {
+    font-weight: bold;
+    text-align: left;
+    font-size: 0.9em;
+}
+
+.ticket-transaction .actions {
+    text-align: right;
+    font-weight: bold;
+}
+
+.ticket-transaction .type {
+    background: #888;
+    width: 1.5em;
+    color: white;
+    text-align: center;
+    font-size: 1.1em;
+}
+
+#body .ticket-transaction .type :link,
+#body .ticket-transaction .type :visited
+{
+    color: white;
+    font-weight: normal;
+}
+
+.ticket-transaction.basics { border-color: #b32; }
+.ticket-transaction.basics .type { background: #b32; }
+.ticket-summary .ticket-info-basics .titlebox { border-left: 0.5em solid #b32; }
+
+.ticket-transaction.reminders { border-color: #561; }
+.ticket-transaction.reminders .type { background: #5612; }
+.ticket-summary .ticket-info-reminders .titlebox { border-left: 0.5em solid #561; }
+
+.ticket-transaction.people { border-color: #48c; }
+.ticket-transaction.people .type { background: #48c; }
+.ticket-summary .ticket-info-people .titlebox { border-left: 0.5em solid #48c; }
+
+%# light green - #ad8
+.ticket-transaction.links { border-color: #316531; }
+.ticket-transaction.links .type { background: #316531; }
+.ticket-summary .ticket-info-links .titlebox  { border-left: 0.5em solid #316531; }
+
+%# orange - #d71
+.ticket-transaction.dates { border-color: #633063; }
+.ticket-transaction.dates .type { background: #633063; }
+.ticket-summary .ticket-info-dates .titlebox  { border-left: 0.5em solid #633063; }
+
+.ticket-transaction.message { border-color: #069; }
+.ticket-transaction.message .type { background: #069; }
+
+.ticket-transaction.other { border-color: #888; }
+
+.ticket-transaction td .message-header-value {
+    padding: 0;
+}
+
+.ticket-transaction td .message-header-key {
+    padding: 0 1em 0 1.5em;
+    font-weight: bold;
+}
+
+.ticket-transaction .downloadattachment {
+    float: right;
+    font-size: 0.9em;
+    text-align: right;
+}
+
+.ticket-transaction .messagebody {
+    clear: both;
+    padding-left: 3em;
+    padding-bottom: 1em;
+}
+
+%# Message stanza colors
+.message-stanza-depth-0 { color: #000; }
+.message-stanza-depth-1 { color: #600; }
+.message-stanza-depth-2 { color: #060; }
+.message-stanza-depth-3 { color: #006; }
+.message-stanza-depth-4 { color: #ccc; }
+.message-stanza-depth-5 { color: #0c0; }
+.message-stanza-depth-6 { color: #00c; }
+.message-stanza-depth-7 { color: #f00; }
+.message-stanza-depth-8 { color: #0f0; }
+.message-stanza-depth-9 { color: #00f; }

Added: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/yui.css
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/css/web2/yui.css	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,13 @@
+
+/*
+Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.2.2
+*/
+/*reset.css*/body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;}
+/*fonts.css*/body{font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}pre, code {font:115% monospace;*font-size:100%;}body * {line-height:1.22em;}
+/*grids.css*/body{text-align:center;}#ft{clear:both;}#doc,#doc2,#doc3,.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7{margin:auto;text-align:left;width:57.69em;*width:56.3em;min-width:750px;}#doc2{width:73.074em;*width:71.313em;min-width:950px;}#doc3{margin:auto 10px;width:auto;}.yui-b{position:relative;}.yui-b{_position:static;}#yui-main .yui-b{position:static;}#yui-main{width:100%;}.yui-t1 #yui-main,.yui-t2 #yui-main,.yui-t3 #yui-main{float:right;margin-left:-25em;}.yui-t4 #yui-main,.yui-t5 #yui-main,.yui-t6 #yui-main{float:left;margin-right:-25em;}.yui-t1 .yui-b{float:left;width:12.3207em;*width:12.0106em;}.yui-t1 #yui-main .yui-b{margin-left:13.3207em;*margin-left:13.0106em;}.yui-t2 .yui-b{float:left;width:13.8456em;*width:13.512em;}.yui-t2 #yui-main .yui-b{margin-left:14.8456em;*margin-left:14.512em;}.yui-t3 .yui-b{float:left;width:23.0759em;*width:22.52em;}.yui-t3 #yui-main .yui-b{margin-left:24.0759em;*margin-left:23.52em;}.yui-t4 .yui-b{float:right;width:13.8456em;*width:13.512em;}.yui-t4 #yui-main .yui-b{margin-right:14.8456em;*margin-right:14.512em;}.yui-t5 .yui-b{float:right;width:18.4608em;*width:18.016em;}.yui-t5 #yui-main .yui-b{margin-right:19.4608em;*margin-right:19.016em;}.yui-t6 .yui-b{float:right;width:23.0759em;*width:22.52em;}.yui-t6 #yui-main .yui-b{margin-right:24.0759em;*margin-right:23.52em;}.yui-t7 #yui-main .yui-b{display:block;margin:0 0 1em 0;}#yui-main .yui-b{float:none;width:auto;}.yui-g .yui-u,.yui-g .yui-g,.yui-gc .yui-u,.yui-gc .yui-g .yui-u,.yui-ge .yui-u,.yui-gf .yui-u{float:right;display:inline;}.yui-g div.first,.yui-gc div.first,.yui-gc div.first div.first,.yui-gd div.first,.yui-ge div.first,.yui-gf div.first{float:left;}.yui-g .yui-u,.yui-g .yui-g{width:49.1%;}.yui-g .yui-g .yui-u,.yui-gc .yui-g .yui-u{width:48.1%;}.yui-gb .yui-u,.yui-gc .yui-u,.yui-gd .yui-u{float:left;margin-left:2%;*margin-left:1.895%;width:32%;}.yui-gb div.first,.yui-gc div.first,.yui-gd div.first{margin-left:0;}.yui-gc div.first,.yui-gd .yui-u{width:66%;}.yui-gd div.first{width:32%;}.yui-ge .yui-u{width:24%;}.yui-ge div.first,.yui-gf .yui-u{width:74.2%;}.yui-gf div.first{width:24%;}.yui-ge div.first{width:74.2%;}#bd:after,.yui-g:after,.yui-gb:after,.yui-gc:after,.yui-gd:after,.yui-ge:after,.yui-gf:after{content:".";display:block;height:0;clear:both;visibility:hidden;}#bd,.yui-g,.yui-gb,.yui-gc,.yui-gd,.yui-ge,.yui-gf{zoom:1;}
+
+
+

Modified: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/images/autohandler
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/NoAuth/images/autohandler	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/images/autohandler	Tue Aug  7 03:03:31 2007
@@ -1,11 +1,12 @@
 <%INIT>
+&RT::Interface::Web::StaticFileHeaders();
 
 # This autohandler will spit out RT's images if the user hasn't 
 # properly configured their webserver to stop RT from passing 
 # images through the mason handler.
-
 my $file = $m->base_comp->source_file;
 
+
 my $type = "application/octet-stream";
 if ($file =~ /\.(gif|png|jpe?g)$/i) {
     $type = "image/$1";

Modified: rt/branches/3.7-EXPERIMENTAL/html/NoAuth/js/autohandler
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/NoAuth/js/autohandler	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/NoAuth/js/autohandler	Tue Aug  7 03:03:31 2007
@@ -46,6 +46,7 @@
 %# 
 %# END BPS TAGGED BLOCK }}}
 <%init>
+&RT::Interface::Web::StaticFileHeaders();
 $r->content_type('application/x-javascript');
 $m->call_next();
 return();

Modified: rt/branches/3.7-EXPERIMENTAL/html/Search/Build.html
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Search/Build.html	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Search/Build.html	Tue Aug  7 03:03:31 2007
@@ -78,29 +78,29 @@
 <input type="hidden" class="hidden" name="Query" value="<% $query{'Query'} %>" />
 <input type="hidden" class="hidden" name="Format" value="<% $query{'Format'} %>" />
 
-<table width="100%" border="0" cellpadding="5">
-<tr valign="top"><td class="boxcontainer" rowspan="2" width="65%">
-
-<& Elements/PickCriteria, query => $query{'Query'}, cfqueues => $queues &>
-<& /Elements/Submit, Caption => loc('Add these terms to your search'), Label => loc('Add'), Name => 'AddClause'&>
-
-</td><td>
 
+<div id="editquery">
 <& Elements/EditQuery,
     %ARGS,
     actions => \@actions,
     optionlist => $optionlist,
     Description => $saved_search{'Description'},
-&>
-<& /Elements/Submit, Label => loc('Add and Search'), Name => 'DoSearch'&>
+    &>
+</div>
+<div id="editsearches">
+    <& Elements/EditSearches, %saved_search, CurrentSearch => \%query &>
+</div>
+
+
+<div id="pick-criteria">
+    <& Elements/PickCriteria, query => $query{'Query'}, cfqueues => $queues &>
+</div>
+<& /Elements/Submit,  Label => loc('Add these terms'), Name => 'AddClause'&>
+
+<& /Elements/Submit, Label => loc('Add these terms and Search'), Name => 'DoSearch'&>
 
-</td></tr>
-<tr valign="top"><td>
 
-<& Elements/EditSearches, %saved_search, CurrentSearch => \%query &>
 
-</td></tr>
-<tr><td colspan="2" class="boxcontainer">
 
 <& Elements/DisplayOptions,
     %ARGS, %query,
@@ -110,7 +110,6 @@
 
 <& /Elements/Submit, Label => loc('Add and Search'), Name => 'DoSearch'&>
 
-</td></tr></table>
 </form>
 
 <%INIT>

Modified: rt/branches/3.7-EXPERIMENTAL/html/Search/Elements/EditSearches
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Search/Elements/EditSearches	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Search/Elements/EditSearches	Tue Aug  7 03:03:31 2007
@@ -75,7 +75,7 @@
 <input type="submit" name="SavedSearchSave" value="<%loc('Save')%>" class="button" />
 % }
 <br />
-
+<hr />
 <&|/l&>Load saved search:</&>
 <& SelectSearchesForObjects, Name => 'SavedSearchLoad', Objects => \@Objects, SearchType => $Type &>
 <input type="submit" value="<% loc('Load') %>" class="button" />

Modified: rt/branches/3.7-EXPERIMENTAL/html/Search/Elements/PickCriteria
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Search/Elements/PickCriteria	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Search/Elements/PickCriteria	Tue Aug  7 03:03:31 2007
@@ -49,19 +49,18 @@
 
 <table width="100%" cellspacing="0" cellpadding="0" border="0">
 
-<tr><th><&|/l&>Field</&></th><th><&|/l&>Operator</&></th><th><&|/l&>Value</&></th></tr>
 
+
+<& PickBasics &>
+<& PickCFs, cfqueues => \%cfqueues &>
+
+<tr class="separator"><td colspan="3"><hr /></td></tr>
 <tr>
 <td class="label"><&|/l&>Aggregator</&>:</td>
 <td class="operator">&nbsp;</td>
 <td class="value"><& SelectAndOr, Name => "AndOr" &></td>
 </tr>
 
-<tr class="separator"><td colspan="3"><hr /></td></tr>
-
-<& PickBasics &>
-<& PickCFs, cfqueues => \%cfqueues &>
-
 </table>
 
 </&>

Modified: rt/branches/3.7-EXPERIMENTAL/html/SelfService/Prefs.html
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/SelfService/Prefs.html	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/SelfService/Prefs.html	Tue Aug  7 03:03:31 2007
@@ -52,8 +52,8 @@
 
 % unless (RT->Config->Get('WebExternalAuth') and !RT->Config->Get('WebFallbackToInternalAuth')) {
 <&| /Widgets/TitleBox, title => loc('Change password')  &>
-<&|/l&>New password</&>: <input type="password" name="NewPass1" size="16" />
-<&|/l&>Confirm</&>: <input type="password" name="NewPass2" size="16" />
+<&|/l&>New password</&>: <input type="password" name="NewPass1" size="16" autocomplete="off" />
+<&|/l&>Confirm</&>: <input type="password" name="NewPass2" size="16" autocomplete="off" />
 </&>
 <br />
 % }

Modified: rt/branches/3.7-EXPERIMENTAL/html/Ticket/Display.html
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Ticket/Display.html	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Ticket/Display.html	Tue Aug  7 03:03:31 2007
@@ -56,10 +56,11 @@
 <& Elements/ShowUpdateStatus, Ticket => $TicketObj &>
 
 % $m->callback( %ARGS, Ticket => $TicketObj, CallbackName => 'BeforeShowSummary' );
+<div class="summary">
 <&| /Widgets/TitleBox, title => loc('Ticket metadata') &>
 <& /Ticket/Elements/ShowSummary,  Ticket => $TicketObj, Attachments => $attachments &>
 </&>
-
+</div>
 <br />
 
 % $m->callback( Ticket => $TicketObj, %ARGS, CallbackName => 'BeforeShowHistory' );

Modified: rt/branches/3.7-EXPERIMENTAL/html/Ticket/Elements/ShowHistory
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Ticket/Elements/ShowHistory	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Ticket/Elements/ShowHistory	Tue Aug  7 03:03:31 2007
@@ -58,7 +58,7 @@
     my $titleright;
 
     if ($ShowDisplayModes) {
-        $titleright = q[<span style="color: black">] . loc('Display mode') . ':</span> ';
+        $titleright = '';
         
         if ($ShowHeaders) {
             $titleright .= qq{<a href="$URIFile?id=} .
@@ -76,7 +76,8 @@
         }
     }
 </%perl>
-<& /Widgets/TitleBoxStart, title => $title, titleright => $titleright &>
+<div class="history">
+<& /Widgets/TitleBoxStart, title => $title, titleright_raw => $titleright &>
 % }
 
 <div id="ticket-history">
@@ -125,6 +126,7 @@
 % if ($ShowDisplayModes or $ShowTitle) {
 <& /Widgets/TitleBoxEnd &>
 % }
+</div>
 <%INIT>
 my $Transactions = new RT::Transactions($session{'CurrentUser'});
 if ($Tickets) {

Modified: rt/branches/3.7-EXPERIMENTAL/html/Ticket/Elements/ShowMessageStanza
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Ticket/Elements/ShowMessageStanza	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Ticket/Elements/ShowMessageStanza	Tue Aug  7 03:03:31 2007
@@ -58,7 +58,7 @@
                   Message => $stanza );
     }
     elsif ( ref $stanza eq "HASH" ) {
-        $para .= ($stanza->{raw}||'');
+        $para .= ($stanza->{raw}||'')."\n";
     }
 }
 $print_content->( \$para ) if length $para;

Modified: rt/branches/3.7-EXPERIMENTAL/html/User/Prefs.html
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/User/Prefs.html	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/User/Prefs.html	Tue Aug  7 03:03:31 2007
@@ -111,14 +111,14 @@
 <&|/l&>New Password</&>:
 </td>
 <td class="value">
-<input type="password" name="Pass1" />
+<input type="password" name="Pass1" autocomplete="off"/>
 </td>
 </tr>
 <tr><td class="label">
 <&|/l&>Retype Password</&>:
 </td>
 <td class="value">
-<input type="password" name="Pass2" />
+<input type="password" name="Pass2" autocomplete="off" />
 </td>
 </tr>
 </table>

Modified: rt/branches/3.7-EXPERIMENTAL/html/Widgets/TitleBoxStart
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/html/Widgets/TitleBoxStart	(original)
+++ rt/branches/3.7-EXPERIMENTAL/html/Widgets/TitleBoxStart	Tue Aug  7 03:03:31 2007
@@ -50,8 +50,8 @@
 % if ($hideable) {
     <span class="widget"><a href="#" onclick="return rollup('<%$tid%>');" onfocus="this.blur(); return false;" title="Toggle visibility">X</a></span>
 % }
-    <span class="left"><% $title_href && qq[<a href="$title_href">] | n %><% $title |n %><% $title_href && "</a>" |n%></span>
-    <span class="right"><% $titleright_href && qq[<a href="$titleright_href">] | n %><% $titleright |n %><% $titleright_href && "</a>" |n%></span>
+    <span class="left"><% $title_href && qq[<a href="$title_href">] | n %><% $title  %><% $title_href && "</a>" |n%></span>
+    <span class="right"><% $titleright_href && qq[<a href="$titleright_href">] | n %><% $titleright  %><% $titleright_raw |n%> <% $titleright_href && "</a>" |n%></span>
   </div>
   <div class="titlebox-content <% $bodyclass %>" id="<% $tid %>">
 
@@ -64,6 +64,7 @@
 $title_class => ''
 $titleright_href => ''
 $titleright => ''
+$titleright_raw => ''
 $contentbg => "#dddddd"
 $color => "#336699"
 $id => ''

Added: rt/branches/3.7-EXPERIMENTAL/html/dhandler
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/html/dhandler	Tue Aug  7 03:03:31 2007
@@ -0,0 +1,7 @@
+<& /Elements/Header, Title=>loc("Page not found")&>
+<& /Elements/Tabs, Title=>loc("Page not found"), &>
+<h1><&|/l&>The page you requested could not be found</&></h1>
+<&|/l&>Please check the URL and try again.</&>
+<%init>
+$r->header_out( Status => '404 File not found' );
+</%init>

Modified: rt/branches/3.7-EXPERIMENTAL/lib/RT/CurrentUser.pm
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/lib/RT/CurrentUser.pm	(original)
+++ rt/branches/3.7-EXPERIMENTAL/lib/RT/CurrentUser.pm	Tue Aug  7 03:03:31 2007
@@ -51,15 +51,36 @@
 
 =head1 SYNOPSIS
 
-  use RT::CurrentUser
+    use RT::CurrentUser;
+
+    # laod
+    my $current_user = new RT::CurrentUser;
+    $current_user->Load(...);
+    # or
+    my $current_user = RT::CurrentUser->new( $user_obj );
+    # or
+    my $current_user = RT::CurrentUser->new( $address || $name || $id );
+
+    # manipulation
+    $current_user->UserObj->SetName('new_name');
 
 
 =head1 DESCRIPTION
 
+B<Read-only> subclass of L<RT::User> class. Used to define the current
+user. You should pass an instance of this class to constructors of
+many RT classes, then the instance used to check ACLs and localize
+strings.
 
 =head1 METHODS
 
+See also L<RT::User> for a list of methods this class has.
+
+=head2 new
 
+Returns new CurrentUser object. Unlike all other classes of RT it takes
+either subclass of C<RT::User> class object or scalar value that is
+passed to Load method.
 
 =cut
 
@@ -67,12 +88,11 @@
 package RT::CurrentUser;
 
 use RT::I18N;
-use RT::User;
 
 use strict;
-use base qw/RT::User/;
+use warnings;
 
-# {{{ sub _Init 
+use base qw/RT::User/;
 
 #The basic idea here is that $self->CurrentUser is always supposed
 # to be a CurrentUser object. but that's hard to do when we're trying to load
@@ -101,31 +121,36 @@
     $self->_BuildTableAttributes;
 
 }
-# }}}
 
-# {{{ sub Create
+=head2 Create, Delete and Set*
+
+As stated above it's a subclass of L<RT::User>, but this class is read-only
+and calls to these methods are illegal. Return 'permission denied' message
+and log an error.
+
+=cut
 
 sub Create {
     my $self = shift;
+    $RT::Logger->error('RT::CurrentUser is read-only, RT::User for manipulation');
     return (0, $self->loc('Permission Denied'));
 }
 
-# }}}
-
-# {{{ sub Delete
-
 sub Delete {
     my $self = shift;
+    $RT::Logger->error('RT::CurrentUser is read-only, RT::User for manipulation');
     return (0, $self->loc('Permission Denied'));
 }
 
-# }}}
-
-# {{{ sub UserObj
+sub _Set {
+    my $self = shift;
+    $RT::Logger->error('RT::CurrentUser is read-only, RT::User for manipulation');
+    return (0, $self->loc('Permission Denied'));
+}
 
 =head2 UserObj
 
-Returns the RT::User object associated with this CurrentUser object.
+Returns the L<RT::User> object associated with this CurrentUser object.
 
 =cut
 
@@ -140,9 +165,6 @@
     }
     return $user;
 }
-# }}}
-
-# {{{ sub _Accessible 
 
 sub _CoreAccessible  {
      {
@@ -155,9 +177,6 @@
      };
   
 }
-# }}}
-
-# {{{ sub LoadByGecos
 
 =head2 LoadByGecos
 
@@ -170,9 +189,6 @@
     my $self = shift;
     return $self->LoadByCol( "Gecos", shift );
 }
-# }}}
-
-# {{{ sub LoadByName
 
 =head2 LoadByName
 
@@ -185,16 +201,12 @@
     my $self = shift;
     return $self->LoadByCol( "Name", shift );
 }
-# }}}
-
-# {{{ Localization
 
 =head2 LanguageHandle
 
 Returns this current user's langauge handle. Should take a language
 specification. but currently doesn't
 
-
 =cut 
 
 sub LanguageHandle {
@@ -244,12 +256,10 @@
 
     return $self->LanguageHandle->maketext_fuzzy( @_ );
 }
-# }}}
-
 
 =head2 CurrentUser
 
-Return  the current currentuser object
+Return the current currentuser object
 
 =cut
 
@@ -299,9 +309,6 @@
     return ($password eq $auth_digest);
 }
 
-# }}}
-
-
 eval "require RT::CurrentUser_Vendor";
 die $@ if ($@ && $@ !~ qr{^Can't locate RT/CurrentUser_Vendor.pm});
 eval "require RT::CurrentUser_Local";

Modified: rt/branches/3.7-EXPERIMENTAL/lib/RT/Date.pm
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/lib/RT/Date.pm	(original)
+++ rt/branches/3.7-EXPERIMENTAL/lib/RT/Date.pm	Tue Aug  7 03:03:31 2007
@@ -544,7 +544,7 @@
 
 Formatters may also add own arguments to the list, for example
 in RFC2822 format day of time in output is optional so it
-understand argument C<DayOfTime>.
+understand boolean argument C<DayOfTime>.
 
 =head3 DefaultFormat
 
@@ -659,11 +659,12 @@
 };
 
 
-=head3 RFC2822
+=head3 RFC2822 (MIME)
 
-Returns the object's date and time in RFC2822 format.
+Returns the object's date and time in RFC2822 format,
+for example C<Sun, 06 Nov 1994 08:49:37 +0000>.
 Format is locale independand as required by RFC. Time
-part always has timezone offset.
+part always has timezone offset in digits with sign prefix.
 
 Supports arguments: C<Timezone>, C<Date>, C<Time>, C<DayOfWeek>
 and C<Seconds>. See </Output formatters> for description of
@@ -698,6 +699,45 @@
     return join ' ', grep $_, ($date, $time);
 }
 
+=head3 RFC2616 (HTTP)
+
+Returns the object's date and time in RFC2616 (HTTP/1.1) format,
+for example C<Sun, 06 Nov 1994 08:49:37 GMT>. While the RFC describes
+version 1.1 of HTTP, but the same form date can be used in version 1.0.
+
+Format is fixed length, locale independand and always represented in GMT
+what makes it quite useless for users, but any date in HTTP transfers
+must be presented using this format.
+
+    HTTP-date = rfc1123 | ...
+    rfc1123   = wkday "," SP date SP time SP "GMT"
+    date      = 2DIGIT SP month SP 4DIGIT
+                ; day month year (e.g., 02 Jun 1982)
+    time      = 2DIGIT ":" 2DIGIT ":" 2DIGIT
+                ; 00:00:00 - 23:59:59
+    wkday     = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun"
+    month     = "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun"
+              | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec"
+
+Supports arguments: C<Date> and C<Time>, but you should use them only for
+some personal reasons, RFC2616 doesn't define any optional parts.
+See </Output formatters> for description of arguments.
+
+=cut
+
+sub RFC2616 {
+    my $self = shift;
+    my %args = ( Date => 1, Time => 1,
+                 @_,
+                 Timezone => 'utc',
+                 Seconds => 1, DayOfWeek => 1,
+               );
+
+    my $res = $self->RFC2822( @_ );
+    $res =~ s/\s*[+-]\d\d\d\d$/ GMT/ if $args{'Time'};
+    return $res;
+}
+
 sub _SplitOffset {
     my ($self, $offset) = @_;
     my $sign = $offset < 0? '-': '+';

Modified: rt/branches/3.7-EXPERIMENTAL/lib/RT/Interface/Web.pm
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/lib/RT/Interface/Web.pm	(original)
+++ rt/branches/3.7-EXPERIMENTAL/lib/RT/Interface/Web.pm	Tue Aug  7 03:03:31 2007
@@ -60,6 +60,7 @@
 
 
 package RT::Interface::Web;
+use URI;
 
 use strict;
 use warnings;
@@ -199,12 +200,15 @@
 =cut
 
 sub StaticFileHeaders {
+    my $date = RT::Date->new( $RT::SystemUser );
+
     # Expire things in a month.
-    $HTML::Mason::Commands::r->headers_out->{'Expires'} = HTTP::Date::time2str( time() + 2592000 );
+    $date->Set( Value => time + 30*24*60*60 );
+    $HTML::Mason::Commands::r->headers_out->{'Expires'} = $date->RFC2616;
 
     # Last modified at server start time
-    $HTML::Mason::Commands::r->headers_out->{'Last-Modified'} = HTTP::Date::time2str($^T);
-
+    $date->Set( Value => $^T );
+    $HTML::Mason::Commands::r->headers_out->{'Last-Modified'} = $date->RFC2616;
 }
 
 

Modified: rt/branches/3.7-EXPERIMENTAL/lib/RT/Interface/Web/Handler.pm
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/lib/RT/Interface/Web/Handler.pm	(original)
+++ rt/branches/3.7-EXPERIMENTAL/lib/RT/Interface/Web/Handler.pm	Tue Aug  7 03:03:31 2007
@@ -73,6 +73,7 @@
     static_source        => (RT->Config->Get('DevelMode') ? '0' : '1'), 
     use_object_files     => (RT->Config->Get('DevelMode') ? '0' : '1'), 
     autoflush            => 0,
+    error_format        =>  ((RT->Config->Get('DevelMode') ? 'html': 'brief',
     request_class        => 'RT::Interface::Web::Request',
 ) };
 

Modified: rt/branches/3.7-EXPERIMENTAL/lib/RT/User_Overlay.pm
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/lib/RT/User_Overlay.pm	(original)
+++ rt/branches/3.7-EXPERIMENTAL/lib/RT/User_Overlay.pm	Tue Aug  7 03:03:31 2007
@@ -708,38 +708,13 @@
         return ( 0, "$pass" );
     }
 
-    my $template = RT::Template->new( $self->CurrentUser );
-
-    if ( $self->Privileged ) {
-        $template->LoadGlobalTemplate('RT_PasswordChange_Privileged');
-    }
-    else {
-        $template->LoadGlobalTemplate('RT_PasswordChange_NonPrivileged');
-    }
-
-    unless ( $template->Id ) {
-        $template->LoadGlobalTemplate('RT_PasswordChange');
-    }
-
-    unless ( $template->Id ) {
-        $RT::Logger->crit( "$self tried to send "
-              . $self->Name
-              . " a password reminder "
-              . "but couldn't find a password change template" );
-    }
-
-    my $notification = RT::Action::SendPasswordEmail->new(
-        TemplateObj => $template,
-        Argument    => $pass
-    );
-
-    $notification->SetHeader( 'To', $self->EmailAddress );
-
-    my ($ret);
-    $ret = $notification->Prepare();
-    if ($ret) {
-        $ret = $notification->Commit();
-    }
+    my $ret = RT::Interface::Email::SendEmailUsingTemplate(
+		To        => $self->EmailAddress,
+		Template  => 'PasswordChange',
+		Arguments => {
+		    NewPassword => $pass,
+		},
+	    );
 
     if ($ret) {
         return ( 1, $self->loc('New password notification sent') );

Modified: rt/branches/3.7-EXPERIMENTAL/lib/RT/Users_Overlay.pm
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/lib/RT/Users_Overlay.pm	(original)
+++ rt/branches/3.7-EXPERIMENTAL/lib/RT/Users_Overlay.pm	Tue Aug  7 03:03:31 2007
@@ -336,7 +336,7 @@
 
         # XXX: This should be abstracted into object itself
         if( $args{'Object'}->id ) {
-            push @objects, $args{'Object'}->QueueObj;
+            push @objects, $args{'Object'}->ACLEquivalenceObjects;
         } else {
             push @objects, 'RT::Queue';
         }


More information about the Rt-commit mailing list