[Rt-commit] rt branch, menuing, updated. rt-3.9.4-198-g892d603

Jesse Vincent jesse at bestpractical.com
Mon Nov 1 14:05:16 EDT 2010


The branch, menuing has been updated
       via  892d60343d2d107c15461961192ecbcff862be03 (commit)
       via  a0807fd3152c33ee619880921cfcb16ffc1f3497 (commit)
       via  a3c96617ee1f13eaa01521df0f776350550a8b89 (commit)
       via  383c9be1d6390132d47c87c4c2c9f11fa1fa4a57 (commit)
       via  58abe4971e42c163d72c917d0d33afba9f6e7460 (commit)
       via  6f83c6b0aa7aa21a9f93525e5c8de416ec15eb36 (commit)
       via  af48574151b1ecb15e68af51fb32345908a3bab0 (commit)
       via  accfac608496319097747bd807e715c3677b5340 (commit)
       via  2cf3a8d4990cfbdda2dec10fe21bbd75e244f46e (commit)
       via  dca3352c0629c2d786d43060c0ed8531498c9c52 (commit)
       via  36d469d830dbd2b3d833508994a49476660fdf99 (commit)
       via  4a9e30b9b9e66dc270a15b08ec0f9db7a5f37b57 (commit)
      from  de13bc8ca841b0d1d6a4769d34bc411ccc0f17fa (commit)

Summary of changes:
 lib/RT/Test/Web.pm                              |    2 +-
 share/html/Admin/CustomFields/GroupRights.html  |    2 +-
 share/html/Admin/CustomFields/UserRights.html   |    2 +-
 share/html/Admin/Global/GroupRights.html        |    2 +-
 share/html/Admin/Global/UserRights.html         |    2 +-
 share/html/Admin/Groups/GroupRights.html        |    2 +-
 share/html/Admin/Groups/UserRights.html         |    2 +-
 share/html/Admin/Queues/GroupRights.html        |    2 +-
 share/html/Admin/Queues/UserRights.html         |    2 +-
 share/html/Approvals/index.html                 |    2 +-
 share/html/Elements/Header                      |    1 +
 share/html/Elements/Menu                        |   28 +++++--
 share/html/Elements/PageLayout                  |    4 +-
 share/html/Elements/Tabs                        |  105 +++++++++++++++++------
 share/html/Elements/Widgets                     |    4 +
 share/html/NoAuth/css/base/superfish-navbar.css |    8 +-
 share/html/NoAuth/css/base/superfish.css        |    2 +-
 share/html/Prefs/Other.html                     |    2 +-
 share/html/Search/Bulk.html                     |    2 +-
 share/html/Search/Edit.html                     |    2 +-
 share/html/Ticket/Modify.html                   |    2 +-
 t/approval/admincc.t                            |    4 +-
 t/customfields/access_via_queue.t               |    4 +-
 t/customfields/ip.t                             |    6 +-
 t/customfields/iprange.t                        |   10 +-
 t/customfields/iprangev6.t                      |    8 +-
 t/customfields/ipv6.t                           |    4 +-
 t/lifecycles/basics.t                           |    8 +-
 t/mail/gnupg-outgoing.t                         |    2 +-
 t/ticket/scrips_batch.t                         |    8 +-
 t/web/attachment_encoding.t                     |    4 +-
 t/web/basic.t                                   |    6 +-
 t/web/cf_access.t                               |    2 +-
 t/web/cf_date.t                                 |   24 ++---
 t/web/cf_datetime.t                             |   12 ++--
 t/web/cf_select_one.t                           |   12 ++--
 t/web/crypt-gnupg.t                             |    2 +-
 t/web/dashboard_with_deleted_saved_search.t     |    2 +-
 t/web/dashboards.t                              |    8 +-
 t/web/gnupg-select-keys-on-create.t             |   26 +++---
 t/web/gnupg-select-keys-on-update.t             |   26 +++---
 t/web/gnupg-tickyboxes.t                        |    2 +-
 t/web/html_template.t                           |    5 +-
 t/web/query_builder.t                           |    4 +-
 t/web/rights.t                                  |   16 ++--
 t/web/rights1.t                                 |    2 +-
 t/web/search_bulk_update_links.t                |   12 ++--
 t/web/ticket-create-utf8.t                      |    6 +-
 t/web/ticket_owner.t                            |    7 +-
 t/web/ticket_owner_autocomplete.t               |    6 +-
 t/web/watching-queues.t                         |   40 +++++-----
 51 files changed, 258 insertions(+), 200 deletions(-)
 create mode 100644 share/html/Elements/Widgets

- Log -----------------------------------------------------------------
commit 4a9e30b9b9e66dc270a15b08ec0f9db7a5f37b57
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 09:57:38 2010 -0400

    continued menuing improvements.

diff --git a/lib/RT/Test/Web.pm b/lib/RT/Test/Web.pm
index 6fac2ef..e6bb0e7 100644
--- a/lib/RT/Test/Web.pm
+++ b/lib/RT/Test/Web.pm
@@ -90,7 +90,7 @@ sub login {
         Test::More::diag("error: page has no Logout");
         return 0;
     }
-    unless ( $self->content =~ m{<span>\Q$user\E</span>}i ) {
+    unless ( $self->content =~ m{<span class="current-user">\Q$user\E</span>}i ) {
         Test::More::diag("Page has no user name");
         return 0;
     }
diff --git a/share/html/Approvals/index.html b/share/html/Approvals/index.html
index debf9aa..a6b81c2 100755
--- a/share/html/Approvals/index.html
+++ b/share/html/Approvals/index.html
@@ -49,7 +49,7 @@
 <& /Approvals/Elements/Tabs, Title => loc("My approvals") &>
 
 <& /Elements/ListActions, actions => \@actions &>
-<form method="post">
+<form method="post" name="Approvals" id="Approvals">
 <& Elements/PendingMyApproval, %ARGS &>
 <& /Elements/Submit, Label => loc('Go!') &>
 </form>
diff --git a/share/html/Elements/Header b/share/html/Elements/Header
index fa7d9e0..a6f6e39 100755
--- a/share/html/Elements/Header
+++ b/share/html/Elements/Header
@@ -87,6 +87,7 @@
 
 <div id="quickbar">
   <& /Elements/PersonalQuickbar, %ARGS &>
+</div>
 % }
 
 <%INIT>
diff --git a/share/html/Elements/Menu b/share/html/Elements/Menu
index dcaa673..13a3fe9 100755
--- a/share/html/Elements/Menu
+++ b/share/html/Elements/Menu
@@ -50,7 +50,13 @@
 <li>
 <a id="<%$parent_id%>-<%$child->key%>"  \
 <% $child->path ? 'href="'.RT->Config->Get('WebPath').$child->path.'"' : '' |n%> \
-><%$child->title%></a>
+> \
+% if ($child->escape_title) { 
+<%$child->title |n%>
+% } else {
+<%$child->title%>
+% }
+</a>
 % next unless ($child->has_children);
 <& Menu, menu => $child, toplevel => 0, parent_id => ($parent_id? $parent_id."-": '').$child->key &>
 </li>
diff --git a/share/html/Elements/PageLayout b/share/html/Elements/PageLayout
index 58f9b04..2b92c97 100755
--- a/share/html/Elements/PageLayout
+++ b/share/html/Elements/PageLayout
@@ -51,14 +51,12 @@
 % }
 </div>
 
-%# End of div#quickbar from /Elements/Header
-</div>
-
 % if ( $show_menu ) {
 <div id="main-navigation"><& /Elements/Menu, menu => Menu(), id => 'app-nav' &></div>
 
 <div id="page-navigation"><& /Elements/Menu, menu => PageMenu(), id => 'page-menu' &></div>
 % }
+<div id="widgets"><& /Elements/Widgets &></div>
 <script type="text/javascript">
 jQuery(document).ready(function(){ jQuery("#app-nav").superfish(); });
 jQuery(document).ready(function(){ jQuery("#page-menu").superfish(); });
