diff --git a/trac/admin/templates/admin_basics.html b/trac/admin/templates/admin_basics.html
--- a/trac/admin/templates/admin_basics.html
+++ b/trac/admin/templates/admin_basics.html
@@ -12,7 +12,7 @@
   <body>
     <h2>Basic Settings</h2>
 
-    <form class="mod" id="modbasic" method="post">
+    <form class="mod" id="modbasic" method="post" action="">
       <fieldset>
         <legend>Project</legend>
         <div class="field">
diff --git a/trac/admin/templates/admin_components.html b/trac/admin/templates/admin_components.html
--- a/trac/admin/templates/admin_components.html
+++ b/trac/admin/templates/admin_components.html
@@ -29,7 +29,7 @@
     </py:def>
 
     <py:choose test="view">
-      <form py:when="'detail'" class="mod" id="modcomp" method="post">
+      <form py:when="'detail'" class="mod" id="modcomp" method="post" action="">
         <fieldset>
           <legend>Modify Component:</legend>
           <div class="field">
@@ -58,7 +58,7 @@
       </form>
 
       <py:otherwise>
-        <form class="addnew" id="addcomponent" method="post">
+        <form class="addnew" id="addcomponent" method="post" action="">
           <fieldset>
             <legend>Add Component:</legend>
             <div class="field">
@@ -72,7 +72,7 @@
         </form>
 
         <py:choose>
-          <form py:when="components" id="component_table" method="POST">
+          <form py:when="components" id="component_table" method="post" action="">
             <table class="listing" id="complist">
               <thead>
                 <tr><th class="sel">&nbsp;</th>
diff --git a/trac/admin/templates/admin_enums.html b/trac/admin/templates/admin_enums.html
--- a/trac/admin/templates/admin_enums.html
+++ b/trac/admin/templates/admin_enums.html
@@ -13,7 +13,7 @@
     <h2>Manage $label_plural</h2>
 
     <py:choose test="view">
-      <form py:when="'detail'" class="mod" id="modenum" method="post">
+      <form py:when="'detail'" class="mod" id="modenum" method="post" action="">
         <fieldset>
           <legend>Modify $label_singular</legend>
           <div class="field">
@@ -27,7 +27,7 @@
       </form>
 
       <py:otherwise>
-        <form class="addnew" id="addenum" method="post">
+        <form class="addnew" id="addenum" method="post" action="">
           <fieldset>
             <legend>Add $label_singular</legend>
             <div class="field">
@@ -40,7 +40,7 @@
         </form>
 
         <py:choose>
-          <form py:when="enums" id="enumtable" method="POST">
+          <form py:when="enums" id="enumtable" method="post" action="">
             <table class="listing" id="enumlist">
               <thead>
                 <tr><th class="sel">&nbsp;</th>
diff --git a/trac/admin/templates/admin_logging.html b/trac/admin/templates/admin_logging.html
--- a/trac/admin/templates/admin_logging.html
+++ b/trac/admin/templates/admin_logging.html
@@ -20,7 +20,7 @@
   <body>
     <h2>Logging</h2>
 
-    <form class="mod" id="modlog" method="post">
+    <form class="mod" id="modlog" method="post" action="">
       <fieldset>
         <legend>Configuration</legend>
         <div class="field">
diff --git a/trac/admin/templates/admin_milestones.html b/trac/admin/templates/admin_milestones.html
--- a/trac/admin/templates/admin_milestones.html
+++ b/trac/admin/templates/admin_milestones.html
@@ -13,7 +13,7 @@
     <h2>Manage Milestones</h2>
 
     <py:choose test="view">
-      <form py:when="'detail'" class="mod" method="post" id="modifymilestone">
+      <form py:when="'detail'" class="mod" method="post" id="modifymilestone" action="">
         <fieldset>
           <legend>Modify Milestone:</legend>
           <div class="field">
@@ -69,7 +69,7 @@
 
       <py:otherwise>
 
