[Rt-commit] rt branch, 4.1-trunk, updated. rt-3.9.7-1034-g4fa7ba8

Shawn Moore sartak at bestpractical.com
Thu Dec 23 17:42:40 EST 2010


The branch, 4.1-trunk has been updated
       via  4fa7ba8c254ff0dc72e2c53881aadc3a46ce8351 (commit)
       via  38d29fa8aaa7b4f43488ed131871fd6501eb13f4 (commit)
       via  dbce0e2923d83faa9b29880ad82736f882737334 (commit)
       via  4cbd8b7262c4ea2ec170313a784b5004c1a80066 (commit)
       via  83d646c7cce2ebbe82508f7f8b1356ddd6a6af6f (commit)
       via  856a79cce3a60fd98bf7cfa5ce14edf9e9fa0be4 (commit)
       via  8a46d05d4279da6e28d8d85c2de38d4234410dc7 (commit)
       via  0687ed4f12c51b132a49af1f5083c075de86d489 (commit)
       via  97beda8391438defc5c557c3c88c7dbbded33ee5 (commit)
       via  904cb30afa1fdc0c24642ce52e8b0baa8bdd4929 (commit)
       via  643fd64c633cc1711dcb69edbf8b6a66ed6ce6ce (commit)
       via  fc7796b06582509e3058149938f2ff8796cea52a (commit)
       via  e9e84d512d83af1594749bef366be5078bf09410 (commit)
       via  410f1613d74ea5821bd1586e3e7179de94b712d7 (commit)
       via  a98d618f79e2000a9d7a862c9f264f64ebf4af01 (commit)
       via  bbcc0c58753afcfdb593261341e8d4f2f810a619 (commit)
       via  c4f52fab3dcdb3a32cbf29cdefee068e7d90b471 (commit)
       via  6048728bdd67c0ce86d868995150d0cacd4f3c6a (commit)
       via  f80d8f26a8db7db4cd6c4a8cf20f7c762afceda0 (commit)
       via  3df3b0c1052f7b980ca502ffc873f0e0f1239cd3 (commit)
       via  076e0cdc2814b7559f598db71d0ab0ac8b7cd62a (commit)
       via  b7e8708c9b1b1986a2fc15a1750fd0e537d92bb0 (commit)
       via  0519c68556daf5c233eff88d9113fd6c9880bbbc (commit)
       via  ca47b7bd7f669143034fb2d50dd89993721cecff (commit)
       via  a76a951eb47a8d00b17ecdd434c8cbbfb0ef4752 (commit)
      from  42c487b8f36d1af80563fa84b565963f974cb946 (commit)

Summary of changes:
 .gitignore                                        |    1 +
 Makefile.in                                       |    2 +-
 configure.ac                                      |    7 ++-
 devel/extract-message-catalog                     |   74 +++++++++-----------
 docs/articles_introduction.pod                    |   47 +++++++++-----
 etc/RT_Config.pm.in                               |   10 +++-
 sbin/{rt-dump-database.in => rt-dump-metadata.in} |   15 +++--
 share/html/Elements/Footer                        |    2 +-
 share/html/NoAuth/css/aileron/forms.css           |   20 ++++--
 share/html/NoAuth/css/aileron/msie.css            |    5 ++
 share/html/NoAuth/css/ballard/msie.css            |    4 +
 share/html/NoAuth/css/base/admin.css              |    4 +
 share/html/NoAuth/css/base/forms.css              |    5 ++
 share/html/NoAuth/css/base/nav.css                |    7 ++
 share/html/NoAuth/css/web2/msie.css               |    5 ++
 share/html/Widgets/FinalizeWidgetArguments        |    7 +-
 t/i18n/caching.t                                  |   33 +++++++++
 t/i18n/default.t                                  |    9 ++-
 t/ticket/requestor-order.t                        |    2 -
 19 files changed, 180 insertions(+), 79 deletions(-)
 rename sbin/{rt-dump-database.in => rt-dump-metadata.in} (93%)
 create mode 100644 t/i18n/caching.t

- Log -----------------------------------------------------------------
commit a76a951eb47a8d00b17ecdd434c8cbbfb0ef4752
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 22 19:53:56 2010 -0500

    Add a TODO test for sending the right lang= attribute on the <html> block

diff --git a/t/i18n/default.t b/t/i18n/default.t
index 764a67f..6c26b62 100644
--- a/t/i18n/default.t
+++ b/t/i18n/default.t
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 
-use RT::Test nodata => 1, tests => 10;
+use RT::Test nodata => 1;
 
 my ($baseurl, $m) = RT::Test->started_ok;
 $m->get_ok('/');
@@ -10,6 +10,7 @@ $m->title_is('Login');
 
 $m->get_ok('/', { 'Accept-Language' => 'x-klingon' });
 $m->title_is('Login', 'unavailable language fallback to en');
+$m->content_contains('<html lang="en">');
 
 $m->add_header('Accept-Language' => 'zh-tw,zh;q=0.8,en-gb;q=0.5,en;q=0.3');
 $m->get_ok('/');
@@ -17,3 +18,9 @@ use utf8;
 Encode::_utf8_on($m->{content});
 $m->title_is('登入', 'Page title properly translated to chinese');
 $m->content_contains('密碼','Password properly translated');
+{
+    local $TODO = "We fail to correctly advertise the langauage in the <html> block";
+    $m->content_contains('<html lang="zh-tw">');
+}
+
+undef $m;

commit ca47b7bd7f669143034fb2d50dd89993721cecff
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 22 19:54:43 2010 -0500

    Add a TODO test for the recently-discovered I18N caching bug

