View Issue Details

IDProjectCategoryView StatusLast Update
0011893mantisbthtmlpublic2014-12-08 00:34
Reporterklkl Assigned Todhx  
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionfixed 
Product Versiongit trunk 
Target Version1.3.0-beta.1Fixed in Version1.3.0-beta.1 
Summary0011893: Patch: XHTML validity, semantics and styleability improvements
Description

Patches that improve Mantis' markup. Should be applied to git master in that order:

1_html_validity.patch - fixes unclosed < a > elements in text/html and minor escaping issues

2_css_classnames.patch - adds classnames to many page elements. Changes table headers to use < th >. This affects existing stylesheets, so it's meant for 1.3.x only.

3_display_options.patch - adds new options:

show_new_window_links = OFF - disables display of [ ^ ] after links.

show_summary_as_link = ON - makes bug summaries on My View page link to view bug (IMHO it's usability improvement as clickable area becomes larger and more obvious).

TagsNo tags attached.
Attached Files
1_html_validity.patch (8,721 bytes)   
From 47862f11c3df6dcba1df9096f9b8599a60a7b7e8 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 17:45:08 +0100
Subject: [PATCH 1/4] XHTML validity fixes

---
 bug_monitor_list_view_inc.php |    2 +-
 core/html_api.php             |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/bug_monitor_list_view_inc.php b/bug_monitor_list_view_inc.php
index 58188ef..a1bd1a8 100644
--- a/bug_monitor_list_view_inc.php
+++ b/bug_monitor_list_view_inc.php
@@ -95,7 +95,7 @@ if ( access_has_bug_level( config_get( 'show_monitor_list_threshold' ), $f_bug_i
 				echo ($i > 0) ? ', ' : '';
 				echo print_user( $t_users[$i] );
 				if ( $t_can_delete_others ) {
-					echo ' [<a class="small" href="' . helper_mantis_url( 'bug_monitor_delete.php' ) . '?bug_id=' . $f_bug_id . '&user_id=' . $t_users[$i] . form_security_param( 'bug_monitor_delete' ) . '">' . lang_get( 'delete_link' ) . '</a>]';
+					echo ' [<a class="small" href="' . helper_mantis_url( 'bug_monitor_delete.php' ) . '?bug_id=' . $f_bug_id . '&amp;user_id=' . $t_users[$i] . htmlspecialchars(form_security_param( 'bug_monitor_delete' )) . '">' . lang_get( 'delete_link' ) . '</a>]';
 				}
 	 		}
  		}
diff --git a/core/html_api.php b/core/html_api.php
index 4a15945..e793b2c 100644
--- a/core/html_api.php
+++ b/core/html_api.php
@@ -1704,7 +1704,7 @@ function html_buttons_view_bug_page( $p_bug_id ) {
 
 	# MONITOR/UNMONITOR button
 	if( !current_user_is_anonymous() ) {
-		echo '<td class=center">';
+		echo '<td class="center">';
 		if( user_is_monitoring_bug( auth_get_current_user_id(), $p_bug_id ) ) {
 			html_button_bug_unmonitor( $p_bug_id );
 		} else {
-- 
1.7.0.2


From a9f15b2186cb45566ac354ea217e2c9e88359527 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 16:30:05 +0100
Subject: [PATCH 2/4] Fixed text/html-incompatible <a/> syntax.

---
 admin/test_email.php          |    2 +-
 billing_inc.php               |    2 +-
 bug_monitor_list_view_inc.php |    2 +-
 bug_view_inc.php              |    4 ++--
 bugnote_stats_inc.php         |    2 +-
 bugnote_view_inc.php          |    2 +-
 history_inc.php               |    2 +-
 manage_proj_edit_page.php     |   10 +++-------
 manage_proj_page.php          |    3 +--
 9 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/admin/test_email.php b/admin/test_email.php
index 3fa15ff..40e6ef3 100644
--- a/admin/test_email.php
+++ b/admin/test_email.php
@@ -33,7 +33,7 @@ html_page_top();
 
 ?>
 
-<a name="email" id="email" />
+<a name="email" id="email"></a>
 <table width="100%" bgcolor="#222222" border="0" cellpadding="20" cellspacing="1">
 <tr>
 	<td bgcolor="#f4f4f4">
diff --git a/billing_inc.php b/billing_inc.php
index 8633304..b7132b2 100644
--- a/billing_inc.php
+++ b/billing_inc.php
@@ -51,7 +51,7 @@ require_api( 'string_api.php' );
 require_api( 'utility_api.php' );
 
 ?>
-<a name="bugnotestats" id="bugnotestats" /><br />
+<a name="bugnotestats" id="bugnotestats"></a><br />
 <?php
 collapse_open( 'bugnotestats' );
 
diff --git a/bug_monitor_list_view_inc.php b/bug_monitor_list_view_inc.php
index a1bd1a8..c0c2eb4 100644
--- a/bug_monitor_list_view_inc.php
+++ b/bug_monitor_list_view_inc.php
@@ -68,7 +68,7 @@ if ( access_has_bug_level( config_get( 'show_monitor_list_threshold' ), $f_bug_i
 	}
 	user_cache_array_rows( $t_users );
 
-	echo '<a name="monitors" id="monitors" /><br />';
+	echo '<a name="monitors" id="monitors"></a><br />';
 
 	collapse_open( 'monitoring' );
 ?>
diff --git a/bug_view_inc.php b/bug_view_inc.php
index 4cda1a9..da35b66 100644
--- a/bug_view_inc.php
+++ b/bug_view_inc.php
@@ -711,8 +711,8 @@ if ( $t_custom_fields_found ) {
 
 # Attachments
 if ( $tpl_show_attachments ) {
-	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category"><a name="attachments" id="attachments" />', lang_get( 'attached_files' ), '</td>';
+	echo '<tr id="attachments" ', helper_alternate_class(), '>';
+	echo '<td class="category">', lang_get( 'attached_files' ), '</td>';
 	echo '<td colspan="5">';
 	print_bug_attachments_list( $tpl_bug_id );
 	echo '</td></tr>';
diff --git a/bugnote_stats_inc.php b/bugnote_stats_inc.php
index 1304d2c..bdce944 100644
--- a/bugnote_stats_inc.php
+++ b/bugnote_stats_inc.php
@@ -53,7 +53,7 @@ if ( OFF == config_get('time_tracking_enabled') ) {
 }
 ?>
 
-<a name="bugnotestats" id="bugnotestats" /><br />
+<a name="bugnotestats" id="bugnotestats"></a><br />
 
 <?php
 collapse_open( 'bugnotestats' );
diff --git a/bugnote_view_inc.php b/bugnote_view_inc.php
index afc6f74..5900698 100644
--- a/bugnote_view_inc.php
+++ b/bugnote_view_inc.php
@@ -89,7 +89,7 @@ $num_notes = count( $t_bugnotes );
 ?>
 
 <?php # Bugnotes BEGIN ?>
-<a name="bugnotes" id="bugnotes" /><br />
+<a name="bugnotes" id="bugnotes"></a><br />
 
 <?php
 	collapse_open( 'bugnotes' );
diff --git a/history_inc.php b/history_inc.php
index eee86c3..48276d2 100644
--- a/history_inc.php
+++ b/history_inc.php
@@ -52,7 +52,7 @@ if ( !access_has_bug_level( $t_access_level_needed, $f_bug_id ) ) {
 }
 ?>
 
-<a name="history" id="history" /><br />
+<a name="history" id="history"></a><br />
 
 <?php
 	collapse_open( 'history' );
diff --git a/manage_proj_edit_page.php b/manage_proj_edit_page.php
index f2562d8..6cb3d54 100644
--- a/manage_proj_edit_page.php
+++ b/manage_proj_edit_page.php
@@ -344,8 +344,7 @@ if ( access_has_global_level ( config_get( 'delete_project_threshold' ) ) ) { ?>
 <br />
 
 <!-- PROJECT CATEGORIES -->
-<a name="categories" />
-<div align="center">
+<div align="center" id="categories">
 <table class="width75" cellspacing="1">
 
 <!-- Title -->
@@ -448,8 +447,7 @@ if ( access_has_global_level ( config_get( 'delete_project_threshold' ) ) ) { ?>
 ?>
 
 <!-- PROJECT VERSIONS -->
-<a name="versions" />
-<table class="width75" cellspacing="1">
+<table id="versions" class="width75" cellspacing="1">
 
 <!-- Title -->
 <tr>
@@ -564,8 +562,6 @@ if ( access_has_global_level ( config_get( 'delete_project_threshold' ) ) ) { ?>
 ?>
 
 <!-- PROJECT CUSTOM FIELD -->
-<a name="customfields" />
-
 <?php
 # You need either global permissions or project-specific permissions to link
 #  custom fields
@@ -573,7 +569,7 @@ if ( access_has_project_level( config_get( 'custom_field_link_threshold' ), $f_p
 	( count( custom_field_get_ids() ) > 0 ) ) {
 ?>
 	<br />
-	<div align="center">
+	<div id="customfields" align="center">
 	<table class="width75" cellspacing="1">
 	<tr>
 		<td class="form-title" colspan="3">
diff --git a/manage_proj_page.php b/manage_proj_page.php
index cf53dc7..bbc10c7 100644
--- a/manage_proj_page.php
+++ b/manage_proj_page.php
@@ -186,8 +186,7 @@ print_manage_menu( 'manage_proj_page.php' );
 <br/>
 
 <!-- GLOBAL CATEGORIES -->
-<a name="categories" />
-<div align="center">
+<div align="center" id="categories">
 <table class="width75" cellspacing="1">
 
 <!-- Title -->
-- 
1.7.0.2


From 0e887bd9657a820194626e564c6d9b314f8d852a Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Wed, 5 May 2010 12:32:30 +0100
Subject: [PATCH 3/4] Removed hack for Netscape 4

---
 core/html_api.php |    5 -----
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/core/html_api.php b/core/html_api.php
index e793b2c..74ffdae 100644
--- a/core/html_api.php
+++ b/core/html_api.php
@@ -360,11 +360,6 @@ function html_css() {
 		$t_css_rtl_url = config_get( 'css_rtl_include_file' );
 		echo "\t", '<link rel="stylesheet" type="text/css" href="', string_sanitize_url( helper_mantis_url( $t_css_rtl_url ), true ), '" />', "\n";
 	}
-
-	# fix for NS 4.x css
-	echo "\t", '<script type="text/javascript"><!--', "\n";
-	echo "\t\t", 'if(document.layers) {document.write("<style>td{padding:0px;}<\/style>")}', "\n";
-	echo "\t", '// --></script>', "\n";
 }
 
 /**
-- 
1.7.0.2


From 19cd3127b1b7c5f41d07fb4e4ce47833b0c05776 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Wed, 5 May 2010 12:45:25 +0100
Subject: [PATCH 4/4] Escaped SCRIPT_NAME on billing page.

---
 billing_inc.php |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/billing_inc.php b/billing_inc.php
index b7132b2..c18c291 100644
--- a/billing_inc.php
+++ b/billing_inc.php
@@ -89,7 +89,7 @@ if ( ON == config_get( 'time_tracking_with_billing' ) ) {
 }
 
 ?>
-<form method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
+<form method="post" action="<?php echo htmlspecialchars($_SERVER['SCRIPT_NAME']); ?>">
 <?php # CSRF protection not required here - form does not result in modifications ?>
 <input type="hidden" name="id" value="<?php echo isset( $f_bug_id ) ? $f_bug_id : 0 ?>" />
 <table border="0" class="width100" cellspacing="0">
-- 
1.7.0.2

1_html_validity.patch (8,721 bytes)   
2_css_classnames.patch (155,492 bytes)   
From 88f8faac759e5d2634aa125709ffaecd01480814 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 15:55:57 +0100
Subject: [PATCH 01/10] Added classnames to my_view_page

---
 core/html_api.php |    2 +-
 my_view_inc.php   |   39 +++++++++++++++++++++++----------------
 2 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/core/html_api.php b/core/html_api.php
index 74ffdae..6f5afbe 100644
--- a/core/html_api.php
+++ b/core/html_api.php
@@ -1232,7 +1232,7 @@ function print_summary_menu( $p_page = '' ) {
  */
 function html_status_legend() {
 	echo '<br />';
-	echo '<table class="width100" cellspacing="1">';
+	echo '<table class="status-legend width100" cellspacing="1">';
 	echo '<tr>';
 
 	# Don't show the legend if only one status is selected by the current filter
diff --git a/my_view_inc.php b/my_view_inc.php
index 9fc36cf..fd888ba 100644
--- a/my_view_inc.php
+++ b/my_view_inc.php
@@ -412,10 +412,11 @@ $box_title = lang_get( 'my_view_title_' . $t_box_title );
 # -- ====================== BUG LIST ========================= --
 ?>
 
-<table class="width100" cellspacing="1">
+<table class="width100 my-buglist" cellspacing="1">
 <?php
 # -- Navigation header row --?>
-<tr>
+<thead>
+    <tr class="my-buglist-nav">
 <?php
 # -- Viewing range info --?>
 	<td class="form-title" colspan="2">
@@ -436,7 +437,7 @@ echo "($v_start - $v_end / $t_bug_count)";
 ?>
 	</td>
 </tr>
-
+</thead><tbody>
 <?php
 # -- Loop over bug rows and create $v_* variables --
 	$t_count = count( $rows );
@@ -457,12 +458,18 @@ echo "($v_start - $v_end / $t_bug_count)";
 
 	# grab the project name
 	$project_name = project_get_field( $t_bug->project_id, 'name' );
+
+	if ( VS_PRIVATE == $t_bug->view_state ) {
+	    $t_bug_class = 'my-buglist-private';
+    } else {
+        $t_bug_class = '';
+    }
 	?>
 
-<tr bgcolor="<?php echo $status_color?>">
+<tr class="my-buglist-bug <?php echo $t_bug_class?>" bgcolor="<?php echo $status_color?>">
 	<?php
 	# -- Bug ID and details link + Pencil shortcut --?>
-	<td class="center" valign="top" width ="0" nowrap="nowrap">
+	<td class="center my-buglist-id" valign="top" width ="0" nowrap="nowrap">
 		<span class="small">
 		<?php
 			print_bug_link( $t_bug->id );
@@ -470,7 +477,7 @@ echo "($v_start - $v_end / $t_bug_count)";
 	echo '<br />';
 
 	if( !bug_is_readonly( $t_bug->id ) && access_has_bug_level( $t_update_bug_threshold, $t_bug->id ) ) {
-		echo '<a href="' . string_get_bug_update_url( $t_bug->id ) . '"><img border="0" src="' . $t_icon_path . 'update.png' . '" alt="' . lang_get( 'update_bug_button' ) . '" /></a>';
+		echo '<a class="edit" href="' . string_get_bug_update_url( $t_bug->id ) . '"><img border="0" src="' . $t_icon_path . 'update.png' . '" alt="' . lang_get( 'update_bug_button' ) . '" /></a>';
 	}
 
 	if( ON == config_get( 'show_priority_text' ) ) {
@@ -480,7 +487,7 @@ echo "($v_start - $v_end / $t_bug_count)";
 	}
 
 	if( 0 < $t_attachment_count ) {
-		echo '<a href="' . string_get_bug_view_url( $t_bug->id ) . '#attachments">';
+		echo '<a class="attachments" href="' . string_get_bug_view_url( $t_bug->id ) . '#attachments">';
 		echo '<img border="0" src="' . $t_icon_path . 'attachment.png' . '"';
 		echo ' alt="' . lang_get( 'attachment_alt' ) . '"';
 		echo ' title="' . $t_attachment_count . ' ' . lang_get( 'attachments' ) . '"';
@@ -496,26 +503,25 @@ echo "($v_start - $v_end / $t_bug_count)";
 
 	<?php
 	# -- Summary --?>
-	<td class="left" valign="top" width="100%">
-		<span class="small">
+	<td class="left my-buglist-description" valign="top" width="100%">
 		<?php
 		 	if( ON == config_get( 'show_bug_project_links' ) && helper_get_current_project() != $t_bug->project_id ) {
-				echo '[', string_display_line( project_get_name( $t_bug->project_id ) ), '] ';
+				echo '<span class="small project">[', string_display_line( project_get_name( $t_bug->project_id ) ), '] </span>';
 			}
-			echo $t_summary;
+			echo '<span class="small summary">', $t_summary, '<br /></span>';
 	?>
-		<br />
 		<?php
 	# type project name if viewing 'all projects' or bug is in subproject
-	echo string_display_line( category_full_name( $t_bug->category_id, true, $t_bug->project_id ) );
+	echo '<span class="small category">', string_display_line( category_full_name( $t_bug->category_id, true, $t_bug->project_id ) ), '</span>';
 
+    echo '<span class="small last-modified"> - ';
 	if( $t_bug->last_updated > strtotime( '-' . $t_filter[FILTER_PROPERTY_HIGHLIGHT_CHANGED] . ' hours' ) ) {
-		echo ' - <b>' . $t_last_updated . '</b>';
+		echo '<b>' . $t_last_updated . '</b>';
 	} else {
-		echo ' - ' . $t_last_updated;
+		echo $t_last_updated;
 	}
+	echo '</span>';
 	?>
-		</span>
 	</td>
 </tr>
 <?php
@@ -524,6 +530,7 @@ echo "($v_start - $v_end / $t_bug_count)";
 
 # -- ====================== end of BUG LIST ========================= --
 ?>
+</tbody>
 </table>
 <?php
 // Free the memory allocated for the rows in this box since it is not longer needed.
-- 
1.7.0.2


From 535fbf3a43e670edcdb34eafc8fddbbcaaea78b3 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 16:24:58 +0100
Subject: [PATCH 02/10] Wrapped footer in div with appropriate class

---
 core/html_api.php |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/core/html_api.php b/core/html_api.php
index 6f5afbe..dc3f65c 100644
--- a/core/html_api.php
+++ b/core/html_api.php
@@ -599,8 +599,8 @@ function html_footer( $p_file = null ) {
 		user_update_last_visit( $t_user_id );
 	}
 
-	echo "\t", '<br />', "\n";
-	echo "\t", '<hr size="1" />', "\n";
+	echo "\t<div class=\"footer\"><br />\n";
+	echo "\t<hr size=\"1\" />\n";
 
 	echo '<table border="0" width="100%" cellspacing="0" cellpadding="0"><tr valign="top"><td>';
 	if( ON == config_get( 'show_version' ) ) {
@@ -668,7 +668,7 @@ function html_footer( $p_file = null ) {
 
 	echo '</td><td>', "\n\t", '<div align="right">';
 	echo '<a href="http://www.mantisbt.org" title="Free Web Based Bug Tracker"><img src="' . helper_mantis_url( 'images/mantis_logo_button.gif' ) . '" width="88" height="35" alt="Powered by Mantis Bugtracker" border="0" /></a>';
-	echo '</div>', "\n", '</td></tr></table>', "\n";
+	echo "</div>\n</td></tr></table></div>\n";
 }
 
 /**
-- 
1.7.0.2


From baa747ac40319715fa8118418836d3fb6e019bc8 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 17:00:21 +0100
Subject: [PATCH 03/10] Added CSS class names to bracketed links

---
 bug_view_inc.php   |   14 +++++++-------
 core/print_api.php |    6 +++++-
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/bug_view_inc.php b/bug_view_inc.php
index da35b66..887fad9 100644
--- a/bug_view_inc.php
+++ b/bug_view_inc.php
@@ -247,15 +247,15 @@ echo $tpl_form_title;
 echo '&nbsp;<span class="small">';
 
 # Jump to Bugnotes
-print_bracket_link( "#bugnotes", lang_get( 'jump_to_bugnotes' ) );
+print_bracket_link( "#bugnotes", lang_get( 'jump_to_bugnotes' ), false, 'jump-to-bugnotes' );
 
 # Send Bug Reminder
 if ( $tpl_show_reminder_link ) {
-	print_bracket_link( $tpl_bug_reminder_link, lang_get( 'bug_reminder' ) );
+	print_bracket_link( $tpl_bug_reminder_link, lang_get( 'bug_reminder' ), false, 'bug-reminder' );
 }
 
 if ( !is_blank( $tpl_wiki_link ) ) {
-	print_bracket_link( $tpl_wiki_link, lang_get( 'wiki' ) );
+	print_bracket_link( $tpl_wiki_link, lang_get( 'wiki' ), false, 'wiki' );
 }
 
 foreach ( $tpl_links as $t_plugin => $t_hooks ) {
@@ -284,11 +284,11 @@ if ( $t_bugslist ) {
 	$t_index = array_search( $f_bug_id, $t_bugslist );
 	if ( false !== $t_index ) {
 		if ( isset( $t_bugslist[$t_index-1] ) ) {
-			print_bracket_link( 'bug_view_page.php?bug_id='.$t_bugslist[$t_index-1], '&lt;&lt;' );
+			print_bracket_link( 'bug_view_page.php?bug_id='.$t_bugslist[$t_index-1], '&lt;&lt;', false, 'previous-bug' );
 		}
 
 		if ( isset( $t_bugslist[$t_index+1] ) ) {
-			print_bracket_link( 'bug_view_page.php?bug_id='.$t_bugslist[$t_index+1], '&gt;&gt;' );
+			print_bracket_link( 'bug_view_page.php?bug_id='.$t_bugslist[$t_index+1], '&gt;&gt;', false, 'next-bug' );
 		}
 	}
 	echo '</span></td>';
@@ -301,13 +301,13 @@ echo '<td class="right" colspan="2">';
 if ( !is_blank( $tpl_history_link ) ) {
 	# History
 	echo '<span class="small">';
-	print_bracket_link( $tpl_history_link, lang_get( 'bug_history' ) );
+	print_bracket_link( $tpl_history_link, lang_get( 'bug_history' ), false , 'bug-history' );
 	echo '</span>';
 }
 
 # Print Bug
 echo '<span class="small">';
-print_bracket_link( $tpl_print_link, lang_get( 'print' ) );
+print_bracket_link( $tpl_print_link, lang_get( 'print' ), false, 'print' );
 echo '</span>';
 echo '</td>';
 echo '</tr>';
diff --git a/core/print_api.php b/core/print_api.php
index 19e02fe..d458188 100644
--- a/core/print_api.php
+++ b/core/print_api.php
@@ -1335,7 +1335,11 @@ function print_bracket_link_prepared( $p_link ) {
 # if the $p_link is blank then the text is printed but no link is created
 # if $p_new_window is true, link will open in a new window, default false.
 function print_bracket_link( $p_link, $p_url_text, $p_new_window = false, $p_class = '' ) {
-	echo '<span class="bracket-link">[&nbsp;';
+	echo '<span class="bracket-link';
+	if ($p_class !== '') {
+	    echo ' bracket-link-',$p_class; # prefix on a container allows styling of whole link, including brackets
+    }
+	echo '">[&nbsp;';
 	print_link( $p_link, $p_url_text, $p_new_window, $p_class );
 	echo '&nbsp;]</span> ';
 }
-- 
1.7.0.2


From c3c5629346a644396344f19689d22d2f3bf1019e Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 17:01:19 +0100
Subject: [PATCH 04/10] Added CSS class names to misc. layout elements

---
 bug_view_inc.php   |   13 ++++++++-----
 core/print_api.php |    4 ++--
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/bug_view_inc.php b/bug_view_inc.php
index 887fad9..5414fb5 100644
--- a/bug_view_inc.php
+++ b/bug_view_inc.php
@@ -237,7 +237,7 @@ $tpl_links = event_signal( 'EVENT_MENU_ISSUE', $f_bug_id );
 
 echo '<br />';
 echo '<table class="width100" cellspacing="1">';
-echo '<tr>';
+echo '<thead><tr class="bug-nav">';
 
 # Form Title
 echo '<td class="form-title" colspan="', $t_bugslist ? '3' : '4', '">';
@@ -278,7 +278,7 @@ echo '</span></td>';
 
 # prev/next links
 if ( $t_bugslist ) {
-	echo '<td class="center"><span class="small">';
+	echo '<td class="center prev-next-links"><span class="small">';
 
 	$t_bugslist = explode( ',', $t_bugslist );
 	$t_index = array_search( $f_bug_id, $t_bugslist );
@@ -296,7 +296,7 @@ if ( $t_bugslist ) {
 
 
 # Links
-echo '<td class="right" colspan="2">';
+echo '<td class="right alternate-views-links" colspan="2">';
 
 if ( !is_blank( $tpl_history_link ) ) {
 	# History
@@ -313,13 +313,16 @@ echo '</td>';
 echo '</tr>';
 
 if ( $tpl_top_buttons_enabled ) {
-	echo '<tr align="center">';
+	echo '<tr align="center" class="top-buttons">';
 	echo '<td align="center" colspan="6">';
 	html_buttons_view_bug_page( $tpl_bug_id );
 	echo '</td>';
 	echo '</tr>';
 }
 
+echo '</thead>';
+echo '<tbody>';
+
 if ( $tpl_show_id || $tpl_show_project || $tpl_show_category || $tpl_show_view_state || $tpl_show_date_submitted || $tpl_show_last_updated ) {
 	# Labels
 	echo '<tr>';
@@ -724,7 +727,7 @@ if ( $tpl_bottom_buttons_enabled ) {
 	echo '</td></tr>';
 }
 
-echo '</table>';
+echo '</tbody></table>';
 
 # User list sponsoring the bug
 if ( $tpl_show_sponsorships_box ) {
diff --git a/core/print_api.php b/core/print_api.php
index d458188..56d2da2 100644
--- a/core/print_api.php
+++ b/core/print_api.php
@@ -1596,7 +1596,7 @@ function print_file_icon( $p_filename ) {
 # Prints an RSS image that is hyperlinked to an RSS feed.
 function print_rss( $p_feed_url, $p_title = '' ) {
 	$t_path = config_get( 'path' );
-	echo '<a href="', htmlspecialchars( $p_feed_url ), '" title="', $p_title, '"><img src="', $t_path, '/images/', 'rss.png" width="16" height="16" border="0" alt="', $p_title, '" /></a>';
+	echo '<a class="rss" rel="alternate" href="', htmlspecialchars( $p_feed_url ), '" title="', $p_title, '"><img src="', $t_path, '/images/', 'rss.png" width="16" height="16" border="0" alt="', $p_title, '" /></a>';
 }
 
 # Prints the recently visited issues.
@@ -1611,7 +1611,7 @@ function print_recently_visited() {
 		return;
 	}
 
-	echo '<div align="right"><small>' . lang_get( 'recently_visited' ) . ': ';
+	echo '<div align="right" class="recently-visited"><small>' . lang_get( 'recently_visited' ) . ': ';
 	$t_first = true;
 
 	foreach( $t_ids as $t_id ) {
-- 
1.7.0.2


From 1830de42de4975df83347f72186484ca3c48252c Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 17:07:39 +0100
Subject: [PATCH 05/10] Moved bottom buttons to <tfoot> element.

---
 bug_view_inc.php |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/bug_view_inc.php b/bug_view_inc.php
index 5414fb5..c39184b 100644
--- a/bug_view_inc.php
+++ b/bug_view_inc.php
@@ -321,6 +321,15 @@ if ( $tpl_top_buttons_enabled ) {
 }
 
 echo '</thead>';
+
+if ( $tpl_bottom_buttons_enabled ) {
+	echo '<tfoot>';
+	echo '<tr align="center" class="bottom-buttons"><td align="center" colspan="6">';
+	html_buttons_view_bug_page( $tpl_bug_id );
+	echo '</td></tr>';
+	echo '</tfoot>';
+}
+
 echo '<tbody>';
 
 if ( $tpl_show_id || $tpl_show_project || $tpl_show_category || $tpl_show_view_state || $tpl_show_date_submitted || $tpl_show_last_updated ) {
@@ -721,12 +730,6 @@ if ( $tpl_show_attachments ) {
 	echo '</td></tr>';
 }
 
-if ( $tpl_bottom_buttons_enabled ) {
-	echo '<tr align="center"><td align="center" colspan="6">';
-	html_buttons_view_bug_page( $tpl_bug_id );
-	echo '</td></tr>';
-}
-
 echo '</tbody></table>';
 
 # User list sponsoring the bug
-- 
1.7.0.2


From 7178efa472807b66031ecc7a994973383dba0725 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 17:08:07 +0100
Subject: [PATCH 06/10] Added specific CSS class names to all bug fields.

---
 bug_view_inc.php |  139 ++++++++++++++++++++++++++----------------------------
 1 files changed, 67 insertions(+), 72 deletions(-)

diff --git a/bug_view_inc.php b/bug_view_inc.php
index c39184b..cc1825f 100644
--- a/bug_view_inc.php
+++ b/bug_view_inc.php
@@ -334,34 +334,34 @@ echo '<tbody>';
 
 if ( $tpl_show_id || $tpl_show_project || $tpl_show_category || $tpl_show_view_state || $tpl_show_date_submitted || $tpl_show_last_updated ) {
 	# Labels
-	echo '<tr>';
-	echo '<td class="category" width="15%">', $tpl_show_id ? lang_get( 'id' ) : '', '</td>';
-	echo '<td class="category" width="20%">', $tpl_show_project ? lang_get( 'email_project' ) : '', '</td>';
-	echo '<td class="category" width="15%">', $tpl_show_category ? lang_get( 'category' ) : '', '</td>';
-	echo '<td class="category" width="15%">', $tpl_show_view_state ? lang_get( 'view_status' ) : '', '</td>';
-	echo '<td class="category" width="15%">', $tpl_show_date_submitted ? lang_get( 'date_submitted' ) : '', '</td>';
-	echo '<td class="category" width="20%">', $tpl_show_last_updated ? lang_get( 'last_update' ) : '','</td>';
+	echo '<tr class="bug-header">';
+	echo '<td class="bug-id category" width="15%">', $tpl_show_id ? lang_get( 'id' ) : '', '</td>';
+	echo '<td class="bug-project category" width="20%">', $tpl_show_project ? lang_get( 'email_project' ) : '', '</td>';
+	echo '<td class="bug-category category" width="15%">', $tpl_show_category ? lang_get( 'category' ) : '', '</td>';
+	echo '<td class="bug-view-status category" width="15%">', $tpl_show_view_state ? lang_get( 'view_status' ) : '', '</td>';
+	echo '<td class="bug-date-submitted category" width="15%">', $tpl_show_date_submitted ? lang_get( 'date_submitted' ) : '', '</td>';
+	echo '<td class="bug-last-modified category" width="20%">', $tpl_show_last_updated ? lang_get( 'last_update' ) : '','</td>';
 	echo '</tr>';
 
-	echo '<tr ', helper_alternate_class(), '>';
+	echo '<tr ', helper_alternate_class(null, 'row-1 bug-header-data', 'row-2 bug-header-data'), '>';
 
 	# Bug ID
-	echo '<td>', $tpl_formatted_bug_id, '</td>';
+	echo '<td class="bug-id">', $tpl_formatted_bug_id, '</td>';
 
 	# Project
-	echo '<td>', $tpl_project_name, '</td>';
+	echo '<td class="bug-project">', $tpl_project_name, '</td>';
 
 	# Category
-	echo '<td>', $tpl_category, '</td>';
+	echo '<td class="bug-category">', $tpl_category, '</td>';
 
 	# View Status
-	echo '<td>', $tpl_bug_view_state_enum, '</td>';
+	echo '<td class="bug-view-status">', $tpl_bug_view_state_enum, '</td>';
 
 	# Date Submitted
-	echo '<td>', $tpl_date_submitted, '</td>';
+	echo '<td class="bug-date-submitted">', $tpl_date_submitted, '</td>';
 
 	# Date Updated
-	echo '<td>', $tpl_last_updated, '</td>';
+	echo '<td class="bug-last-modified">', $tpl_last_updated, '</td>';
 
 	echo '</tr>';
 
@@ -379,15 +379,10 @@ if ( $tpl_show_reporter ) {
 	$t_spacer = 4;
 
 	# Reporter
-	if ( $tpl_show_reporter ) {
-		echo '<td class="category">', lang_get( 'reporter' ), '</td>';
-		echo '<td>';
-		print_user_with_subject( $tpl_bug->reporter_id, $tpl_bug_id );
-		echo '</td>';
-	} else {
-		$t_spacer += 2;
-	}
-
+	echo '<td class="bug-reporter category">', lang_get( 'reporter' ), '</td>';
+	echo '<td class="bug-reporter">';
+	print_user_with_subject( $tpl_bug->reporter_id, $tpl_bug_id );
+	echo '</td>';
 	echo '<td colspan="', $t_spacer, '">&nbsp;</td>';
 
 	echo '</tr>';
@@ -403,19 +398,19 @@ if ( $tpl_show_handler || $tpl_show_due_date ) {
 	$t_spacer = 2;
 
 	# Handler
-	echo '<td class="category">', lang_get( 'assigned_to' ), '</td>';
-	echo '<td>';
+	echo '<td class="bug-assigned-to category">', lang_get( 'assigned_to' ), '</td>';
+	echo '<td class="bug-assigned-to">';
 	print_user_with_subject( $tpl_bug->handler_id, $tpl_bug_id );
 	echo '</td>';
 
 	# Due Date
 	if ( $tpl_show_due_date ) {
-		echo '<td class="category">', lang_get( 'due_date' ), '</td>';
+		echo '<td class="bug-due-date category">', lang_get( 'due_date' ), '</td>';
 
 		if ( $tpl_bug_overdue ) {
-			echo '<td class="overdue">', $tpl_bug_due_date, '</td>';
+			echo '<td class="bug-due-date overdue">', $tpl_bug_due_date, '</td>';
 		} else {
-			echo '<td>', $tpl_bug_due_date, '</td>';
+			echo '<td class="bug-due-date">', $tpl_bug_due_date, '</td>';
 		}
 	} else {
 		$t_spacer += 2;
@@ -436,24 +431,24 @@ if ( $tpl_show_priority || $tpl_show_severity || $tpl_show_reproducibility ) {
 
 	# Priority
 	if ( $tpl_show_priority ) {
-		echo '<td class="category">', lang_get( 'priority' ), '</td>';
-		echo '<td>', $tpl_priority, '</td>';
+		echo '<td class="bug-priority category">', lang_get( 'priority' ), '</td>';
+		echo '<td class="bug-priority">', $tpl_priority, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	# Severity
 	if ( $tpl_show_severity ) {
-		echo '<td class="category">', lang_get( 'severity' ), '</td>';
-		echo '<td>', $tpl_severity, '</td>';
+		echo '<td class="bug-severity category">', lang_get( 'severity' ), '</td>';
+		echo '<td class="bug-severity">', $tpl_severity, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	# Reproducibility
 	if ( $tpl_show_reproducibility ) {
-		echo '<td class="category">', lang_get( 'reproducibility' ), '</td>';
-		echo '<td>', $tpl_reproducibility, '</td>';
+		echo '<td class="bug-reproducibility category">', lang_get( 'reproducibility' ), '</td>';
+		echo '<td class="bug-reproducibility">', $tpl_reproducibility, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
@@ -477,16 +472,16 @@ if ( $tpl_show_status || $tpl_show_resolution ) {
 
 	# Status
 	if ( $tpl_show_status ) {
-		echo '<td class="category">', lang_get( 'status' ), '</td>';
-		echo '<td bgcolor="', get_status_color( $tpl_bug->status ), '">', $tpl_status, '</td>';
+		echo '<td class="bug-status category">', lang_get( 'status' ), '</td>';
+		echo '<td class="bug-status" bgcolor="', get_status_color( $tpl_bug->status ), '">', $tpl_status, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	# Resolution
 	if ( $tpl_show_resolution ) {
-		echo '<td class="category">', lang_get( 'resolution' ), '</td>';
-		echo '<td>', $tpl_resolution, '</td>';
+		echo '<td class="bug-resolution category">', lang_get( 'resolution' ), '</td>';
+		echo '<td class="bug-resolution">', $tpl_resolution, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
@@ -510,16 +505,16 @@ if ( $tpl_show_projection || $tpl_show_eta ) {
 
 	if ( $tpl_show_projection ) {
 		# Projection
-		echo '<td class="category">', lang_get( 'projection' ), '</td>';
-		echo '<td>', $tpl_projection, '</td>';
+		echo '<td class="bug-projection category">', lang_get( 'projection' ), '</td>';
+		echo '<td class="bug-projection">', $tpl_projection, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	# ETA
 	if ( $tpl_show_eta ) {
-		echo '<td class="category">', lang_get( 'eta' ), '</td>';
-		echo '<td>', $tpl_eta, '</td>';
+		echo '<td class="bug-eta category">', lang_get( 'eta' ), '</td>';
+		echo '<td class="bug-eta">', $tpl_eta, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
@@ -539,24 +534,24 @@ if ( $tpl_show_platform || $tpl_show_os || $tpl_show_os_version ) {
 
 	# Platform
 	if ( $tpl_show_platform ) {
-		echo '<td class="category">', lang_get( 'platform' ), '</td>';
-		echo '<td>', $tpl_platform, '</td>';
+		echo '<td class="bug-platform category">', lang_get( 'platform' ), '</td>';
+		echo '<td class="bug-platform">', $tpl_platform, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	# Operating System
 	if ( $tpl_show_os ) {
-		echo '<td class="category">', lang_get( 'os' ), '</td>';
-		echo '<td>', $tpl_os, '</td>';
+		echo '<td class="bug-os category">', lang_get( 'os' ), '</td>';
+		echo '<td class="bug-os">', $tpl_os, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	# OS Version
 	if ( $tpl_show_os_version ) {
-		echo '<td class="category">', lang_get( 'os_version' ), '</td>';
-		echo '<td>', $tpl_os_version, '</td>';
+		echo '<td class="bug-os-version category">', lang_get( 'os_version' ), '</td>';
+		echo '<td class="bug-os-version">', $tpl_os_version, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
@@ -579,16 +574,16 @@ if ( $tpl_show_product_version || $tpl_show_product_build ) {
 
 	# Product Version
 	if ( $tpl_show_product_version ) {
-		echo '<td class="category">', lang_get( 'product_version' ), '</td>';
-		echo '<td>', $tpl_product_version_string, '</td>';
+		echo '<td class="bug-product-version category">', lang_get( 'product_version' ), '</td>';
+		echo '<td class="bug-product-version">', $tpl_product_version_string, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	# Product Build
 	if ( $tpl_show_product_build ) {
-		echo '<td class="category">', lang_get( 'product_build' ), '</td>';
-		echo '<td>', $tpl_product_build, '</td>';
+		echo '<td class="bug-product-build category">', lang_get( 'product_build' ), '</td>';
+		echo '<td class="bug-product-build">', $tpl_product_build, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
@@ -611,16 +606,16 @@ if ( $tpl_show_target_version || $tpl_show_fixed_in_version ) {
 	# target version
 	if ( $tpl_show_target_version ) {
 		# Target Version
-		echo '<td class="category">', lang_get( 'target_version' ), '</td>';
-		echo '<td>', $tpl_target_version_string, '</td>';
+		echo '<td class="bug-target-version category">', lang_get( 'target_version' ), '</td>';
+		echo '<td class="bug-target-version">', $tpl_target_version_string, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	# fixed in version
 	if ( $tpl_show_fixed_in_version ) {
-		echo '<td class="category">', lang_get( 'fixed_in_version' ), '</td>';
-		echo '<td>', $tpl_fixed_in_version_string, '</td>';
+		echo '<td class="bug-fixed-in-version category">', lang_get( 'fixed_in_version' ), '</td>';
+		echo '<td class="bug-fixed-in-version">', $tpl_fixed_in_version_string, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
@@ -647,40 +642,40 @@ echo '<tr class="spacer"><td colspan="6"></td></tr>';
 # Summary
 if ( $tpl_show_summary ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'summary' ), '</td>';
-	echo '<td colspan="5">', $tpl_summary, '</td>';
+	echo '<td class="bug-summary category">', lang_get( 'summary' ), '</td>';
+	echo '<td class="bug-summary" colspan="5">', $tpl_summary, '</td>';
 	echo '</tr>';
 }
 
 # Description
 if ( $tpl_show_description ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'description' ), '</td>';
-	echo '<td colspan="5">', $tpl_description, '</td>';
+	echo '<td class="bug-description category">', lang_get( 'description' ), '</td>';
+	echo '<td class="bug-description" colspan="5">', $tpl_description, '</td>';
 	echo '</tr>';
 }
 
 # Steps to Reproduce
 if ( $tpl_show_steps_to_reproduce ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'steps_to_reproduce' ), '</td>';
-	echo '<td colspan="5">', $tpl_steps_to_reproduce, '</td>';
+	echo '<td class="bug-steps-to-reproduce category">', lang_get( 'steps_to_reproduce' ), '</td>';
+	echo '<td class="bug-steps-to-reproduce" colspan="5">', $tpl_steps_to_reproduce, '</td>';
 	echo '</tr>';
 }
 
 # Additional Information
 if ( $tpl_show_additional_information ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'additional_information' ), '</td>';
-	echo '<td colspan="5">', $tpl_additional_information, '</td>';
+	echo '<td class="bug-additional-information category">', lang_get( 'additional_information' ), '</td>';
+	echo '<td class="bug-additional-information" colspan="5">', $tpl_additional_information, '</td>';
 	echo '</tr>';
 }
 
 # Tagging
 if ( $tpl_show_tags ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'tags' ), '</td>';
-	echo '<td colspan="5">';
+	echo '<td class="bug-tags category">', lang_get( 'tags' ), '</td>';
+	echo '<td class="bug-tags" colspan="5">';
 	tag_display_attached( $tpl_bug_id );
 	echo '</td></tr>';
 }
@@ -688,8 +683,8 @@ if ( $tpl_show_tags ) {
 # Attachments Form
 if ( $tpl_can_attach_tag ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'tag_attach_long' ), '</td>';
-	echo '<td colspan="5">';
+	echo '<td class="bug-attach-tags category">', lang_get( 'tag_attach_long' ), '</td>';
+	echo '<td class="bug-attach-tags" colspan="5">';
 	print_tag_attach_form( $tpl_bug_id );
 	echo '</td></tr>';
 }
@@ -710,8 +705,8 @@ foreach( $t_related_custom_field_ids as $t_id ) {
 	$t_def = custom_field_get_definition( $t_id );
 
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', string_display( lang_get_defaulted( $t_def['name'] ) ), '</td>';
-	echo '<td colspan="5">';
+	echo '<td class="bug-custom-field category">', string_display( lang_get_defaulted( $t_def['name'] ) ), '</td>';
+	echo '<td class="bug-custom-field" colspan="5">';
 	print_custom_field_value( $t_def, $t_id, $f_bug_id );
 	echo '</td></tr>';
 }
@@ -724,8 +719,8 @@ if ( $t_custom_fields_found ) {
 # Attachments
 if ( $tpl_show_attachments ) {
 	echo '<tr id="attachments" ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'attached_files' ), '</td>';
-	echo '<td colspan="5">';
+	echo '<td class="bug-attachments category">', lang_get( 'attached_files' ), '</td>';
+	echo '<td class="bug-attachments" colspan="5">';
 	print_bug_attachments_list( $tpl_bug_id );
 	echo '</td></tr>';
 }
-- 
1.7.0.2


From 31e687b2732b9506c9422ef0ece2d02e79f620fa Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 17:19:55 +0100
Subject: [PATCH 07/10] Added CSS class names to bracketed new-window links.

---
 core/print_api.php  |    8 ++------
 core/string_api.php |    2 +-
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/core/print_api.php b/core/print_api.php
index 56d2da2..7a7486a 100644
--- a/core/print_api.php
+++ b/core/print_api.php
@@ -1351,11 +1351,7 @@ function print_link( $p_link, $p_url_text, $p_new_window = false, $p_class = ''
 	} else {
 		$t_link = htmlspecialchars( $p_link );
 		if( $p_new_window === true ) {
-			if( $p_class !== '') {
-				echo "<a class=\"$p_class\" href=\"$t_link\" target=\"_blank\">$p_url_text</a>";
-			} else {
-				echo "<a href=\"$t_link\" target=\"_blank\">$p_url_text</a>";
-			}
+			echo "<a class=\"new-window $p_class\" href=\"$t_link\" target=\"_blank\">$p_url_text</a>";
 		} else {
 			if( $p_class !== '') {
 				echo "<a class=\"$p_class\" href=\"$t_link\">$p_url_text</a>";
@@ -1681,7 +1677,7 @@ function print_bug_attachments_list( $p_bug_id ) {
 			$t_href_start = "<a href=\"file_download.php?file_id={$t_attachment['id']}&amp;type=bug\">";
 			$t_href_end = '</a>';
 
-			$t_href_clicket = " [<a href=\"file_download.php?file_id={$t_attachment['id']}&amp;type=bug\" target=\"_blank\">^</a>]";
+			$t_href_clicket = " <span class=\"bracket-link bracket-link-new-window\">[<a class=\"new-window\" href=\"file_download.php?file_id={$t_attachment['id']}&amp;type=bug\" target=\"_blank\">^</a>]</span>";
 		} else {
 			$t_href_start = '';
 			$t_href_end = '';
diff --git a/core/string_api.php b/core/string_api.php
index 1eb8ec6..8f1367f 100644
--- a/core/string_api.php
+++ b/core/string_api.php
@@ -473,7 +473,7 @@ function string_insert_hrefs( $p_string ) {
 		$s_url_regex = "/(([[:alpha:]][-+.[:alnum:]]*):\/\/(${t_url_part1}*?${t_url_part2}+))/sue";
 	}
 
-	$p_string = preg_replace( $s_url_regex, "'<a href=\"'.rtrim('\\1','.').'\">\\1</a> [<a href=\"'.rtrim('\\1','.').'\" target=\"_blank\">^</a>]'", $p_string );
+	$p_string = preg_replace( $s_url_regex, "'<a href=\"'.rtrim('\\1','.').'\">\\1</a> <span class=\"bracket-link bracket-link-new-window\">[<a class=\"new-window\" href=\"'.rtrim('\\1','.').'\" target=\"_blank\">^</a>]</span>'", $p_string );
 	if( $t_change_quotes ) {
 		ini_set( 'magic_quotes_sybase', true );
 	}
-- 
1.7.0.2


From 0d12fbcd47648c19ad506dffc084ba770da775ab Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 17:27:13 +0100
Subject: [PATCH 08/10] Added CSS class name to My View bug count

---
 my_view_inc.php |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/my_view_inc.php b/my_view_inc.php
index fd888ba..21284a5 100644
--- a/my_view_inc.php
+++ b/my_view_inc.php
@@ -433,7 +433,7 @@ else {
 	$v_start = 0;
 	$v_end = 0;
 }
-echo "($v_start - $v_end / $t_bug_count)";
+echo "<span class=\"my-buglist-count\">($v_start - $v_end / $t_bug_count)</span>";
 ?>
 	</td>
 </tr>
-- 
1.7.0.2


From c959861b9bccc6f61f77d39bda633a9c68dfe250 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Wed, 5 May 2010 14:37:06 +0100
Subject: [PATCH 09/10] Replaced all <td class="category"> with <th class="category">

---
 account_page.php                              |   44 +++++++-------
 account_prefs_inc.php                         |   64 +++++++++---------
 account_prof_edit_page.php                    |   16 +++---
 account_prof_menu_page.php                    |   20 +++---
 admin/index.php                               |    2 +-
 bug_actiongroup_add_note_inc.php              |    6 +-
 bug_actiongroup_attach_tags_inc.php           |    2 +-
 bug_actiongroup_page.php                      |   20 +++---
 bug_actiongroup_update_product_build_inc.php  |    2 +-
 bug_actiongroup_update_severity_inc.php       |    4 +-
 bug_change_status_page.php                    |   44 +++++++-------
 bug_monitor_list_view_inc.php                 |    4 +-
 bug_reminder_page.php                         |    8 +-
 bug_report_page.php                           |   84 ++++++++++++------------
 bug_revision_view_page.php                    |    6 +-
 bug_sponsorship_list_view_inc.php             |    4 +-
 bug_update_advanced_page.php                  |   52 ++++++++--------
 bug_view_inc.php                              |   64 +++++++++---------
 bugnote_add_inc.php                           |   12 ++--
 core/authentication_api.php                   |    4 +-
 core/bug_group_action_api.php                 |    4 +-
 core/relationship_api.php                     |    2 +-
 css/default.css                               |    8 +-
 login_page.php                                |   16 +++---
 login_select_proj_page.php                    |    8 +-
 lost_pwd_page.php                             |    8 +-
 manage_columns_inc.php                        |   20 +++---
 manage_custom_field_edit_page.php             |   84 ++++++++++++------------
 manage_custom_field_page.php                  |   20 +++---
 manage_overview_page.php                      |   10 ++--
 manage_proj_cat_edit_page.php                 |    4 +-
 manage_proj_create_page.php                   |   28 ++++----
 manage_proj_edit_page.php                     |   36 +++++-----
 manage_proj_ver_edit_page.php                 |   20 +++---
 manage_tags_page.php                          |    4 +-
 manage_user_create_page.php                   |   32 +++++-----
 manage_user_edit_page.php                     |   36 +++++-----
 news_edit_page.php                            |   16 +++---
 news_menu_page.php                            |   16 +++---
 plugins/MantisCoreFormatting/pages/config.php |    8 +-
 plugins/MantisGraph/pages/config.php          |   20 +++---
 plugins/XmlImportExport/pages/import.php      |    6 +-
 print_all_bug_options_inc.php                 |    4 +-
 print_bug_page.php                            |   58 +++++++++---------
 proj_doc_add_page.php                         |    8 +-
 proj_doc_edit_page.php                        |   12 ++--
 signup_page.php                               |   12 ++--
 tag_attach.php                                |    6 +-
 tag_update_page.php                           |    2 +-
 tag_view_page.php                             |    4 +-
 view_filters_page.php                         |   14 ++--
 view_user_page.php                            |   12 ++--
 52 files changed, 500 insertions(+), 500 deletions(-)

diff --git a/account_page.php b/account_page.php
index d93becb..ca7fe2b 100644
--- a/account_page.php
+++ b/account_page.php
@@ -133,9 +133,9 @@ html_page_top( lang_get( 'account_link' ) );
 
 	<!-- Username -->
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category" width="25%">
+		<th class="category" width="25%">
 			<?php echo lang_get( 'username' ) ?>
-		</td>
+		</th>
 		<td width="75%">
 			<?php echo $u_username ?>
 		</td>
@@ -143,9 +143,9 @@ html_page_top( lang_get( 'account_link' ) );
 
 	<!-- Password -->
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'password' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php echo lang_get( 'no_password_change' ) ?>
 		</td>
@@ -158,9 +158,9 @@ html_page_top( lang_get( 'account_link' ) );
 
 	<!-- Username -->
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category" width="25%">
+		<th class="category" width="25%">
 			<?php echo lang_get( 'username' ) ?>
-		</td>
+		</th>
 		<td width="75%">
 			<?php echo $u_username ?>
 		</td>
@@ -168,14 +168,14 @@ html_page_top( lang_get( 'account_link' ) );
 
 	<!-- Password -->
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php
 				echo lang_get( 'password' );
 				if ( $t_force_pw_reset ) {
 			?>
 			<span class="required">*</span>
 			<?php } ?>
-		</td>
+		</th>
 		<td>
 			<input type="password" size="32" maxlength="<?php echo PASSLEN;?>" name="password" />
 		</td>
@@ -183,14 +183,14 @@ html_page_top( lang_get( 'account_link' ) );
 
 	<!-- Password confirmation -->
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php
 				echo lang_get( 'confirm_password' );
 				if ( $t_force_pw_reset ) {
 			?>
 			<span class="required">*</span>
 			<?php } ?>
-		</td>
+		</th>
 		<td>
 			<input type="password" size="32" maxlength="<?php echo PASSLEN;?>" name="password_confirm" />
 		</td>
@@ -203,9 +203,9 @@ if ( $t_ldap && ON == config_get( 'use_ldap_email' ) ) { ?> <!-- With LDAP Email
 
 	<!-- Email -->
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'email' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php echo $u_email ?>
 		</td>
@@ -215,9 +215,9 @@ if ( $t_ldap && ON == config_get( 'use_ldap_email' ) ) { ?> <!-- With LDAP Email
 
 	<!-- Email -->
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'email' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php
 				$t_show_update_button = true;
@@ -230,9 +230,9 @@ if ( $t_ldap && ON == config_get( 'use_ldap_email' ) ) { ?> <!-- With LDAP Email
 
 	<!-- Realname -->
 	<tr <?php echo helper_alternate_class() ?> valign="top">
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'realname' ) ?>
-		</td>
+		</th>
 		<td>
 <?php
 if ( $t_ldap && ON == config_get( 'use_ldap_realname' ) ) {
@@ -247,9 +247,9 @@ if ( $t_ldap && ON == config_get( 'use_ldap_realname' ) ) {
 
 	<!-- Access level -->
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'access_level' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php echo get_enum_element( 'access_levels', $u_access_level ) ?>
 		</td>
@@ -257,9 +257,9 @@ if ( $t_ldap && ON == config_get( 'use_ldap_realname' ) ) {
 
 	<!-- Project access level -->
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'access_level_project' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php echo get_enum_element( 'access_levels', current_user_get_access_level() ) ?>
 		</td>
@@ -267,9 +267,9 @@ if ( $t_ldap && ON == config_get( 'use_ldap_realname' ) ) {
 
 	<!-- Assigned project list -->
 	<tr <?php echo helper_alternate_class() ?> valign="top">
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'assigned_projects' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php print_project_user_list( auth_get_current_user_id(), false ) ?>
 		</td>
diff --git a/account_prefs_inc.php b/account_prefs_inc.php
index 6d7fe17..9b47b82 100644
--- a/account_prefs_inc.php
+++ b/account_prefs_inc.php
@@ -95,9 +95,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category" width="50%">
+	<th class="category" width="50%">
 		<?php echo lang_get( 'default_project' ) ?>
-	</td>
+	</th>
 	<td width="50%">
 		<select name="default_project">
 			<?php print_project_option_list( $t_pref->default_project ) ?>
@@ -105,25 +105,25 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'refresh_delay' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="refresh_delay" size="4" maxlength="4" value="<?php echo $t_pref->refresh_delay ?>" /> <?php echo lang_get( 'minutes' ) ?>
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'redirect_delay' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="redirect_delay" size="4" maxlength="3" value="<?php echo $t_pref->redirect_delay ?>" /> <?php echo lang_get( 'seconds' ) ?>
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'bugnote_order' ) ?>
-	</td>
+	</th>
 	<td>
 		<label><input type="radio" name="bugnote_order" value="ASC" <?php check_checked( $t_pref->bugnote_order, 'ASC' ); ?> /><?php echo lang_get( 'bugnote_order_asc' ) ?></label>
 		<label><input type="radio" name="bugnote_order" value="DESC" <?php check_checked( $t_pref->bugnote_order, 'DESC' ); ?> /><?php echo lang_get( 'bugnote_order_desc' ) ?></label>
@@ -133,9 +133,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	if ( ON == config_get( 'enable_email_notification' ) ) {
 ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_on_new' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="email_on_new" <?php check_checked( $t_pref->email_on_new, ON ); ?> />
 		<?php echo lang_get( 'with_minimum_severity' ) ?>
@@ -147,9 +147,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_on_assigned' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="email_on_assigned" <?php check_checked( $t_pref->email_on_assigned, ON ); ?> />
 		<?php echo lang_get( 'with_minimum_severity' ) ?>
@@ -161,9 +161,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_on_feedback' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="email_on_feedback" <?php check_checked( $t_pref->email_on_feedback, ON ); ?> />
 		<?php echo lang_get( 'with_minimum_severity' ) ?>
@@ -175,9 +175,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_on_resolved' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="email_on_resolved" <?php check_checked( $t_pref->email_on_resolved, ON ); ?> />
 		<?php echo lang_get( 'with_minimum_severity' ) ?>
@@ -189,9 +189,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_on_closed' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="email_on_closed" <?php check_checked( $t_pref->email_on_closed, ON ); ?> />
 		<?php echo lang_get( 'with_minimum_severity' ) ?>
@@ -203,9 +203,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_on_reopened' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="email_on_reopened" <?php check_checked( $t_pref->email_on_reopened, ON ); ?> />
 		<?php echo lang_get( 'with_minimum_severity' ) ?>
@@ -217,9 +217,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_on_bugnote_added' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="email_on_bugnote" <?php check_checked( $t_pref->email_on_bugnote, ON ); ?> />
 		<?php echo lang_get( 'with_minimum_severity' ) ?>
@@ -231,9 +231,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_on_status_change' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="email_on_status" <?php check_checked( $t_pref->email_on_status, ON ); ?> />
 		<?php echo lang_get( 'with_minimum_severity' ) ?>
@@ -245,9 +245,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_on_priority_change' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="email_on_priority" <?php check_checked( $t_pref->email_on_priority , ON); ?> />
 		<?php echo lang_get( 'with_minimum_severity' ) ?>
@@ -259,9 +259,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_bugnote_limit' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="email_bugnote_limit" maxlength="2" size="2" value="<?php echo $t_pref->email_bugnote_limit ?>" />
 	</td>
@@ -288,9 +288,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 		<input type="hidden" name="email_bugnote_limit" value="<?php echo $t_pref->email_bugnote_limit ?>" />
 <?php } ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'timezone' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="timezone">
 			<?php print_timezone_option_list( $t_pref->timezone ?  $t_pref->timezone  : config_get_global( 'default_timezone' ) ) ?>
@@ -298,9 +298,9 @@ function edit_account_prefs($p_user_id = null, $p_error_if_protected = true, $p_
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'language' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="language">
 			<?php print_language_option_list( $t_pref->language ) ?>
diff --git a/account_prof_edit_page.php b/account_prof_edit_page.php
index 1da677a..bf10df0 100644
--- a/account_prof_edit_page.php
+++ b/account_prof_edit_page.php
@@ -98,33 +98,33 @@ if ( profile_is_global( $f_profile_id ) ) {
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<span class="required">*</span><?php echo lang_get( 'platform' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<input type="text" name="platform" size="32" maxlength="32" value="<?php echo string_attribute( $v_platform ) ?>" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<span class="required">*</span><?php echo lang_get( 'operating_system' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="os" size="32" maxlength="32" value="<?php echo string_attribute( $v_os ) ?>" />
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<span class="required">*</span><?php echo lang_get( 'os_version' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="os_build" size="16" maxlength="16" value="<?php echo string_attribute( $v_os_build ) ?>" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'additional_description' ) ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="description" cols="60" rows="8"><?php echo string_textarea( $v_description ) ?></textarea>
 	</td>
diff --git a/account_prof_menu_page.php b/account_prof_menu_page.php
index d65a73b..887785d 100644
--- a/account_prof_menu_page.php
+++ b/account_prof_menu_page.php
@@ -104,33 +104,33 @@ if ( $g_global_profiles ) {
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<span class="required">*</span><?php echo lang_get( 'platform' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<input type="text" name="platform" size="32" maxlength="32" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<span class="required">*</span><?php echo lang_get( 'operating_system' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="os" size="32" maxlength="32" />
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<span class="required">*</span><?php echo lang_get( 'os_version' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="os_build" size="16" maxlength="16" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'additional_description' ) ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="description" cols="60" rows="8"></textarea>
 	</td>
@@ -177,9 +177,9 @@ if ( $g_global_profiles ) {
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<?php echo lang_get( 'select_profile' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<select name="profile_id">
 			<?php print_profile_option_list( $t_user_id, '', $t_profiles ) ?>
diff --git a/admin/index.php b/admin/index.php
index 098b707..d0be31f 100644
--- a/admin/index.php
+++ b/admin/index.php
@@ -32,7 +32,7 @@ html_page_top( 'MantisBT Administration' );
 
 function print_info_row( $p_description, $p_value ) {
 	echo '<tr ' . helper_alternate_class() . '>';
-	echo '<td class="category">' . $p_description . '</td>';
+	echo '<th class="category">' . $p_description . '</th>';
 	echo '<td>' . $p_value . '</td>';
 	echo '</tr>';
 }
diff --git a/bug_actiongroup_add_note_inc.php b/bug_actiongroup_add_note_inc.php
index b625a0f..cc06f7c 100644
--- a/bug_actiongroup_add_note_inc.php
+++ b/bug_actiongroup_add_note_inc.php
@@ -64,13 +64,13 @@ function action_add_note_print_title() {
  * A row has two columns.
  */
 function action_add_note_print_fields() {
-	echo '<tr class="row-1" valign="top"><td class="category">', lang_get( 'add_bugnote_title' ), '</td><td><textarea name="bugnote_text" cols="80" rows="10"></textarea></td></tr>';
+	echo '<tr class="row-1" valign="top"><th class="category">', lang_get( 'add_bugnote_title' ), '</th><td><textarea name="bugnote_text" cols="80" rows="10"></textarea></td></tr>';
 ?>
 	<!-- View Status -->
 	<tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'view_status' ) ?>
-	</td>
+	</th>
 	<td>
 <?php
 	$t_default_state = config_get( 'default_bugnote_view_status' );
diff --git a/bug_actiongroup_attach_tags_inc.php b/bug_actiongroup_attach_tags_inc.php
index 90b94fd..30b3f73 100644
--- a/bug_actiongroup_attach_tags_inc.php
+++ b/bug_actiongroup_attach_tags_inc.php
@@ -57,7 +57,7 @@ function action_attach_tags_print_title() {
  * Prints the table and form for the Attach Tags group action page.
  */
 function action_attach_tags_print_fields() {
-	echo '<tr ',helper_alternate_class(),'><td class="category">',lang_get('tag_attach_long'),'</td><td>';
+	echo '<tr ',helper_alternate_class(),'><th class="category">',lang_get('tag_attach_long'),'</th><td>';
 	print_tag_input();
 	echo '<input type="submit" class="button" value="' . lang_get( 'tag_attach' ) . ' " /></td></tr>';
 }
diff --git a/bug_actiongroup_page.php b/bug_actiongroup_page.php
index fe5305e..fbf8bf1 100644
--- a/bug_actiongroup_page.php
+++ b/bug_actiongroup_page.php
@@ -246,9 +246,9 @@ if ( $t_multiple_projects ) {
 if ( !$t_finished ) {
 ?>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo $t_question_title ?>
-	</td>
+	</th>
 	<td>
 	<?php
 		if ( $f_action === 'CUSTOM' ) {
@@ -310,9 +310,9 @@ if ( !$t_finished ) {
 				if ( $t_show_product_version ) {
 	?>
 		<tr class="row-2">
-			<td class="category">
+			<th class="category">
 				<?php echo $t_question_title2 ?>
-			</td>
+			</th>
 			<td>
 				<select name="<?php echo $t_form2 ?>">
 					<?php print_version_option_list( '', null, VERSION_ALL );?>
@@ -330,9 +330,9 @@ if ( !$t_finished ) {
 ?>
 
 <tr class="row-1">
-	<td class="category" colspan="2">
+	<th class="category" colspan="2">
 		<?php echo $t_question_title; ?>
-	</td>
+	</th>
 </tr>
 <?php
 }
@@ -342,18 +342,18 @@ if ( !$t_finished ) {
 if( $t_bugnote ) {
 ?>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'add_bugnote_title' ); ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="bugnote_text" cols="80" rows="10"></textarea>
 	</td>
 </tr>
 <?php if ( access_has_project_level( config_get( 'private_bugnote_threshold' ), $t_project_id ) ) { ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'view_status' ) ?>
-	</td>
+	</th>
 	<td>
 <?php
 		$t_default_bugnote_view_status = config_get( 'default_bugnote_view_status' );
diff --git a/bug_actiongroup_update_product_build_inc.php b/bug_actiongroup_update_product_build_inc.php
index 9e02da4..9a3a845 100644
--- a/bug_actiongroup_update_product_build_inc.php
+++ b/bug_actiongroup_update_product_build_inc.php
@@ -54,7 +54,7 @@ function action_update_product_build_print_title() {
  * A row has two columns.
  */
 function action_update_product_build_print_fields() {
-	echo '<tr class="row-1" valign="top"><td class="category">', lang_get( 'product_build' ), '</td><td><input type="text" name="build" size="32" maxlength="32" /></td></tr>';
+	echo '<tr class="row-1" valign="top"><th class="category">', lang_get( 'product_build' ), '</th><td><input type="text" name="build" size="32" maxlength="32" /></td></tr>';
 	echo '<tr><td colspan="2"><center><input type="submit" class="button" value="' . lang_get( 'actiongroup_menu_update_product_build' ) . ' " /></center></td></tr>';
 }
 
diff --git a/bug_actiongroup_update_severity_inc.php b/bug_actiongroup_update_severity_inc.php
index d275be9..d4ce243 100644
--- a/bug_actiongroup_update_severity_inc.php
+++ b/bug_actiongroup_update_severity_inc.php
@@ -56,9 +56,9 @@ function action_update_severity_print_title() {
  * A row has two columns.
  */
 function action_update_severity_print_fields() {
-	echo '<tr class="row-1" valign="top"><td class="category">';
+	echo '<tr class="row-1" valign="top"><th class="category">';
 	echo lang_get( 'update_severity_msg' );
-	echo '</td><td><select name="severity">';
+	echo '</th><td><select name="severity">';
 	print_enum_string_option_list( 'severity' );
 	echo '</select></td></tr>';
 	echo '<tr><td colspan="2"><center><input type="submit" class="button" value="' . lang_get( 'update_severity_button' ) . ' " /></center></td></tr>';
diff --git a/bug_change_status_page.php b/bug_change_status_page.php
index f5e0c7b..b2a6beb 100644
--- a/bug_change_status_page.php
+++ b/bug_change_status_page.php
@@ -154,9 +154,9 @@ $t_bug_is_open = $t_current_resolution < $t_resolved;
 if ( ( $f_new_status >= $t_resolved ) && ( ( $f_new_status < $t_closed ) || ( $t_bug_is_open ) ) ) { ?>
 <!-- Resolution -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'resolution' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="resolution">
 			<?php
@@ -183,9 +183,9 @@ if ( $f_new_status >= $t_resolved
 	&& $t_resolution != config_get( 'bug_duplicate_resolution' ) ) { ?>
 <!-- Duplicate ID -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'duplicate_id' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="duplicate_id" maxlength="10" />
 	</td>
@@ -202,9 +202,9 @@ if ( access_has_bug_level( config_get( 'update_bug_assign_threshold', config_get
 ?>
 <!-- Assigned To -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'assigned_to' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="handler_id">
 			<option value="0"></option>
@@ -222,9 +222,9 @@ if ( access_has_bug_level( config_get( 'update_bug_assign_threshold', config_get
 	}
 ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php print_documentation_link( 'due_date' ) ?>
-	</td>
+	</th>
 	<td>
 	<?php
 	    print "<input ".helper_get_tab_index()." type=\"text\" id=\"due_date\" name=\"due_date\" size=\"20\" maxlength=\"10\" value=\"".$t_date_to_display."\" />";
@@ -266,9 +266,9 @@ foreach( $t_related_custom_field_ids as $t_id ) {
 	if ( custom_field_has_write_access( $t_id, $f_bug_id ) ) {
 ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php if ( $t_require ) {?><span class="required">*</span><?php } echo lang_get_defaulted( $t_def['name'] ) ?>
-	</td>
+	</th>
 	<td>
 		<?php
 			print_custom_field_input( $t_def, $f_bug_id );
@@ -280,9 +280,9 @@ foreach( $t_related_custom_field_ids as $t_id ) {
 	else if ( custom_field_has_read_access( $t_id, $f_bug_id ) ) {
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get_defaulted( $t_def['name'] ) ?>
-		</td>
+		</th>
 		<td>
 			<?php print_custom_field_value( $t_def, $t_id, $f_bug_id );			?>
 		</td>
@@ -301,9 +301,9 @@ if ( ( $t_resolved <= $f_new_status ) ) {
 ?>
 <!-- Fixed in Version -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'fixed_in_version' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="fixed_in_version">
 			<?php print_version_option_list( bug_get_field( $f_bug_id, 'fixed_in_version' ),
@@ -320,9 +320,9 @@ if ( ( $t_resolved <= $f_new_status ) && ( $f_new_status < $t_closed ) ) { ?>
 <?php if ( ( ON == config_get( 'allow_close_immediately' ) )
 				&& ( access_has_bug_level( access_get_status_threshold( $t_closed, bug_get_field( $f_bug_id, 'project_id' ) ), $f_bug_id ) ) ) { ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'close_immediately' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="close_now" />
 	</td>
@@ -339,18 +339,18 @@ if ( ( $t_resolved <= $f_new_status ) && ( $f_new_status < $t_closed ) ) { ?>
 
 <!-- Bugnote -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'add_bugnote_title' ) ?>
-	</td>
+	</th>
 	<td class="center">
 		<textarea name="bugnote_text" cols="80" rows="10"></textarea>
 	</td>
 </tr>
 <?php if ( access_has_bug_level( config_get( 'private_bugnote_threshold' ), $f_bug_id ) ) { ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'view_status' ) ?>
-	</td>
+	</th>
 	<td>
 <?php
 		$t_default_bugnote_view_status = config_get( 'default_bugnote_view_status' );
@@ -371,9 +371,9 @@ if ( ( $t_resolved <= $f_new_status ) && ( $f_new_status < $t_closed ) ) { ?>
 <?php if ( access_has_bug_level( config_get( 'private_bugnote_threshold' ), $f_bug_id ) ) { ?>
 <?php if ( access_has_bug_level( config_get( 'time_tracking_edit_threshold' ), $f_bug_id ) ) { ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'time_tracking' ) ?> (HH:MM)
-	</td>
+	</th>
 	<td>
 		<input type="text" name="time_tracking" size="5" value="0:00" />
 	</td>
diff --git a/bug_monitor_list_view_inc.php b/bug_monitor_list_view_inc.php
index c0c2eb4..9e62079 100644
--- a/bug_monitor_list_view_inc.php
+++ b/bug_monitor_list_view_inc.php
@@ -82,9 +82,9 @@ if ( access_has_bug_level( config_get( 'show_monitor_list_threshold' ), $f_bug_i
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="15%">
+	<th class="category" width="15%">
 		<?php echo lang_get( 'monitoring_user_list' ); ?>
-	</td>
+	</th>
 	<td>
 <?php
 		if ( 0 == $num_users ) {
diff --git a/bug_reminder_page.php b/bug_reminder_page.php
index 70cb86d..3b5c5da 100644
--- a/bug_reminder_page.php
+++ b/bug_reminder_page.php
@@ -79,12 +79,12 @@ html_page_top( bug_format_summary( $f_bug_id, SUMMARY_CAPTION ) );
 	</td>
 </tr>
 <tr>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'to' ) ?>
-	</td>
-	<td class="category">
+	</th>
+	<th class="category">
 		<?php echo lang_get( 'reminder' ) ?>
-	</td>
+	</th>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
 	<td>
diff --git a/bug_report_page.php b/bug_report_page.php
index 92ec56e..e5a367b 100644
--- a/bug_report_page.php
+++ b/bug_report_page.php
@@ -217,9 +217,9 @@ print_recently_visited();
 	if ( $tpl_show_category ) {
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category" width="30%">
+		<th class="category" width="30%">
 			<?php echo config_get( 'allow_no_category' ) ? '' : '<span class="required">*</span>'; print_documentation_link( 'category' ) ?>
-		</td>
+		</th>
 		<td width="70%">
 			<?php if ( $t_changed_project ) {
 				echo "[" . project_get_field( $t_bug->project_id, 'name' ) . "] ";
@@ -237,9 +237,9 @@ print_recently_visited();
 ?>
 
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php print_documentation_link( 'reproducibility' ) ?>
-		</td>
+		</th>
 		<td>
 			<select <?php echo helper_get_tab_index() ?> name="reproducibility">
 				<?php print_enum_string_option_list( 'reproducibility', $f_reproducibility ) ?>
@@ -252,9 +252,9 @@ print_recently_visited();
 	if ( $tpl_show_severity ) {
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php print_documentation_link( 'severity' ) ?>
-		</td>
+		</th>
 		<td>
 			<select <?php echo helper_get_tab_index() ?> name="severity">
 				<?php print_enum_string_option_list( 'severity', $f_severity ) ?>
@@ -267,9 +267,9 @@ print_recently_visited();
 	if ( $tpl_show_priority ) {
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php print_documentation_link( 'priority' ) ?>
-		</td>
+		</th>
 		<td>
 			<select <?php echo helper_get_tab_index() ?> name="priority">
 				<?php print_enum_string_option_list( 'priority', $f_priority ) ?>
@@ -287,9 +287,9 @@ print_recently_visited();
 		}
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php print_documentation_link( 'due_date' ) ?>
-		</td>
+		</th>
 		<td>
 		<?php
 		    print "<input ".helper_get_tab_index()." type=\"text\" id=\"due_date\" name=\"due_date\" size=\"20\" maxlength=\"10\" value=\"".$t_date_to_display."\" />";
@@ -300,9 +300,9 @@ print_recently_visited();
 <?php } ?>
 <?php if ( $tpl_show_platform || $tpl_show_os || $tpl_show_os_version ) { ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'select_profile' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php if (count(profile_get_all_for_user( auth_get_current_user_id() )) > 0) { ?>
 				<select <?php echo helper_get_tab_index() ?> name="profile_id">
@@ -321,9 +321,9 @@ print_recently_visited();
 						<?php echo lang_get( 'or_fill_in' ); ?>
 					<?php } ?>
 					<tr <?php echo helper_alternate_class() ?>>
-						<td class="category">
+						<th class="category">
 							<?php echo lang_get( 'platform' ) ?>
-						</td>
+						</th>
 						<td>
 							<?php if ( config_get( 'allow_freetext_in_profile_fields' ) == OFF ) { ?>
 							<select name="platform">
@@ -338,9 +338,9 @@ print_recently_visited();
 						</td>
 					</tr>
 					<tr <?php echo helper_alternate_class() ?>>
-						<td class="category">
+						<th class="category">
 							<?php echo lang_get( 'os' ) ?>
-						</td>
+						</th>
 						<td>
 							<?php if ( config_get( 'allow_freetext_in_profile_fields' ) == OFF ) { ?>
 							<select name="os">
@@ -355,9 +355,9 @@ print_recently_visited();
 						</td>
 					</tr>
 					<tr <?php echo helper_alternate_class() ?>>
-						<td class="category">
+						<th class="category">
 							<?php echo lang_get( 'os_version' ) ?>
-						</td>
+						</th>
 						<td>
 							<?php
 								if ( config_get( 'allow_freetext_in_profile_fields' ) == OFF ) {
@@ -390,9 +390,9 @@ print_recently_visited();
 		}
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'product_version' ) ?>
-		</td>
+		</th>
 		<td>
 			<select <?php echo helper_get_tab_index() ?> name="product_version">
 				<?php print_version_option_list( $f_product_version, $t_project_id, $t_product_version_released_mask ) ?>
@@ -404,9 +404,9 @@ print_recently_visited();
 ?>
 <?php if ( $tpl_show_product_build ) { ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'product_build' ) ?>
-		</td>
+		</th>
 		<td>
 			<input <?php echo helper_get_tab_index() ?> type="text" name="build" size="32" maxlength="32" value="<?php echo string_attribute( $f_build ) ?>" />
 		</td>
@@ -415,9 +415,9 @@ print_recently_visited();
 
 <?php if ( $tpl_show_handler ) { ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'assign_to' ) ?>
-		</td>
+		</th>
 		<td>
 			<select <?php echo helper_get_tab_index() ?> name="handler_id">
 				<option value="0" selected="selected"></option>
@@ -430,9 +430,9 @@ print_recently_visited();
 <?php // Target Version (if permissions allow)
 	if ( $tpl_show_target_version ) { ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'target_version' ) ?>
-		</td>
+		</th>
 		<td>
 			<select <?php echo helper_get_tab_index() ?> name="target_version">
 				<?php print_version_option_list() ?>
@@ -442,17 +442,17 @@ print_recently_visited();
 <?php } ?>
 <?php event_signal( 'EVENT_REPORT_BUG_FORM', array( $t_project_id ) ) ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<span class="required">*</span><?php print_documentation_link( 'summary' ) ?>
-		</td>
+		</th>
 		<td>
 			<input <?php echo helper_get_tab_index() ?> type="text" name="summary" size="105" maxlength="128" value="<?php echo string_attribute( $f_summary ) ?>" />
 		</td>
 	</tr>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<span class="required">*</span><?php print_documentation_link( 'description' ) ?>
-		</td>
+		</th>
 		<td>
 			<textarea <?php echo helper_get_tab_index() ?> name="description" cols="80" rows="10"><?php echo string_textarea( $f_description ) ?></textarea>
 		</td>
@@ -460,9 +460,9 @@ print_recently_visited();
 
 <?php if ( $tpl_show_steps_to_reproduce ) { ?>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php print_documentation_link( 'steps_to_reproduce' ) ?>
-			</td>
+			</th>
 			<td>
 				<textarea <?php echo helper_get_tab_index() ?> name="steps_to_reproduce" cols="80" rows="10"><?php echo string_textarea( $f_steps_to_reproduce ) ?></textarea>
 			</td>
@@ -471,9 +471,9 @@ print_recently_visited();
 
 <?php if ( $tpl_show_additional_info ) { ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php print_documentation_link( 'additional_information' ) ?>
-		</td>
+		</th>
 		<td>
 			<textarea <?php echo helper_get_tab_index() ?> name="additional_info" cols="80" rows="10"><?php echo string_textarea( $f_additional_info ) ?></textarea>
 		</td>
@@ -490,9 +490,9 @@ print_recently_visited();
 			$t_custom_fields_found = true;
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php if($t_def['require_report']) {?><span class="required">*</span><?php } echo string_display( lang_get_defaulted( $t_def['name'] ) ) ?>
-		</td>
+		</th>
 		<td>
 			<?php print_custom_field_input( $t_def, ( $f_master_bug_id === 0 ) ? null : $f_master_bug_id ) ?>
 		</td>
@@ -520,9 +520,9 @@ print_recently_visited();
 	if ( $tpl_show_view_state ) {
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'view_status' ) ?>
-		</td>
+		</th>
 		<td>
 			<label><input <?php echo helper_get_tab_index() ?> type="radio" name="view_state" value="<?php echo VS_PUBLIC ?>" <?php check_checked( $f_view_state, VS_PUBLIC ) ?> /> <?php echo lang_get( 'public' ) ?></label>
 			<label><input <?php echo helper_get_tab_index() ?> type="radio" name="view_state" value="<?php echo VS_PRIVATE ?>" <?php check_checked( $f_view_state, VS_PRIVATE ) ?> /> <?php echo lang_get( 'private' ) ?></label>
@@ -535,9 +535,9 @@ print_recently_visited();
 	if( $f_master_bug_id > 0 ) {
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'relationship_with_parent' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php relationship_list_box( /* none */ -2, "rel_type", false, true ) ?>
 			<?php echo '<b>' . lang_get( 'bug' ) . ' ' . bug_format_id( $f_master_bug_id ) . '</b>' ?>
@@ -547,9 +547,9 @@ print_recently_visited();
 	}
 ?>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php print_documentation_link( 'report_stay' ) ?>
-		</td>
+		</th>
 		<td>
 			<label><input <?php echo helper_get_tab_index() ?> type="checkbox" id="report_stay" name="report_stay" <?php check_checked( $f_report_stay ) ?> /> <?php echo lang_get( 'check_report_more_bugs' ) ?></label>
 		</td>
diff --git a/bug_revision_view_page.php b/bug_revision_view_page.php
index 330b1d5..e5c9e44 100644
--- a/bug_revision_view_page.php
+++ b/bug_revision_view_page.php
@@ -133,7 +133,7 @@ $t_by_string = sprintf( lang_get( 'revision_by' ), string_display_line( date( co
 <tr class="spacer"><td><a name="r<?php echo $t_revision['id'] ?>"></a></td></tr>
 
 <tr <?php echo helper_alternate_class() ?>>
-<td class="category"><?php echo lang_get( 'revision' ) ?></td>
+<th class="category"><?php echo lang_get( 'revision' ) ?></th>
 <td colspan="2"><?php echo $t_by_string ?></td>
 <td class="center" width="5%">
 <?php if ( $s_can_drop ) {
@@ -142,7 +142,7 @@ $t_by_string = sprintf( lang_get( 'revision_by' ), string_display_line( date( co
 </tr>
 
 <tr <?php echo helper_alternate_class() ?>>
-<td class="category"><?php echo $t_label ?></td>
+<th class="category"><?php echo $t_label ?></th>
 <td colspan="3"><?php echo string_display_links( $t_revision['value'] ) ?></td>
 </tr>
 
@@ -169,7 +169,7 @@ print_bracket_link( 'view.php?id=' . $t_bug_id, lang_get( 'back_to_issue' ) );
 </tr>
 
 <tr <?php echo helper_alternate_class() ?>>
-<td class="category" width="15%"><?php echo lang_get( 'summary' ) ?></td>
+<th class="category" width="15%"><?php echo lang_get( 'summary' ) ?></th>
 <td colspan="3"><?php echo bug_format_summary( $t_bug_id, SUMMARY_FIELD ) ?></td>
 </tr>
 
diff --git a/bug_sponsorship_list_view_inc.php b/bug_sponsorship_list_view_inc.php
index 6d46f4b..5e7b779 100644
--- a/bug_sponsorship_list_view_inc.php
+++ b/bug_sponsorship_list_view_inc.php
@@ -106,7 +106,7 @@ if ( $t_show_sponsorships ) {
 	if ( $t_can_sponsor ) {
 ?>
 	<tr class="row-1">
-		<td class="category" width="15%"><?php echo lang_get( 'sponsor_issue' ) ?></td>
+		<th class="category" width="15%"><?php echo lang_get( 'sponsor_issue' ) ?></th>
 		<td>
 			<form method="post" action="bug_set_sponsorship.php">
 				<?php echo form_security_field( 'bug_set_sponsorship' ) ?>
@@ -124,7 +124,7 @@ if ( $t_show_sponsorships ) {
 	if ( $t_total_sponsorship > 0 ) {
 ?>
 	<tr class="row-2">
-		<td class="category" width="15%"><?php echo lang_get( 'sponsors_list' ) ?></td>
+		<th class="category" width="15%"><?php echo lang_get( 'sponsors_list' ) ?></th>
 		<td>
 		<?php
 			echo sprintf( lang_get( 'total_sponsorship_amount' ),
diff --git a/bug_update_advanced_page.php b/bug_update_advanced_page.php
index b28e71c..157af16 100644
--- a/bug_update_advanced_page.php
+++ b/bug_update_advanced_page.php
@@ -255,7 +255,7 @@ if ( $tpl_show_reporter ) {
 
 	if ( $tpl_show_reporter ) {
 		# Reporter
-		echo '<td class="category">', lang_get( 'reporter' ), '</td>';
+		echo '<th class="category">', lang_get( 'reporter' ), '</th>';
 		echo '<td>';
 
 		if ( ON == config_get( 'use_javascript' ) ) {
@@ -288,7 +288,7 @@ if ( $tpl_show_handler || $tpl_show_due_date ) {
 	$t_spacer = 2;
 
 	# Assigned To
-	echo '<td class="category">', lang_get( 'assigned_to' ), '</td>';
+	echo '<th class="category">', lang_get( 'assigned_to' ), '</th>';
 	echo '<td>';
 
 	if ( access_has_project_level( config_get( 'update_bug_assign_threshold', config_get( 'update_bug_threshold' ) ) ) ) {
@@ -304,7 +304,7 @@ if ( $tpl_show_handler || $tpl_show_due_date ) {
 
 	if ( $tpl_show_due_date ) {
 		# Due Date
-		echo '<td class="category">', lang_get( 'due_date' ), '</td>';
+		echo '<th class="category">', lang_get( 'due_date' ), '</th>';
 
 		if ( bug_is_overdue( $tpl_bug_id ) ) {
 			echo '<td class="overdue">';
@@ -350,7 +350,7 @@ if ( $tpl_show_priority || $tpl_show_severity || $tpl_show_reproducibility ) {
 
 	if ( $tpl_show_priority ) {
 		# Priority
-		echo '<td class="category">', lang_get( 'priority' ), '</td>';
+		echo '<th class="category">', lang_get( 'priority' ), '</th>';
 		echo '<td align="left">', '<select ', helper_get_tab_index(), ' name="priority">';
 		print_enum_string_option_list( 'priority', $tpl_bug->priority );
 		echo '</select></td>';
@@ -360,7 +360,7 @@ if ( $tpl_show_priority || $tpl_show_severity || $tpl_show_reproducibility ) {
 
 	if ( $tpl_show_severity ) {
 		# Severity
-		echo '<td class="category">', lang_get( 'severity' ), '</td>';
+		echo '<th class="category">', lang_get( 'severity' ), '</th>';
 		echo '<td>', '<select ', helper_get_tab_index(), ' name="severity">';
 		print_enum_string_option_list( 'severity', $tpl_bug->severity );
 		echo '</select></td>';
@@ -370,7 +370,7 @@ if ( $tpl_show_priority || $tpl_show_severity || $tpl_show_reproducibility ) {
 
 	if ( $tpl_show_reproducibility ) {
 		# Reproducibility
-		echo '<td class="category">', lang_get( 'reproducibility' ), '</td>';
+		echo '<th class="category">', lang_get( 'reproducibility' ), '</th>';
 		echo '<td><select ', helper_get_tab_index(), ' name="reproducibility">';
 		print_enum_string_option_list( 'reproducibility', $tpl_bug->reproducibility );
 		echo '</select></td>';
@@ -397,7 +397,7 @@ if ( $tpl_show_status || $tpl_show_resolution ) {
 
 	if ( $tpl_show_status ) {
 		# Status
-		echo '<td class="category">', lang_get( 'status' ), '</td>';
+		echo '<th class="category">', lang_get( 'status' ), '</th>';
 		echo '<td bgcolor="', get_status_color( $tpl_bug->status ), '">';
 		print_status_option_list( 'status', $tpl_bug->status,
 							( $tpl_bug->reporter_id == auth_get_current_user_id() &&
@@ -409,7 +409,7 @@ if ( $tpl_show_status || $tpl_show_resolution ) {
 
 	if ( $tpl_show_resolution ) {
 		# Resolution
-		echo '<td class="category">', lang_get( 'resolution' ), '</td>';
+		echo '<th class="category">', lang_get( 'resolution' ), '</th>';
 		echo '<td><select ', helper_get_tab_index(), ' name="resolution">';
 		print_enum_string_option_list( "resolution", $tpl_bug->resolution );
 		echo '</select></td>';
@@ -436,9 +436,9 @@ if ( $tpl_show_projection || $tpl_show_eta ) {
 
 	if ( $tpl_show_projection ) {
 		# Projection
-		echo '<td class="category">';
+		echo '<th class="category">';
 		echo lang_get( 'projection' );
-		echo '</td>';
+		echo '</th>';
 		echo '<td><select name="projection">';
 		print_enum_string_option_list( 'projection', $tpl_bug->projection );
 		echo '</select></td>';
@@ -448,7 +448,7 @@ if ( $tpl_show_projection || $tpl_show_eta ) {
 
 	# ETA
 	if ( $tpl_show_eta ) {
-		echo '<td class="category">', lang_get( 'eta' ), '</td>';
+		echo '<th class="category">', lang_get( 'eta' ), '</th>';
 
 		echo '<td>', '<select ', helper_get_tab_index(), ' name="eta">';
 		print_enum_string_option_list( 'eta', $tpl_bug->eta );
@@ -474,7 +474,7 @@ if ( $tpl_show_platform || $tpl_show_os || $tpl_show_os_version ) {
 
 	if ( $tpl_show_platform ) {
 		# Platform
-		echo '<td class="category">', lang_get( 'platform' ), '</td>';
+		echo '<th class="category">', lang_get( 'platform' ), '</th>';
 		echo '<td>';
 
 		if ( config_get( 'allow_freetext_in_profile_fields' ) == OFF ) {
@@ -492,7 +492,7 @@ if ( $tpl_show_platform || $tpl_show_os || $tpl_show_os_version ) {
 
 	if ( $tpl_show_os ) {
 		# Operating System
-		echo '<td class="category">', lang_get( 'os' ), '</td>';
+		echo '<th class="category">', lang_get( 'os' ), '</th>';
 		echo '<td>';
 
 		if ( config_get( 'allow_freetext_in_profile_fields' ) == OFF ) {
@@ -510,7 +510,7 @@ if ( $tpl_show_platform || $tpl_show_os || $tpl_show_os_version ) {
 
 	if ( $tpl_show_os_version ) {
 		# OS Version
-		echo '<td class="category">', lang_get( 'os_version' ), '</td>';
+		echo '<th class="category">', lang_get( 'os_version' ), '</th>';
 		echo '<td>';
 
 		if ( config_get( 'allow_freetext_in_profile_fields' ) == OFF ) {
@@ -545,7 +545,7 @@ if ( $tpl_show_product_version || $tpl_show_product_build ) {
 
 	# Product Version  or Product Build, if version is suppressed
 	if ( $tpl_show_product_version ) {
-		echo '<td class="category">', lang_get( 'product_version' ), '</td>';
+		echo '<th class="category">', lang_get( 'product_version' ), '</th>';
 		echo '<td>', '<select ', helper_get_tab_index(), ' name="version">';
 		print_version_option_list( $tpl_bug->version, $tpl_bug->project_id, $tpl_product_version_released_mask );
 		echo '</select></td>';
@@ -554,7 +554,7 @@ if ( $tpl_show_product_version || $tpl_show_product_build ) {
 	}
 
 	if ( $tpl_show_product_build ) {
-		echo '<td class="category">', lang_get( 'product_build' ), '</td>';
+		echo '<th class="category">', lang_get( 'product_build' ), '</th>';
 		echo '<td>';
 		echo '<input type="text" name="build" size="16" maxlength="32" value="', $tpl_product_build_attribute, '" />';
 		echo '</td>';
@@ -579,7 +579,7 @@ if ( $tpl_show_target_version || $tpl_show_fixed_in_version ) {
 
 	# Target Version
 	if ( $tpl_show_target_version ) {
-		echo '<td class="category">', lang_get( 'target_version' ), '</td>';
+		echo '<th class="category">', lang_get( 'target_version' ), '</th>';
 		echo '<td><select ', helper_get_tab_index(), ' name="target_version">';
 		print_version_option_list( $tpl_bug->target_version, $tpl_bug->project_id, VERSION_ALL );
 		echo '</select></td>';
@@ -589,9 +589,9 @@ if ( $tpl_show_target_version || $tpl_show_fixed_in_version ) {
 
 	# Fixed in Version
 	if ( $tpl_show_fixed_in_version ) {
-		echo '<td class="category">';
+		echo '<th class="category">';
 		echo lang_get( 'fixed_in_version' );
-		echo '</td>';
+		echo '</th>';
 
 		echo '<td>';
 		echo '<select ', helper_get_tab_index(), ' name="fixed_in_version">';
@@ -616,7 +616,7 @@ echo '<tr class="spacer"><td colspan="6"></td></tr>';
 # Summary
 if ( $tpl_show_summary ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'summary' ), '</td>';
+	echo '<th class="category">', lang_get( 'summary' ), '</th>';
 	echo '<td colspan="5">', '<input ', helper_get_tab_index(), ' type="text" name="summary" size="105" maxlength="128" value="', $tpl_summary_attribute, '" />';
 	echo '</td></tr>';
 }
@@ -624,7 +624,7 @@ if ( $tpl_show_summary ) {
 # Description
 if ( $tpl_show_description ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'description' ), '</td>';
+	echo '<th class="category">', lang_get( 'description' ), '</th>';
 	echo '<td colspan="5">';
 	echo '<textarea ', helper_get_tab_index(), ' cols="80" rows="10" name="description">', $tpl_description_textarea, '</textarea>';
 	echo '</td></tr>';
@@ -633,7 +633,7 @@ if ( $tpl_show_description ) {
 # Steps to Reproduce
 if ( $tpl_show_steps_to_reproduce ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'steps_to_reproduce' ), '</td>';
+	echo '<th class="category">', lang_get( 'steps_to_reproduce' ), '</th>';
 	echo '<td colspan="5">';
 	echo '<textarea ', helper_get_tab_index(), ' cols="80" rows="10" name="steps_to_reproduce">', $tpl_steps_to_reproduce_textarea, '</textarea>';
 	echo '</td></tr>';
@@ -642,7 +642,7 @@ if ( $tpl_show_steps_to_reproduce ) {
 # Additional Information
 if ( $tpl_show_additional_information ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'additional_information' ), '</td>';
+	echo '<th class="category">', lang_get( 'additional_information' ), '</th>';
 	echo '<td colspan="5">';
 	echo '<textarea ', helper_get_tab_index(), ' cols="80" rows="10" name="additional_information">', $tpl_additional_information_textarea, '</textarea>';
 	echo '</td></tr>';
@@ -679,13 +679,13 @@ if ( $t_custom_fields_found ) {
 
 # Bugnote Text Box
 echo '<tr ', helper_alternate_class(), '>';
-echo '<td class="category">', lang_get( 'add_bugnote_title' ), '</td>';
+echo '<th class="category">', lang_get( 'add_bugnote_title' ), '</th>';
 echo '<td colspan="5"><textarea ', helper_get_tab_index(), ' name="bugnote_text" cols="80" rows="10"></textarea></td></tr>';
 
 # Bugnote Private Checkbox (if permitted)
 if ( access_has_bug_level( config_get( 'private_bugnote_threshold' ), $tpl_bug_id ) ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="category">', lang_get( 'private' ), '</td>';
+	echo '<th class="category">', lang_get( 'private' ), '</th>';
 	echo '<td colspan="5">';
 
 	$t_default_bugnote_view_status = config_get( 'default_bugnote_view_status' );
@@ -703,7 +703,7 @@ if ( access_has_bug_level( config_get( 'private_bugnote_threshold' ), $tpl_bug_i
 if ( config_get('time_tracking_enabled') ) {
 	if ( access_has_bug_level( config_get( 'time_tracking_edit_threshold' ), $tpl_bug_id ) ) {
 		echo '<tr ', helper_alternate_class(), '>';
-		echo '<td class="category">', lang_get( 'time_tracking' ), ' (HH:MM)</td>';
+		echo '<th class="category">', lang_get( 'time_tracking' ), ' (HH:MM)</th>';
 		echo '<td colspan="5"><input type="text" name="time_tracking" size="5" value="0:00" /></td></tr>';
 	}
 }
diff --git a/bug_view_inc.php b/bug_view_inc.php
index cc1825f..325a8de 100644
--- a/bug_view_inc.php
+++ b/bug_view_inc.php
@@ -335,12 +335,12 @@ echo '<tbody>';
 if ( $tpl_show_id || $tpl_show_project || $tpl_show_category || $tpl_show_view_state || $tpl_show_date_submitted || $tpl_show_last_updated ) {
 	# Labels
 	echo '<tr class="bug-header">';
-	echo '<td class="bug-id category" width="15%">', $tpl_show_id ? lang_get( 'id' ) : '', '</td>';
-	echo '<td class="bug-project category" width="20%">', $tpl_show_project ? lang_get( 'email_project' ) : '', '</td>';
-	echo '<td class="bug-category category" width="15%">', $tpl_show_category ? lang_get( 'category' ) : '', '</td>';
-	echo '<td class="bug-view-status category" width="15%">', $tpl_show_view_state ? lang_get( 'view_status' ) : '', '</td>';
-	echo '<td class="bug-date-submitted category" width="15%">', $tpl_show_date_submitted ? lang_get( 'date_submitted' ) : '', '</td>';
-	echo '<td class="bug-last-modified category" width="20%">', $tpl_show_last_updated ? lang_get( 'last_update' ) : '','</td>';
+	echo '<th class="bug-id category" width="15%">', $tpl_show_id ? lang_get( 'id' ) : '', '</th>';
+	echo '<th class="bug-project category" width="20%">', $tpl_show_project ? lang_get( 'email_project' ) : '', '</th>';
+	echo '<th class="bug-category category" width="15%">', $tpl_show_category ? lang_get( 'category' ) : '', '</th>';
+	echo '<th class="bug-view-status category" width="15%">', $tpl_show_view_state ? lang_get( 'view_status' ) : '', '</th>';
+	echo '<th class="bug-date-submitted category" width="15%">', $tpl_show_date_submitted ? lang_get( 'date_submitted' ) : '', '</th>';
+	echo '<th class="bug-last-modified category" width="20%">', $tpl_show_last_updated ? lang_get( 'last_update' ) : '','</th>';
 	echo '</tr>';
 
 	echo '<tr ', helper_alternate_class(null, 'row-1 bug-header-data', 'row-2 bug-header-data'), '>';
@@ -352,7 +352,7 @@ if ( $tpl_show_id || $tpl_show_project || $tpl_show_category || $tpl_show_view_s
 	echo '<td class="bug-project">', $tpl_project_name, '</td>';
 
 	# Category
-	echo '<td class="bug-category">', $tpl_category, '</td>';
+	echo '<th class="bug-category">', $tpl_category, '</th>';
 
 	# View Status
 	echo '<td class="bug-view-status">', $tpl_bug_view_state_enum, '</td>';
@@ -379,7 +379,7 @@ if ( $tpl_show_reporter ) {
 	$t_spacer = 4;
 
 	# Reporter
-	echo '<td class="bug-reporter category">', lang_get( 'reporter' ), '</td>';
+	echo '<th class="bug-reporter category">', lang_get( 'reporter' ), '</th>';
 	echo '<td class="bug-reporter">';
 	print_user_with_subject( $tpl_bug->reporter_id, $tpl_bug_id );
 	echo '</td>';
@@ -398,14 +398,14 @@ if ( $tpl_show_handler || $tpl_show_due_date ) {
 	$t_spacer = 2;
 
 	# Handler
-	echo '<td class="bug-assigned-to category">', lang_get( 'assigned_to' ), '</td>';
+	echo '<th class="bug-assigned-to category">', lang_get( 'assigned_to' ), '</th>';
 	echo '<td class="bug-assigned-to">';
 	print_user_with_subject( $tpl_bug->handler_id, $tpl_bug_id );
 	echo '</td>';
 
 	# Due Date
 	if ( $tpl_show_due_date ) {
-		echo '<td class="bug-due-date category">', lang_get( 'due_date' ), '</td>';
+		echo '<th class="bug-due-date category">', lang_get( 'due_date' ), '</th>';
 
 		if ( $tpl_bug_overdue ) {
 			echo '<td class="bug-due-date overdue">', $tpl_bug_due_date, '</td>';
@@ -431,7 +431,7 @@ if ( $tpl_show_priority || $tpl_show_severity || $tpl_show_reproducibility ) {
 
 	# Priority
 	if ( $tpl_show_priority ) {
-		echo '<td class="bug-priority category">', lang_get( 'priority' ), '</td>';
+		echo '<th class="bug-priority category">', lang_get( 'priority' ), '</th>';
 		echo '<td class="bug-priority">', $tpl_priority, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -439,7 +439,7 @@ if ( $tpl_show_priority || $tpl_show_severity || $tpl_show_reproducibility ) {
 
 	# Severity
 	if ( $tpl_show_severity ) {
-		echo '<td class="bug-severity category">', lang_get( 'severity' ), '</td>';
+		echo '<th class="bug-severity category">', lang_get( 'severity' ), '</th>';
 		echo '<td class="bug-severity">', $tpl_severity, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -447,7 +447,7 @@ if ( $tpl_show_priority || $tpl_show_severity || $tpl_show_reproducibility ) {
 
 	# Reproducibility
 	if ( $tpl_show_reproducibility ) {
-		echo '<td class="bug-reproducibility category">', lang_get( 'reproducibility' ), '</td>';
+		echo '<th class="bug-reproducibility category">', lang_get( 'reproducibility' ), '</th>';
 		echo '<td class="bug-reproducibility">', $tpl_reproducibility, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -472,7 +472,7 @@ if ( $tpl_show_status || $tpl_show_resolution ) {
 
 	# Status
 	if ( $tpl_show_status ) {
-		echo '<td class="bug-status category">', lang_get( 'status' ), '</td>';
+		echo '<th class="bug-status category">', lang_get( 'status' ), '</th>';
 		echo '<td class="bug-status" bgcolor="', get_status_color( $tpl_bug->status ), '">', $tpl_status, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -480,7 +480,7 @@ if ( $tpl_show_status || $tpl_show_resolution ) {
 
 	# Resolution
 	if ( $tpl_show_resolution ) {
-		echo '<td class="bug-resolution category">', lang_get( 'resolution' ), '</td>';
+		echo '<th class="bug-resolution category">', lang_get( 'resolution' ), '</th>';
 		echo '<td class="bug-resolution">', $tpl_resolution, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -505,7 +505,7 @@ if ( $tpl_show_projection || $tpl_show_eta ) {
 
 	if ( $tpl_show_projection ) {
 		# Projection
-		echo '<td class="bug-projection category">', lang_get( 'projection' ), '</td>';
+		echo '<th class="bug-projection category">', lang_get( 'projection' ), '</th>';
 		echo '<td class="bug-projection">', $tpl_projection, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -513,7 +513,7 @@ if ( $tpl_show_projection || $tpl_show_eta ) {
 
 	# ETA
 	if ( $tpl_show_eta ) {
-		echo '<td class="bug-eta category">', lang_get( 'eta' ), '</td>';
+		echo '<th class="bug-eta category">', lang_get( 'eta' ), '</th>';
 		echo '<td class="bug-eta">', $tpl_eta, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -534,7 +534,7 @@ if ( $tpl_show_platform || $tpl_show_os || $tpl_show_os_version ) {
 
 	# Platform
 	if ( $tpl_show_platform ) {
-		echo '<td class="bug-platform category">', lang_get( 'platform' ), '</td>';
+		echo '<th class="bug-platform category">', lang_get( 'platform' ), '</th>';
 		echo '<td class="bug-platform">', $tpl_platform, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -542,7 +542,7 @@ if ( $tpl_show_platform || $tpl_show_os || $tpl_show_os_version ) {
 
 	# Operating System
 	if ( $tpl_show_os ) {
-		echo '<td class="bug-os category">', lang_get( 'os' ), '</td>';
+		echo '<th class="bug-os category">', lang_get( 'os' ), '</th>';
 		echo '<td class="bug-os">', $tpl_os, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -550,7 +550,7 @@ if ( $tpl_show_platform || $tpl_show_os || $tpl_show_os_version ) {
 
 	# OS Version
 	if ( $tpl_show_os_version ) {
-		echo '<td class="bug-os-version category">', lang_get( 'os_version' ), '</td>';
+		echo '<th class="bug-os-version category">', lang_get( 'os_version' ), '</th>';
 		echo '<td class="bug-os-version">', $tpl_os_version, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -574,7 +574,7 @@ if ( $tpl_show_product_version || $tpl_show_product_build ) {
 
 	# Product Version
 	if ( $tpl_show_product_version ) {
-		echo '<td class="bug-product-version category">', lang_get( 'product_version' ), '</td>';
+		echo '<th class="bug-product-version category">', lang_get( 'product_version' ), '</th>';
 		echo '<td class="bug-product-version">', $tpl_product_version_string, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -582,7 +582,7 @@ if ( $tpl_show_product_version || $tpl_show_product_build ) {
 
 	# Product Build
 	if ( $tpl_show_product_build ) {
-		echo '<td class="bug-product-build category">', lang_get( 'product_build' ), '</td>';
+		echo '<th class="bug-product-build category">', lang_get( 'product_build' ), '</th>';
 		echo '<td class="bug-product-build">', $tpl_product_build, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -606,7 +606,7 @@ if ( $tpl_show_target_version || $tpl_show_fixed_in_version ) {
 	# target version
 	if ( $tpl_show_target_version ) {
 		# Target Version
-		echo '<td class="bug-target-version category">', lang_get( 'target_version' ), '</td>';
+		echo '<th class="bug-target-version category">', lang_get( 'target_version' ), '</th>';
 		echo '<td class="bug-target-version">', $tpl_target_version_string, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -614,7 +614,7 @@ if ( $tpl_show_target_version || $tpl_show_fixed_in_version ) {
 
 	# fixed in version
 	if ( $tpl_show_fixed_in_version ) {
-		echo '<td class="bug-fixed-in-version category">', lang_get( 'fixed_in_version' ), '</td>';
+		echo '<th class="bug-fixed-in-version category">', lang_get( 'fixed_in_version' ), '</th>';
 		echo '<td class="bug-fixed-in-version">', $tpl_fixed_in_version_string, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -642,7 +642,7 @@ echo '<tr class="spacer"><td colspan="6"></td></tr>';
 # Summary
 if ( $tpl_show_summary ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="bug-summary category">', lang_get( 'summary' ), '</td>';
+	echo '<th class="bug-summary category">', lang_get( 'summary' ), '</th>';
 	echo '<td class="bug-summary" colspan="5">', $tpl_summary, '</td>';
 	echo '</tr>';
 }
@@ -650,7 +650,7 @@ if ( $tpl_show_summary ) {
 # Description
 if ( $tpl_show_description ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="bug-description category">', lang_get( 'description' ), '</td>';
+	echo '<th class="bug-description category">', lang_get( 'description' ), '</th>';
 	echo '<td class="bug-description" colspan="5">', $tpl_description, '</td>';
 	echo '</tr>';
 }
@@ -658,7 +658,7 @@ if ( $tpl_show_description ) {
 # Steps to Reproduce
 if ( $tpl_show_steps_to_reproduce ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="bug-steps-to-reproduce category">', lang_get( 'steps_to_reproduce' ), '</td>';
+	echo '<th class="bug-steps-to-reproduce category">', lang_get( 'steps_to_reproduce' ), '</th>';
 	echo '<td class="bug-steps-to-reproduce" colspan="5">', $tpl_steps_to_reproduce, '</td>';
 	echo '</tr>';
 }
@@ -666,7 +666,7 @@ if ( $tpl_show_steps_to_reproduce ) {
 # Additional Information
 if ( $tpl_show_additional_information ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="bug-additional-information category">', lang_get( 'additional_information' ), '</td>';
+	echo '<th class="bug-additional-information category">', lang_get( 'additional_information' ), '</th>';
 	echo '<td class="bug-additional-information" colspan="5">', $tpl_additional_information, '</td>';
 	echo '</tr>';
 }
@@ -674,7 +674,7 @@ if ( $tpl_show_additional_information ) {
 # Tagging
 if ( $tpl_show_tags ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="bug-tags category">', lang_get( 'tags' ), '</td>';
+	echo '<th class="bug-tags category">', lang_get( 'tags' ), '</th>';
 	echo '<td class="bug-tags" colspan="5">';
 	tag_display_attached( $tpl_bug_id );
 	echo '</td></tr>';
@@ -683,7 +683,7 @@ if ( $tpl_show_tags ) {
 # Attachments Form
 if ( $tpl_can_attach_tag ) {
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="bug-attach-tags category">', lang_get( 'tag_attach_long' ), '</td>';
+	echo '<th class="bug-attach-tags category">', lang_get( 'tag_attach_long' ), '</th>';
 	echo '<td class="bug-attach-tags" colspan="5">';
 	print_tag_attach_form( $tpl_bug_id );
 	echo '</td></tr>';
@@ -705,7 +705,7 @@ foreach( $t_related_custom_field_ids as $t_id ) {
 	$t_def = custom_field_get_definition( $t_id );
 
 	echo '<tr ', helper_alternate_class(), '>';
-	echo '<td class="bug-custom-field category">', string_display( lang_get_defaulted( $t_def['name'] ) ), '</td>';
+	echo '<th class="bug-custom-field category">', string_display( lang_get_defaulted( $t_def['name'] ) ), '</th>';
 	echo '<td class="bug-custom-field" colspan="5">';
 	print_custom_field_value( $t_def, $t_id, $f_bug_id );
 	echo '</td></tr>';
@@ -719,7 +719,7 @@ if ( $t_custom_fields_found ) {
 # Attachments
 if ( $tpl_show_attachments ) {
 	echo '<tr id="attachments" ', helper_alternate_class(), '>';
-	echo '<td class="bug-attachments category">', lang_get( 'attached_files' ), '</td>';
+	echo '<th class="bug-attachments category">', lang_get( 'attached_files' ), '</th>';
 	echo '<td class="bug-attachments" colspan="5">';
 	print_bug_attachments_list( $tpl_bug_id );
 	echo '</td></tr>';
diff --git a/bugnote_add_inc.php b/bugnote_add_inc.php
index e98a1ac..d5b8ee6 100644
--- a/bugnote_add_inc.php
+++ b/bugnote_add_inc.php
@@ -68,18 +68,18 @@ require_api( 'lang_api.php' );
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<?php echo lang_get( 'bugnote' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<textarea name="bugnote_text" cols="80" rows="10"></textarea>
 	</td>
 </tr>
 <?php if ( access_has_bug_level( config_get( 'set_view_status_threshold' ), $f_bug_id ) ) { ?>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'view_status' ) ?>
-	</td>
+	</th>
 	<td>
 <?php
 		$t_default_bugnote_view_status = config_get( 'default_bugnote_view_status' );
@@ -99,9 +99,9 @@ require_api( 'lang_api.php' );
 <?php if ( config_get('time_tracking_enabled') ) { ?>
 <?php if ( access_has_bug_level( config_get( 'time_tracking_edit_threshold' ), $f_bug_id ) ) { ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'time_tracking' ) ?> (HH:MM)
-	</td>
+	</th>
 	<td>
 		<?php if ( config_get( 'time_tracking_stopwatch' ) && config_get( 'use_javascript' ) ) { ?>
 		<script type="text/javascript">
diff --git a/core/authentication_api.php b/core/authentication_api.php
index 00dcf82..ee8d56b 100644
--- a/core/authentication_api.php
+++ b/core/authentication_api.php
@@ -712,12 +712,12 @@ function auth_reauthenticate_page( $p_user_id, $p_username ) {
 </tr>
 
 <tr class="row-1">
-	<td class="category"><?php echo lang_get( 'username' );?></td>
+	<th class="category"><?php echo lang_get( 'username' );?></th>
 	<td><input type="text" disabled="disabled" size="32" maxlength="<?php echo USERLEN;?>" value="<?php echo $p_username;?>" /></td>
 </tr>
 
 <tr class="row-2">
-	<td class="category"><?php echo lang_get( 'password' );?></td>
+	<th class="category"><?php echo lang_get( 'password' );?></th>
 	<td><input type="password" name="password" size="16" maxlength="<?php echo PASSLEN;?>" /></td>
 </tr>
 
diff --git a/core/bug_group_action_api.php b/core/bug_group_action_api.php
index fa113b9..d64034e 100644
--- a/core/bug_group_action_api.php
+++ b/core/bug_group_action_api.php
@@ -70,9 +70,9 @@ function bug_group_action_print_bug_list( $p_bug_ids_array ) {
 	echo '<div align="center">';
 	echo '<table class="width75" cellspacing="1">';
 	echo '<tr class="row-1">';
-	echo '<td class="category" colspan="2">';
+	echo '<th class="category" colspan="2">';
 	echo lang_get( 'actiongroup_bugs' );
-	echo '</td>';
+	echo '</th>';
 	echo '</tr>';
 
 	$t_i = 1;
diff --git a/core/relationship_api.php b/core/relationship_api.php
index af941ae..51751c8 100644
--- a/core/relationship_api.php
+++ b/core/relationship_api.php
@@ -855,7 +855,7 @@ function relationship_view_box( $p_bug_id ) {
 		if( access_has_bug_level( config_get( 'update_bug_threshold' ), $p_bug_id ) ) {
 			?>
 <tr class="row-1">
-	<td class="category"><?php echo lang_get( 'add_new_relationship' )?></td>
+	<th class="category"><?php echo lang_get( 'add_new_relationship' )?></th>
 	<td><?php echo lang_get( 'this_bug' )?>
 		<form method="post" action="bug_relationship_add.php">
 		<?php echo form_security_field( 'bug_relationship_add' ) ?>
diff --git a/css/default.css b/css/default.css
index b548893..37aae6c 100644
--- a/css/default.css
+++ b/css/default.css
@@ -49,11 +49,11 @@ table.width75		{ width: 75%;  border: solid 1px #000000; }
 table.width60		{ width: 60%;  border: solid 1px #000000; }
 table.width50		{ width: 50%;  border: solid 1px #000000; }
 
-td 					{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; padding: 4px; text-align: left; }
+td,th 				{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; padding: 4px; text-align: left; }
 td.center			{ text-align: center; }
 td.left				{ text-align: left; }
 td.right			{ text-align: right; }
-td.category			{ background-color: #c8c8e8; color: #000000; font-weight: bold; vertical-align : top; }
+td.category, th.category		{ background-color: #c8c8e8; color: #000000; font-weight: bold; vertical-align : top; }
 td.overdue			{ background-color: #ff0000; color: #000000; font-weight: bold; }
 
 td.col-1			{ background-color: #d8d8d8; color: #000000; }
@@ -61,9 +61,9 @@ td.col-2			{ background-color: #e8e8e8; color: #000000; }
 td.form-title		{ background-color: #ffffff; color: #000000; font-weight: bold; text-align: left; }
 td.form-title-caps	{ background-color: #ffffff; color: #000000; font-weight: bold; text-align: left; text-transform: uppercase; }
 td.nopad			{ padding: 0px; }
-td.small-caption	{ font-size: 8pt; }
+td.small-caption, th.small-caption	{ font-size: 8pt; }
 td.print			{ font-size: 8pt; text-align: left; padding: 2px; }
-td.print-category	{ font-size: 8pt; color: #000000; font-weight: bold; text-align: right; padding: 2px; }
+td.print-category, th.print-category	{ font-size: 8pt; color: #000000; font-weight: bold; text-align: right; padding: 2px; }
 td.print-overdue	{ font-size: 8pt; color: #000000; font-weight: bold; padding: 2px; }
 td.print-bottom		{ border-bottom: 1px solid #000000; }
 td.print-spacer		{ background-color: #ffffff; color: #000000; font-size: 1pt; line-height: 0.1; padding: 0px;}
diff --git a/login_page.php b/login_page.php
index 2e5b36d..d25dda9 100644
--- a/login_page.php
+++ b/login_page.php
@@ -141,34 +141,34 @@ echo '</div>';
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'username' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="username" size="28" maxlength="<?php echo USERLEN;?>" value="<?php echo string_attribute( $f_username ); ?>" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'password' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="password" name="password" size="16" maxlength="<?php echo PASSLEN;?>" />
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'save_login' ) ?>
-	</td>
+	</th>
 	<td>
 	<input type="checkbox" name="perm_login" <?php echo ( $f_perm_login ? 'checked="checked" ' : '' ) ?>/>
 	</td>
 </tr>
 <?php if ( $t_session_validation ) { ?>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'secure_session' ) ?>
-	</td>
+	</th>
 	<td>
 	<input type="checkbox" name="secure_session" <?php echo ( $t_default_secure_session ? 'checked="checked" ' : '' ) ?>/>
 	<?php echo '<span class="small">' . lang_get( 'secure_session_long' ) . '</span>' ?>
diff --git a/login_select_proj_page.php b/login_select_proj_page.php
index 394e9bf..5166a1c 100644
--- a/login_select_proj_page.php
+++ b/login_select_proj_page.php
@@ -73,9 +73,9 @@ html_page_top( lang_get( 'select_project_button' ) );
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="40%">
+	<th class="category" width="40%">
 		<?php echo lang_get( 'choose_project' ) ?>
-	</td>
+	</th>
 	<td width="60%">
 		<select name="project_id">
 		<?php print_project_option_list( ALL_PROJECTS, false, null, true ) ?>
@@ -83,9 +83,9 @@ html_page_top( lang_get( 'select_project_button' ) );
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'make_default' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="make_default" />
 	</td>
diff --git a/lost_pwd_page.php b/lost_pwd_page.php
index 5ca20d5..e479cfc 100644
--- a/lost_pwd_page.php
+++ b/lost_pwd_page.php
@@ -71,17 +71,17 @@ $t_allow_passwd = helper_call_custom_function( 'auth_can_change_password', array
 if ( $t_allow_passwd ) {
 ?>
 <tr class="row-1">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<?php echo lang_get( 'username' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<input type="text" name="username" size="32" maxlength="<?php echo USERLEN;?>" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<?php echo lang_get( 'email' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<?php print_email_input( 'email', '' ) ?>
 	</td>
diff --git a/manage_columns_inc.php b/manage_columns_inc.php
index cc0b257..d392da3 100644
--- a/manage_columns_inc.php
+++ b/manage_columns_inc.php
@@ -102,9 +102,9 @@ echo '<br />';
 
 <!-- view issues columns -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'all_columns_title' )?>
-	</td>
+	</th>
 	<td>
 		<textarea <?php echo helper_get_tab_index() ?> name="all_columns" readonly="readonly" cols="80" rows="5"><?php echo $t_all ?></textarea>
 	</td>
@@ -112,9 +112,9 @@ echo '<br />';
 
 <!-- view issues columns -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'view_issues_columns_title' ), '<span class="required">*</span>' ?>
-	</td>
+	</th>
 	<td>
 		<textarea <?php echo helper_get_tab_index() ?> name="view_issues_columns" cols="80" rows="5"><?php echo $t_view_issues ?></textarea>
 	</td>
@@ -122,9 +122,9 @@ echo '<br />';
 
 <!-- print issues columns -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'print_issues_columns_title' ), '<span class="required">*</span>' ?>
-	</td>
+	</th>
 	<td>
 		<textarea <?php echo helper_get_tab_index() ?> name="print_issues_columns" cols="80" rows="5"><?php echo $t_print_issues ?></textarea>
 	</td>
@@ -132,9 +132,9 @@ echo '<br />';
 
 <!-- csv columns -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'csv_columns_title' ), '<span class="required">*</span>' ?>
-	</td>
+	</th>
 	<td>
 		<textarea <?php echo helper_get_tab_index() ?> name="csv_columns" cols="80" rows="5"><?php echo $t_csv ?></textarea>
 	</td>
@@ -142,9 +142,9 @@ echo '<br />';
 
 <!-- csv columns -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'excel_columns_title' ), '<span class="required">*</span>' ?>
-	</td>
+	</th>
 	<td>
 		<textarea <?php echo helper_get_tab_index() ?> name="excel_columns" cols="80" rows="5"><?php echo $t_excel ?></textarea>
 	</td>
diff --git a/manage_custom_field_edit_page.php b/manage_custom_field_edit_page.php
index 9c083e3..4707435 100644
--- a/manage_custom_field_edit_page.php
+++ b/manage_custom_field_edit_page.php
@@ -76,17 +76,17 @@ $t_definition = custom_field_get_definition( $f_field_id );
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_name' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="text" name="name" size="32" maxlength="64" value="<?php echo string_attribute( $t_definition['name'] ) ?>" />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_type' ) ?>
-			</td>
+			</th>
 			<td>
 				<select name="type">
 					<?php print_enum_string_option_list( 'custom_field_type', $t_definition['type'] ) ?>
@@ -94,33 +94,33 @@ $t_definition = custom_field_get_definition( $f_field_id );
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_possible_values' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="text" name="possible_values" size="32" value="<?php echo string_attribute( $t_definition['possible_values'] ) ?>" />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_default_value' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="text" name="default_value" size="32" maxlength="255" value="<?php echo string_attribute( $t_definition['default_value'] ) ?>" />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_valid_regexp' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="text" name="valid_regexp" size="32" maxlength="255" value="<?php echo string_attribute( $t_definition['valid_regexp'] ) ?>" />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_access_level_r' ) ?>
-			</td>
+			</th>
 			<td>
 				<select name="access_level_r">
 					<?php print_enum_string_option_list( 'access_levels', $t_definition['access_level_r'] ) ?>
@@ -128,9 +128,9 @@ $t_definition = custom_field_get_definition( $f_field_id );
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_access_level_rw' ) ?>
-			</td>
+			</th>
 			<td>
 				<select name="access_level_rw">
 					<?php print_enum_string_option_list( 'access_levels', $t_definition['access_level_rw'] ) ?>
@@ -138,89 +138,89 @@ $t_definition = custom_field_get_definition( $f_field_id );
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_length_min' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="text" name="length_min" size="32" maxlength="64" value="<?php echo $t_definition['length_min'] ?>" />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_length_max' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="text" name="length_max" size="32" maxlength="64" value="<?php echo $t_definition['length_max'] ?>" />
 			</td>
 		</tr>
         <tr <?php echo helper_alternate_class() ?>>
-            <td class="category">
+            <th class="category">
                 <?php echo lang_get( 'custom_field_filter_by' ) ?>
-            </td>
+            </th>
             <td>
                 <input type="checkbox" name="filter_by" <?php if ( $t_definition['filter_by'] ) { ?>checked="checked"<?php } ?>  />
             </td>
         </tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_display_report' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="checkbox" name="display_report" value="1" <?php check_checked( $t_definition['display_report'] ) ?> />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_display_update' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="checkbox" name="display_update" value="1" <?php check_checked( $t_definition['display_update'] ) ?> />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_display_resolved' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="checkbox" name="display_resolved" value="1" <?php check_checked( $t_definition['display_resolved'] ) ?> />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_display_closed' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="checkbox" name="display_closed" value="1" <?php check_checked( $t_definition['display_closed'] ) ?> />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_require_report' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="checkbox" name="require_report" value="1" <?php check_checked( $t_definition['require_report'] ) ?> />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_require_update' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="checkbox" name="require_update" value="1" <?php check_checked( $t_definition['require_update'] ) ?> />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_require_resolved' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="checkbox" name="require_resolved" value="1" <?php check_checked( $t_definition['require_resolved'] ) ?> />
 			</td>
 		</tr>
 		<tr <?php echo helper_alternate_class() ?>>
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'custom_field_require_closed' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="checkbox" name="require_closed" value="1" <?php check_checked( $t_definition['require_closed'] ) ?> />
 			</td>
@@ -265,9 +265,9 @@ $t_definition = custom_field_get_definition( $f_field_id );
 
 <!-- Assigned Projects -->
 <tr <?php echo helper_alternate_class( 1 ) ?> valign="top">
-	<td class="category" width="30%">
+	<th class="category" width="30%">
 		<?php echo lang_get( 'linked_projects_label' ) ?>
-	</td>
+	</th>
 	<td width="70%">
 		<?php print_custom_field_projects_list( $f_field_id ) ?>
 	</td>
@@ -275,9 +275,9 @@ $t_definition = custom_field_get_definition( $f_field_id );
 
 <!-- Unassigend Project Selection -->
 <tr <?php echo helper_alternate_class() ?> valign="top">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'projects_title_label' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="project_id[]" multiple="multiple" size="5">
 			<?php print_project_option_list( null, false ); ?>
@@ -287,9 +287,9 @@ $t_definition = custom_field_get_definition( $f_field_id );
 
 <!-- Sequence Number -->
 <tr <?php echo helper_alternate_class() ?> valign="top">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'custom_field_sequence_label' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="sequence" value="0" />
 	</td>
diff --git a/manage_custom_field_page.php b/manage_custom_field_page.php
index f7a02d4..661a082 100644
--- a/manage_custom_field_page.php
+++ b/manage_custom_field_page.php
@@ -61,21 +61,21 @@ print_manage_menu( 'manage_custom_field_page.php' );
 		</td>
 	</tr>
 	<tr>
-		<td class="category" width="12%">
+		<th class="category" width="12%">
 			<?php echo lang_get( 'custom_field_name' ) ?>
-		</td>
-		<td class="category" width="12%">
+		</th>
+		<th class="category" width="12%">
 			<?php echo lang_get( 'custom_field_project_count' ) ?>
-		</td>
-		<td class="category" width="12%">
+		</th>
+		<th class="category" width="12%">
 			<?php echo lang_get( 'custom_field_type' ) ?>
-		</td>
-		<td class="category" width="40%">
+		</th>
+		<th class="category" width="40%">
 			<?php echo lang_get( 'custom_field_possible_values' ) ?>
-		</td>
-		<td class="category" width="12%">
+		</th>
+		<th class="category" width="12%">
 			<?php echo lang_get( 'custom_field_default_value' ) ?>
-		</td>
+		</th>
 	</tr>
 	<?php
 		$t_custom_fields = custom_field_get_ids();
diff --git a/manage_overview_page.php b/manage_overview_page.php
index b9617a5..5c0d335 100644
--- a/manage_overview_page.php
+++ b/manage_overview_page.php
@@ -60,12 +60,12 @@ print_manage_menu();
 </tr>
 
 <tr <?php echo helper_alternate_class() ?>>
-<td class="category"><?php echo lang_get( 'mantis_version' ) ?></td>
+<th class="category"><?php echo lang_get( 'mantis_version' ) ?></th>
 <td><?php echo MANTIS_VERSION, ( $t_version_suffix ? " $t_version_suffix" : '' ) ?></td>
 </tr>
 
 <tr <?php echo helper_alternate_class() ?>>
-<td class="category"><?php echo lang_get( 'schema_version' ) ?></td>
+<th class="category"><?php echo lang_get( 'schema_version' ) ?></th>
 <td><?php echo config_get( 'database_version' ) ?></td>
 </tr>
 
@@ -78,17 +78,17 @@ $t_is_admin = current_user_is_administrator();
 if ( $t_is_admin ) {
 ?>
 <tr <?php echo helper_alternate_class() ?>>
-<td class="category"><?php echo lang_get( 'site_path' ) ?></td>
+<th class="category"><?php echo lang_get( 'site_path' ) ?></th>
 <td><?php echo config_get( 'absolute_path' ) ?></td>
 </tr>
 
 <tr <?php echo helper_alternate_class() ?>>
-<td class="category"><?php echo lang_get( 'core_path' ) ?></td>
+<th class="category"><?php echo lang_get( 'core_path' ) ?></th>
 <td><?php echo config_get( 'core_path' ) ?></td>
 </tr>
 
 <tr <?php echo helper_alternate_class() ?>>
-<td class="category"><?php echo lang_get( 'plugin_path' ) ?></td>
+<th class="category"><?php echo lang_get( 'plugin_path' ) ?></th>
 <td><?php echo config_get( 'plugin_path' ) ?></td>
 </tr>
 
diff --git a/manage_proj_cat_edit_page.php b/manage_proj_cat_edit_page.php
index 24021ec..d0da92b 100644
--- a/manage_proj_cat_edit_page.php
+++ b/manage_proj_cat_edit_page.php
@@ -85,9 +85,9 @@ print_manage_menu( 'manage_proj_cat_edit_page.php' );
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'assigned_to' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="assigned_to">
 			<option value="0"></option>
diff --git a/manage_proj_create_page.php b/manage_proj_create_page.php
index 22bf748..b59792d 100644
--- a/manage_proj_create_page.php
+++ b/manage_proj_create_page.php
@@ -79,17 +79,17 @@ $f_parent_id = gpc_get( 'parent_id', null );
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<span class="required">*</span><?php echo lang_get( 'project_name' )?>
-	</td>
+	</th>
 	<td width="75%">
 		<input type="text" name="name" size="64" maxlength="128" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'status' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="status">
 		<?php print_enum_string_option_list( 'project_status' ) ?>
@@ -97,9 +97,9 @@ $f_parent_id = gpc_get( 'parent_id', null );
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'view_status' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="view_state">
 			<?php print_enum_string_option_list( 'view_state' ) ?>
@@ -107,18 +107,18 @@ $f_parent_id = gpc_get( 'parent_id', null );
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'inherit_global' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="inherit_global" checked="checked" />
 	</td>
 </tr>
 <?php if ( !is_null( $f_parent_id ) ) { ?>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'inherit_parent' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="inherit_parent" checked="checked" />
 	</td>
@@ -134,9 +134,9 @@ $f_parent_id = gpc_get( 'parent_id', null );
 		}
 	?>
 		<tr class="row-2">
-			<td class="category">
+			<th class="category">
 				<?php echo lang_get( 'upload_file_path' ) ?>
-			</td>
+			</th>
 			<td>
 				<input type="text" name="file_path" size="70" maxlength="250" value="<?php echo $t_default_upload_path ?>" />
 			</td>
@@ -145,9 +145,9 @@ $f_parent_id = gpc_get( 'parent_id', null );
 	}
 ?>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'description' ) ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="description" cols="60" rows="5"></textarea>
 	</td>
diff --git a/manage_proj_edit_page.php b/manage_proj_edit_page.php
index 6cb3d54..f02bb54 100644
--- a/manage_proj_edit_page.php
+++ b/manage_proj_edit_page.php
@@ -102,9 +102,9 @@ print_manage_menu( 'manage_proj_edit_page.php' );
 
 <!-- Name -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<?php echo lang_get( 'project_name' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<input type="text" name="name" size="50" maxlength="128" value="<?php echo string_attribute( $row['name'] ) ?>" />
 	</td>
@@ -112,9 +112,9 @@ print_manage_menu( 'manage_proj_edit_page.php' );
 
 <!-- Status -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'status' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="status">
 		<?php print_enum_string_option_list( 'project_status', $row['status'] ) ?>
@@ -124,9 +124,9 @@ print_manage_menu( 'manage_proj_edit_page.php' );
 
 <!-- Enabled -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'enabled' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="enabled" <?php check_checked( $row['enabled'], ON ); ?> />
 	</td>
@@ -134,9 +134,9 @@ print_manage_menu( 'manage_proj_edit_page.php' );
 
 <!-- Category Inheritance -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'inherit_global' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="inherit_global" <?php check_checked( $row['inherit_global'], ON ); ?> />
 	</td>
@@ -144,9 +144,9 @@ print_manage_menu( 'manage_proj_edit_page.php' );
 
 <!-- View Status (public/private) -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'view_status' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="view_state">
 			<?php print_enum_string_option_list( 'view_state', $row['view_state']) ?>
@@ -157,9 +157,9 @@ print_manage_menu( 'manage_proj_edit_page.php' );
 <!-- File upload path (if uploading is enabled) -->
 <?php if ( file_is_uploading_enabled() ) { ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'upload_file_path' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="file_path" size="50" maxlength="250" value="<?php echo string_attribute( $row['file_path'] ) ?>" />
 	</td>
@@ -168,9 +168,9 @@ print_manage_menu( 'manage_proj_edit_page.php' );
 
 <!-- Description -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'description' ) ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="description" cols="60" rows="5"><?php echo string_textarea( $row['description'] ) ?></textarea>
 	</td>
@@ -706,12 +706,12 @@ if ( $t_can_manage_users ) {
 				</td>
 			</tr>
 			<tr class="row-1" valign="top">
-				<td class="category">
+				<th class="category">
 					<?php echo lang_get( 'username' ) ?>
-				</td>
-				<td class="category">
+				</th>
+				<th class="category">
 					<?php echo lang_get( 'access_level' ) ?>
-				</td>
+				</th>
 				<td class="category">&nbsp;  </td>
 			</tr>
 			<tr class="row-1" valign="top">
diff --git a/manage_proj_ver_edit_page.php b/manage_proj_ver_edit_page.php
index a140717..59da6ed 100644
--- a/manage_proj_ver_edit_page.php
+++ b/manage_proj_ver_edit_page.php
@@ -75,17 +75,17 @@ print_manage_menu( 'manage_proj_ver_edit_page.php' );
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'version' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="new_version" size="32" maxlength="64" value="<?php echo string_attribute( $t_version->version ) ?>" />
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'date_order' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" id="date_order" name="date_order" size="32" value="<?php echo (date_is_null( $t_version->date_order ) ? '' : string_attribute( date( config_get( 'calendar_date_format' ), $t_version->date_order ) ) ) ?>" />
 		<?php
@@ -95,25 +95,25 @@ print_manage_menu( 'manage_proj_ver_edit_page.php' );
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'description' ) ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="description" cols="60" rows="5"><?php echo string_attribute( $t_version->description ) ?></textarea>
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'released' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="released" <?php check_checked( $t_version->released, VERSION_RELEASED ); ?> />
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'obsolete' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="obsolete" <?php check_checked( $t_version->obsolete, true ); ?> />
 	</td>
diff --git a/manage_tags_page.php b/manage_tags_page.php
index 5a90a7d..fc800b0 100644
--- a/manage_tags_page.php
+++ b/manage_tags_page.php
@@ -217,9 +217,9 @@ foreach ( $t_result as $t_tag_row ) {
 		</td>
 	</tr>
 	<tr class="row-2">
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'tag_description' ) ?>
-		</td>
+		</th>
 		<td><textarea name="description" cols="80" rows="6"></textarea>
 		</td>
 	</tr>
diff --git a/manage_user_create_page.php b/manage_user_create_page.php
index f64b4ec..9122a86 100644
--- a/manage_user_create_page.php
+++ b/manage_user_create_page.php
@@ -64,9 +64,9 @@ print_manage_menu( 'manage_user_create_page.php' );
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<?php echo lang_get( 'username' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<input type="text" name="username" size="32" maxlength="<?php echo USERLEN;?>" />
 	</td>
@@ -75,9 +75,9 @@ print_manage_menu( 'manage_user_create_page.php' );
 	if ( !$t_ldap || config_get( 'use_ldap_realname' ) == OFF ) {
 ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'realname' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="text" name="realname" size="32" maxlength="<?php echo REALLEN;?>" />
 	</td>
@@ -88,9 +88,9 @@ print_manage_menu( 'manage_user_create_page.php' );
 	if ( !$t_ldap || config_get( 'use_ldap_email' ) == OFF ) {
 ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email' ) ?>
-	</td>
+	</th>
 	<td>
 		<?php print_email_input( 'email', '' ) ?>
 	</td>
@@ -101,17 +101,17 @@ print_manage_menu( 'manage_user_create_page.php' );
 	if ( OFF == config_get( 'send_reset_password' ) )  {
 ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'password' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="password" name="password" size="32" maxlength="<?php echo PASSLEN;?>" />
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'verify_password' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="password" name="password_verify" size="32" maxlength="<?php echo PASSLEN;?>" />
 	</td>
@@ -120,9 +120,9 @@ print_manage_menu( 'manage_user_create_page.php' );
 	}
 ?>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'access_level' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="access_level">
 			<?php print_project_access_levels_option_list( config_get( 'default_new_account_access_level' ) ) ?>
@@ -130,17 +130,17 @@ print_manage_menu( 'manage_user_create_page.php' );
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'enabled' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="enabled" checked="checked" />
 	</td>
 </tr>
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'protected' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="protected" />
 	</td>
diff --git a/manage_user_edit_page.php b/manage_user_edit_page.php
index cfad869..393634d 100644
--- a/manage_user_edit_page.php
+++ b/manage_user_edit_page.php
@@ -100,9 +100,9 @@ print_manage_menu();
 
 <!-- Username -->
 <tr <?php echo helper_alternate_class( 1 ) ?>>
-	<td class="category" width="30%">
+	<th class="category" width="30%">
 		<?php echo lang_get( 'username_label' ) ?>
-	</td>
+	</th>
 	<td width="70%">
 		<input type="text" size="16" maxlength="<?php echo USERLEN;?>" name="username" value="<?php echo $t_user['username'] ?>" />
 	</td>
@@ -110,9 +110,9 @@ print_manage_menu();
 
 <!-- Realname -->
 <tr <?php echo helper_alternate_class( 1 ) ?>>
-	<td class="category" width="30%">
+	<th class="category" width="30%">
 		<?php echo lang_get( 'realname_label' ) ?>
-	</td>
+	</th>
 	<td width="70%">
 		<?php
 			if ( !$t_ldap || config_get( 'use_ldap_realname' ) == OFF ) {
@@ -128,9 +128,9 @@ print_manage_menu();
 
 <!-- Email -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_label' ) ?>
-	</td>
+	</th>
 	<td>
 		<?php
 			if ( !$t_ldap || config_get( 'use_ldap_email' ) == OFF ) {
@@ -144,9 +144,9 @@ print_manage_menu();
 
 <!-- Access Level -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'access_level_label' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="access_level">
 			<?php
@@ -162,9 +162,9 @@ print_manage_menu();
 
 <!-- Enabled Checkbox -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'enabled_label' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="enabled" <?php check_checked( $t_user['enabled'], ON ); ?> />
 	</td>
@@ -172,9 +172,9 @@ print_manage_menu();
 
 <!-- Protected Checkbox -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'protected_label' ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="protected" <?php check_checked( $t_user['protected'], ON ); ?> />
 	</td>
@@ -243,9 +243,9 @@ print_manage_menu();
 
 <!-- Assigned Projects -->
 <tr <?php echo helper_alternate_class( 1 ) ?> valign="top">
-	<td class="category" width="30%">
+	<th class="category" width="30%">
 		<?php echo lang_get( 'assigned_projects_label' ) ?>
-	</td>
+	</th>
 	<td width="70%">
 		<?php print_project_user_list( $t_user['id'] ) ?>
 	</td>
@@ -256,9 +256,9 @@ print_manage_menu();
 		<input type="hidden" name="user_id" value="<?php echo $t_user['id'] ?>" />
 <!-- Unassigend Project Selection -->
 <tr <?php echo helper_alternate_class() ?> valign="top">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'unassigned_projects_label' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="project_id[]" multiple="multiple" size="5">
 			<?php print_project_user_list_option_list2( $t_user['id'] ) ?>
@@ -268,9 +268,9 @@ print_manage_menu();
 
 <!-- New Access Level -->
 <tr <?php echo helper_alternate_class() ?> valign="top">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'access_level_label' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="access_level">
 			<?php print_project_access_levels_option_list( config_get( 'default_new_account_access_level' ) ) ?>
diff --git a/news_edit_page.php b/news_edit_page.php
index fc9eb51..48fa6f0 100644
--- a/news_edit_page.php
+++ b/news_edit_page.php
@@ -104,25 +104,25 @@ html_page_top( lang_get( 'edit_news_title' ) );
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<span class="required">*</span><?php echo lang_get( 'headline' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<input type="text" name="headline" size="64" maxlength="64" value="<?php echo $v_headline ?>" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<span class="required">*</span><?php echo lang_get( 'body' ) ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="body" cols="60" rows="10"><?php echo $v_body ?></textarea>
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'post_to' ) ?>
-	</td>
+	</th>
 	<td>
 		<select name="project_id">
 		<?php
@@ -145,9 +145,9 @@ html_page_top( lang_get( 'edit_news_title' ) );
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<?php echo lang_get( 'view_status' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<select name="view_state">
 			<?php print_enum_string_option_list( 'view_state', $v_view_state ) ?>
diff --git a/news_menu_page.php b/news_menu_page.php
index 00ad47b..02f2a72 100644
--- a/news_menu_page.php
+++ b/news_menu_page.php
@@ -61,17 +61,17 @@ html_page_top( lang_get( 'edit_news_link' ) );
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<span class="required">*</span><?php echo lang_get( 'headline' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<input type="text" name="headline" size="64" maxlength="64" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<span class="required">*</span><?php echo lang_get( 'body' ) ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="body" cols="60" rows="8"></textarea>
 	</td>
@@ -86,9 +86,9 @@ html_page_top( lang_get( 'edit_news_link' ) );
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<?php echo lang_get( 'view_status' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<select name="view_state">
 			<?php print_enum_string_option_list( 'view_state' ) ?>
@@ -128,9 +128,9 @@ if ( news_get_count( helper_get_current_project(), current_user_is_administrator
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<?php echo lang_get( 'select_post' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<select name="news_id">
 			<?php print_news_item_option_list() ?>
diff --git a/plugins/MantisCoreFormatting/pages/config.php b/plugins/MantisCoreFormatting/pages/config.php
index 30f2df8..aa09398 100644
--- a/plugins/MantisCoreFormatting/pages/config.php
+++ b/plugins/MantisCoreFormatting/pages/config.php
@@ -50,9 +50,9 @@ print_manage_menu( );
 </tr>
 
 <tr <?php echo helper_alternate_class( )?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'plugin_format_process_urls' )?>
-	</td>
+	</th>
 	<td class="center">
 		<label><input type="radio" name="process_urls" value="1" <?php echo( ON == plugin_config_get( 'process_urls' ) ) ? 'checked="checked" ' : ''?>/>
 			<?php echo lang_get( 'plugin_format_enabled' )?></label>
@@ -64,9 +64,9 @@ print_manage_menu( );
 </tr>
 
 <tr <?php echo helper_alternate_class( )?>>
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'plugin_format_process_buglinks' )?>
-	</td>
+	</th>
 	<td class="center">
 		<label><input type="radio" name="process_buglinks" value="1" <?php echo( ON == plugin_config_get( 'process_buglinks' ) ) ? 'checked="checked" ' : ''?>/>
 			<?php echo lang_get( 'plugin_format_enabled' )?></label>
diff --git a/plugins/MantisGraph/pages/config.php b/plugins/MantisGraph/pages/config.php
index 641d987..bf2b40d 100644
--- a/plugins/MantisGraph/pages/config.php
+++ b/plugins/MantisGraph/pages/config.php
@@ -72,9 +72,9 @@ function print_font_checked( $p_font_name ) {
 </tr>
 
 <tr <?php echo helper_alternate_class( )?>>
-	<td class="category">
+	<th class="category">
 		<?php echo plugin_lang_get( 'library' )?>
-	</td>
+	</th>
 	<td class="center">
 		<label><input type="radio" name="eczlibrary" value="1" <?php echo( ON == plugin_config_get( 'eczlibrary' ) ) ? 'checked="checked" ' : ''?>/><?php echo plugin_lang_get('bundled')?></label>
 	</td>
@@ -86,36 +86,36 @@ function print_font_checked( $p_font_name ) {
 <tr class="spacer"><td></td></tr>
 
 <tr <?php echo helper_alternate_class( )?>>
-	<td class="category">
+	<th class="category">
 		<?php echo plugin_lang_get( 'window_width' )?>
-	</td>
+	</th>
 	<td class="center" colspan="2">
 		<input type="text" name="window_width" value="<?php echo plugin_config_get( 'window_width' )?>" />
 	</td>
 </tr>
 
 <tr <?php echo helper_alternate_class( )?>>
-	<td class="category">
+	<th class="category">
 		<?php echo plugin_lang_get( 'bar_aspect' )?>
-	</td>
+	</th>
 	<td class="center" colspan="2">
 		<input type="text" name="bar_aspect" value="<?php echo plugin_config_get( 'bar_aspect' )?>" />
 	</td>
 </tr>
 
 <tr <?php echo helper_alternate_class( )?>>
-	<td class="category">
+	<th class="category">
 		<?php echo plugin_lang_get( 'summary_graphs_per_row' )?>
-	</td>
+	</th>
 	<td class="center" colspan="2">
 		<input type="text" name="summary_graphs_per_row" value="<?php echo plugin_config_get( 'summary_graphs_per_row' )?>" />
 	</td>
 </tr>
 
 <tr <?php echo helper_alternate_class( )?>>
-	<td class="category">
+	<th class="category">
 		<?php echo plugin_lang_get( 'font' )?>
-	</td>
+	</th>
 	<td style="vertical-align: top">
 		Sans-serif:<br />
 		<label><input type="radio" name="font" value="arial"<?php echo print_font_checked( 'arial' )?>/>Arial</label><br />
diff --git a/plugins/XmlImportExport/pages/import.php b/plugins/XmlImportExport/pages/import.php
index 429c64e..074317c 100644
--- a/plugins/XmlImportExport/pages/import.php
+++ b/plugins/XmlImportExport/pages/import.php
@@ -69,9 +69,9 @@ if( ALL_PROJECTS == $t_project_id ) {
 </tr>
 
 <tr class="row-2">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 	<?php echo plugin_lang_get( 'cross_references' );?>
-	</td>
+	</th>
 	<td>
 	<p><?php echo plugin_lang_get( 'default_strategy' );?>
 	<select name="strategy">
@@ -96,7 +96,7 @@ if( ALL_PROJECTS == $t_project_id ) {
 </tr>
 
 <tr class="row-2">
-	<td class="category" width="25%"><?php echo lang_get( 'categories' );?></td>
+	<th class="category" width="25%"><?php echo lang_get( 'categories' );?></th>
 	<td>
 	<p><label for="keepcategory"><?php echo plugin_lang_get( 'keep_same_category' );?></label>
 	<input type="checkbox" checked=checked id="keepcategory" name="keepcategory" /></p>
diff --git a/print_all_bug_options_inc.php b/print_all_bug_options_inc.php
index 3bd92e6..02a97e6 100644
--- a/print_all_bug_options_inc.php
+++ b/print_all_bug_options_inc.php
@@ -162,9 +162,9 @@ for ($i=0 ; $i <$field_name_count ; $i++) {
 	printf ( '<tr %s>', helper_alternate_class( $i ) );
 ?>
 
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( $t_field_name_arr[$i] ) ?>
-	</td>
+	</th>
 	<td>
 		<input type="checkbox" name="<?php echo 'print_' . $t_field_name_arr[$i]; ?>"
 		<?php if ( isset( $t_prefs[$i] ) && ( $t_prefs[$i]==1 ) ) echo 'checked="checked"' ?> />
diff --git a/print_bug_page.php b/print_bug_page.php
index 9a87da1..d9dfb8a 100644
--- a/print_bug_page.php
+++ b/print_bug_page.php
@@ -223,7 +223,7 @@ if ( $tpl_show_id || $tpl_show_project || $tpl_show_category || $tpl_show_view_s
 
 if ( $tpl_show_reporter ) {
 	echo '<tr class="print">';
-	echo '<td class="print-category">', lang_get( 'reporter' ), '</td>';
+	echo '<th class="print-category">', lang_get( 'reporter' ), '</th>';
 	echo '<td class="print">';
 	print_user_with_subject( $tpl_bug->reporter_id, $f_bug_id );
 	echo '</td>';
@@ -241,7 +241,7 @@ if ( $tpl_show_handler || $tpl_show_due_date ) {
 	echo '<tr class="print">';
 
 	if ( $tpl_show_handler ) {
-		echo '<td class="print-category">', lang_get( 'assigned_to' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'assigned_to' ), '</th>';
 		echo '<td class="print">';
 		print_user_with_subject( $tpl_bug->handler_id, $f_bug_id );
 		echo '</td>';
@@ -250,7 +250,7 @@ if ( $tpl_show_handler || $tpl_show_due_date ) {
 	}
 
 	if ( $tpl_show_due_date ) {
-		echo '<td class="print-category">', lang_get( 'due_date' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'due_date' ), '</th>';
 		echo '<td class="print">', $tpl_due_date, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -270,21 +270,21 @@ if ( $tpl_show_priority || $tpl_show_severity || $tpl_show_reproducibility ) {
 	$t_spacer = 0;
 
 	if ( $tpl_show_priority ) {
-		echo '<td class="print-category">', lang_get( 'priority' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'priority' ), '</th>';
 		echo '<td class="print">', $tpl_priority, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	if ( $tpl_show_severity ) {
-		echo '<td class="print-category">', lang_get( 'severity' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'severity' ), '</th>';
 		echo '<td class="print">', $tpl_severity, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	if ( $tpl_show_reproducibility ) {
-		echo '<td class="print-category">', lang_get( 'reproducibility' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'reproducibility' ), '</th>';
 		echo '<td class="print">', $tpl_reproducibility, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -307,14 +307,14 @@ if ( $tpl_show_status || $tpl_show_resolution ) {
 	$t_spacer = 2;
 
 	if ( $tpl_show_status ) {
-		echo '<td class="print-category">', lang_get( 'status' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'status' ), '</th>';
 		echo '<td class="print">', $tpl_status, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	if ( $tpl_show_resolution ) {
-		echo '<td class="print-category">', lang_get( 'resolution' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'resolution' ), '</th>';
 		echo '<td class="print">', $tpl_resolution, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -334,14 +334,14 @@ if ( $tpl_show_projection || $tpl_show_eta ) {
 	echo '<tr class="print">';
 
 	if ( $tpl_show_projection ) {
-		echo '<td class="print-category">', lang_get( 'projection' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'projection' ), '</th>';
 		echo '<td class="print">', $tpl_projection, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	if ( $tpl_show_eta ) {
-		echo '<td class="print-category">', lang_get( 'eta' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'eta' ), '</th>';
 		echo '<td class="print">', $tpl_eta, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -361,21 +361,21 @@ if ( $tpl_show_platform || $tpl_show_os || $tpl_show_os_version ) {
 	$t_spacer = 0;
 
 	if ( $tpl_show_platform ) {
-		echo '<td class="print-category">', lang_get( 'platform' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'platform' ), '</th>';
 		echo '<td class="print">', $tpl_platform, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	if ( $tpl_show_os ) {
-		echo '<td class="print-category">', lang_get( 'os' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'os' ), '</th>';
 		echo '<td class="print">', $tpl_os, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	if ( $tpl_show_os_version ) {
-		echo '<td class="print-category">', lang_get( 'os_version' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'os_version' ), '</th>';
 		echo '<td class="print">', $tpl_os_version, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -398,14 +398,14 @@ if ( $tpl_show_product_version || $tpl_show_product_build ) {
 	$t_spacer = 2;
 
 	if ( $tpl_show_product_version ) {
-		echo '<td class="print-category">', lang_get( 'product_version' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'product_version' ), '</th>';
 		echo '<td class="print">', $tpl_product_version, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	if ( $tpl_show_product_build ) {
-		echo '<td class="print-category">', lang_get( 'product_build' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'product_build' ), '</th>';
 		echo '<td class="print">', $tpl_product_build, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -425,14 +425,14 @@ if ( $tpl_show_target_version || $tpl_show_fixed_in_version ) {
 	$t_spacer = 2;
 
 	if ( $tpl_show_target_version ) {
-		echo '<td class="print-category">', lang_get( 'target_version' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'target_version' ), '</th>';
 		echo '<td class="print">', $tpl_target_version, '</td>';
 	} else {
 		$t_spacer += 2;
 	}
 
 	if ( $tpl_show_fixed_in_version ) {
-		echo '<td class="print-category">', lang_get( 'fixed_in_version' ), '</td>';
+		echo '<th class="print-category">', lang_get( 'fixed_in_version' ), '</th>';
 		echo '<td class="print">', $tpl_fixed_in_version, '</td>';
 	} else {
 		$t_spacer += 2;
@@ -451,7 +451,7 @@ foreach( $t_related_custom_field_ids as $t_id ) {
 	$t_def = custom_field_get_definition( $t_id );
 
 	echo '<tr class="print">';
-	echo '<td class="print-category">', string_display_line( lang_get_defaulted( $t_def['name'] ) ), '</td>';
+	echo '<th class="print-category">', string_display_line( lang_get_defaulted( $t_def['name'] ) ), '</th>';
 	echo '<td class="print" colspan="4">';
 	print_custom_field_value( $t_def, $t_id, $f_bug_id );
 	echo '</td>';
@@ -462,28 +462,28 @@ echo '<tr><td class="print-spacer" colspan="6"><hr size="1" /></td></tr>';
 
 if ( $tpl_show_summary ) {
 	echo '<tr class="print">';
-	echo '<td class="print-category">', lang_get( 'summary' ), '</td>';
+	echo '<th class="print-category">', lang_get( 'summary' ), '</th>';
 	echo '<td class="print" colspan="5">', $tpl_summary, '</td>';
 	echo '</tr>';
 }
 
 if ( $tpl_show_description ) {
 	echo '<tr class="print">';
-	echo '<td class="print-category">', lang_get( 'description' ), '</td>';
+	echo '<th class="print-category">', lang_get( 'description' ), '</th>';
 	echo '<td class="print" colspan="5">', $tpl_description, '</td>';
 	echo '</tr>';
 }
 
 if ( $tpl_show_steps_to_reproduce ) {
 	echo '<tr class="print">';
-	echo '<td class="print-category">', lang_get( 'steps_to_reproduce' ), '</td>';
+	echo '<th class="print-category">', lang_get( 'steps_to_reproduce' ), '</th>';
 	echo '<td class="print" colspan="5">', $tpl_steps_to_reproduce, '</td>';
 	echo '</tr>';
 }
 
 if ( $tpl_show_additional_information ) {
 	echo '<tr class="print">';
-	echo '<td class="print-category">', lang_get( 'additional_information' ), '</td>';
+	echo '<th class="print-category">', lang_get( 'additional_information' ), '</th>';
 	echo '<td class="print" colspan="5">', $tpl_additional_information, '</td>';
 	echo '</tr>';
 }
@@ -491,7 +491,7 @@ if ( $tpl_show_additional_information ) {
 # Tagging
 if ( $tpl_show_tags ) {
 	echo "<tr class=\"print\">";
-	echo '<td class="print-category">', lang_get( 'tags' ), '</td>';
+	echo '<th class="print-category">', lang_get( 'tags' ), '</th>';
 	echo '<td class="print" colspan="5">';
 	tag_display_attached( $f_bug_id );
 	echo '</td></tr>';
@@ -503,7 +503,7 @@ echo "<td class=\"print\" colspan=\"5\">" . relationship_get_summary_html_previe
 
 if ( $tpl_show_attachments ) {
 	echo '<tr class="print">';
-	echo '<td class="print-category">', lang_get( 'attached_files' ), '</td>';
+	echo '<th class="print-category">', lang_get( 'attached_files' ), '</th>';
 	echo '<td class="print" colspan="5">';
 
 	$t_attachments = file_get_visible_attachments( $f_bug_id );
@@ -538,13 +538,13 @@ if ( $tpl_show_attachments ) {
 echo '<tr><td class="print-spacer" colspan="6"><hr size="1" /></td></tr>';
 
 # ISSUE HISTORY
-echo '<tr><td class="form-title">', lang_get( 'bug_history' ), '</td></tr>';
+echo '<tr><th class="form-title">', lang_get( 'bug_history' ), '</th></tr>';
 
 echo '<tr class="print-category">';
-echo '<td class="row-category-history">', lang_get( 'date_modified' ), '</td>';
-echo '<td class="row-category-history">', lang_get( 'username' ), '</td>';
-echo '<td class="row-category-history">', lang_get( 'field' ), '</td>';
-echo '<td class="row-category-history">', lang_get( 'change' ), '</td>';
+echo '<th class="row-category-history">', lang_get( 'date_modified' ), '</th>';
+echo '<th class="row-category-history">', lang_get( 'username' ), '</th>';
+echo '<th class="row-category-history">', lang_get( 'field' ), '</th>';
+echo '<th class="row-category-history">', lang_get( 'change' ), '</th>';
 echo '</tr>';
 
 foreach ( $t_history as $t_item ) {
diff --git a/proj_doc_add_page.php b/proj_doc_add_page.php
index 1591a00..6350341 100644
--- a/proj_doc_add_page.php
+++ b/proj_doc_add_page.php
@@ -67,17 +67,17 @@ html_page_top();
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="25%">
+	<th class="category" width="25%">
 		<span class="required">*</span><?php echo lang_get( 'title' ) ?>
-	</td>
+	</th>
 	<td width="75%">
 		<input type="text" name="title" size="70" maxlength="250" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'description' ) ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="description" cols="60" rows="7"></textarea>
 	</td>
diff --git a/proj_doc_edit_page.php b/proj_doc_edit_page.php
index 8539ace..31eeab8 100644
--- a/proj_doc_edit_page.php
+++ b/proj_doc_edit_page.php
@@ -92,25 +92,25 @@ html_page_top();
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="20%">
+	<th class="category" width="20%">
 		<span class="required">*</span><?php echo lang_get( 'title' ) ?>
-	</td>
+	</th>
 	<td width="80%">
 		<input type="text" name="title" size="70" maxlength="250" value="<?php echo $v_title ?>" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'description' ) ?>
-	</td>
+	</th>
 	<td>
 		<textarea name="description" cols="60" rows="7"><?php echo $v_description ?></textarea>
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'filename' ) ?>
-	</td>
+	</th>
 	<td>
 		<?php
 			$t_href = '<a href="file_download.php?file_id='.$v_id.'&amp;type=doc">';
diff --git a/signup_page.php b/signup_page.php
index a8704da..95e34c2 100644
--- a/signup_page.php
+++ b/signup_page.php
@@ -68,17 +68,17 @@ $t_public_key = crypto_generate_uri_safe_nonce( 64 );
 	</td>
 </tr>
 <tr class="row-1">
-	<td class="category" width="30%">
+	<th class="category" width="30%">
 		<?php echo lang_get( 'username_label' ) ?>
-	</td>
+	</th>
 	<td width="70%" colspan="2">
 		<input type="text" name="username" size="32" maxlength="<?php echo USERLEN;?>" />
 	</td>
 </tr>
 <tr class="row-2">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'email_label' ) ?>
-	</td>
+	</th>
 	<td colspan="2">
 		<?php print_email_input( 'email', '' ) ?>
 	</td>
@@ -89,9 +89,9 @@ $t_public_key = crypto_generate_uri_safe_nonce( 64 );
 		# captcha image requires GD library and related option to ON
 ?>
 <tr class="row-1">
-	<td class="category">
+	<th class="category">
 		<?php echo lang_get( 'signup_captcha_request_label' ) ?>
-	</td>
+	</th>
 	<td>
 		<?php print_captcha_input( 'captcha', '' ) ?>
 	</td>
diff --git a/tag_attach.php b/tag_attach.php
index 954be81..c5e24ec 100644
--- a/tag_attach.php
+++ b/tag_attach.php
@@ -115,9 +115,9 @@ if ( count( $t_tags_failed ) > 0 ) {
 	foreach( $t_tags_failed as $t_tag_row ) {
 		echo '<tr ',helper_alternate_class(),'>';
 		if ( -1 == $t_tag_row['id'] ) {
-			echo '<td class="category">', lang_get( 'tag_create_denied' ), '</td>';
+			echo '<th class="category">', lang_get( 'tag_create_denied' ), '</th>';
 		} else if ( -2 == $t_tag_row['id'] ) {
-			echo '<td class="category">', lang_get( 'tag_invalid_name' ), '</td>';
+			echo '<th class="category">', lang_get( 'tag_invalid_name' ), '</th>';
 		}
 		echo '<td>', string_html_specialchars( $t_tag_row['name'] ), '</td></tr>';
 
@@ -129,7 +129,7 @@ if ( count( $t_tags_failed ) > 0 ) {
 ?>
 	<tr class="spacer"><td colspan="2"></td></tr>
 	<tr <?php echo helper_alternate_class() ?>>
-	<td class="category"><?php echo lang_get( 'tag_attach_long' ) ?></td>
+	<th class="category"><?php echo lang_get( 'tag_attach_long' ) ?></th>
 	<td>
 <?php
 	print_tag_attach_form( $f_bug_id, $t_tag_string );
diff --git a/tag_update_page.php b/tag_update_page.php
index ee30547..2154b9f 100644
--- a/tag_update_page.php
+++ b/tag_update_page.php
@@ -127,7 +127,7 @@ html_page_top( sprintf( lang_get( 'tag_update' ), $t_name ) );
 
 <!-- Description -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category"><?php echo lang_get( 'tag_description' ) ?></td>
+	<th class="category"><?php echo lang_get( 'tag_description' ) ?></th>
 	<td colspan="4">
 		<textarea name="description" <?php echo helper_get_tab_index() ?> cols="80" rows="6"><?php echo string_textarea( $t_description ) ?></textarea>
 	</td>
diff --git a/tag_view_page.php b/tag_view_page.php
index 45ee755..ef02ed1 100644
--- a/tag_view_page.php
+++ b/tag_view_page.php
@@ -100,7 +100,7 @@ html_page_top( sprintf( lang_get( 'tag_details' ), $t_name ) );
 
 <!-- Description -->
 <tr <?php echo helper_alternate_class() ?>>
-	<td class="category"><?php echo lang_get( 'tag_description' ) ?></td>
+	<th class="category"><?php echo lang_get( 'tag_description' ) ?></th>
 	<td colspan="4"><?php echo $t_description ?></td>
 </tr>
 
@@ -109,7 +109,7 @@ html_page_top( sprintf( lang_get( 'tag_details' ), $t_name ) );
 	$t_tags_related = tag_stats_related( $f_tag_id );
 	if ( count( $t_tags_related ) ) {
 		echo '<tr ',helper_alternate_class(),'>';
-		echo '<td class="category" rowspan="',count( $t_tags_related ),'">',lang_get( 'tag_related' ),'</td>';
+		echo '<th class="category" rowspan="',count( $t_tags_related ),'">',lang_get( 'tag_related' ),'</th>';
 
 		$i = 0;
 		foreach( $t_tags_related as $t_tag ) {
diff --git a/view_filters_page.php b/view_filters_page.php
index 2ed5c1b..a03a149 100644
--- a/view_filters_page.php
+++ b/view_filters_page.php
@@ -228,13 +228,13 @@ $t_show_tags = access_has_global_level( config_get( 'tag_view_threshold' ) );
 	</td>
 </tr>
 <tr class="row-category2">
-	<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'reporter' ) ?></td>
-	<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'monitored_by' ) ?></td>
-	<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'assigned_to' ) ?></td>
-	<td class="small-caption" colspan="<?php echo ( 2 * $t_custom_cols ); ?>"><?php echo lang_get( 'category' ) ?></td>
-	<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'severity' ) ?></td>
-	<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'resolution' ) ?></td>
-	<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'profile' ) ?></td>
+	<th class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'reporter' ) ?></th>
+	<th class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'monitored_by' ) ?></th>
+	<th class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'assigned_to' ) ?></th>
+	<th class="small-caption" colspan="<?php echo ( 2 * $t_custom_cols ); ?>"><?php echo lang_get( 'category' ) ?></th>
+	<th class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'severity' ) ?></th>
+	<th class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'resolution' ) ?></th>
+	<th class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'profile' ) ?></th>
 	<!-- <td colspan="<?php echo ( ( $t_filter_cols - 8 ) * $t_custom_cols ); ?>">&nbsp;</td> -->
 </tr>
 <tr class="row-1">
diff --git a/view_user_page.php b/view_user_page.php
index c51a7a0..d5fa4f2 100644
--- a/view_user_page.php
+++ b/view_user_page.php
@@ -81,17 +81,17 @@ html_page_top();
 		</td>
 	</tr>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category" width="25%">
+		<th class="category" width="25%">
 			<?php echo lang_get( 'username' ) ?>
-		</td>
+		</th>
 		<td width="75%">
 			<?php echo string_display_line( $u_username ) ?>
 		</td>
 	</tr>
 	<tr <?php echo helper_alternate_class() ?>>
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'email' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php
 				if ( ! ( $t_can_manage || $t_can_see_email ) ) {
@@ -107,9 +107,9 @@ html_page_top();
 		</td>
 	</tr>
 	<tr <?php echo helper_alternate_class() ?> valign="top">
-		<td class="category">
+		<th class="category">
 			<?php echo lang_get( 'realname' ) ?>
-		</td>
+		</th>
 		<td>
 			<?php
 				if ( ! ( $t_can_manage || $t_can_see_realname ) ) {
-- 
1.7.0.2


From acbbdf93bf9a7501460c3059217a115de3ecdfb6 Mon Sep 17 00:00:00 2001
From: Kornel Lesinski <kornel@aardvarkmedia.co.uk>
Date: Thu, 6 May 2010 14:29:42 +0100
Subject: [PATCH 10/10] Added CSS class name to user links, replaced <font> with <del>.

---
 core/prepare_api.php |    9 +++------
 1 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/core/prepare_api.php b/core/prepare_api.php
index 0b6eeff..795be77 100644
--- a/core/prepare_api.php
+++ b/core/prepare_api.php
@@ -72,14 +72,11 @@ function prepare_user_name( $p_user_id ) {
 	}
 
 	$t_username = user_get_name( $p_user_id );
+	$t_username = string_display_line( $t_username );
 	if( user_exists( $p_user_id ) && user_get_field( $p_user_id, 'enabled' ) ) {
-		$t_username = string_display_line( $t_username );
-		return '<a href="' . string_sanitize_url( 'view_user_page.php?id=' . $p_user_id, true ) . '">' . $t_username . '</a>';
+		return '<a class="user" href="' . string_sanitize_url( 'view_user_page.php?id=' . $p_user_id, true ) . '">' . $t_username . '</a>';
 	} else {
-		$t_result = '<font STYLE="text-decoration: line-through">';
-		$t_result .= string_display_line( $t_username );
-		$t_result .= '</font>';
-		return $t_result;
+		return '<del class="user">' . $t_username . '</del>';
 	}
 }
 
-- 
1.7.0.2

2_css_classnames.patch (155,492 bytes)   
3_display_options.patch (7,170 bytes)   
From d23cf5dde37c1ff3f54dd2f6833b50567cdb3093 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Tue, 4 May 2010 16:08:27 +0100
Subject: [PATCH 1/2] Option to linkify bug summaries on My View page

---
 config_defaults_inc.php |    8 +++++++-
 my_view_inc.php         |    9 ++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/config_defaults_inc.php b/config_defaults_inc.php
index 7fb5225..b7a3f79 100644
--- a/config_defaults_inc.php
+++ b/config_defaults_inc.php
@@ -871,7 +871,7 @@ $g_severity_significant_threshold = MAJOR;
  * they conflict with other configuration. Or if the current user doesn't have
  * the necessary access level to view them. For example, sponsorship_total will
  * be removed if sponsorships are disabled. To include custom field 'xyz',
- include the column name as 'custom_xyz'.
+ * include the column name as 'custom_xyz'.
  *
  * Standard Column Names (i.e. names to choose from):
  * selection, edit, id, project_id, reporter_id, handler_id, priority,
@@ -1032,6 +1032,12 @@ $g_show_changelog_dates = ON;
  */
 $g_show_roadmap_dates = ON;
 
+/**
+ * Show summaries on My View page as links to bugs
+ * @global int $g_show_summary_as_link
+ */
+$g_show_summary_as_link = ON;
+
 /**************************
  * MantisBT Time Settings *
  **************************/
diff --git a/my_view_inc.php b/my_view_inc.php
index 21284a5..c730974 100644
--- a/my_view_inc.php
+++ b/my_view_inc.php
@@ -508,7 +508,14 @@ echo "<span class=\"my-buglist-count\">($v_start - $v_end / $t_bug_count)</span>
 		 	if( ON == config_get( 'show_bug_project_links' ) && helper_get_current_project() != $t_bug->project_id ) {
 				echo '<span class="small project">[', string_display_line( project_get_name( $t_bug->project_id ) ), '] </span>';
 			}
-			echo '<span class="small summary">', $t_summary, '<br /></span>';
+
+			echo '<span class="small summary">';
+			if ( ON == config_get( 'show_summary_as_link' ) ) {
+			    echo '<a href="' . string_get_bug_view_url( $t_bug->id, null ) . '">', $t_summary, '</a>';
+		    } else {
+			    echo $t_summary;
+	        }
+			echo '<br /></span>';
 	?>
 		<?php
 	# type project name if viewing 'all projects' or bug is in subproject
-- 
1.7.0.2


From 12a9b47db6332f9f70bee3155cfc134baf3cefd6 Mon Sep 17 00:00:00 2001
From: Kornel <kornel@aardvarkmedia.co.uk>
Date: Wed, 5 May 2010 12:03:38 +0100
Subject: [PATCH 2/2] Added config option to disable showing of new window links ([^]).

---
 config_defaults_inc.php |    5 +++++
 core/html_api.php       |    9 ++++++++-
 core/print_api.php      |    6 +++++-
 core/string_api.php     |    8 +++++++-
 my_view_inc.php         |    4 +++-
 5 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/config_defaults_inc.php b/config_defaults_inc.php
index b7a3f79..2303cb8 100644
--- a/config_defaults_inc.php
+++ b/config_defaults_inc.php
@@ -1038,6 +1038,11 @@ $g_show_roadmap_dates = ON;
  */
 $g_show_summary_as_link = ON;
 
+/**
+ * Append [ ^ ] new-window link to some links
+ */
+$g_show_new_window_links = ON;
+
 /**************************
  * MantisBT Time Settings *
  **************************/
diff --git a/core/html_api.php b/core/html_api.php
index dc3f65c..1e99f61 100644
--- a/core/html_api.php
+++ b/core/html_api.php
@@ -605,7 +605,14 @@ function html_footer( $p_file = null ) {
 	echo '<table border="0" width="100%" cellspacing="0" cellpadding="0"><tr valign="top"><td>';
 	if( ON == config_get( 'show_version' ) ) {
 		$t_version_suffix = config_get_global( 'version_suffix' );
-		echo "\t", '<span class="timer"><a href="http://www.mantisbt.org/" title="Free Web Based Bug Tracker">MantisBT ', MANTIS_VERSION, ( $t_version_suffix ? " $t_version_suffix" : '' ), '</a>', '[<a href="http://www.mantisbt.org/"  title="Free Web Based Bug Tracker" target="_blank">^</a>]</span>', "\n";
+
+		if ( ON === config_get('show_new_window_links') ) {
+		    $t_new_window_link = '[<a href="http://www.mantisbt.org/"  title="Free Web Based Bug Tracker" target="_blank">^</a>]</span>';
+	    } else {
+	        $t_new_window_link = '';
+        }
+
+		echo "\t", '<span class="timer"><a href="http://www.mantisbt.org/" title="Free Web Based Bug Tracker">MantisBT ', MANTIS_VERSION, ( $t_version_suffix ? " $t_version_suffix" : '' ), '</a>', $t_new_window_link , "\n";
 	}
 	echo "\t", '<address>Copyright &copy; 2000 - 2010 MantisBT Group</address>', "\n";
 
diff --git a/core/print_api.php b/core/print_api.php
index 7a7486a..0127c93 100644
--- a/core/print_api.php
+++ b/core/print_api.php
@@ -1677,7 +1677,11 @@ function print_bug_attachments_list( $p_bug_id ) {
 			$t_href_start = "<a href=\"file_download.php?file_id={$t_attachment['id']}&amp;type=bug\">";
 			$t_href_end = '</a>';
 
-			$t_href_clicket = " <span class=\"bracket-link bracket-link-new-window\">[<a class=\"new-window\" href=\"file_download.php?file_id={$t_attachment['id']}&amp;type=bug\" target=\"_blank\">^</a>]</span>";
+            if ( ON === config_get('show_new_window_links') ) {
+			    $t_href_clicket = " <span class=\"bracket-link bracket-link-new-window\">[<a class=\"new-window\" href=\"file_download.php?file_id={$t_attachment['id']}&amp;type=bug\" target=\"_blank\">^</a>]</span>";
+		    } else {
+		        $t_href_clicket = '';
+	        }
 		} else {
 			$t_href_start = '';
 			$t_href_end = '';
diff --git a/core/string_api.php b/core/string_api.php
index 8f1367f..ac015d9 100644
--- a/core/string_api.php
+++ b/core/string_api.php
@@ -473,7 +473,13 @@ function string_insert_hrefs( $p_string ) {
 		$s_url_regex = "/(([[:alpha:]][-+.[:alnum:]]*):\/\/(${t_url_part1}*?${t_url_part2}+))/sue";
 	}
 
-	$p_string = preg_replace( $s_url_regex, "'<a href=\"'.rtrim('\\1','.').'\">\\1</a> <span class=\"bracket-link bracket-link-new-window\">[<a class=\"new-window\" href=\"'.rtrim('\\1','.').'\" target=\"_blank\">^</a>]</span>'", $p_string );
+    if ( ON === config_get('show_new_window_links') ) {
+        $t_new_window_link_regex = " <span class=\"bracket-link bracket-link-new-window\">[<a class=\"new-window\" href=\"'.rtrim('\\1','.').'\" target=\"_blank\">^</a>]</span>";
+    } else {
+        $t_new_window_link_regex = '';
+    }
+
+	$p_string = preg_replace( $s_url_regex, "'<a href=\"'.rtrim('\\1','.').'\">\\1</a>$t_new_window_link_regex'", $p_string );
 	if( $t_change_quotes ) {
 		ini_set( 'magic_quotes_sybase', true );
 	}
diff --git a/my_view_inc.php b/my_view_inc.php
index c730974..62e8d86 100644
--- a/my_view_inc.php
+++ b/my_view_inc.php
@@ -423,7 +423,9 @@ $box_title = lang_get( 'my_view_title_' . $t_box_title );
 <?php
 print_link( 'view_all_set.php?type=1&temporary=y&' . $url_link_parameters[$t_box_title], $box_title, false, 'subtle' );
 echo '&nbsp;';
-print_bracket_link( 'view_all_set.php?type=1&temporary=y&' . $url_link_parameters[$t_box_title], '^', true, 'subtle' );
+if ( ON === config_get('show_new_window_links') ) {
+    print_bracket_link( 'view_all_set.php?type=1&temporary=y&' . $url_link_parameters[$t_box_title], '^', true, 'subtle' );
+}
 
 if( count( $rows ) > 0 ) {
 	$v_start = $t_filter[FILTER_PROPERTY_ISSUES_PER_PAGE] * ( $f_page_number - 1 ) + 1;
-- 
1.7.0.2

3_display_options.patch (7,170 bytes)   

Relationships

related to 0011896 closeddhx Remove [^] "open in new window" suffix from links 
related to 0011898 closeddhx Hyperlink issue summaries on my_view_page 
related to 0015721 closedgrangeway Functionality to consider porting to master-2.0.x 

Activities

dhx

dhx

2010-05-09 07:14

reporter   ~0025442

Thanks Kornel for another great set of patches! I've applied the first and second patchset (1 and 2) as-is without changes. I didn't apply patchset 3 (display options) as I felt we didn't need options for display options so insignificant.

Hence I've redone patchset 3 by removing the old [^] new window link completely (see 0011896) and by always adding hyperlinks to issue summaries on my_view_page (see 0011898).

Just one request... in the future are you able to split patches between multiple issues at mantisbt.org/bugs (one issue # for each feature or significant set of changes)?

Thanks again for helping out the MantisBT project! Great work :)

grangeway

grangeway

2013-04-05 17:57

reporter   ~0036487

Marking as 'acknowledged' not resolved/closed to track that change gets ported to master-2.0.x branch