Index: htdocs/css/ticket.css
===================================================================
--- htdocs/css/ticket.css	(revision 1049)
+++ htdocs/css/ticket.css	(working copy)
@@ -46,7 +46,23 @@
  width: 45%;
 }
 #properties .col2 { margin-left: 40% }
-#properties .main label, #properties .col1 label, #properties .col2 label {
+#properties .col1custom {
+ margin-bottom: 1em;
+ clear: left;
+ border-top: 1px dotted #d7d7d7;
+ padding-top: 1em;
+ border-right: 1px dotted #d7d7d7;
+ float: left;
+ width: 45%;
+}
+#properties .col2custom {
+ margin-left: 40%;
+ clear: right;
+ border-top: 1px dotted #d7d7d7;
+ padding-top: 1em;
+}
+#properties .main label, #properties .col1 label, #properties .col2 label,
+#properties .col1custom label, #properties .col2custom label {
  float:left;
  width: 7em;
  text-align: right;
Index: trac/Ticket.py
===================================================================
--- trac/Ticket.py	(revision 1049)
+++ trac/Ticket.py	(working copy)
@@ -220,6 +220,7 @@
     fields = []
     for name in names:
         field = {
+            'class': items.get(name + '.class', ''),
             'name': name,
             'type': items[name],
             'order': items.get(name + '.order', '0'),
@@ -246,6 +247,7 @@
         pfx = 'ticket.custom.%i' % i
         hdf.setValue('%s.name' % pfx, f['name'])
         hdf.setValue('%s.type' % pfx, f['type'])
+        hdf.setValue('%s.class' % pfx, f['class'])
         hdf.setValue('%s.label' % pfx, f['label'])
         hdf.setValue('%s.value' % pfx, val)
         if f['type'] == 'select' or f['type'] == 'radio':
Index: templates/ticket.cs
===================================================================
--- templates/ticket.cs	(revision 1049)
+++ templates/ticket.cs	(working copy)
@@ -203,9 +203,9 @@
    <label for="cc">Cc:</label>
    <input type="text" id="cc" name="cc" size="30" value="<?cs var:ticket.cc ?>" />
   </div>
-  <?cs if:len(ticket.custom) ?><div class="custom">
+  <?cs if:len(ticket.custom) ?>
    <?cs call:ticket_custom_props(ticket) ?>
-  </div><?cs /if ?>
+  <?cs /if ?>
  </fieldset>
 
  <fieldset id="action">
Index: templates/macros.cs
===================================================================
--- templates/macros.cs	(revision 1049)
+++ templates/macros.cs	(working copy)
@@ -157,11 +157,27 @@
   /def ?>
 
 <?cs def:ticket_custom_props(ticket) ?><?cs
- each c=ticket.custom ?>
-  <div class="field custom_<?cs var c.name ?>"><?cs
+ if ticket.custom.0.class == '' ?>
+  <div class="custom"><?cs
+ /if ?><?cs
+ set:lastclass = '' ?><?cs
+ each c=ticket.custom ?><?cs
+  if c.class == '' && lastclass == '' ?>
+   <div class="field custom_<?cs var c.name ?>"><?cs
+  else ?><?cs
+   if c.class == '' ?>
+    <br /><?cs
+   else ?><?cs
+    if lastclass != '' ?>
+     </div><?cs
+    /if ?><?cs
+    set:lastclass = c.class ?>
+    <div class="<?cs var lastclass ?>"><?cs
+   /if ?><?cs
+  /if ?><?cs
    if c.type == 'text' || c.type == 'select' ?>
     <label for="custom_<?cs var c.name ?>"><?cs alt c.label ?><?cs
-      var c.name ?><?cs /alt ?></label>:<?cs
+      var c.name ?><?cs /alt ?>:</label><?cs
    /if ?><?cs
    if c.type == 'text' ?>
     <input type="text" id="custom_<?cs var c.name ?>" name="custom_<?cs
@@ -195,9 +211,17 @@
         var v ?></label><?cs
      /each ?>
     </fieldset><?cs
-   /if ?>
+   /if ?><?cs
+  if c.class == '' && lastclass == '' ?>
+   </div><?cs
+  /if ?><?cs
+ /each ?><?cs
+ if lastclass != '' ?>
   </div><?cs
- /each ?><?cs
+ /if ?><?cs
+ if ticket.custom.0.class == '' ?>
+  </div><?cs
+ /if ?><?cs
 /def ?>
 
 <?cs def:wiki_toolbar(textarea_id) ?>
Index: templates/newticket.cs
===================================================================
--- templates/newticket.cs	(revision 1049)
+++ templates/newticket.cs	(working copy)
@@ -64,9 +64,9 @@
    <label for="cc">Cc:</label>
    <input type="text" id="cc" name="cc" size="30" value="<?cs var:newticket.cc ?>" />
   </div>
-  <?cs if:len(ticket.custom) ?><div class="custom">
+  <?cs if:len(ticket.custom) ?>
    <?cs call:ticket_custom_props(ticket) ?>
-  </div><?cs /if ?>
+  <?cs /if ?>
  </fieldset>
 
  <div class="buttons">