diff --git a/t/i18n/caching.t b/t/i18n/caching.t
new file mode 100644
index 0000000..3ea80da
--- /dev/null
+++ b/t/i18n/caching.t
@@ -0,0 +1,36 @@
+#!/usr/bin/perl -w
+use strict;
+use warnings;
+
+use RT::Test;
+
+{
+    my $french = RT::User->new(RT->SystemUser);
+    $french->LoadOrCreateByEmail('french at example.com');
+    $french->SetName('french');
+    $french->SetLang('fr');
+    $french->SetPrivileged(1);
+    $french->SetPassword('password');
+    $french->PrincipalObj->GrantRight(Right => 'SuperUser');
+}
+
+
+my ($baseurl, $m) = RT::Test->started_ok;
+$m->login( root => "password" );
+$m->get_ok('/Prefs/Other.html');
+$m->content_lacks('Commentaires','Lacks translated french');
+$m->get_ok( "/NoAuth/Logout.html" );
+
+$m->login( french => "password" );
+$m->get_ok('/Prefs/Other.html');
+$m->content_contains('Commentaires','Has translated french');
+$m->get_ok( "/NoAuth/Logout.html" ); # ->logout fails because it's translated
+
+$m->login( root => "password" );
+$m->get_ok('/Prefs/Other.html');
+{
+    local $TODO = "Per-process caching bug";
+    $m->content_lacks('Commentaires','Lacks translated french');
+}
+
+undef $m;

commit 0519c68556daf5c233eff88d9113fd6c9880bbbc
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 22 20:22:38 2010 -0500

    Don't localize values in a global hashref
    
    The ValuesLabel hashref passed into a widget is often pulled straight
    from the global %RT::Config::META hash; hence localizing it localizes
    it for all future non-English requests.  Hence, we instead construct
    our own hashref to localize into.

diff --git a/share/html/Widgets/FinalizeWidgetArguments b/share/html/Widgets/FinalizeWidgetArguments
index 45afd9d..df4a847 100644
--- a/share/html/Widgets/FinalizeWidgetArguments
+++ b/share/html/Widgets/FinalizeWidgetArguments
@@ -52,9 +52,10 @@
     $args{'Description'} = loc( $args{'Description'} ) if $args{'Description'};
     $args{'Hints'} = loc( $args{'Hints'} ) if $args{'Hints'};
     if ( $args{'ValuesLabel'} ) {
-        while (my ($k, $v) = each %{ $args{'ValuesLabel'} } ) {
-            $args{'ValuesLabel'}->{$k} = loc( $args{'ValuesLabel'}->{$k} );
-        }
+        my %labels;
+        $labels{$_} = loc( $args{'ValuesLabel'}->{$_} )
+            for keys %{$args{'ValuesLabel'}};
+        $args{'ValuesLabel'} = \%labels;
     }
     return \%args;
 </%init>
diff --git a/t/i18n/caching.t b/t/i18n/caching.t
index 3ea80da..024ef5b 100644
--- a/t/i18n/caching.t
+++ b/t/i18n/caching.t
@@ -28,9 +28,6 @@ $m->get_ok( "/NoAuth/Logout.html" ); # ->logout fails because it's translated
 
 $m->login( root => "password" );
 $m->get_ok('/Prefs/Other.html');
-{
-    local $TODO = "Per-process caching bug";
-    $m->content_lacks('Commentaires','Lacks translated french');
-}
+$m->content_lacks('Commentaires','Lacks translated french');
 
 undef $m;

commit b7e8708c9b1b1986a2fc15a1750fd0e537d92bb0
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Dec 23 13:22:49 2010 +0800

    make rt portal happy with firefox and ie8

diff --git a/share/html/NoAuth/css/base/admin.css b/share/html/NoAuth/css/base/admin.css
index 174a9b5..f3b2234 100644
--- a/share/html/NoAuth/css/base/admin.css
+++ b/share/html/NoAuth/css/base/admin.css
@@ -85,6 +85,10 @@ ul.list-menu ul li {
     padding-bottom: 1em;
 }
 
+#rt-portal .titlebox-content {
+    height: 100%;
+}
+
 #rt-portal .titlebox.rolled-up {
     bottom: auto;
     padding-bottom: 0;

commit 076e0cdc2814b7559f598db71d0ab0ac8b7cd62a
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Dec 23 13:23:17 2010 +0800

    make rt portal not so sad with ie<8

diff --git a/share/html/NoAuth/css/aileron/msie.css b/share/html/NoAuth/css/aileron/msie.css
index 18580b7..2939229 100644
--- a/share/html/NoAuth/css/aileron/msie.css
+++ b/share/html/NoAuth/css/aileron/msie.css
@@ -182,3 +182,8 @@ table.queue-summary td, td.collection-as-table {
   white-space: pre;   /* IE only hack to re-specify in addition to
   word-wrap  */
 }
+
+#rt-portal .titlebox-content {
+    height: 23em;
+}
+
diff --git a/share/html/NoAuth/css/ballard/msie.css b/share/html/NoAuth/css/ballard/msie.css
index 21d8f11..4c7cdf9 100644
--- a/share/html/NoAuth/css/ballard/msie.css
+++ b/share/html/NoAuth/css/ballard/msie.css
@@ -236,3 +236,7 @@ table.queue-summary td, td.collection-as-table {
   word-wrap  */
 }
 
+#rt-portal .titlebox-content {
+    height: 23em;
+}
+
diff --git a/share/html/NoAuth/css/web2/msie.css b/share/html/NoAuth/css/web2/msie.css
index df3597f..af9c0ca 100644
--- a/share/html/NoAuth/css/web2/msie.css
+++ b/share/html/NoAuth/css/web2/msie.css
@@ -243,3 +243,8 @@ div#logo .rtname {
 #page-action-menu {
     top: 9.5em;
 }