-        <form class="addnew" id="addmilestone" method="post">
+        <form class="addnew" id="addmilestone" method="post" action="">
           <fieldset>
             <legend>Add Milestone:</legend>
             <div class="field">
@@ -92,7 +92,7 @@
         </form>
 
         <py:choose>
-          <form py:when="milestones" id="milestone_table" method="POST">
+          <form py:when="milestones" id="milestone_table" method="post" action="">
             <table class="listing" id="millist">
               <thead>
                 <tr><th class="sel">&nbsp;</th>
diff --git a/trac/admin/templates/admin_plugins.html b/trac/admin/templates/admin_plugins.html
--- a/trac/admin/templates/admin_plugins.html
+++ b/trac/admin/templates/admin_plugins.html
@@ -16,7 +16,7 @@
   <body>
     <h2>Manage Plugins</h2>
 
-    <form id="addplug" class="addnew" method="post" enctype="multipart/form-data">
+    <form id="addplug" class="addnew" method="post" enctype="multipart/form-data" action="">
       <fieldset>
         <legend>Install Plugin:</legend>
         <div class="field">
@@ -40,7 +40,7 @@
       </fieldset>
     </form>
 
-    <form py:for="idx, plugin in enumerate(plugins)" method="post">
+    <form py:for="idx, plugin in enumerate(plugins)" method="post" action="">
       <div class="plugin">
         <h3>${plugin.name} ${plugin.version}</h3>
         <div class="uninstall buttons">
diff --git a/trac/admin/templates/admin_versions.html b/trac/admin/templates/admin_versions.html
--- a/trac/admin/templates/admin_versions.html
+++ b/trac/admin/templates/admin_versions.html
@@ -13,7 +13,7 @@
     <h2>Manage Versions</h2>
 
     <py:choose test="view">
-      <form py:when="'detail'" class="mod" id="modifyversion" method="post">
+      <form py:when="'detail'" class="mod" id="modifyversion" method="post" action="">
         <fieldset>
           <legend>Modify Version:</legend>
           <div class="field">
@@ -48,7 +48,7 @@
       </form>
 
       <py:otherwise>
-        <form class="addnew" id="addversion" method="post">
+        <form class="addnew" id="addversion" method="post" action="">
           <fieldset>
             <legend>Add Version:</legend>
             <div class="field">
@@ -69,7 +69,7 @@
         </form>
 
         <py:choose>
-          <form py:when="versions" id="version_table" method="POST">
+          <form py:when="versions" id="version_table" method="post" action="">
             <table class="listing" id="verlist">
               <thead>
                 <tr><th class="sel">&nbsp;</th>
diff --git a/trac/templates/about.html b/trac/templates/about.html
--- a/trac/templates/about.html
+++ b/trac/templates/about.html
@@ -9,9 +9,11 @@
     <title>About Trac</title>
     <link rel="stylesheet" type="text/css" href="${chrome.htdocs_location}css/about.css" />
     <script type="text/javascript">
+      //<![CDATA[
       jQuery(document).ready(function ($) {
         $("#systeminfo table").append("<tr><th>jQuery:</th><td>"+$().jquery+"</td></tr>");
       });
+      //]]>
     </script>
   </head>
 
diff --git a/trac/templates/history_view.html b/trac/templates/history_view.html
--- a/trac/templates/history_view.html
+++ b/trac/templates/history_view.html
@@ -15,8 +15,8 @@
       <h1>Change History for <a href="${url_of(resource)}">${name_of(resource)}</a></h1>
 
       <form py:if="history" class="printableform" method="get" action="">
-        <input type="hidden" name="action" value="diff" />
         <div class="buttons">
+          <input type="hidden" name="action" value="diff" />
           <input type="submit" value="View changes" />
         </div>
         <table id="fieldhist" class="listing" summary="Change history">