diff --git a/share/html/Elements/Tabs b/share/html/Elements/Tabs
index 3770277..40ce353 100755
--- a/share/html/Elements/Tabs
+++ b/share/html/Elements/Tabs
@@ -72,6 +72,8 @@ if ( $request_path =~ qr{.*} ) {
     Menu->child( home => title =>  loc('HomePage'), path => '/' );
     my $tickets = Menu->child( search => title => loc('Tickets'),
                                path => '/Search/Build.html' );
+    $tickets->child( simple => title => loc('Simple Search') => path =>
+                     "/Search/Simple.html" );
     $tickets->child( new => title => loc('New Search') => path =>
                      "/Search/Build.html?NewQuery=1" );
     my $new = $tickets->child( create => title => loc('New ticket'),
@@ -202,28 +204,37 @@ if ( $request_path =~ qr{.*} ) {
         $admin_tools->child( loc('Shredder'),
                              path => '/Admin/Tools/Shredder', );
     }
-    my $about_me =  Menu->child( 'preferences' => title => loc("Logged in as [_1]", $session{'CurrentUser'}->Name), sort_rder => 99 );
+    my $about_me = Menu->child(
+                    'preferences' => title =>
+                        loc('Logged in as <span class="current-user">[_1]</span>',
+                        $session{'CurrentUser'}->Name
+                        ),
+                    escape_title => 1,
+                    sort_order   => 99
+    );
     if ( $session{'CurrentUser'}->UserObj
          && $session{'CurrentUser'}->HasRight( Right  => 'ModifySelf',
                                                Object => $RT::System )
        )
     {
-$about_me->child( loc('Settings'), path => '/Prefs/Other.html', );
-$about_me->child( loc('About me'), path => '/User/Prefs.html', );
-$about_me->child( loc('Search options'),
-                   path => '/Prefs/SearchOptions.html', );
-$about_me->child( loc('RT at a glance'), path => '/Prefs/MyRT.html', );
-$about_me->child( 'Quick search' => title => loc('Quick search'), path => '/Prefs/Quicksearch.html' );
-
-
-if ( $session{'CurrentUser'}->Name
-    && ( !RT->Config->Get('WebExternalAuth')
-        || RT->Config->Get('WebFallbackToInternalAuth')
-    )
-) {
-  $about_me->child(logout => title => loc('Logout'),  path =>'NoAuth/Logout.html');
+        $about_me->child( settings => title => loc('Settings'), path => '/Prefs/Other.html', );
+        $about_me->child( about_me => title => loc('About me'), path => '/User/Prefs.html', );
+        $about_me->child( search_options => title => loc('Search options'),
+                          path => '/Prefs/SearchOptions.html', );
+        $about_me->child( myrt => title =>  loc('RT at a glance'), path => '/Prefs/MyRT.html',
+        );
+        $about_me->child( quicksearch => title => 'Quick search' => title => loc('Quick search'),
+                          path => '/Prefs/Quicksearch.html' );
+    }
+
+    if ( $session{'CurrentUser'}->Name
+         && (   !RT->Config->Get('WebExternalAuth')
+              || RT->Config->Get('WebFallbackToInternalAuth') )
+       )
+    {
+        $about_me->child( logout => title => loc('Logout'),
+                          path   => 'NoAuth/Logout.html' );
     }
-}
 }
 if ( $request_path =~ qr'Dashboards/(\d+)?' ) {
     if ( my $id = ( $1 || $m->request_args->{'id'} ) ) {
@@ -360,6 +371,7 @@ if ( $request_path =~ qr'Admin/Groups' ) {
     if ( my $id = $m->request_args->{'id'} ) {
         my $obj = RT::User->new( $session{'CurrentUser'} );
         $obj->Load($id);
+        if ($obj->id) {
         my $tabs = PageMenu->child( $obj->Name,
                         path => "/Admin/CustomFields/Modify.html?id=" . $id );
         $tabs->child( loc('Basics') => path => "/Admin/Groups/Modify.html?id="
@@ -375,6 +387,7 @@ if ( $request_path =~ qr'Admin/Groups' ) {
         $tabs->child(
                     loc('History') => path => "/Admin/Groups/History.html?id="
                         . $obj->id );
+        }
     }
 }
 
@@ -599,9 +612,49 @@ if ( $request_path =~ qr'(?:Ticket|Search)/' ) {
                      loc('Bulk Update') => path => "/Search/Bulk.html$args" );
 
     }
+
 }
 
 
+    if ( $request_path =~ /^\/(?:index.html|$)/ ) {
+
+        my @dashboards = $m->comp("/Dashboards/Elements/ListOfDashboards");
+        my $limit      = 7;
+
+        $m->callback( Dashboards   => \@dashboards,
+                      Limit        => \$limit,
+                      CallbackName => 'MassageDashboards',
+                    );
+
+        my $more = 0;
+        if ( @dashboards > $limit ) {
+            $more = 1;
+            splice @dashboards, $limit;
+        }
+
+        my $position = 0;
+
+        for my $dash (@dashboards) {
+            PageMenu->child(
+                        'dashboard-' . $dash->id,
+                        title => $dash->Name,
+                        path => 'Dashboards/' . $dash->id . '/' . $dash->Name,
+            );
+        }
+
+        PageMenu()->child( home => title => loc('Home'), path => 'index.html' );
+
+        if ($more) {
+            $tabs->{"D-more"} = { title => loc('More'),
+                                  path  => 'Dashboards/index.html',
+                                };
+        }
+
+    }
+
+
+
+
 
 
 
diff --git a/share/html/Search/Bulk.html b/share/html/Search/Bulk.html
index 82f1eb2..8a78b64 100755
--- a/share/html/Search/Bulk.html
+++ b/share/html/Search/Bulk.html
@@ -59,7 +59,7 @@
     &>
 
 <& /Elements/ListActions, actions => \@results &>
-<form method="post" action="<% RT->Config->Get('WebPath') %>/Search/Bulk.html" enctype="multipart/form-data">
+<form method="post" action="<% RT->Config->Get('WebPath') %>/Search/Bulk.html" enctype="multipart/form-data" name="BulkUpdate" id="BulkUpdate">
 % foreach my $var qw(Query Format OrderBy Order Rows Page SavedChartSearchId) {
 <input type="hidden" class="hidden" name="<%$var%>" value="<%$ARGS{$var} || ''%>" />
 %}
diff --git a/share/html/Ticket/Modify.html b/share/html/Ticket/Modify.html
index 75872ab..7f84c1b 100755
--- a/share/html/Ticket/Modify.html
+++ b/share/html/Ticket/Modify.html
@@ -53,7 +53,7 @@
 % $m->callback(CallbackName => 'BeforeActionList', Actions => \@results, ARGSRef => \%ARGS, Ticket => $TicketObj);
 
 <& /Elements/ListActions, actions => \@results &>
-<form method="post" action="Modify.html" enctype="multipart/form-data">
+<form method="post" action="Modify.html" enctype="multipart/form-data" name="TicketModify" id="TicketModify">
 % $m->callback( CallbackName => 'FormStart', ARGSRef => \%ARGS );
 <input type="hidden" class="hidden" name="id" value="<% $TicketObj->Id %>" />
 
diff --git a/t/approval/admincc.t b/t/approval/admincc.t
index 614ecc6..67bf5af 100644
--- a/t/approval/admincc.t
+++ b/t/approval/admincc.t
@@ -247,7 +247,7 @@ $m_ceo->content_contains('second approval', 'ceo: see both approvals');
 
 # now let's approve the first one via cto
 $m->submit_form(
-    form_number => 3,
+    form_name   => 'Approvals',
     fields      => { 'Approval-' . $first_approval->id . '-Action' => 'approve', },
 );
 
@@ -261,7 +261,7 @@ $m_ceo->content_lacks( 'first approval', 'ceo: first approval is gone' );
 $m_ceo->content_contains( 'second approval', 'ceo: second approval is still here' );
 
 $m_coo->submit_form(
-    form_number => 3,
+    form_name => 'Approvals',
     fields      => { 'Approval-' . $second_approval->id . '-Action' => 'approve', },
 );
 
diff --git a/t/customfields/access_via_queue.t b/t/customfields/access_via_queue.t
index e7d816e..3bc4c62 100644
--- a/t/customfields/access_via_queue.t
+++ b/t/customfields/access_via_queue.t
@@ -118,7 +118,7 @@ diag "check that we have no the CF on the create";
     $m->content_lacks($cf_name, "don't see CF");
 
     $m->follow_link( text => 'Custom Fields' );
-    $form = $m->form_number(3);
+    $form = $m->form_name('TicketModify');
     $cf_field = "Object-RT::Ticket-$tid-CustomField-". $cf->id ."-Value";
     ok !$form->find_input( $cf_field ), 'no form field on the page';
 }
@@ -143,7 +143,7 @@ diag "check that owner can see and edit CF";
     $m->content_contains($cf_name, "see CF");
 
     $m->follow_link( text => 'Custom Fields' );
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     my $cf_field = "Object-RT::Ticket-$tid-CustomField-". $cf->id ."-Value";
     ok $form->find_input( $cf_field ), 'form field on the page';
 
diff --git a/t/customfields/ip.t b/t/customfields/ip.t
index 0078082..a7616d6 100644
--- a/t/customfields/ip.t
+++ b/t/customfields/ip.t
@@ -82,7 +82,7 @@ diag "create a ticket and edit IP field using Edit page"
 
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
 
     is( $agent->value($cf_field), '', 'IP is empty' );
     $agent->field( $cf_field => $val );
@@ -99,7 +99,7 @@ diag "create a ticket and edit IP field using Edit page"
     $val = "  172.16.0.2  \n  ";
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
     is( $agent->value($cf_field), '172.16.0.1', 'IP is in input box' );
     $agent->field( $cf_field => $val );
     $agent->click('SubmitTicket');
@@ -278,7 +278,7 @@ diag "test the operators in search page" if $ENV{'TEST_VERBOSE'};
 {
     $agent->get_ok( $baseurl . "/Search/Build.html?Query=Queue='General'" );
     $agent->content_contains('CF.{IP}', 'got CF.{IP}');
-    my $form = $agent->form_number(3);
+    my $form = $agent->form_name('BuildQuery');
     my $op = $form->find_input("'CF.{IP}'Op");
     ok( $op, "found 'CF.{IP}'Op" );
     is_deeply( [ $op->possible_values ], [ '=', '!=', '<', '>' ], 'op values' );
diff --git a/t/customfields/iprange.t b/t/customfields/iprange.t
index 81493fc..b8cc6ea 100644
--- a/t/customfields/iprange.t
+++ b/t/customfields/iprange.t
@@ -99,7 +99,7 @@ diag "create a ticket and edit IP field using Edit page" if $ENV{'TEST_VERBOSE'}
 
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
 
     like( $agent->value($cf_field), qr/^\s*$/, 'IP is empty' );
     $agent->field( $cf_field => $val );
@@ -116,7 +116,7 @@ diag "create a ticket and edit IP field using Edit page" if $ENV{'TEST_VERBOSE'}
     $val = "  172.16.0.2  \n  ";
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
     like( $agent->value($cf_field),
         qr/^\s*\Q172.16.0.1\E\s*$/, 'IP is in input box' );
     $agent->field( $cf_field => $val );
@@ -133,7 +133,7 @@ diag "create a ticket and edit IP field using Edit page" if $ENV{'TEST_VERBOSE'}
     $val = '172.16.0.0-172.16.0.255';
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
     like( $agent->value($cf_field),
         qr/^\s*\Q172.16.0.2\E\s*$/, 'IP is in input box' );
     $agent->field( $cf_field => $val );
@@ -150,7 +150,7 @@ diag "create a ticket and edit IP field using Edit page" if $ENV{'TEST_VERBOSE'}
     $val = '172.16/16';
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
     is( $agent->value($cf_field),
         '172.16.0.0-172.16.0.255', 'IP is in input box' );
     $agent->field( $cf_field => $val );
@@ -461,7 +461,7 @@ diag "test the operators in search page" if $ENV{'TEST_VERBOSE'};
 {
     $agent->get_ok( $baseurl . "/Search/Build.html?Query=Queue='General'" );
     $agent->content_contains('CF.{IP}', 'got CF.{IP}');
-    my $form = $agent->form_number(3);
+    my $form = $agent->form_name('BuildQuery');
     my $op = $form->find_input("'CF.{IP}'Op");
     ok( $op, "found 'CF.{IP}'Op" );
     is_deeply( [ $op->possible_values ], [ '=', '!=', '<', '>' ], 'op values' );
diff --git a/t/customfields/iprangev6.t b/t/customfields/iprangev6.t
index 63bfdc7..7c2f645 100644
--- a/t/customfields/iprangev6.t
+++ b/t/customfields/iprangev6.t
@@ -115,7 +115,7 @@ diag "create a ticket and edit IP field using Edit page" if $ENV{'TEST_VERBOSE'}
 
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
 
     is( $agent->value($cf_field), '', 'IP is empty' );
     $agent->field( $cf_field => $val );
@@ -131,7 +131,7 @@ diag "create a ticket and edit IP field using Edit page" if $ENV{'TEST_VERBOSE'}
     diag "set IP with spaces around" if $ENV{'TEST_VERBOSE'};
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
     is( $agent->value($cf_field), $val, 'IP is in input box' );
     $val = 'bbcd' . ':abcd' x 7;
     $agent->field( $cf_field => "   $val   " );
@@ -147,7 +147,7 @@ diag "create a ticket and edit IP field using Edit page" if $ENV{'TEST_VERBOSE'}
     diag "replace IP with a range" if $ENV{'TEST_VERBOSE'};
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
     is( $agent->value($cf_field), $val, 'IP is in input box' );
     $val = 'abcd' . ':0000' x 7 . '-' . 'abcd' . ':ffff' x 7;
     $agent->field( $cf_field => 'abcd::/16' );
@@ -163,7 +163,7 @@ diag "create a ticket and edit IP field using Edit page" if $ENV{'TEST_VERBOSE'}
     diag "delete range, add another range using CIDR" if $ENV{'TEST_VERBOSE'};
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
     is( $agent->value($cf_field), $val, 'IP is in input box' );
     $val = 'bb00' . ':0000' x 7 . '-' . 'bbff' . ':ffff' x 7;
     $agent->field( $cf_field => $val );
diff --git a/t/customfields/ipv6.t b/t/customfields/ipv6.t
index 8b11df5..2eb08c4 100644
--- a/t/customfields/ipv6.t
+++ b/t/customfields/ipv6.t
@@ -100,7 +100,7 @@ diag "create a ticket and edit IP field using Edit page"
 
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
 
     is( $agent->value($cf_field), '', 'IP is empty' );
     $agent->field( $cf_field => $valid{$ip} );
@@ -120,7 +120,7 @@ diag "create a ticket and edit IP field using Edit page"
 
     $agent->follow_link_ok( { text => 'Basics', n => "1" },
         "Followed 'Basics' link" );
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
     is( $agent->value($cf_field), $valid{$ip}, 'IP is in input box' );
     $agent->field( $cf_field => $new_ip );
     $agent->click('SubmitTicket');
diff --git a/t/lifecycles/basics.t b/t/lifecycles/basics.t
index b5e472e..60ffbbb 100644
--- a/t/lifecycles/basics.t
+++ b/t/lifecycles/basics.t
@@ -82,7 +82,7 @@ diag "new ->(open it)-> open";
     }
 
     $m->follow_link_ok({text => 'Open It'});
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->click('SubmitTicket');
 
     is $tstatus->($tid), 'open', 'changed status';
@@ -111,7 +111,7 @@ diag "open ->(stall)-> stalled";
     }
 
     $m->follow_link_ok({text => 'Stall'});
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->click('SubmitTicket');
 
     is $tstatus->($tid), 'stalled', 'changed status';
@@ -149,7 +149,7 @@ diag "open -> deleted, only via modify";
     is $tstatus->($tid), 'open', 'ticket is open';
 
     $m->get_ok( '/Ticket/Modify.html?id='. $tid );
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input('Status'), 'found status selector';
 
     my @form_values = $input->possible_values;
@@ -168,7 +168,7 @@ diag "deleted -> X via modify, only open is available";
     is $tstatus->($tid), 'deleted', 'ticket is deleted';
 
     $m->get_ok( '/Ticket/Modify.html?id='. $tid );
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input('Status'), 'found status selector';
 
     my @form_values = $input->possible_values;
diff --git a/t/mail/gnupg-outgoing.t b/t/mail/gnupg-outgoing.t
index 325612c..3fc995f 100644
--- a/t/mail/gnupg-outgoing.t
+++ b/t/mail/gnupg-outgoing.t
@@ -235,7 +235,7 @@ sub update_ticket {
     RT::Test->clean_caught_mails;
 
     $m->get( $m->rt_base_url . "/Ticket/Update.html?Action=Respond&id=$tid" );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->field( UpdateContent => 'Some content' );
 
     foreach ( qw(Sign Encrypt) ) {
diff --git a/t/ticket/scrips_batch.t b/t/ticket/scrips_batch.t
index b52a26b..d62fb3a 100644
--- a/t/ticket/scrips_batch.t
+++ b/t/ticket/scrips_batch.t
@@ -21,7 +21,7 @@ my $sid;
     $m->follow_link_ok( { text => $queue->Name } );
     $m->follow_link_ok( { text => 'Scrips' } );
     $m->follow_link_ok( { url_regex => qr'Scrip.html\?create=1' } );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->field('Scrip-new-Description' => 'test');
     $m->select('Scrip-new-ScripCondition' => 'On Transaction');
     $m->select('Scrip-new-ScripAction' => 'User Defined');
@@ -34,7 +34,7 @@ my $sid;
 
     ($sid) = ($m->content =~ /Scrip\s*#(\d+)/);
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     is $m->value("Scrip-$sid-Description"), 'test', 'correct description';
     is value_name($form, "Scrip-$sid-ScripCondition"), 'On Transaction', 'correct condition';
     is value_name($form, "Scrip-$sid-ScripAction"), 'User Defined', 'correct action';
@@ -62,13 +62,13 @@ END
     $m->submit;
 
     $m->goto_create_ticket( $queue );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit;
 
     is_deeply parse_handle($tmp_fh), ['Create'], 'Create';
 
     $m->follow_link_ok( { text => 'Resolve' } );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->field( "UpdateContent" => 'resolve it' );
     $m->click('SubmitTicket');
 
diff --git a/t/web/attachment_encoding.t b/t/web/attachment_encoding.t
index 85c5bbc..323f2bc 100644
--- a/t/web/attachment_encoding.t
+++ b/t/web/attachment_encoding.t
@@ -19,7 +19,7 @@ diag 'test without attachments' if $ENV{TEST_VERBOSE};
 {
     $m->get_ok( $baseurl . '/Ticket/Create.html?Queue=1' );
 
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         form_number => 3,
         fields      => { Subject => '标题', Content => '测试' },
@@ -54,7 +54,7 @@ diag 'test with attachemnts' if $ENV{TEST_VERBOSE};
 
     $m->get_ok( $baseurl . '/Ticket/Create.html?Queue=1' );
 
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         form_number => 3,
         fields => { Subject => '标题', Content => '测试', Attach => $file },
diff --git a/t/web/basic.t b/t/web/basic.t
index dafe6bf..06d05b6 100644
--- a/t/web/basic.t
+++ b/t/web/basic.t
@@ -28,7 +28,7 @@ my $url = $agent->rt_base_url;
 {
     $agent->goto_create_ticket(1);
     is ($agent->status, 200, "Loaded Create.html");
-    $agent->form_number(3);
+    $agent->form_name('TicketCreate');
     my $string = Encode::decode_utf8("I18N Web Testing æøå");
     $agent->field('Subject' => "Ticket with utf8 body");
     $agent->field('Content' => $string);
@@ -49,7 +49,7 @@ my $url = $agent->rt_base_url;
 {
     $agent->goto_create_ticket(1);
     is ($agent->status, 200, "Loaded Create.html");
-    $agent->form_number(3);
+    $agent->form_name('TicketCreate');
 
     my $string = Encode::decode_utf8("I18N Web Testing æøå");
     $agent->field('Subject' => $string);
@@ -70,7 +70,7 @@ my $url = $agent->rt_base_url;
 # Update time worked in hours
 {
     $agent->follow_link( text_regex => qr/Basics/ );
-    $agent->submit_form( form_number => 3,
+    $agent->submit_form( form_name => 'TicketModify',
         fields => { TimeWorked => 5, 'TimeWorked-TimeUnits' => "hours" }
     );
 
diff --git a/t/web/cf_access.t b/t/web/cf_access.t
index b870914..276293e 100644
--- a/t/web/cf_access.t
+++ b/t/web/cf_access.t
@@ -115,7 +115,7 @@ diag "check that we have no the CF on the create"
 
     $m->follow_link( text => 'Custom Fields' );
     $m->content_lacks('Upload multiple images', 'has no upload image field');
-    $form = $m->form_number(3);
+    $form = $m->form_name('TicketModify');
     $upload_field = "Object-RT::Ticket-$tid-CustomField-$cfid-Upload";
     ok !$form->find_input( $upload_field ), 'no form field on the page';
 }
diff --git a/t/web/cf_date.t b/t/web/cf_date.t
index d24950e..40600db 100644
--- a/t/web/cf_date.t
+++ b/t/web/cf_date.t
@@ -88,7 +88,7 @@ diag 'check search build page';
 {
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
 
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     my ($cf_op) =
       $m->find_all_inputs( type => 'option', name_regex => qr/test cf date/ );
     is_deeply(
@@ -112,7 +112,7 @@ diag 'check search build page';
     $m->content_lacks( '2010-05-06', 'did not get the wrong ticket' );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '<',
@@ -123,7 +123,7 @@ diag 'check search build page';
     $m->content_contains( 'Found 1 ticket', 'Found 1 ticket' );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '>',
@@ -134,7 +134,7 @@ diag 'check search build page';
     $m->content_contains( 'Found 1 ticket', 'Found 1 ticket' );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '=',
@@ -145,7 +145,7 @@ diag 'check search build page';
     $m->content_contains( 'Found 0 tickets', 'Found 0 tickets' );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '<',
@@ -156,7 +156,7 @@ diag 'check search build page';
     $m->content_contains( 'Found 0 tickets', 'Found 0 tickets' );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '>',
diff --git a/t/web/cf_datetime.t b/t/web/cf_datetime.t
index cc98872..33b868d 100644
--- a/t/web/cf_datetime.t
+++ b/t/web/cf_datetime.t
@@ -124,7 +124,7 @@ diag 'check search build page';
 {
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
 
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     my ($cf_op) =
       $m->find_all_inputs( type => 'option', name_regex => qr/test cf datetime/ );
     is_deeply(
@@ -159,7 +159,7 @@ diag 'check search build page';
     $m->login( 'shanghai', 'password', logout => 1 );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '=',
@@ -170,7 +170,7 @@ diag 'check search build page';
     $m->content_contains( 'Found 1 ticket', 'Found 1 ticket' );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '<',
@@ -181,7 +181,7 @@ diag 'check search build page';
     $m->content_contains( 'Found 2 ticket', 'Found 2 ticket' );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '>',
@@ -192,7 +192,7 @@ diag 'check search build page';
     $m->content_contains( 'Found 2 tickets', 'Found 2 tickets' );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '=',
@@ -203,7 +203,7 @@ diag 'check search build page';
     $m->content_contains( 'Found 1 ticket', 'Found 1 ticket' );
 
     $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->submit_form(
         fields => {
             $cf_op->name    => '=',
diff --git a/t/web/cf_select_one.t b/t/web/cf_select_one.t
index 8161208..fd57883 100644
--- a/t/web/cf_select_one.t
+++ b/t/web/cf_select_one.t
@@ -95,12 +95,12 @@ diag "check that values of the CF are case insensetive(asd vs. ASD)";
     $m->title_like(qr/Modify ticket/i, 'modify ticket');
     $m->content_contains($cf_name, 'CF on the page');
 
-    my $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+    my $value = $m->form_name('TicketModify')->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
     is lc $value, 'asd', 'correct value is selected';
     $m->submit;
     $m->content_unlike(qr/\Q$cf_name\E.*?changed/mi, 'field is not changed');
 
-    $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+    $value = $m->form_name('TicketModify')->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
     is lc $value, 'asd', 'the same value is still selected';
 
     my $ticket = RT::Ticket->new( RT->SystemUser );
@@ -117,14 +117,14 @@ diag "check that 0 is ok value of the CF";
     $m->title_like(qr/Modify ticket/i, 'modify ticket');
     $m->content_contains($cf_name, 'CF on the page');
 
-    my $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+    my $value = $m->form_name('TicketModify')->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
     is lc $value, 'asd', 'correct value is selected';
     $m->select("Object-RT::Ticket-$tid-CustomField-$cfid-Values" => 0 );
     $m->submit;
     $m->content_like(qr/\Q$cf_name\E.*?changed/mi, 'field is changed');
     $m->content_lacks('0 is no longer a value for custom field', 'no bad message in results');
 
-    $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+    $value = $m->form_name('TicketModify')->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
     is lc $value, '0', 'new value is selected';
 
     my $ticket = RT::Ticket->new( RT->SystemUser );
@@ -141,13 +141,13 @@ diag "check that we can set empty value when the current is 0";
     $m->title_like(qr/Modify ticket/i, 'modify ticket');
     $m->content_contains($cf_name, 'CF on the page');
 
-    my $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+    my $value = $m->form_name('TicketModify')->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
     is lc $value, '0', 'correct value is selected';
     $m->select("Object-RT::Ticket-$tid-CustomField-$cfid-Values" => '' );
     $m->submit;
     $m->content_contains('0 is no longer a value for custom field', '0 is no longer a value');
 
-    $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+    $value = $m->form_name('TicketModify')->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
     is $value, '', '(no value) is selected';
 
     my $ticket = RT::Ticket->new( RT->SystemUser );
diff --git a/t/web/crypt-gnupg.t b/t/web/crypt-gnupg.t
index a9065e5..5720575 100644
--- a/t/web/crypt-gnupg.t
+++ b/t/web/crypt-gnupg.t
@@ -413,7 +413,7 @@ like($m->content, qr/$key1/, "first key shows up in preferences");
 like($m->content, qr/$key2/, "second key shows up in preferences");
 like($m->content, qr/$key1.*?$key2/s, "first key shows up before the second");
 
-$m->form_number(3);
+$m->form_name('TicketModify');
 $m->select("PreferredKey" => $key2);
 $m->submit;
 
diff --git a/t/web/dashboard_with_deleted_saved_search.t b/t/web/dashboard_with_deleted_saved_search.t
index a7225ce..60c0179 100644
--- a/t/web/dashboard_with_deleted_saved_search.t
+++ b/t/web/dashboard_with_deleted_saved_search.t
@@ -39,7 +39,7 @@ $m->submit_form(
 );
 
 $m->content_contains('Saved dashboard bar', 'dashboard saved' );
-my $dashboard_queries_link = $m->find_link( text_regex => qr/Queries/ );
+my $dashboard_queries_link = $m->find_link( text_regex => qr/Content/ );
 my ( $dashboard_id ) = $dashboard_queries_link->url =~ /id=(\d+)/;
 
 $m->get_ok( $url . "/Dashboards/Queries.html?id=$dashboard_id" );
diff --git a/t/web/dashboards.t b/t/web/dashboards.t
index b3fee67..64f1370 100644
--- a/t/web/dashboards.t
+++ b/t/web/dashboards.t
@@ -64,7 +64,7 @@ $m->content_contains("Create");
 $m->get_ok($url."Dashboards/index.html");
 $m->content_contains("New", "'New' link because we now have ModifyOwnDashboard");
 
-$m->follow_link_ok({text => "New"});
+$m->follow_link_ok({ id => 'Tools-Dashboards-Create'});
 $m->form_name('ModifyDashboard');
 $m->field("Name" => 'different dashboard');
 $m->content_lacks('Delete', "Delete button hidden because we are creating");
@@ -84,13 +84,13 @@ $m->content_lacks("Permission denied");
 
 $m->follow_link_ok({text => "different dashboard"});
 $m->content_contains("Basics");
-$m->content_contains("Queries");
+$m->content_contains("Content");
 $m->content_lacks("Subscription", "we don't have the SubscribeDashboard right");
 
 $m->follow_link_ok({text => "Basics"});
 $m->content_contains("Modify the dashboard different dashboard");
 
-$m->follow_link_ok({text => "Queries"});
+$m->follow_link_ok({text => "Content"});
 $m->content_contains("Modify the queries of dashboard different dashboard");
 my $form = $m->form_name('Dashboard-Searches-body');
 my @input = $form->find_input('Searches-body-Available');
@@ -231,7 +231,7 @@ $m->click_button(value => 'Create');
 $m->content_lacks("No permission to create dashboards");
 $m->content_contains("Saved dashboard system dashboard");
 
-$m->follow_link_ok({text => 'Queries'});
+$m->follow_link_ok({text => 'Content'});
 
 $form = $m->form_name('Dashboard-Searches-body');
 @input = $form->find_input('Searches-body-Available');
diff --git a/t/web/gnupg-select-keys-on-create.t b/t/web/gnupg-select-keys-on-create.t
index 28bc6ce..a7c603c 100644
--- a/t/web/gnupg-select-keys-on-create.t
+++ b/t/web/gnupg-select-keys-on-create.t
@@ -50,7 +50,7 @@ diag "check that signing doesn't work if there is no key";
     RT::Test->clean_caught_mails;
 
     ok $m->goto_create_ticket( $queue ), "UI -> create ticket";
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Sign => 1 );
     $m->field( Requestors => 'rt-test at example.com' );
     $m->field( Content => 'Some content' );
@@ -77,7 +77,7 @@ diag "check that things don't work if there is no key";
     RT::Test->clean_caught_mails;
 
     ok $m->goto_create_ticket( $queue ), "UI -> create ticket";
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( Requestors => 'rt-test at example.com' );
     $m->field( Content => 'Some content' );
@@ -91,7 +91,7 @@ diag "check that things don't work if there is no key";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok !$form->find_input( 'UseKey-rt-test at example.com' ), 'no key selector';
 
     my @mail = RT::Test->fetch_caught_mails;
@@ -115,7 +115,7 @@ diag "check that things still doesn't work if key is not trusted";
     RT::Test->clean_caught_mails;
 
     ok $m->goto_create_ticket( $queue ), "UI -> create ticket";
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( Requestors => 'rt-test at example.com' );
     $m->field( Content => 'Some content' );
@@ -129,7 +129,7 @@ diag "check that things still doesn't work if key is not trusted";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 1, 'one option';
 
@@ -164,7 +164,7 @@ diag "check that things still doesn't work if two keys are not trusted";
     RT::Test->clean_caught_mails;
 
     ok $m->goto_create_ticket( $queue ), "UI -> create ticket";
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( Requestors => 'rt-test at example.com' );
     $m->field( Content => 'Some content' );
@@ -178,7 +178,7 @@ diag "check that things still doesn't work if two keys are not trusted";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 2, 'two options';
 
@@ -211,7 +211,7 @@ diag "check that we see key selector even if only one key is trusted but there a
     RT::Test->clean_caught_mails;
 
     ok $m->goto_create_ticket( $queue ), "UI -> create ticket";
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( Requestors => 'rt-test at example.com' );
     $m->field( Content => 'Some content' );
@@ -225,7 +225,7 @@ diag "check that we see key selector even if only one key is trusted but there a
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 2, 'two options';
 
@@ -240,7 +240,7 @@ diag "check that key selector works and we can select trusted key";
     RT::Test->clean_caught_mails;
 
     ok $m->goto_create_ticket( $queue ), "UI -> create ticket";
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( Requestors => 'rt-test at example.com' );
     $m->field( Content => 'Some content' );
@@ -254,7 +254,7 @@ diag "check that key selector works and we can select trusted key";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 2, 'two options';
 
@@ -274,7 +274,7 @@ diag "check encrypting of attachments";
     RT::Test->clean_caught_mails;
 
     ok $m->goto_create_ticket( $queue ), "UI -> create ticket";
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( Requestors => 'rt-test at example.com' );
     $m->field( Content => 'Some content' );
@@ -289,7 +289,7 @@ diag "check encrypting of attachments";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 2, 'two options';
 
diff --git a/t/web/gnupg-select-keys-on-update.t b/t/web/gnupg-select-keys-on-update.t
index 6bb6f44..9d57e0a 100644
--- a/t/web/gnupg-select-keys-on-update.t
+++ b/t/web/gnupg-select-keys-on-update.t
@@ -62,7 +62,7 @@ diag "check that signing doesn't work if there is no key";
 
     ok $m->goto_ticket( $tid ), "UI -> ticket #$tid";
     $m->follow_link_ok( { text => 'Reply' }, 'ticket -> reply' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Sign => 1 );
     $m->field( UpdateCc => 'rt-test at example.com' );
     $m->field( UpdateContent => 'Some content' );
@@ -92,7 +92,7 @@ diag "check that things don't work if there is no key";
 
     ok $m->goto_ticket( $tid ), "UI -> ticket #$tid";
     $m->follow_link_ok( { text => 'Reply' }, 'ticket -> reply' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( UpdateCc => 'rt-test at example.com' );
     $m->field( UpdateContent => 'Some content' );
@@ -106,7 +106,7 @@ diag "check that things don't work if there is no key";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok !$form->find_input( 'UseKey-rt-test at example.com' ), 'no key selector';
 
     my @mail = RT::Test->fetch_caught_mails;
@@ -132,7 +132,7 @@ diag "check that things still doesn't work if key is not trusted";
 
     ok $m->goto_ticket( $tid ), "UI -> ticket #$tid";
     $m->follow_link_ok( { text => 'Reply' }, 'ticket -> reply' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( UpdateCc => 'rt-test at example.com' );
     $m->field( UpdateContent => 'Some content' );
@@ -146,7 +146,7 @@ diag "check that things still doesn't work if key is not trusted";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 1, 'one option';
 
@@ -182,7 +182,7 @@ diag "check that things still doesn't work if two keys are not trusted";
 
     ok $m->goto_ticket( $tid ), "UI -> ticket #$tid";
     $m->follow_link_ok( { text => 'Reply' }, 'ticket -> reply' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( UpdateCc => 'rt-test at example.com' );
     $m->field( UpdateContent => 'Some content' );
@@ -196,7 +196,7 @@ diag "check that things still doesn't work if two keys are not trusted";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 2, 'two options';
 
@@ -230,7 +230,7 @@ diag "check that we see key selector even if only one key is trusted but there a
 
     ok $m->goto_ticket( $tid ), "UI -> ticket #$tid";
     $m->follow_link_ok( { text => 'Reply' }, 'ticket -> reply' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( UpdateCc => 'rt-test at example.com' );
     $m->field( UpdateContent => 'Some content' );
@@ -244,7 +244,7 @@ diag "check that we see key selector even if only one key is trusted but there a
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 2, 'two options';
 
@@ -260,7 +260,7 @@ diag "check that key selector works and we can select trusted key";
 
     ok $m->goto_ticket( $tid ), "UI -> ticket #$tid";
     $m->follow_link_ok( { text => 'Reply' }, 'ticket -> reply' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( UpdateCc => 'rt-test at example.com' );
     $m->field( UpdateContent => 'Some content' );
@@ -274,7 +274,7 @@ diag "check that key selector works and we can select trusted key";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 2, 'two options';
 
@@ -295,7 +295,7 @@ diag "check encrypting of attachments";
 
     ok $m->goto_ticket( $tid ), "UI -> ticket #$tid";
     $m->follow_link_ok( { text => 'Reply' }, 'ticket -> reply' );
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick( Encrypt => 1 );
     $m->field( UpdateCc => 'rt-test at example.com' );
     $m->field( UpdateContent => 'Some content' );
@@ -310,7 +310,7 @@ diag "check encrypting of attachments";
         'problems with keys'
     );
 
-    my $form = $m->form_number(3);
+    my $form = $m->form_name('TicketModify');
     ok my $input = $form->find_input( 'UseKey-rt-test at example.com' ), 'found key selector';
     is scalar $input->possible_values, 2, 'two options';
 
diff --git a/t/web/gnupg-tickyboxes.t b/t/web/gnupg-tickyboxes.t
index c478abd..9d6ee94 100644
--- a/t/web/gnupg-tickyboxes.t
+++ b/t/web/gnupg-tickyboxes.t
@@ -94,7 +94,7 @@ diag "check in read-only mode that queue's props influence create/update ticket
     foreach my $variant ( @variants ) {
         set_queue_crypt_options( %$variant );
         $m->get( $m->rt_base_url . "/Ticket/Update.html?Action=Respond&id=$id" );
-        $m->form_number(3);
+        $m->form_name('TicketModify');
         if ( $variant->{'Encrypt'} ) {
             ok $m->value('Encrypt', 2), "encrypt tick box is checked";
         } else {
diff --git a/t/web/html_template.t b/t/web/html_template.t
index 0976847..99c72b0 100644
--- a/t/web/html_template.t
+++ b/t/web/html_template.t
@@ -22,8 +22,8 @@ diag('make Autoreply template a html one and add utf8 chars')
     $m->follow_link_ok( { text => 'Templates' },     '-> Templates' );
     $m->follow_link_ok( { text => 'Autoreply' },     '-> Autoreply' );
 
-    $m->form_number(3);
     $m->submit_form(
+
         fields => {
             Content => <<'EOF',
 Subject: AutoReply: {$Ticket->Subject}
@@ -46,9 +46,8 @@ diag('create a ticket to see the autoreply mail') if $ENV{TEST_VERBOSE};
 {
     $m->get_ok( $baseurl . '/Ticket/Create.html?Queue=1' );
 
-    $m->form_number(3);
     $m->submit_form(
-        form_number => 3,
+        form_name => 'TicketCreate',
         fields      => { Subject => '标题', Content => '测试', },
     );
     $m->content_like( qr/Ticket \d+ created/i, 'created the ticket' );
diff --git a/t/web/query_builder.t b/t/web/query_builder.t
index fec5128..c0f7b49 100644
--- a/t/web/query_builder.t
+++ b/t/web/query_builder.t
@@ -143,7 +143,7 @@ diag "click advanced, enter 'C1 OR ( C2 AND C3 )', apply, aggregators should sta
 {
     my $response = $agent->get($url."Search/Edit.html");
     ok( $response->is_success, "Fetched /Search/Edit.html" );
-    ok($agent->form_number(3), "found the form");
+    ok($agent->form_name('TicketModify'), "found the form");
     $agent->field("Query", "Status = 'new' OR ( Status = 'open' AND Subject LIKE 'office' )");
     $agent->submit;
     is( getQueryFromForm,
@@ -225,7 +225,7 @@ diag "input a condition, select (several conditions), click delete";
 {
     my $response = $agent->get( $url."Search/Edit.html" );
     ok $response->is_success, "Fetched /Search/Edit.html";
-    ok $agent->form_number(3), "found the form";
+    ok $agent->form_name('TicketModify'), "found the form";
     $agent->field("Query", "( Status = 'new' OR Status = 'open' )");
     $agent->submit;
     is( getQueryFromForm,
diff --git a/t/web/rights.t b/t/web/rights.t
index 01b62c4..886c847 100644
--- a/t/web/rights.t
+++ b/t/web/rights.t
@@ -16,7 +16,7 @@ sub get_rights {
     my $agent = shift;
     my $principal_id = shift;
     my $object = shift;
-    $agent->form_number(3);
+    $agent->form_name('TicketModify');
     my @inputs = $agent->current_form->find_input("SetRights-$principal_id-$object");
     my @rights = sort grep $_, map $_->possible_values, grep $_ && $_->value, @inputs;
     return @rights;
@@ -33,7 +33,7 @@ my ($everyone, $everyone_gid);
 diag "revoke all global rights from Everyone group";
 my @has = get_rights( $m, $everyone_gid, 'RT::System-1' );
 if ( @has ) {
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->untick("SetRights-$everyone_gid-RT::System-1", $_) foreach @has;
     $m->submit;
     
@@ -44,7 +44,7 @@ if ( @has ) {
 
 diag "grant SuperUser right to everyone";
 {
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick("SetRights-$everyone_gid-RT::System-1", 'SuperUser');
     $m->submit;
 
@@ -56,7 +56,7 @@ diag "grant SuperUser right to everyone";
 
 diag "revoke the right";
 {
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->untick("SetRights-$everyone_gid-RT::System-1", 'SuperUser');
     $m->submit;
 
@@ -69,7 +69,7 @@ diag "revoke the right";
 
 diag "return rights the group had in the beginning";
 if ( @has ) {
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->tick("SetRights-$everyone_gid-RT::System-1", $_) for @has;
     $m->submit;
 
diff --git a/t/web/search_bulk_update_links.t b/t/web/search_bulk_update_links.t
index 29b99e9..9307dda 100644
--- a/t/web/search_bulk_update_links.t
+++ b/t/web/search_bulk_update_links.t
@@ -41,7 +41,7 @@ $m->get_ok( $url . "/Search/Bulk.html?Query=id=$search_tickets[0]&Rows=10" );
 $m->content_contains( 'Current Links', 'has current links part' );
 $m->content_lacks( 'DeleteLink--', 'no delete link stuff' );
 $m->submit_form(
-    form_number => 3,
+    form_name => 'BulkUpdate',
     fields      => {
         'Ticket-DependsOn' => $link_tickets[0],
         'Ticket-MemberOf'  => $link_tickets[1],
@@ -77,7 +77,7 @@ $m->get_ok( $url . "/Search/Bulk.html?Query=$query&Rows=10" );
 $m->content_contains( 'Current Links', 'has current links part' );
 $m->content_lacks( 'DeleteLink--', 'no delete link stuff' );
 
-$m->form_number(3);
+$m->form_name('BulkUpdate');
 my @fields = qw/Owner AddRequestor DeleteRequestor AddCc DeleteCc AddAdminCc
 DeleteAdminCc Subject Priority Queue Status Starts_Date Told_Date Due_Date
 Resolved_Date UpdateSubject UpdateContent/;
@@ -87,7 +87,7 @@ for my $field ( @fields ) {
 
 # test DependsOn, MemberOf and RefersTo
 $m->submit_form(
-    form_number => 3,
+    form_name => 'BulkUpdate',
     fields      => {
         'Ticket-DependsOn' => $link_tickets[0],
         'Ticket-MemberOf'  => $link_tickets[1],
@@ -106,7 +106,7 @@ $m->content_contains(
     'found refers to link' );
 
 $m->submit_form(
-    form_number => 3,
+    form_name => 'BulkUpdate',
     fields      => {
         "DeleteLink--DependsOn-fsck.com-rt://$rtname/ticket/$link_tickets[0]" =>
           1,
@@ -122,7 +122,7 @@ $m->content_lacks( 'DeleteLink--', 'links are all deleted' );
 # test DependedOnBy, Members and ReferredToBy
 
 $m->submit_form(
-    form_number => 3,
+    form_name => 'BulkUpdate',
     fields      => {
         'DependsOn-Ticket' => $link_tickets[0],
         'MemberOf-Ticket'  => $link_tickets[1],
@@ -141,7 +141,7 @@ $m->content_contains(
     'found referrd to link' );
 
 $m->submit_form(
-    form_number => 3,
+    form_name => 'BulkUpdate',
     fields      => {
         "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[0]-DependsOn-" =>
           1,
diff --git a/t/web/ticket-create-utf8.t b/t/web/ticket-create-utf8.t
index 461ebb8..49fe4ee 100644
--- a/t/web/ticket-create-utf8.t
+++ b/t/web/ticket-create-utf8.t
@@ -32,7 +32,7 @@ ok $m->login, 'logged in';
 # create a ticket with a subject only
 foreach my $test_str ( $ru_test, $l1_test ) {
     ok $m->goto_create_ticket( $q ), "go to create ticket";
-    $m->form_number(3);
+    $m->form_name('TicketModify');
     $m->field( Subject => $test_str );
     $m->submit;
 
@@ -49,7 +49,7 @@ foreach my $test_str ( $ru_test, $l1_test ) {
 foreach my $test_str ( $ru_test, $l1_test ) {
     foreach my $support_str ( $ru_support, $l1_support ) {
         ok $m->goto_create_ticket( $q ), "go to create ticket";
-        $m->form_number(3);
+        $m->form_name('TicketModify');
         $m->field( Subject => $test_str );
         $m->field( Content => $support_str );
         $m->submit;
@@ -72,7 +72,7 @@ foreach my $test_str ( $ru_test, $l1_test ) {
 foreach my $test_str ( $ru_test, $l1_test ) {
     foreach my $support_str ( $ru_support, $l1_support ) {
         ok $m->goto_create_ticket( $q ), "go to create ticket";
-        $m->form_number(3);
+        $m->form_name('TicketModify');
         $m->field( Subject => $test_str );
         $m->field( Content => $support_str );
         $m->submit;
diff --git a/t/web/ticket_owner.t b/t/web/ticket_owner.t
index 2e562f9..815f542 100644
--- a/t/web/ticket_owner.t
+++ b/t/web/ticket_owner.t
@@ -95,7 +95,7 @@ diag "user A can not change owner after create";
     my $test_cb = sub {
         my $agent = shift;
         $agent->get("/Ticket/Modify.html?id=$id");
-        my $form = $agent->form_number(3);
+        my $form = $agent->form_name('TicketModify');
         is $form->value('Owner'), $user_b->id, 'correct owner selected';
         $agent->select('Owner', RT->Nobody->id);
         $agent->submit;
@@ -130,7 +130,7 @@ diag "on reply correct owner is selected";
     $agent_a->goto_ticket( $id );
     $agent_a->follow_link_ok({text => 'Reply'}, 'Ticket -> Basics');
 
-    my $form = $agent_a->form_number(3);
+    my $form = $agent_a->form_name('TicketModify');
     is $form->value('Owner'), '', 'empty value selected';
     $agent_a->submit;
 
diff --git a/t/web/ticket_owner_autocomplete.t b/t/web/ticket_owner_autocomplete.t
index 6aff007..f2ce71b 100644
--- a/t/web/ticket_owner_autocomplete.t
+++ b/t/web/ticket_owner_autocomplete.t
@@ -95,7 +95,7 @@ diag "user A can not change owner after create";
     my $test_cb = sub {
         my $agent = shift;
         $agent->get("/Ticket/Modify.html?id=$id");
-        my $form = $agent->form_number(3);
+        my $form = $agent->form_name('TicketModify');
         is $form->value('Owner'), $user_b->Name, 'correct owner selected';
         $form->value('Owner', RT->Nobody->Name);
         $agent->submit;
@@ -130,7 +130,7 @@ diag "on reply correct owner is selected";
     $agent_a->goto_ticket( $id );
     $agent_a->follow_link_ok({text => 'Reply'}, 'Ticket -> Basics');
 
-    my $form = $agent_a->form_number(3);
+    my $form = $agent_a->form_name('TicketModify');
     is $form->value('Owner'), '', 'empty value selected';
     $agent_a->submit;
 

commit 36d469d830dbd2b3d833508994a49476660fdf99
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 10:53:54 2010 -0400

    further cleanups to menuing. temporarily(?) add back old search and
    ticket create widgets

diff --git a/share/html/Elements/Menu b/share/html/Elements/Menu
index 13a3fe9..306693e 100755
--- a/share/html/Elements/Menu
+++ b/share/html/Elements/Menu
@@ -47,8 +47,10 @@
 %# END BPS TAGGED BLOCK }}}
 <ul <%$id ? 'id="'.$id.'"' : '' |n%><% $toplevel? 'class="sf-menu sf-js-enabled sf-shadow"' : '' |n %>>
 % for my $child ($menu->children) {
+%   my $item_id = lc($parent_id."-".$child->key);
+%   $item_id =~ s/\s/-/g;
 <li>
-<a id="<%$parent_id%>-<%$child->key%>"  \
+<a id="<%$item_id%>" \
 <% $child->path ? 'href="'.RT->Config->Get('WebPath').$child->path.'"' : '' |n%> \
 > \
 % if ($child->escape_title) { 
@@ -63,6 +65,7 @@
 % }
 </ul>
 <%INIT>
+
 </%INIT>
 <%ARGS>
 $menu
diff --git a/share/html/Elements/Tabs b/share/html/Elements/Tabs
index 40ce353..9324d7a 100755
--- a/share/html/Elements/Tabs
+++ b/share/html/Elements/Tabs
@@ -130,13 +130,13 @@ if ( $request_path =~ qr{.*} ) {
         my $queues = $admin->child( queues => title => loc('Queues'), path => '/Admin/Queues/', );
         $queues->child( loc('Select'), path => "/Admin/Queues/" );
         $queues->child( loc('Create'), path => "/Admin/Queues/Modify.html?Create=1" );
-        my $cfs = $admin->child( loc('Custom Fields'), path => '/Admin/CustomFields/',
+        my $cfs = $admin->child( customfields => title => loc('Custom Fields'), path => '/Admin/CustomFields/',
         );
-        $cfs->child( loc('Select'), path => "/Admin/CustomFields/" );
-        $cfs->child( loc('Create'), path => "/Admin/CustomFields/Modify.html?Create=1" );
+        $cfs->child( select => title => loc('Select'), path => "/Admin/CustomFields/" );
+        $cfs->child( create => title => loc('Create'), path => "/Admin/CustomFields/Modify.html?Create=1" );
 
         my $admin_global
-            = $admin->child( loc('Global'), path => '/Admin/Global/', );
+            = $admin->child( global=> title => loc('Global'), path => '/Admin/Global/', );
 
         my $scrips = $admin_global->child( loc('Scrips'), path => '/Admin/Global/Scripshtml', );
         $scrips->child( loc('Select'), path => "/Admin/Global/Scrips.html" );
@@ -414,7 +414,7 @@ if ( $request_path =~ qr'Admin/CustomFields/' ) {
         $tabs->child( loc('User Rights') => path =>
                       "/Admin/CustomFields/UserRights.html?id=" . $id );
 
-        if ( $obj->lookup_type =~ /^RT::Queue-/io ) {
+        if ( $obj->LookupType =~ /^RT::Queue-/io ) {
             $tabs->child( loc('Applies to'),
                        path => "/Admin/CustomFields/Objects.html?id=" . $id );
         }
diff --git a/share/html/Elements/Widgets b/share/html/Elements/Widgets
new file mode 100644
index 0000000..f87a68a
--- /dev/null
+++ b/share/html/Elements/Widgets
@@ -0,0 +1,4 @@
+<div class="widgets">
+<& /Elements/SimpleSearch &>
+<& /Elements/CreateTicket &>
+</div>

commit dca3352c0629c2d786d43060c0ed8531498c9c52
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 10:54:20 2010 -0400

    continue cleaning up t/web/cf_date.t

diff --git a/t/web/cf_date.t b/t/web/cf_date.t
index 40600db..085f216 100644
--- a/t/web/cf_date.t
+++ b/t/web/cf_date.t
@@ -15,11 +15,7 @@ my $cf_name = 'test cf date';
 my $cfid;
 diag "Create a CF";
 {
-    $m->follow_link( text => 'Configuration' );
-    $m->title_is( q/RT Administration/, 'admin screen' );
-    $m->follow_link( text => 'Custom Fields' );
-    $m->title_is( q/Select a Custom Field/, 'admin-cf screen' );
-    $m->follow_link( text => 'Create' );
+    $m->follow_link( id => 'config-customfields-create');
     $m->submit_form(
         form_name => "ModifyCustomField",
         fields    => {
@@ -38,13 +34,13 @@ my $queue = RT::Test->load_or_create_queue( Name => 'General' );
 ok $queue && $queue->id, 'loaded or created queue';
 
 {
-    $m->follow_link( text => 'Queues' );
+    $m->follow_link( id => 'config-queues-select');
     $m->title_is( q/Admin queues/, 'admin-queues screen' );
     $m->follow_link( text => 'General' );
-    $m->title_is( q/Editing Configuration for queue General/,
+    $m->title_is( q/Configuration for queue General/,
         'admin-queue: general' );
     $m->follow_link( text => 'Ticket Custom Fields' );
-    $m->title_is( q/Edit Custom Fields for General/,
+    $m->title_is( q/Custom Fields for queue General/,
         'admin-queue: general cfid' );
 
     $m->form_name('EditCustomFields');

commit 2cf3a8d4990cfbdda2dec10fe21bbd75e244f46e
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 11:27:14 2010 -0400

    Menuing HTML is now pretty and ~well indented and easy to read

diff --git a/share/html/Elements/Menu b/share/html/Elements/Menu
index 306693e..b34e063 100755
--- a/share/html/Elements/Menu
+++ b/share/html/Elements/Menu
@@ -45,25 +45,27 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<ul <%$id ? 'id="'.$id.'"' : '' |n%><% $toplevel? 'class="sf-menu sf-js-enabled sf-shadow"' : '' |n %>>
+
+<%" " x $depth%><ul<%$id ? ' id="'.$id.'"' : '' |n%><% $toplevel? ' class="sf-menu sf-js-enabled sf-shadow"' : '' |n %>>
 % for my $child ($menu->children) {
-%   my $item_id = lc($parent_id."-".$child->key);
+%   my $item_id = lc(($parent_id? $parent_id."-" : "") .$child->key);
 %   $item_id =~ s/\s/-/g;
-<li>
-<a id="<%$item_id%>" \
-<% $child->path ? 'href="'.RT->Config->Get('WebPath').$child->path.'"' : '' |n%> \
-> \
+<%" " x ($depth+1)%><li>\
+<a id="<%$item_id%>" <% $child->path ? ' href="'.RT->Config->Get('WebPath').$child->path.'"' : '' |n%>>\
 % if ($child->escape_title) { 
-<%$child->title |n%>
+<%$child->title |n%>\
 % } else {
-<%$child->title%>
+<%$child->title%>\
 % }
-</a>
-% next unless ($child->has_children);
-<& Menu, menu => $child, toplevel => 0, parent_id => ($parent_id? $parent_id."-": '').$child->key &>
+</a>\
+% if ($child->has_children) {
+<& Menu, menu => $child, toplevel => 0, parent_id => ($parent_id? $parent_id."-": '').$child->key, depth=> ($depth+1) &>
+<%" " x ($depth+1)%></li>
+% } else {
 </li>
+% } 
 % }
-</ul>
+<%" " x $depth%></ul>\
 <%INIT>
 
 </%INIT>
@@ -72,4 +74,5 @@ $menu
 $id => undef
 $toplevel => 1
 $parent_id => ''
+$depth => 0
 </%ARGS>

commit accfac608496319097747bd807e715c3677b5340
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 11:37:06 2010 -0400

    Fix two more test files for menuing changes

diff --git a/share/html/Prefs/Other.html b/share/html/Prefs/Other.html
index a3cde93..d342e4d 100644
--- a/share/html/Prefs/Other.html
+++ b/share/html/Prefs/Other.html
@@ -52,7 +52,7 @@
 &>
 <& /Elements/ListActions, actions => \@results &>
 
-<form method="post" action="Other.html">
+<form method="post" action="Other.html" name="ModifyPreferences" id="ModifyPreferences">
 % foreach my $section( RT->Config->Sections ) {
 <&|/Widgets/TitleBox, title => loc( $section ) &>
 % foreach my $option( RT->Config->Options( Section => $section ) ) {
diff --git a/t/mail/gnupg-outgoing.t b/t/mail/gnupg-outgoing.t
index 3fc995f..6aa963a 100644
--- a/t/mail/gnupg-outgoing.t
+++ b/t/mail/gnupg-outgoing.t
@@ -235,7 +235,7 @@ sub update_ticket {
     RT::Test->clean_caught_mails;
 
     $m->get( $m->rt_base_url . "/Ticket/Update.html?Action=Respond&id=$tid" );
-    $m->form_name('TicketModify');
+    $m->form_name('TicketUpdate');
     $m->field( UpdateContent => 'Some content' );
 
     foreach ( qw(Sign Encrypt) ) {
diff --git a/t/web/crypt-gnupg.t b/t/web/crypt-gnupg.t
index 5720575..5cd67e2 100644
--- a/t/web/crypt-gnupg.t
+++ b/t/web/crypt-gnupg.t
@@ -413,7 +413,7 @@ like($m->content, qr/$key1/, "first key shows up in preferences");
 like($m->content, qr/$key2/, "second key shows up in preferences");
 like($m->content, qr/$key1.*?$key2/s, "first key shows up before the second");
 
-$m->form_name('TicketModify');
+$m->form_name('ModifyPreferences');
 $m->select("PreferredKey" => $key2);
 $m->submit;
 

commit af48574151b1ecb15e68af51fb32345908a3bab0
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 11:49:32 2010 -0400

    Fix some lower-case parameters from our backport from 3.999

diff --git a/share/html/Elements/Tabs b/share/html/Elements/Tabs
index 9324d7a..6301aba 100755
--- a/share/html/Elements/Tabs
+++ b/share/html/Elements/Tabs
@@ -496,12 +496,12 @@ if ( $request_path =~ qr'(?:Ticket|Search)/' ) {
         if ( $obj->CurrentUserHasRight('OwnTicket') ) {
             if ( $obj->OwnerObj->id == RT->Nobody->id ) {
                 $actions->child( loc('Take') => path =>
-                                "/Ticket/Display.html?action=take&id=" . $id )
+                                "/Ticket/Display.html?Action=Take&id=" . $id )
                     if (    $can{'ModifyTicket'}
                          or $obj->CurrentUserHasRight('TakeTicket') );
             } elsif ( $obj->OwnerObj->id != $session{'CurrentUser'}->id ) {
                 $actions->child( loc('Steal') => path =>
-                               "/Ticket/Display.html?action=steal&id=" . $id )
+                               "/Ticket/Display.html?Action=Steal&id=" . $id )
                     if (    $can{'ModifyTicket'}
                          or $obj->CurrentUserHasRight('StealTicket') );
             }

commit 6f83c6b0aa7aa21a9f93525e5c8de416ec15eb36
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 11:49:57 2010 -0400

    Use the correct form name for a ticket reply

diff --git a/t/web/ticket_owner.t b/t/web/ticket_owner.t
index 815f542..cd1def6 100644
--- a/t/web/ticket_owner.t
+++ b/t/web/ticket_owner.t
@@ -130,7 +130,7 @@ diag "on reply correct owner is selected";
     $agent_a->goto_ticket( $id );
     $agent_a->follow_link_ok({text => 'Reply'}, 'Ticket -> Basics');
 
-    my $form = $agent_a->form_name('TicketModify');
+    my $form = $agent_a->form_name('TicketUpdate');
     is $form->value('Owner'), '', 'empty value selected';
     $agent_a->submit;
 

commit 58abe4971e42c163d72c917d0d33afba9f6e7460
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 12:33:31 2010 -0400

    update two more files with new names for forms and pages

diff --git a/t/web/ticket_owner.t b/t/web/ticket_owner.t
index cd1def6..f519951 100644
--- a/t/web/ticket_owner.t
+++ b/t/web/ticket_owner.t
@@ -217,8 +217,7 @@ diag "TakeTicket+OwnTicket work";
     is $ticket->Owner, RT->Nobody->id, 'correct owner';
 
     $agent_a->goto_ticket( $id );
-    ok !($agent_a->find_all_links( text => 'Steal' ))[0],
-        'no Steal link';
+    ok !($agent_a->find_all_links( text => 'Steal' ))[0], 'no Steal link';
     $agent_a->follow_link_ok({text => 'Take'}, 'Ticket -> Take');
 
     $ticket = RT::Ticket->new( RT->SystemUser );
diff --git a/t/web/watching-queues.t b/t/web/watching-queues.t
index 8dc536b..4d9ec6b 100644
--- a/t/web/watching-queues.t
+++ b/t/web/watching-queues.t
@@ -64,9 +64,9 @@ diag "add self as AdminCc on General" if $ENV{'TEST_VERBOSE'};
     $m->follow_link( text => 'Queues' );
     $m->title_is('Admin queues', 'queues page');
     $m->follow_link( text => 'General' );
-    $m->title_is('Editing Configuration for queue General');
+    $m->title_is('Configuration for queue General');
     $m->follow_link( text => 'Watchers' );
-    $m->title_is('Modify people related to queue General');
+    $m->title_is('People related to queue General');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -77,7 +77,7 @@ diag "add self as AdminCc on General" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue General', 'caught the right form! :)');
+    $m->title_is('People related to queue General', 'caught the right form! :)');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -86,7 +86,7 @@ diag "add self as AdminCc on General" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue General', 'caught the right form! :)');
+    $m->title_is('People related to queue General', 'caught the right form! :)');
 
     my $queue = RT::Queue->new(RT->SystemUser);
     $queue->Load('General');
@@ -119,9 +119,9 @@ diag "add self as Cc on General" if $ENV{'TEST_VERBOSE'};
     $m->follow_link( text => 'Queues' );
     $m->title_is('Admin queues', 'queues page');
     $m->follow_link( text => 'General' );
-    $m->title_is('Editing Configuration for queue General');
+    $m->title_is('Configuration for queue General');
     $m->follow_link( text => 'Watchers' );
-    $m->title_is('Modify people related to queue General');
+    $m->title_is('People related to queue General');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -132,7 +132,7 @@ diag "add self as Cc on General" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue General', 'caught the right form! :)');
+    $m->title_is('People related to queue General', 'caught the right form! :)');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -141,7 +141,7 @@ diag "add self as Cc on General" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue General', 'caught the right form! :)');
+    $m->title_is('People related to queue General', 'caught the right form! :)');
 
     my $queue = RT::Queue->new(RT->SystemUser);
     $queue->Load('General');
@@ -174,9 +174,9 @@ diag "add self as AdminCc on Fancypants" if $ENV{'TEST_VERBOSE'};
     $m->follow_link( text => 'Queues' );
     $m->title_is('Admin queues', 'queues page');
     $m->follow_link( text => 'Fancypants' );
-    $m->title_is('Editing Configuration for queue Fancypants');
+    $m->title_is('Configuration for queue Fancypants');
     $m->follow_link( text => 'Watchers' );
-    $m->title_is('Modify people related to queue Fancypants');
+    $m->title_is('People related to queue Fancypants');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -187,7 +187,7 @@ diag "add self as AdminCc on Fancypants" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue Fancypants', 'caught the right form! :)');
+    $m->title_is('People related to queue Fancypants', 'caught the right form! :)');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -196,7 +196,7 @@ diag "add self as AdminCc on Fancypants" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue Fancypants', 'caught the right form! :)');
+    $m->title_is('People related to queue Fancypants', 'caught the right form! :)');
 
     ok($other_queue->IsWatcher(Type => 'AdminCc', PrincipalId => $user->PrincipalId), 'added root as AdminCc on Fancypants');
 }
@@ -231,9 +231,9 @@ diag "add group as Cc on Loopy" if $ENV{'TEST_VERBOSE'};
     $m->follow_link( text => 'Queues' );
     $m->title_is('Admin queues', 'queues page');
     $m->follow_link( text => 'Loopy' );
-    $m->title_is('Editing Configuration for queue Loopy');
+    $m->title_is('Configuration for queue Loopy');
     $m->follow_link( text => 'Watchers' );
-    $m->title_is('Modify people related to queue Loopy');
+    $m->title_is('People related to queue Loopy');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -244,7 +244,7 @@ diag "add group as Cc on Loopy" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue Loopy', 'caught the right form! :)');
+    $m->title_is('People related to queue Loopy', 'caught the right form! :)');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -253,7 +253,7 @@ diag "add group as Cc on Loopy" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue Loopy', 'caught the right form! :)');
+    $m->title_is('People related to queue Loopy', 'caught the right form! :)');
 
     ok($loopy_queue->IsWatcher(Type => 'Cc', PrincipalId => $group->PrincipalId), 'added Groupies as Cc on Loopy');
 }
@@ -294,9 +294,9 @@ diag "add other group as AdminCc on Loopy" if $ENV{'TEST_VERBOSE'};
     $m->follow_link( text => 'Queues' );
     $m->title_is('Admin queues', 'queues page');
     $m->follow_link( text => 'Loopy' );
-    $m->title_is('Editing Configuration for queue Loopy');
+    $m->title_is('Configuration for queue Loopy');
     $m->follow_link( text => 'Watchers' );
-    $m->title_is('Modify people related to queue Loopy');
+    $m->title_is('People related to queue Loopy');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -307,7 +307,7 @@ diag "add other group as AdminCc on Loopy" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue Loopy', 'caught the right form! :)');
+    $m->title_is('People related to queue Loopy', 'caught the right form! :)');
 
     $m->submit_form_ok({
         form_number => 3,
@@ -316,7 +316,7 @@ diag "add other group as AdminCc on Loopy" if $ENV{'TEST_VERBOSE'};
         },
     });
 
-    $m->title_is('Modify people related to queue Loopy', 'caught the right form! :)');
+    $m->title_is('People related to queue Loopy', 'caught the right form! :)');
 
     ok($loopy_queue->IsWatcher(Type => 'AdminCc', PrincipalId => $outer_group->PrincipalId), 'added Groupies 2.0 as AdminCc on Loopy');
 }

commit 383c9be1d6390132d47c87c4c2c9f11fa1fa4a57
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 12:48:34 2010 -0400

    tighten up superfish styles so menuing doesn't break horribly

diff --git a/share/html/NoAuth/css/base/superfish-navbar.css b/share/html/NoAuth/css/base/superfish-navbar.css
index 68c7135..9a3f24c 100644
--- a/share/html/NoAuth/css/base/superfish-navbar.css
+++ b/share/html/NoAuth/css/base/superfish-navbar.css
@@ -2,8 +2,8 @@
 /*** adding the class sf-navbar in addition to sf-menu creates an all-horizontal nav-bar menu ***/
 .sf-navbar {
 	background:		#BDD2FF;
-	height:			2.5em;
-	padding-bottom:	2.5em;
+	height:			2em;
+	padding-bottom:	2em;
 	position:		relative;
 }
 .sf-navbar li {
@@ -59,7 +59,7 @@ ul.sf-navbar .current ul,
 ul.sf-navbar ul li:hover ul,
 ul.sf-navbar ul li.sfHover ul {
 	left:			0;
-	top:			2.5em; /* match top ul list item height */
+	top:			2em; /* match top ul list item height */
 }
 ul.sf-navbar .current ul ul {
 	top: 			-999em;
@@ -90,4 +90,4 @@ ul.sf-navbar .current ul ul {
 	-moz-border-radius-topright: 0;
 	-webkit-border-top-right-radius: 0;
 	-webkit-border-bottom-left-radius: 0;
-}
\ No newline at end of file
+}
diff --git a/share/html/NoAuth/css/base/superfish.css b/share/html/NoAuth/css/base/superfish.css
index cc33fdb..d2ae2f0 100644
--- a/share/html/NoAuth/css/base/superfish.css
+++ b/share/html/NoAuth/css/base/superfish.css
@@ -30,7 +30,7 @@
 .sf-menu li:hover ul,
 .sf-menu li.sfHover ul {
 	left:			0;
-	top:			2.5em; /* match top ul list item height */
+	top:			2em; /* match top ul list item height */
 	z-index:		99;
 }
 ul.sf-menu li:hover li ul,

commit a3c96617ee1f13eaa01521df0f776350550a8b89
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 13:01:04 2010 -0400

    one more passing test file

diff --git a/share/html/Search/Edit.html b/share/html/Search/Edit.html
index 2d3730f..fb6a1cb 100755
--- a/share/html/Search/Edit.html
+++ b/share/html/Search/Edit.html
@@ -60,7 +60,7 @@
 
 <& Elements/NewListActions, actions => \@actions &>
 
-<form method="post" action="Build.html">
+<form method="post" action="Build.html" id="BuildQueryAdvanced" name="BuildQueryAdvanced">
 <input type="hidden" class="hidden" name="SavedSearchId" value="<% $SavedSearchId %>" />
 <input type="hidden" class="hidden" name="SavedChartSearchId" value="<% $SavedChartSearchId %>" />
 <&|/Widgets/TitleBox, title => loc('Query'), &>
diff --git a/t/web/query_builder.t b/t/web/query_builder.t
index c0f7b49..79df326 100644
--- a/t/web/query_builder.t
+++ b/t/web/query_builder.t
@@ -143,7 +143,7 @@ diag "click advanced, enter 'C1 OR ( C2 AND C3 )', apply, aggregators should sta
 {
     my $response = $agent->get($url."Search/Edit.html");
     ok( $response->is_success, "Fetched /Search/Edit.html" );
-    ok($agent->form_name('TicketModify'), "found the form");
+    ok($agent->form_name('BuildQueryAdvanced'), "found the form");
     $agent->field("Query", "Status = 'new' OR ( Status = 'open' AND Subject LIKE 'office' )");
     $agent->submit;
     is( getQueryFromForm,
@@ -225,7 +225,7 @@ diag "input a condition, select (several conditions), click delete";
 {
     my $response = $agent->get( $url."Search/Edit.html" );
     ok $response->is_success, "Fetched /Search/Edit.html";
-    ok $agent->form_name('TicketModify'), "found the form";
+    ok $agent->form_name('BuildQueryAdvanced'), "found the form";
     $agent->field("Query", "( Status = 'new' OR Status = 'open' )");
     $agent->submit;
     is( getQueryFromForm,

commit a0807fd3152c33ee619880921cfcb16ffc1f3497
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 13:23:49 2010 -0400

    further updates to making rights clickable

diff --git a/share/html/Admin/CustomFields/GroupRights.html b/share/html/Admin/CustomFields/GroupRights.html
index 4295e70..db4ae39 100644
--- a/share/html/Admin/CustomFields/GroupRights.html
+++ b/share/html/Admin/CustomFields/GroupRights.html
@@ -53,7 +53,7 @@
 &>
 <& /Elements/ListActions, actions => \@results &>
 
-  <form method="post" action="GroupRights.html">
+  <form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights">
     <input type="hidden" class="hidden" name="id" value="<% $CustomFieldObj->id %>" />
 
     <& /Admin/Elements/EditRights, Context => $CustomFieldObj, Principals => \@principals &>
diff --git a/share/html/Admin/CustomFields/UserRights.html b/share/html/Admin/CustomFields/UserRights.html
index a4bbd80..238fc4a 100644
--- a/share/html/Admin/CustomFields/UserRights.html
+++ b/share/html/Admin/CustomFields/UserRights.html
@@ -51,7 +51,7 @@ current_tab => "Admin/CustomFields/UserRights.html?id=".$id,
 Title => $title, &>
 <& /Elements/ListActions, actions => \@results &>
 
-  <form method="post" action="UserRights.html">
+  <form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights">
     <input type="hidden" class="hidden" name="id" value="<% $CustomFieldObj->id %>" />
     <& /Admin/Elements/EditRights, Context => $CustomFieldObj, Principals => \@principals &>
     <& /Elements/Submit, Caption => loc("Be sure to save your changes"), Reset => 1 &>
diff --git a/share/html/Admin/Global/GroupRights.html b/share/html/Admin/Global/GroupRights.html
index 09fe1e9..ca0ac62 100755
--- a/share/html/Admin/Global/GroupRights.html
+++ b/share/html/Admin/Global/GroupRights.html
@@ -51,7 +51,7 @@
     Title => loc('Modify global group rights') &>  
 <& /Elements/ListActions, actions => \@results &>
 
-<form method="post" action="GroupRights.html">
+<form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights">
   <& /Admin/Elements/EditRights, Context => $RT::System, Principals => \@principals &>
   <& /Elements/Submit, Label => loc('Modify Group Rights'), Reset => 1 &>
 </form>
diff --git a/share/html/Admin/Global/UserRights.html b/share/html/Admin/Global/UserRights.html
index f92f7ae..2e9e245 100755
--- a/share/html/Admin/Global/UserRights.html
+++ b/share/html/Admin/Global/UserRights.html
@@ -51,7 +51,7 @@
     Title => loc('Modify global user rights') &>  
 <& /Elements/ListActions, actions => \@results &>
 
-<form method="post" action="UserRights.html">
+<form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights">
   <& /Admin/Elements/EditRights, Context => $RT::System, Principals => \@principals &>
   <& /Elements/Submit, Label => loc('Modify User Rights'), Reset => 1 &>
 </form>
diff --git a/share/html/Admin/Groups/GroupRights.html b/share/html/Admin/Groups/GroupRights.html
index f82c60e..268ecf2 100755
--- a/share/html/Admin/Groups/GroupRights.html
+++ b/share/html/Admin/Groups/GroupRights.html
@@ -52,7 +52,7 @@
     Title => loc('Modify group rights for group [_1]', $GroupObj->Name) &>
 <& /Elements/ListActions, actions => \@results &>
 
-  <form method="post" action="GroupRights.html">
+  <form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights">
     <input type="hidden" class="hidden" name="id" value="<% $GroupObj->id %>" />
     <& /Admin/Elements/EditRights, Context => $GroupObj, Principals => \@principals &>
     <& /Elements/Submit, Label => loc('Modify Group Rights'), Reset => 1 &>
diff --git a/share/html/Admin/Groups/UserRights.html b/share/html/Admin/Groups/UserRights.html
index c7809d1..c0209c6 100755
--- a/share/html/Admin/Groups/UserRights.html
+++ b/share/html/Admin/Groups/UserRights.html
@@ -52,7 +52,7 @@
     Title => loc('Modify user rights for group [_1]', $GroupObj->Name) &>  
 <& /Elements/ListActions, actions => \@results &>
 
-  <form method="post" action="UserRights.html">
+  <form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights">
     <input type="hidden" class="hidden" name="id" value="<% $GroupObj->id %>" />
     <& /Admin/Elements/EditRights, Context => $GroupObj, Principals => \@principals &>
     <& /Elements/Submit, Label => loc('Modify User Rights'), Reset => 1 &>
diff --git a/share/html/Admin/Queues/GroupRights.html b/share/html/Admin/Queues/GroupRights.html
index e0073d0..93a9b51 100755
--- a/share/html/Admin/Queues/GroupRights.html
+++ b/share/html/Admin/Queues/GroupRights.html
@@ -52,7 +52,7 @@
     Title => loc('Modify group rights for queue [_1]', $QueueObj->Name) &>
 <& /Elements/ListActions, actions => \@results &>
 
-<form method="post" action="GroupRights.html">
+<form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights">
   <input type="hidden" class="hidden" name="id" value="<% $QueueObj->id %>" />
 
 % $m->callback( %ARGS, QueueObj => $QueueObj, results => \@results, principals => \@principals );
diff --git a/share/html/Admin/Queues/UserRights.html b/share/html/Admin/Queues/UserRights.html
index 20cbd50..a27b103 100755
--- a/share/html/Admin/Queues/UserRights.html
+++ b/share/html/Admin/Queues/UserRights.html
@@ -52,7 +52,7 @@
     Title => loc('Modify user rights for queue [_1]', $QueueObj->Name) &>
 <& /Elements/ListActions, actions => \@results &>
 
-<form method="post" action="UserRights.html">
+<form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights">
   <input type="hidden" class="hidden" name="id" value="<% $QueueObj->id %>" />
 
 %# XXX TODO put this somewhere more reasonable      
diff --git a/t/web/rights.t b/t/web/rights.t
index 886c847..5c7fc2b 100644
--- a/t/web/rights.t
+++ b/t/web/rights.t
@@ -2,21 +2,19 @@
 use strict;
 use warnings;
 
-use RT::Test tests => 14;
+use RT::Test tests => 12;
 
 my ($baseurl, $m) = RT::Test->started_ok;
 ok $m->login, "logged in";
 
-$m->follow_link_ok({ text => 'Configuration' });
-$m->follow_link_ok({ text => 'Global' });
-$m->follow_link_ok({ text => 'Group Rights' });
+$m->follow_link_ok({ id => 'config-global-group-rights'});
 
 
 sub get_rights {
     my $agent = shift;
     my $principal_id = shift;
     my $object = shift;
-    $agent->form_name('TicketModify');
+    $agent->form_name('ModifyGroupRights');
     my @inputs = $agent->current_form->find_input("SetRights-$principal_id-$object");
     my @rights = sort grep $_, map $_->possible_values, grep $_ && $_->value, @inputs;
     return @rights;
@@ -33,7 +31,7 @@ my ($everyone, $everyone_gid);
 diag "revoke all global rights from Everyone group";
 my @has = get_rights( $m, $everyone_gid, 'RT::System-1' );
 if ( @has ) {
-    $m->form_name('TicketModify');
+    $m->form_name('ModifyGroupRights');
     $m->untick("SetRights-$everyone_gid-RT::System-1", $_) foreach @has;
     $m->submit;
     
@@ -44,7 +42,7 @@ if ( @has ) {
 
 diag "grant SuperUser right to everyone";
 {
-    $m->form_name('TicketModify');
+    $m->form_name('ModifyGroupRights');
     $m->tick("SetRights-$everyone_gid-RT::System-1", 'SuperUser');
     $m->submit;
 
@@ -56,7 +54,7 @@ diag "grant SuperUser right to everyone";
 
 diag "revoke the right";
 {
-    $m->form_name('TicketModify');
+    $m->form_name('ModifyGroupRights');
     $m->untick("SetRights-$everyone_gid-RT::System-1", 'SuperUser');
     $m->submit;
 
@@ -69,7 +67,7 @@ diag "revoke the right";
 
 diag "return rights the group had in the beginning";
 if ( @has ) {
-    $m->form_name('TicketModify');
+    $m->form_name('ModifyGroupRights');
     $m->tick("SetRights-$everyone_gid-RT::System-1", $_) for @has;
     $m->submit;
 
diff --git a/t/web/rights1.t b/t/web/rights1.t
index 55544fa..5b284d0 100644
--- a/t/web/rights1.t
+++ b/t/web/rights1.t
@@ -52,7 +52,7 @@ ok ($grantid,$grantmsg);
 $agent->reload();
 $agent->content_contains('Logout', "Reloaded page successfully");
 ok($agent->find_link( 
-		       text => 'Preferences'), "Found prefs pane" );
+		       id => 'preferences-settings' ), "Found prefs pane" );
 ($revokeid,$revokemsg) = $user_obj->PrincipalObj->RevokeRight(Right => 'ModifySelf');
 ok ($revokeid,$revokemsg);
 # Good.  Now load the search page and test Load/Save Search.

commit 892d60343d2d107c15461961192ecbcff862be03
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Nov 1 14:05:14 2010 -0400

    more test file updates

diff --git a/share/html/Elements/Tabs b/share/html/Elements/Tabs
index 6301aba..aabf8a8 100755
--- a/share/html/Elements/Tabs
+++ b/share/html/Elements/Tabs
@@ -485,11 +485,9 @@ if ( $request_path =~ qr'(?:Ticket|Search)/' ) {
                                          );
                 } else {
 
-       #$url .= "Display.html?" .$query_string->(Status => $next, id => $id );
+                   $url .= "Display.html?" .$query_string->(Status => $next, id => $id );
                 }
-                $actions->child(
-                      loc( $schema->transition_label( $current => $next ) ) =>
-                          path => $url );
+                $actions->child( loc( $schema->transition_label( $current => $next ) ) => path => $url );
             }
 
         }
diff --git a/t/lifecycles/basics.t b/t/lifecycles/basics.t
index 60ffbbb..1448d7b 100644
--- a/t/lifecycles/basics.t
+++ b/t/lifecycles/basics.t
@@ -82,7 +82,7 @@ diag "new ->(open it)-> open";
     }
 
     $m->follow_link_ok({text => 'Open It'});
-    $m->form_name('TicketModify');
+    $m->form_name('TicketUpdate');
     $m->click('SubmitTicket');
 
     is $tstatus->($tid), 'open', 'changed status';
@@ -111,7 +111,7 @@ diag "open ->(stall)-> stalled";
     }
 
     $m->follow_link_ok({text => 'Stall'});
-    $m->form_name('TicketModify');
+    $m->form_name('TicketUpdate');
     $m->click('SubmitTicket');
 
     is $tstatus->($tid), 'stalled', 'changed status';
diff --git a/t/web/ticket_owner_autocomplete.t b/t/web/ticket_owner_autocomplete.t
index f2ce71b..e5d5604 100644
--- a/t/web/ticket_owner_autocomplete.t
+++ b/t/web/ticket_owner_autocomplete.t
@@ -128,7 +128,7 @@ diag "on reply correct owner is selected";
     is $ticket->Owner, $user_b->id, 'correct owner';
 
     $agent_a->goto_ticket( $id );
-    $agent_a->follow_link_ok({text => 'Reply'}, 'Ticket -> Basics');
+    $agent_a->follow_link_ok({id => 'basics'}, 'Ticket -> Basics');
 
     my $form = $agent_a->form_name('TicketModify');
     is $form->value('Owner'), '', 'empty value selected';

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


More information about the Rt-commit mailing list