+
+#rt-portal .titlebox-content {
+    height: 23em;
+}
+

commit 3df3b0c1052f7b980ca502ffc873f0e0f1239cd3
Author: Thomas Sibley <trs at bestpractical.com>
Date:   Thu Dec 23 09:14:02 2010 -0500

    Fix the error titlebox styles for aileron

diff --git a/share/html/NoAuth/css/aileron/forms.css b/share/html/NoAuth/css/aileron/forms.css
index fc3675c..39ff192 100644
--- a/share/html/NoAuth/css/aileron/forms.css
+++ b/share/html/NoAuth/css/aileron/forms.css
@@ -1,11 +1,7 @@
 /* These override the base titlebox rules in base/forms.css. They try not to
    duplicate properties. */
 
-div.error .titlebox-title span.left {
-    border: none;
-}
-
-div.results .titlebox {
+div.results .titlebox, div.error div.error {
     border: none;
     background: none;
 }
@@ -14,6 +10,7 @@ div.results .titlebox-content {
     border: 1px solid #aa9;
     border-bottom: 2px solid #990;
     border-right: 2px solid #990;
+    background: #ffc;
 }
 
 div.results .titlebox-title .left {
@@ -21,6 +18,15 @@ div.results .titlebox-title .left {
     border-width: 1px 1px 0 1px;
 }
 
-div.results .titlebox-content {
-    background: #ffc;
+div.error .titlebox-title span.left {
+    border: none;
+    border-right: 2px solid #b00;
+    padding-left: 0.75em;
+}
+
+div.error .titlebox-content {
+    border: 1px solid #b00;
+    border-bottom: 2px solid #a00;
+    border-right: 2px solid #a00;
+    background-color: #fcc;
 }

commit f80d8f26a8db7db4cd6c4a8cf20f7c762afceda0
Author: Dominic Hargreaves <dom at earth.li>
Date:   Sun Dec 19 23:25:33 2010 +0000

    Document that rt-dump-database only dumps configuration
    
    rt-dump-database only dumps configuration data from the database, not
    all data; this seems to be a common misconception (example:
    <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=603247>)
    
    Signed-off-by: Thomas Sibley <trs at bestpractical.com>

diff --git a/sbin/rt-dump-database.in b/sbin/rt-dump-database.in
index 5ff1c48..8a3b91b 100755
--- a/sbin/rt-dump-database.in
+++ b/sbin/rt-dump-database.in
@@ -235,12 +235,14 @@ rt-dump-database - dump the Request Tracker database
 
 =head1 DESCRIPTION
 
-C<rt-dump-database> is a tool that dumps the Request Tracker database
-into XML format, suitable for feeding into C<rt-setup-database>.
+C<rt-dump-database> is a tool that dumps configuration metadata from the
+Request Tracker database into XML format, suitable for feeding into
+C<rt-setup-database>. To dump and load a full RT database, you should generally
+use the native database tools instead, as well as performing any necessary
+steps from UPGRADING.
 
 When run without arguments, the database dump will only include 'local'
 configuration changes, i.e. those done manually in the web interface.
 
 When run with the argument '0', the dump will include all configuration
 metadata.
-

commit 6048728bdd67c0ce86d868995150d0cacd4f3c6a
Author: Thomas Sibley <trs at bestpractical.com>
Date:   Thu Dec 23 10:08:12 2010 -0500

    Be a little more explicit about the purpose of this tool

diff --git a/sbin/rt-dump-database.in b/sbin/rt-dump-database.in
index 8a3b91b..ad3147a 100755
--- a/sbin/rt-dump-database.in
+++ b/sbin/rt-dump-database.in
@@ -227,7 +227,7 @@ __END__
 
 =head1 NAME
 
-rt-dump-database - dump the Request Tracker database
+rt-dump-database - dump configuration metadata from an RT database
 
 =head1 SYNOPSIS
 
@@ -246,3 +246,6 @@ configuration changes, i.e. those done manually in the web interface.
 
 When run with the argument '0', the dump will include all configuration
 metadata.
+
+This is NOT a tool for backing up an RT database.
+

commit c4f52fab3dcdb3a32cbf29cdefee068e7d90b471
Author: Thomas Sibley <trs at bestpractical.com>
Date:   Thu Dec 23 10:12:43 2010 -0500

    Rename rt-dump-database to rt-dump-metadata for clarity

diff --git a/.gitignore b/.gitignore
index ced6dc9..5580353 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,7 @@ t/tmp/
 sbin/rt-attributes-viewer
 sbin/rt-clean-sessions
 sbin/rt-dump-database
+sbin/rt-dump-metadata
 sbin/rt-email-dashboards
 sbin/rt-email-digest
 sbin/rt-email-group-admin
diff --git a/Makefile.in b/Makefile.in
index 7c1e7be..49cf7ad 100755
--- a/Makefile.in
+++ b/Makefile.in
@@ -141,7 +141,7 @@ BINARIES		=	$(RT_MAILGATE_BIN) \
 
 SYSTEM_BINARIES		=	rt-attributes-viewer \
 				rt-clean-sessions \
-				rt-dump-database \
+				rt-dump-metadata \
 				rt-email-dashboards \
 				rt-email-digest \
 				rt-email-group-admin \
diff --git a/configure.ac b/configure.ac
index 02894e1..320815d 100755
--- a/configure.ac
+++ b/configure.ac
@@ -389,7 +389,7 @@ AC_CONFIG_FILES([
                  etc/upgrade/generate-rtaddressregexp
                  sbin/rt-attributes-viewer
                  sbin/rt-session-viewer
-                 sbin/rt-dump-database
+                 sbin/rt-dump-metadata
                  sbin/rt-setup-database
                  sbin/rt-test-dependencies
                  sbin/rt-email-digest
diff --git a/sbin/rt-dump-database.in b/sbin/rt-dump-metadata.in
similarity index 97%
rename from sbin/rt-dump-database.in
rename to sbin/rt-dump-metadata.in
index ad3147a..ebbd32d 100755
--- a/sbin/rt-dump-database.in
+++ b/sbin/rt-dump-metadata.in
@@ -227,21 +227,21 @@ __END__
 
 =head1 NAME
 
-rt-dump-database - dump configuration metadata from an RT database
+rt-dump-metadata - dump configuration metadata from an RT database
 
 =head1 SYNOPSIS
 
-    rt-dump-database [ 0 ]
+    rt-dump-metdata [ 0 ]
 
 =head1 DESCRIPTION
 
-C<rt-dump-database> is a tool that dumps configuration metadata from the
+C<rt-dump-metadata> is a tool that dumps configuration metadata from the
 Request Tracker database into XML format, suitable for feeding into
 C<rt-setup-database>. To dump and load a full RT database, you should generally
 use the native database tools instead, as well as performing any necessary
 steps from UPGRADING.
 
-When run without arguments, the database dump will only include 'local'
+When run without arguments, the metadata dump will only include 'local'
 configuration changes, i.e. those done manually in the web interface.
 
 When run with the argument '0', the dump will include all configuration

commit bbcc0c58753afcfdb593261341e8d4f2f810a619
Author: Kevin Falcone <falcone at bestpractical.com>
Date:   Thu Dec 23 12:22:10 2010 -0500

    Document the HideArticleSearchOnReplyCreate option

diff --git a/etc/RT_Config.pm.in b/etc/RT_Config.pm.in
index 2390137..e3f7120 100755
--- a/etc/RT_Config.pm.in
+++ b/etc/RT_Config.pm.in
@@ -2332,7 +2332,6 @@ This option is exists for backwards compatibility.  Don't use it.
 
 Set this to 1 to display the Articles interface on the Ticket Create page
 in addition to the Reply/Comment page.
-This will only work with 3.8.1 or greater
 
 =back
 
@@ -2342,6 +2341,10 @@ Set($ArticleOnTicketCreate, 0);
 
 =item C<$HideArticleSearchOnReplyCreate>
 
+Set this to 1 to hide the search and include boxes from the Article UI.
+This assumes you have enabled Article Hotlist feature, otherwise you
+will have no access to Articles.
+
 =back
 
 =cut

commit a98d618f79e2000a9d7a862c9f264f64ebf4af01
Author: Kevin Falcone <falcone at bestpractical.com>
Date:   Thu Dec 16 12:09:14 2010 -0500

    Fix RTFM's Introduction.pod to refer to RT4's Articles

diff --git a/docs/articles_introduction.pod b/docs/articles_introduction.pod
index 81f7e22..ca263be 100644
--- a/docs/articles_introduction.pod
+++ b/docs/articles_introduction.pod
@@ -1,31 +1,45 @@
 
 =head1 INTRODUCTION
 
+=head2 UI
+
+The User interface to Articles is available from the Tools -> Articles
+menu.  Admin functionality can be found under Tools -> Configuration ->
+Articles.  Once configured, articles will become available for searching
+on the Reply/Comment page on tickets.  There are configuration variables
+to make Articles available on ticket creation.
+
 =head2 Basics
 
-Users should be now have a new "RTFM" menu item RT's top level menu.
 You will need to make some decisions about how to organize your
 articles.  Articles will be organized into one Class and multiple
 Topics.  They will use Custom Fields to store their article data.
 These Custom Fields can be configured on a Class by Class basis.
+Classes can be made available globally or on a per-Queue basis.
 
 =head2 Organization
 
 =head3 Classes
 
 Classes are equivalent to RT's queues.  They can be created by going
-to RTFM -> Configuration -> Classes -> New Class.  Articles are
-assigned to one Class.  When you create Custom Fields for use in RTFM,
-they will be activated per Class, like Custom Fields are activated per
-Queue in RT.  Each class also controls what information is included
-into a reply (such as the RTFM header and footer) and the Article
+to Tools -> Configuration -> Articles -> Classes -> New Class.  Articles
+are assigned to one Class.  When you create Custom Fields for use with
+Articles, they will be applied Globally or to a Class, like Custom
+Fields are applied to a Queue in RT.  Each class also controls what
+information is included into a reply (such as the Class header and
+footer) and the Article.
+
+Classes need to be Applied, just like a Custom Field by using the
+Applied To link.  You can apply them globally or on a queue-by-queue
+basis.
+
 hotlist.
 
 =head3 Topics
 
 You can also use Topics to organize your Articles.  While editing a
 Class, there is a Topic tab for Class specific Topics.  You can create
-global Topics from the Global tab under RTFM -> Configuration.
+global Topics from the Global tab under Tools -> Configuration.
 
 When editing Topics, type the name (and optionally description) of the
 Topic, and then click the button at the appropriate location in the
@@ -42,7 +56,7 @@ of the screen.
 
 =head2 Custom Fields
 
-RTFM doesn't have a single "body" section for each
+Articles don't have a single "body" section for each
 article. Everything is a custom field (except for name, summary and
 some other basic metadata). So, you need to create some custom
 fields to hold the Article body and other data.  These Custom Fields
@@ -54,7 +68,7 @@ Alternatively, use the Applies To link from each Custom Field.
 
 =head2 Creating Articles
 
-You can create an article from scratch by going to RTFM -> Articles ->
+You can create an article from scratch by going to Tools -> Articles ->
 New Article and then picking which Class to create the Article under.
 The Summary, Description and Custom Fields will all be searchable when
 including an Article and you can control what Custom Fields end up in
@@ -65,7 +79,7 @@ your Ticket from the Class configuration page.
 You can extract the body of a ticket into an article. Within RT, you
 should now see an "Extract to article" button in the upper right hand
 corner of RT's UI when working with tickets. When you click that
-button, RTFM will ask you which Class to create your new article in.
+button, RT will ask you which Class to create your new article in.
 Once you click on a class name, the Ticket's transactions will be
 displayed, along with a set of select boxes. For each transaction, you
 can pick which Custom Field that transaction should be extracted to.
@@ -74,7 +88,7 @@ From there on in, it's just regular article creation.
 =head2 Including an Article
 
 When replying to or commenting on tickets or creating tickets, there
-is a UI widget that lets you search for and include RTFM articles in
+is a UI widget that lets you search for and include Articles in
 your reply.  (They're editable, of course).  
 
 Articles can be included by searching for them, knowing the Id of the
@@ -99,6 +113,9 @@ offered a choice of Topic 1 and Topic 2 along with the searching.
 After choosing Topic 1 or Topic 2, you will be given a list of
 relevant articles to choose.
 
+Alternately, you can now implement this by applying a single class to
+your queue and using the L<Article Hotlist> feature described below.
+
 =head2 Article Hotlist
 
 If you enable "All articles in this class are on dropdown on ticket
@@ -113,15 +130,13 @@ to look for answer to questions before creating a Ticket.
 
 =head1 Configuration options
 
-=head2 RTFM_TicketCreate
+=head2 ArticleOnTicketCreate
 
-Set this to a true value to display the RTFM include interface on the
+Set this to a true value to display the Article include interface on the
 Ticket Create page in addition to the Reply/Comment page (Create.html
 in addition to Update.html)
 
-Please note, this only works with RTFM 3.8.1 or greater
-
-=head2 RTFM_HideArticleSearchOnReplyCreate
+=head2 HideArticleSearchOnReplyCreate
 
 On Ticket Reply (and Create if you set the above config var)
 RTFM normally displays a search box and an include box (for

commit 410f1613d74ea5821bd1586e3e7179de94b712d7
Author: Thomas Sibley <trs at bestpractical.com>
Date:   Thu Dec 23 13:52:38 2010 -0500

    Record the configure incant in RT_Config.pm
    
    This file is installed both on make install and make upgrade and has
    permissions locked down accordingly since the configure arguments may
    contain database passwords.

diff --git a/configure.ac b/configure.ac
index 320815d..acfdd81 100755
--- a/configure.ac
+++ b/configure.ac
@@ -10,6 +10,11 @@ AC_PREREQ([2.53])
 AC_INIT(RT, m4_esyscmd([( git describe --tags || cat ./.tag 2> /dev/null || echo "rt-3.9.EXPORTED" )| tr -d "\n"]), [rt-bugs at bestpractical.com])
 AC_CONFIG_SRCDIR([lib/RT.pm])
 
+dnl Save our incant early since $@ gets overwritten by some macros.
+dnl ${ac_configure_args} is available later, but it's quoted differently
+dnl and dnl undocumented.  See http://www.spinics.net/lists/ac/msg10022.html.
+AC_SUBST(CONFIGURE_INCANT, "$0 $@")
+
 dnl Extract RT version number components
 AC_SUBST([rt_version_major],
 	m4_bregexp(AC_PACKAGE_VERSION,[^rt-\(\w+\)\.\(\w+\)\.\(.+\)$],[\1]))
diff --git a/etc/RT_Config.pm.in b/etc/RT_Config.pm.in
index e3f7120..df27c87 100755
--- a/etc/RT_Config.pm.in
+++ b/etc/RT_Config.pm.in
@@ -1,3 +1,8 @@
+#
+# RT was configured with:
+#
+#   $ @CONFIGURE_INCANT@
+#
 
 package RT;
 

commit e9e84d512d83af1594749bef366be5078bf09410
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 23 14:43:39 2010 -0500

    Fix minor dnl wrapping bug

diff --git a/configure.ac b/configure.ac
index acfdd81..e31e52b 100755
--- a/configure.ac
+++ b/configure.ac
@@ -12,7 +12,7 @@ AC_CONFIG_SRCDIR([lib/RT.pm])
 
 dnl Save our incant early since $@ gets overwritten by some macros.
 dnl ${ac_configure_args} is available later, but it's quoted differently
-dnl and dnl undocumented.  See http://www.spinics.net/lists/ac/msg10022.html.
+dnl and undocumented.  See http://www.spinics.net/lists/ac/msg10022.html.
 AC_SUBST(CONFIGURE_INCANT, "$0 $@")
 
 dnl Extract RT version number components

commit fc7796b06582509e3058149938f2ff8796cea52a
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Thu Dec 23 13:46:46 2010 -0500

    Link to the right version of the GPL on the front page; also, make the URL not in the loc string

diff --git a/share/html/Elements/Footer b/share/html/Elements/Footer
index d004663..b77bdfa 100755
--- a/share/html/Elements/Footer
+++ b/share/html/Elements/Footer
@@ -56,7 +56,7 @@
   <p id="bpscredits"><span><&|/l,     '&#187;&#124;&#171;', $RT::VERSION, '2010', '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>', &>[_1] RT [_2] Copyright 1996-[_3] [_4].</&>
 </span></p>
 % if (!$Menu) {
-  <p id="legal"><&|/l&>Distributed under version 2 <a href="http://www.gnu.org/copyleft/gpl.html"> of the GNU GPL.</a></&><br /><&|/l, '<a href="mailto:sales at bestpractical.com">sales at bestpractical.com</a>' &>To inquire about support, training, custom development or licensing, please contact [_1].</&><br /></p>
+  <p id="legal"><&|/l, '<a href="http://www.gnu.org/licenses/gpl-2.0.html">', '</a>' &>Distributed under [_1]version 2 of the GNU GPL[_2].</a></&><br /><&|/l, '<a href="mailto:sales at bestpractical.com">sales at bestpractical.com</a>' &>To inquire about support, training, custom development or licensing, please contact [_1].</&><br /></p>
 % }
 </div>
 % if ($Debug >= 2 ) {

commit 643fd64c633cc1711dcb69edbf8b6a66ed6ce6ce
Author: Thomas Sibley <trs at bestpractical.com>
Date:   Thu Dec 23 16:20:00 2010 -0500

    Let the top actions buttons scale with their label (#16151)

diff --git a/share/html/NoAuth/css/base/nav.css b/share/html/NoAuth/css/base/nav.css
index 053af2a..3c4eaae 100644
--- a/share/html/NoAuth/css/base/nav.css
+++ b/share/html/NoAuth/css/base/nav.css
@@ -1,3 +1,10 @@
 .sf-menu li.active > .menu-item {
     font-weight: bold;
 }
+
+#topactions input[type="submit"], #topactions input.button {
+    width: auto;
+    padding-left: 0.5em;
+    padding-right: 0.5em;
+}
+

commit 904cb30afa1fdc0c24642ce52e8b0baa8bdd4929
Author: Thomas Sibley <trs at bestpractical.com>
Date:   Thu Dec 23 16:24:24 2010 -0500

    Slightly better placement of the Update format button - #16151

diff --git a/share/html/NoAuth/css/base/forms.css b/share/html/NoAuth/css/base/forms.css
index aa2fa1e..9c6c2a5 100755
--- a/share/html/NoAuth/css/base/forms.css
+++ b/share/html/NoAuth/css/base/forms.css
@@ -263,3 +263,8 @@ form div.submit div.buttons div.next {
     width: 50%;
 }
 
+/* query builder */
+
+#formatbuttons {
+    clear: both;
+}

commit 97beda8391438defc5c557c3c88c7dbbded33ee5
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Dec 23 16:46:07 2010 -0500

    Warn about interpolated variables in loc strings

diff --git a/devel/extract-message-catalog b/devel/extract-message-catalog
index ded346a..3b6cc6e 100755
--- a/devel/extract-message-catalog
+++ b/devel/extract-message-catalog
@@ -99,17 +99,24 @@ foreach my $dict (@ARGV) {
     update($lang, $dict);
 }
 
-# warn about extra whitespace (at the very end so it'll be harder to miss)
+# warn about various red flags in loc strings
 foreach my $str ( sort keys %{$FILECAT} ) {
     my $entry = $FILECAT->{$str};
     my $entry_count = @$entry;
 
+    # doesn't exist in the current codebase, ignore for now
+    next if $entry_count == 0;
+
+    my ($filename, $line) = @{ $entry->[0] };
+
+    my $location = "$filename line $line" . ($entry_count > 1 ? " (and ".($entry_count-1)." other places)" : "");
+
     if ($str =~ /^\s/m || $str =~ /\s$/m || $str =~ /\\n$/m) {
-        # doesn't exist in the current codebase, ignore for now
-        next if $entry_count == 0;
+        warn "Extraneous whitespace in '$str' at $location\n";
+    }
 
-        my ($filename, $line) = @{ $entry->[0] };
-        warn "Extraneous whitespace in '$str' at $filename line $line" . ($entry_count > 1 ? " (and ".($entry_count-1)." other places)" : "") . "\n";
+    if ($str =~ /([\$\@]\w+)/) {
+        warn "Interpolated variable '$1' in '$str' at $location\n";
     }
 }
 

commit 0687ed4f12c51b132a49af1f5083c075de86d489
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Dec 23 16:53:59 2010 -0500

    Now that we actually warn about msgids with $, don't drop them
    
        No wonder my test strings were vanishing :P

diff --git a/devel/extract-message-catalog b/devel/extract-message-catalog
index 3b6cc6e..9d9a34e 100755
--- a/devel/extract-message-catalog
+++ b/devel/extract-message-catalog
@@ -68,9 +68,6 @@ $FILECAT = {};
 # scan html dir for extensions
 File::Find::find( { wanted => \&extract_strings_from_code, follow => 1 }, qw(bin sbin lib share html etc) );
 
-# remove msgid with $ in it.  XXX: perhaps give some warnings here
-$FILECAT = { map { $_ => $FILECAT->{$_} } grep { !m/\$/ } keys %$FILECAT };
-
 # ensure proper escaping and [_1] => %1 transformation
 foreach my $str ( sort keys %{$FILECAT} ) {
     my $entry = $FILECAT->{$str};

commit 8a46d05d4279da6e28d8d85c2de38d4234410dc7
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Dec 23 17:19:52 2010 -0500

    Allow left_loc_pairs to be quoted
    
        Fixes some left_loc_pairs in lib/RT/Interface/Web.pm

diff --git a/devel/extract-message-catalog b/devel/extract-message-catalog
index 9d9a34e..d705884 100755
--- a/devel/extract-message-catalog
+++ b/devel/extract-message-catalog
@@ -218,7 +218,7 @@ sub extract_strings_from_code {
     # Comment-based left pair mark: "..." => ... # loc_left_pair
     $line = 1;
     pos($_) = 0;
-    while (m/\G.*?(?:(\w+)\s*=>[^#\n]+?)?$re_loc_left_pair_suffix/smgo) {
+    while (m/\G.*?(?:(\w+|$re_delim)\s*=>[^#\n]+?)?$re_loc_left_pair_suffix/smgo) {
 	my $key = $1;
 	$line += ( () = ( $& =~ /\n/g ) );    # cryptocontext!
         unless ( defined $key ) {

commit 856a79cce3a60fd98bf7cfa5ce14edf9e9fa0be4
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Dec 23 17:20:39 2010 -0500

    html lives under share now

diff --git a/devel/extract-message-catalog b/devel/extract-message-catalog
index d705884..bdd1290 100755
--- a/devel/extract-message-catalog
+++ b/devel/extract-message-catalog
@@ -66,7 +66,7 @@ $FILECAT = {};
 
 # extract all strings and stuff them into $FILECAT
 # scan html dir for extensions
-File::Find::find( { wanted => \&extract_strings_from_code, follow => 1 }, qw(bin sbin lib share html etc) );
+File::Find::find( { wanted => \&extract_strings_from_code, follow => 1 }, qw(bin sbin lib share etc) );
 
 # ensure proper escaping and [_1] => %1 transformation
 foreach my $str ( sort keys %{$FILECAT} ) {

commit 83d646c7cce2ebbe82508f7f8b1356ddd6a6af6f
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Dec 23 17:24:21 2010 -0500

    Revert "html lives under share now"
    
    html/ is important for when using extract-message-catalog outside of core
    RT
    
    This reverts commit 856a79cce3a60fd98bf7cfa5ce14edf9e9fa0be4.

diff --git a/devel/extract-message-catalog b/devel/extract-message-catalog
index bdd1290..d705884 100755
--- a/devel/extract-message-catalog
+++ b/devel/extract-message-catalog
@@ -66,7 +66,7 @@ $FILECAT = {};
 
 # extract all strings and stuff them into $FILECAT
 # scan html dir for extensions
-File::Find::find( { wanted => \&extract_strings_from_code, follow => 1 }, qw(bin sbin lib share etc) );
+File::Find::find( { wanted => \&extract_strings_from_code, follow => 1 }, qw(bin sbin lib share html etc) );
 
 # ensure proper escaping and [_1] => %1 transformation
 foreach my $str ( sort keys %{$FILECAT} ) {

commit 4cbd8b7262c4ea2ec170313a784b5004c1a80066
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Dec 23 17:26:57 2010 -0500

    Better fix - just skip nonexistent files
    
        which will really only happen when we specify nonexistent
        directories to the top-level find call

diff --git a/devel/extract-message-catalog b/devel/extract-message-catalog
index d705884..389cad2 100755
--- a/devel/extract-message-catalog
+++ b/devel/extract-message-catalog
@@ -122,7 +122,7 @@ sub extract_strings_from_code {
     my $file = $_;
 
     local $/;
-    return if ( -d $_ );
+    return if ( -d $_ || !-e _ );
     return
       if ( $File::Find::dir =~
         qr!lib/blib|lib/t/autogen|var|m4|local|share/fonts! );

commit dbce0e2923d83faa9b29880ad82736f882737334
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Dec 23 17:35:03 2010 -0500

    Remove unused debug variable

diff --git a/devel/extract-message-catalog b/devel/extract-message-catalog
index 389cad2..edd42c0 100755
--- a/devel/extract-message-catalog
+++ b/devel/extract-message-catalog
@@ -55,9 +55,7 @@ use File::Copy;
 use Regexp::Common;
 use Carp;
 
-use vars qw($DEBUG $FILECAT);
-
-$DEBUG = 1;
+use vars qw($FILECAT);
 
 # po dir is for extensions
 @ARGV = (<share/po/*.po>, <share/po/*.pot>, <po/*.po>, <po/*.pot>) unless @ARGV;

commit 38d29fa8aaa7b4f43488ed131871fd6501eb13f4
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Dec 23 17:36:28 2010 -0500

    No need for FILECAT to be a hashref

diff --git a/devel/extract-message-catalog b/devel/extract-message-catalog
index edd42c0..e71d979 100755
--- a/devel/extract-message-catalog
+++ b/devel/extract-message-catalog
@@ -49,26 +49,25 @@
 # Portions Copyright 2002 Autrijus Tang <autrijus at autrijus.org>
 
 use strict;
+use warnings;
 
 use File::Find;
 use File::Copy;
 use Regexp::Common;
 use Carp;
 
-use vars qw($FILECAT);
-
 # po dir is for extensions
 @ARGV = (<share/po/*.po>, <share/po/*.pot>, <po/*.po>, <po/*.pot>) unless @ARGV;
 
-$FILECAT = {};
+our %FILECAT;
 
-# extract all strings and stuff them into $FILECAT
+# extract all strings and stuff them into %FILECAT
 # scan html dir for extensions
 File::Find::find( { wanted => \&extract_strings_from_code, follow => 1 }, qw(bin sbin lib share html etc) );
 
 # ensure proper escaping and [_1] => %1 transformation
-foreach my $str ( sort keys %{$FILECAT} ) {
-    my $entry = $FILECAT->{$str};
+foreach my $str ( sort keys %FILECAT ) {
+    my $entry = $FILECAT{$str};
     my $oldstr = $str;
 
     $str =~ s/\\/\\\\/g;
@@ -77,8 +76,8 @@ foreach my $str ( sort keys %{$FILECAT} ) {
     $str =~ s/((?<!~)(?:~~)*)\[([A-Za-z#*]\w*),([^\]]+)\]/"$1%$2(".escape($3).")"/eg;
     $str =~ s/~([\[\]])/$1/g;
 
-    delete $FILECAT->{$oldstr};
-    $FILECAT->{$str} = $entry;
+    delete $FILECAT{$oldstr};
+    $FILECAT{$str} = $entry;
 }
 
 # update all language dictionaries
@@ -95,8 +94,8 @@ foreach my $dict (@ARGV) {
 }
 
 # warn about various red flags in loc strings
-foreach my $str ( sort keys %{$FILECAT} ) {
-    my $entry = $FILECAT->{$str};
+foreach my $str ( sort keys %FILECAT ) {
+    my $entry = $FILECAT{$str};
     my $entry_count = @$entry;
 
     # doesn't exist in the current codebase, ignore for now
@@ -156,7 +155,7 @@ sub extract_strings_from_code {
         $line += ( () = ( $& =~ /\n/g ) );    # cryptocontext!
         $str =~ s/\\'/\'/g;
         #print "STR IS $str\n";
-        push @{ $FILECAT->{$str} }, [ $filename, $line, $vars ];
+        push @{ $FILECAT{$str} }, [ $filename, $line, $vars ];
     }
 
     # Localization function: loc(...)
@@ -180,7 +179,7 @@ sub extract_strings_from_code {
         $vars =~ s/[\n\r]//g;
         $str  =~ s/\\'/\'/g;
 
-        push @{ $FILECAT->{$str} }, [ $filename, $line, $vars ];
+        push @{ $FILECAT{$str} }, [ $filename, $line, $vars ];
     }
 
     # Comment-based mark: "..." # loc
@@ -195,7 +194,7 @@ sub extract_strings_from_code {
         }
         $str = substr($str, 1, -1);
 	$str =~ s/\\'/\'/g;
-	push @{ $FILECAT->{$str} }, [ $filename, $line, '' ];
+	push @{ $FILECAT{$str} }, [ $filename, $line, '' ];
     }
 
     # Comment-based qw mark: "qw(...)" # loc_qw
@@ -209,7 +208,7 @@ sub extract_strings_from_code {
             next;
         }
         foreach my $value (eval($str)) {
-            push @{ $FILECAT->{$value} }, [ $filename, $line, '' ];
+            push @{ $FILECAT{$value} }, [ $filename, $line, '' ];
         }
     }
 
@@ -224,7 +223,7 @@ sub extract_strings_from_code {
             next;
         }
 	$key  =~ s/\\'/\'/g;
-	push @{ $FILECAT->{$key} }, [ $filename, $line, '' ];
+	push @{ $FILECAT{$key} }, [ $filename, $line, '' ];
     }
 
     # Comment-based pair mark: "..." => "..." # loc_pair
@@ -241,8 +240,8 @@ sub extract_strings_from_code {
 	$val = substr($val, 1, -1);
 	$key  =~ s/\\'/\'/g;
 	$val  =~ s/\\'/\'/g;
-	push @{ $FILECAT->{$key} }, [ $filename, $line, '' ];
-	push @{ $FILECAT->{$val} }, [ $filename, $line, '' ];
+	push @{ $FILECAT{$key} }, [ $filename, $line, '' ];
+	push @{ $FILECAT{$val} }, [ $filename, $line, '' ];
     }
 
     close (_);
@@ -319,11 +318,11 @@ sub update {
 
     my $is_english = ( $lang =~ /^en(?:[^A-Za-z]|$)/ );
 
-    foreach my $str ( keys %{$FILECAT} ) {
+    foreach my $str ( keys %FILECAT ) {
         $Lexicon{$str} ||= '';
     }
     foreach ( sort keys %Lexicon ) {
-        my $f = join ( ' ', sort map $_->[0].":".$_->[1], @{ $FILECAT->{$_} } );
+        my $f = join ( ' ', sort map $_->[0].":".$_->[1], @{ $FILECAT{$_} } );
         my $nospace = $_;
         $nospace =~ s/ +$//;
 
@@ -347,7 +346,7 @@ sub update {
         elsif ($_) {
             $out .= "#: NOT FOUND IN SOURCE\n";
         }
-        foreach my $entry ( grep { $_->[2] } @{ $FILECAT->{$_} } ) {
+        foreach my $entry ( grep { $_->[2] } @{ $FILECAT{$_} } ) {
             my ( $file, $line, $var ) = @{$entry};
             $var =~ s/^\s*,\s*//;
             $var =~ s/\s*$//;

commit 4fa7ba8c254ff0dc72e2c53881aadc3a46ce8351
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Dec 23 17:38:30 2010 -0500

    Remove some editor auto-commands from files

diff --git a/devel/extract-message-catalog b/devel/extract-message-catalog
index e71d979..8f65233 100755
--- a/devel/extract-message-catalog
+++ b/devel/extract-message-catalog
@@ -383,12 +383,3 @@ sub fmt {
     }
     return $multi_line ? qq(""\n"$str) : qq("$str);
 }
-
-
-__END__
-# Local variables:
-# c-indentation-style: bsd
-# c-basic-offset: 4
-# indent-tabs-mode: nil
-# End:
-# vim: expandtab shiftwidth=4:
diff --git a/t/ticket/requestor-order.t b/t/ticket/requestor-order.t
index 2f026ea..bdacc46 100644
--- a/t/ticket/requestor-order.t
+++ b/t/ticket/requestor-order.t
@@ -138,5 +138,3 @@ sub check_emails_order
     is_deeply( [grep {$_} @mails], [ sort grep {$_} @mails ], "Paging works (exclude nulls, which are db-dependant)");
 }
 RT::Test->mailsent_ok(25);
-
-# vim:ft=perl:

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


More information about the Rt-commit mailing list