diff --git a/trac/templates/theme.html b/trac/templates/theme.html
--- a/trac/templates/theme.html
+++ b/trac/templates/theme.html
@@ -35,7 +35,7 @@
     <div id="main">
       <div id="ctxtnav" class="nav">
         <h2>Context Navigation</h2>
-          <ul>
+          <ul py:if="chrome.ctxtnav">
             <li py:for="i, elm in enumerate(chrome.ctxtnav)" class="${i == 0 and 'first ' or None}${i+1 == len(chrome.ctxtnav) and 'last' or None}">$elm</li>
           </ul>
         <hr />
diff --git a/trac/tests/functional/tester.py b/trac/tests/functional/tester.py
--- a/trac/tests/functional/tester.py
+++ b/trac/tests/functional/tester.py
@@ -72,11 +72,11 @@
         tc.notfind(internal_error)
         if summary == None:
             summary = random_sentence(4)
-        tc.formvalue('propform', 'field_summary', summary)
-        tc.formvalue('propform', 'field_description', random_page())
+        tc.formvalue('propertyform', 'field_summary', summary)
+        tc.formvalue('propertyform', 'field_description', random_page())
         if info:
             for field, value in info.items():
-                tc.formvalue('propform', 'field_%s' % field, value)
+                tc.formvalue('propertyform', 'field_%s' % field, value)
         tc.submit('submit')
         # we should be looking at the newly created ticket
         tc.url(self.url + '/ticket/%s' % (self.ticketcount + 1))
@@ -148,7 +148,7 @@
         self.go_to_ticket(ticketid)
         if comment is None:
             comment = random_sentence()
-        tc.formvalue('propform', 'comment', comment)
+        tc.formvalue('propertyform', 'comment', comment)
         tc.submit("submit")
         # Verify we're where we're supposed to be.
         tc.url(self.url + '/ticket/%s#comment:.*' % ticketid)
@@ -351,7 +351,7 @@
     def ticket_set_milestone(self, ticketid, milestone):
         """Set the milestone on a given ticket"""
         self.go_to_ticket(ticketid)
-        tc.formvalue('propform', 'milestone', milestone)
+        tc.formvalue('propertyform', 'milestone', milestone)
         tc.submit('submit')
         # TODO: verify the change occurred.
 
diff --git a/trac/ticket/templates/milestone_delete.html b/trac/ticket/templates/milestone_delete.html
--- a/trac/ticket/templates/milestone_delete.html
+++ b/trac/ticket/templates/milestone_delete.html
@@ -21,15 +21,17 @@
       <h1>Delete Milestone ${milestone.name}</h1>
 
     <form id="edit" action="" method="post">
-      <input type="hidden" name="action" value="delete" />
-      <p><strong>Are you sure you want to delete this milestone?</strong></p>
-      <input type="checkbox" id="retarget" name="retarget" checked="checked" />
-      <label for="target">Retarget associated tickets to milestone</label>
-      <select name="target" id="target">
-        <option value="">None</option>
-        <option py:for="m in milestones"
-                py:if="m.name != milestone.name">${m.name}</option>
-      </select>
+      <div>
+        <input type="hidden" name="action" value="delete" />
+        <p><strong>Are you sure you want to delete this milestone?</strong></p>
+        <input type="checkbox" id="retarget" name="retarget" checked="checked" />
+        <label for="target">Retarget associated tickets to milestone</label>
+        <select name="target" id="target">
+          <option value="">None</option>
+          <option py:for="m in milestones"
+                  py:if="m.name != milestone.name">${m.name}</option>
+        </select>
+      </div>
       <div class="buttons">
        <input type="submit" name="cancel" value="Cancel" />
        <input type="submit" value="Delete milestone" />
diff --git a/trac/ticket/templates/milestone_edit.html b/trac/ticket/templates/milestone_edit.html
--- a/trac/ticket/templates/milestone_edit.html
+++ b/trac/ticket/templates/milestone_edit.html
@@ -38,9 +38,9 @@
       </py:choose>
 
       <form id="edit" action="" method="post">
-        <input type="hidden" name="id" value="${milestone.name}" />
-        <input type="hidden" name="action" value="edit" />
         <div class="field">
+          <input type="hidden" name="id" value="${milestone.name}" />
+          <input type="hidden" name="action" value="edit" />
           <label>Name of the milestone:<br />
             <input type="text" id="name" name="name" size="32" value="${milestone.name or req.args.get('name')}" />
           </label>
diff --git a/trac/ticket/templates/milestone_view.html b/trac/ticket/templates/milestone_view.html
--- a/trac/ticket/templates/milestone_view.html
+++ b/trac/ticket/templates/milestone_view.html
@@ -50,9 +50,12 @@
                       value="${group.name}" py:content="group.label"
                       selected="${grouped_by == group.name or None}" />
             </select>
-            <noscript><input type="submit" value="Update" /></noscript>
+            <input type="submit" value="Update" class="noscript" />
+            <script type="text/javascript">
+              jQuery(document).ready(function ($) { $(".noscript").attr("style", "display: none"); });
+            </script>
           </legend>
-          <table summary="Shows the milestone completion status grouped by ${grouped_by}">
+          <table py:if="groups" summary="Shows the milestone completion status grouped by ${grouped_by}">
             <tr py:for="group in groups">
               <th scope="row" py:choose="">
                 <i py:when="not group.name"><a href="${group.stats_href}">(none)</a></i>
@@ -83,12 +86,16 @@
                   attachments.can_create"
            class="buttons">
         <form py:if="'MILESTONE_MODIFY' in perm(milestone.resource)" method="get" action="" id="editmilestone">
-          <input type="hidden" name="action" value="edit" />
-          <input type="submit" value="Edit milestone" />
+          <div>
+            <input type="hidden" name="action" value="edit" />
+            <input type="submit" value="Edit milestone" />
+          </div>
         </form>
         <form py:if="'MILESTONE_DELETE' in perm(milestone.resource)" method="get" action="" id="deletemilestone">
-          <input type="hidden" name="action" value="delete" />
-          <input type="submit" value="Delete milestone" />
+          <div>
+            <input type="hidden" name="action" value="delete" />
+            <input type="submit" value="Delete milestone" />
+          </div>
         </form>
         ${attach_file_form(attachments)}
       </div>
diff --git a/trac/ticket/templates/report_delete.html b/trac/ticket/templates/report_delete.html
--- a/trac/ticket/templates/report_delete.html
+++ b/trac/ticket/templates/report_delete.html
@@ -13,10 +13,10 @@
     <div id="content" class="report">
       <h1>$report.title</h1>
       <form action="${href.report()}" method="post">
-        <input type="hidden" name="id" value="$report.id"/>
-        <input type="hidden" name="action" value="delete" />
         <p><strong>Are you sure you want to delete this report?</strong></p>
         <div class="buttons">
+          <input type="hidden" name="id" value="$report.id"/>
+          <input type="hidden" name="action" value="delete" />
           <input type="submit" name="cancel" value="Cancel"/>
           <input type="submit" value="Delete report"/>
         </div>
diff --git a/trac/ticket/templates/ticket.html b/trac/ticket/templates/ticket.html
--- a/trac/ticket/templates/ticket.html
+++ b/trac/ticket/templates/ticket.html
@@ -177,7 +177,7 @@
               <!--! Quote the description (only for existing tickets) -->
               <form py:if="ticket.exists and ticket.description and
                            'TICKET_APPEND' in perm(ticket.resource)"
-                name="addreply"
+                id="addreply"
                 method="get" action="#comment">
                 <div class="inlinebuttons">
                   <input type="hidden" name="replyto" value="description" />
@@ -237,7 +237,7 @@
                    ('TICKET_APPEND' in perm(ticket.resource) or
                     'TICKET_CHGPROP' in perm(ticket.resource) or
                     ('TICKET_CREATE' in perm(ticket.resource) and not ticket.id))"
-            action="${ticket.exists and href.ticket(ticket.id) or href.newticket()}" method="post" name="propform" id="propertyform">
+            action="${ticket.exists and href.ticket(ticket.id) or href.newticket()}" method="post" id="propertyform">
         <h3 py:if="ticket.exists"><a id="edit" onfocus="$('#comment').get(0).focus()">
             Add/Change #${ticket.id} ($ticket.summary)</a></h3>
         <div py:if="authname == 'anonymous'" class="field">
diff --git a/trac/ticket/tests/functional.py b/trac/ticket/tests/functional.py
--- a/trac/ticket/tests/functional.py
+++ b/trac/ticket/tests/functional.py
@@ -915,9 +915,9 @@
             self._tester.login('admin')
             ticket_id = self._tester.create_ticket()
             self._tester.go_to_ticket(ticket_id)
-            tc.formvalue('propform', 'action', 'reassign')
+            tc.formvalue('propertyform', 'action', 'reassign')
             tc.find('reassign_reassign_owner')
-            tc.formvalue('propform', 'action_reassign_reassign_owner', 'user')
+            tc.formvalue('propertyform', 'action_reassign_reassign_owner', 'user')
             tc.submit('submit')
         finally:
             # Undo the config change for now since this (failing)
@@ -1030,7 +1030,7 @@
         Open ticket, component changed, owner not changed"""
         ticketid = self._tester.create_ticket("regression test 5497a")
         self._tester.go_to_ticket(ticketid)
-        tc.formvalue('propform', 'field-component', 'regression5497')
+        tc.formvalue('propertyform', 'field-component', 'regression5497')
         tc.submit('submit')
         tc.find(regex_owned_by('user'))
 
@@ -1040,9 +1040,9 @@
         Open ticket, component changed, owner changed"""
         ticketid = self._tester.create_ticket("regression test 5497b")
         self._tester.go_to_ticket(ticketid)
-        tc.formvalue('propform', 'field-component', 'regression5497')
-        tc.formvalue('propform', 'action', 'reassign')
-        tc.formvalue('propform', 'action_reassign_reassign_owner', 'admin')
+        tc.formvalue('propertyform', 'field-component', 'regression5497')
+        tc.formvalue('propertyform', 'action', 'reassign')
+        tc.formvalue('propertyform', 'action_reassign_reassign_owner', 'admin')
         tc.submit('submit')
         tc.notfind(regex_owned_by('user'))
         tc.find(regex_owned_by('admin'))
@@ -1078,27 +1078,27 @@
         # leave ids[0] as new
         # make ids[1] be assigned
         self._tester.go_to_ticket(ids[1])
-        tc.formvalue('propform', 'action', 'reassign')
-        tc.formvalue('propform', 'action_reassign_reassign_owner', 'admin')
+        tc.formvalue('propertyform', 'action', 'reassign')
+        tc.formvalue('propertyform', 'action_reassign_reassign_owner', 'admin')
         tc.submit('submit')
         # make ids[2] be accepted
         self._tester.go_to_ticket(ids[2])
-        tc.formvalue('propform', 'action', 'accept')
+        tc.formvalue('propertyform', 'action', 'accept')
         tc.submit('submit')
         # make ids[3] be closed
         self._tester.go_to_ticket(ids[3])
-        tc.formvalue('propform', 'action', 'resolve')
-        tc.formvalue('propform', 'action_resolve_resolve_resolution', 'fixed')
+        tc.formvalue('propertyform', 'action', 'resolve')
+        tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed')
         tc.submit('submit')
         # make ids[4] be reopened
         self._tester.go_to_ticket(ids[4])
-        tc.formvalue('propform', 'action', 'resolve')
-        tc.formvalue('propform', 'action_resolve_resolve_resolution', 'fixed')
+        tc.formvalue('propertyform', 'action', 'resolve')
+        tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed')
         tc.submit('submit')
         # FIXME: we have to wait a second to avoid "IntegrityError: columns
         # ticket, time, field are not unique"
         time.sleep(1)
-        tc.formvalue('propform', 'action', 'reopen')
+        tc.formvalue('propertyform', 'action', 'reopen')
         tc.submit('submit')
         tc.show()
         tc.notfind("Python Traceback")
@@ -1168,7 +1168,7 @@
         self._tester.create_ticket(summary='RegressionTestTicket6048b')
         self._tester.go_to_ticket(ticket_id)
         tc.find('delete ticket')
-        tc.formvalue('propform', 'action', 'delete')
+        tc.formvalue('propertyform', 'action', 'delete')
         tc.submit('submit')
 
         self._tester.go_to_ticket(ticket_id)
@@ -1224,10 +1224,10 @@
         # create a ticket, then preview resolving the ticket twice
         ticket_id = self._tester.create_ticket("RegressionTestTicket6879 a")
         self._tester.go_to_ticket(ticket_id)
-        tc.formvalue('propform', 'action', 'resolve')
-        tc.formvalue('propform', 'action_resolve_resolve_resolution', 'fixed')
+        tc.formvalue('propertyform', 'action', 'resolve')
+        tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed')
         tc.submit('preview')
-        tc.formvalue('propform', 'action', 'resolve')
+        tc.formvalue('propertyform', 'action', 'resolve')
         tc.submit('preview')
 
 
@@ -1241,10 +1241,10 @@
         # create a ticket, then preview resolving the ticket twice
         ticket_id = self._tester.create_ticket("RegressionTestTicket6879 b")
         self._tester.go_to_ticket(ticket_id)
-        tc.formvalue('propform', 'action', 'resolve')
-        tc.formvalue('propform', 'action_resolve_resolve_resolution', 'fixed')
+        tc.formvalue('propertyform', 'action', 'resolve')
+        tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed')
         tc.submit('preview')
-        tc.formvalue('propform', 'action', 'resolve')
+        tc.formvalue('propertyform', 'action', 'resolve')
         tc.submit('submit')
 
 
diff --git a/trac/wiki/templates/wiki_delete.html b/trac/wiki/templates/wiki_delete.html
--- a/trac/wiki/templates/wiki_delete.html
+++ b/trac/wiki/templates/wiki_delete.html
@@ -21,8 +21,8 @@
       ">
       <h1>Delete $range <a href="$current_href">$page.name</a></h1>
       <form action="$current_href" method="post">
-        <input type="hidden" name="action" value="delete" />
         <p>
+          <input type="hidden" name="action" value="delete" />
           <strong>Are you sure you want to ${not range and 'completely' or ''} delete $range this page?</strong>
           <br />
           <py:if test="num_versions == 1">
diff --git a/trac/wiki/templates/wiki_diff.html b/trac/wiki/templates/wiki_diff.html
--- a/trac/wiki/templates/wiki_diff.html
+++ b/trac/wiki/templates/wiki_diff.html
@@ -9,12 +9,14 @@
     <form py:if="'WIKI_DELETE' in perm(page.resource) and
                  (not changes[0].diffs or new_version == latest_version)"
       method="get" action="${href.wiki(page.name)}">
-      <input type="hidden" name="action" value="delete" />
-      <input type="hidden" name="version" value="$new_version" />
-      <input type="hidden" name="old_version" value="$old_version" />
-      <input type="submit" name="delete_version" value="Delete ${
-        new_version - old_version &gt; 1 and 'version %d to ' % (old_version+1) or ''
-        }version $new_version" />
+      <div>
+        <input type="hidden" name="action" value="delete" />
+        <input type="hidden" name="version" value="$new_version" />
+        <input type="hidden" name="old_version" value="$old_version" />
+        <input type="submit" name="delete_version" value="Delete ${
+          new_version - old_version &gt; 1 and 'version %d to ' % (old_version+1) or ''
+          }version $new_version" />
+      </div>
     </form>
   </div></py:match>
   <py:with vars="resource = page.resource">

