View Issue Details

IDProjectCategoryView StatusLast Update
0013682mantisbtcustomizationpublic2014-09-23 18:05
Reporterdregad Assigned Todregad  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
OSWindowsOS VersionXP 
Product Version1.2.8 
Target Version1.2.9Fixed in Version1.2.9 
Summary0013682: Color codes for custom statuses not displayed cross-project
Description

Assuming issue "1" in project "A" has a custom status "testing" defined as described under Additional Information below, the custom color is not used in the following situations, and displayed white instead:

  • in view issue details page, looking at another issue "2" defined in project "B", relationship to issue 1
  • in View Issues (for "all projects")
  • in My View (for "all projects")
  • Sponsorship
  • Bug group action list
Additional Information

Sample definitions for custom status:

status_enum_string = '10:new,20:feedback,30:acknowledged,40:confirmed,50:assigned,60:testing,80:resolved,90:closed'

status_colors = array (
'new' => '#fcbdbd',
'feedback' => '#e3b7eb',
'acknowledged' => '#ffcd85',
'confirmed' => '#fff494',
'assigned' => '#c2dfff',
'testing' => '#77ccFF',
'resolved' => '#d2f5b0',
'closed' => '#c9ccc4',
)

TagsNo tags attached.
Attached Files
0001-Fix-cross-project-display-of-custom-status-colors.patch (5,741 bytes)   
From 7dfab37c3c79328d55aa851190a86414f5664cf0 Mon Sep 17 00:00:00 2001
From: Damien Regad <damien.regad@merckgroup.com>
Date: Thu, 15 Dec 2011 16:43:14 +0100
Subject: [PATCH] Fix cross-project display of custom status colors

When a custom status is defined in a different project, its custom
color was not used (displayed white) in the following cases

- view issue details page, relationship
- View Issues
- My View
- Sponsorship
- Bug group action list

Fixes #13682
---
 account_sponsor_page.php      |    4 ++--
 core/bug_group_action_api.php |    5 ++++-
 core/helper_api.php           |   10 ++++++----
 core/relationship_api.php     |    4 +++-
 my_view_inc.php               |    2 +-
 view_all_inc.php              |    2 +-
 6 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/account_sponsor_page.php b/account_sponsor_page.php
index fd7fa55..b8ba78d 100644
--- a/account_sponsor_page.php
+++ b/account_sponsor_page.php
@@ -136,7 +136,7 @@
 				$t_released_label = $t_bug->fixed_in_version;
 			}
 
-			echo '<tr bgcolor="' . get_status_color( $t_bug->status ) . '">';
+			echo '<tr bgcolor="' . get_status_color( $t_bug->status, auth_get_current_user_id(), $t_bug->project_id ) . '">';
 			echo '<td><a href="' . string_get_bug_view_url( $row['bug'] ) . '">' . bug_format_id( $row['bug'] ) . '</a></td>';
 			echo '<td>' . project_get_field( $t_bug->project_id, 'name' ) . '&#160;</td>';
 			echo '<td class="right">' . $t_released_label . '&#160;</td>';
@@ -246,7 +246,7 @@
 				$t_released_label = $t_bug->fixed_in_version;
 			}
 
-			echo '<tr bgcolor="' . get_status_color( $t_bug->status ) . '">';
+			echo '<tr bgcolor="' . get_status_color( $t_bug->status, auth_get_current_user_id(), $t_bug->project_id ) . '">';
 			echo '<td><a href="' . string_get_bug_view_url( $row['bug'] ) . '">' . bug_format_id( $row['bug'] ) . '</a></td>';
 			echo '<td>' . project_get_field( $t_bug->project_id, 'name' ) . '&#160;</td>';
 			echo '<td class="right">' . $t_released_label . '&#160;</td>';
diff --git a/core/bug_group_action_api.php b/core/bug_group_action_api.php
index ef57fd4..ac3cb1e 100644
--- a/core/bug_group_action_api.php
+++ b/core/bug_group_action_api.php
@@ -80,7 +80,10 @@ function bug_group_action_print_bug_list( $p_bug_ids_array ) {
 
 	foreach( $p_bug_ids_array as $t_bug_id ) {
 		$t_class = sprintf( "row-%d", ( $t_i++ % 2 ) + 1 );
-		echo sprintf( "<tr bgcolor=\"%s\"> <td>%s</td> <td>%s</td> </tr>\n", get_status_color( bug_get_field( $t_bug_id, 'status' ) ), string_get_bug_view_link( $t_bug_id ), string_attribute( bug_get_field( $t_bug_id, 'summary' ) ) );
+		echo sprintf( "<tr bgcolor=\"%s\"> <td>%s</td> <td>%s</td> </tr>\n",
+			get_status_color( bug_get_field( $t_bug_id, 'status' ), auth_get_current_user_id(), bug_get_field( $t_bug_id, 'project_id' ) ),
+			string_get_bug_view_link( $t_bug_id ),
+			string_attribute( bug_get_field( $t_bug_id, 'summary' ) ) );
 	}
 
 	echo '</table>';
diff --git a/core/helper_api.php b/core/helper_api.php
index ab0d902..5c80946 100644
--- a/core/helper_api.php
+++ b/core/helper_api.php
@@ -68,13 +68,15 @@ function helper_alternate_class( $p_index = null, $p_odd_class = 'row-1', $p_eve
 }
 
 /**
- * get the color string for the given status
+ * get the color string for the given status, user and project
  * @param int $p_status
+ * @param int|null $p_user user id, defaults to null (all users)
+ * @param int|null $p_project project id, defaults to null (all projects)
  * @return string
  */
-function get_status_color( $p_status ) {
-	$t_status_label = MantisEnum::getLabel( config_get( 'status_enum_string' ), $p_status );
-	$t_status_colors = config_get( 'status_colors' );
+function get_status_color( $p_status, $p_user = null, $p_project = null ) {
+	$t_status_label = MantisEnum::getLabel( config_get( 'status_enum_string', null, $p_user, $p_project ), $p_status );
+	$t_status_colors = config_get( 'status_colors', null, $p_user, $p_project );
 	$t_color = '#ffffff';
 
 	if ( isset( $t_status_colors[$t_status_label] ) ) {
diff --git a/core/relationship_api.php b/core/relationship_api.php
index a895b23..d5b78eb 100644
--- a/core/relationship_api.php
+++ b/core/relationship_api.php
@@ -677,7 +677,9 @@ function relationship_get_details( $p_bug_id, $p_relationship, $p_html = false,
 	$t_relationship_info_text .= "\n";
 
 	if( $p_html_preview == false ) {
-		$t_relationship_info_html = '<tr bgcolor="' . get_status_color( $t_bug->status ) . '">' . $t_relationship_info_html . '</tr>' . "\n";
+		$t_relationship_info_html = '<tr bgcolor="'
+			. get_status_color( $t_bug->status, auth_get_current_user_id(), $t_bug->project_id )
+			. '">' . $t_relationship_info_html . '</tr>' . "\n";
 	} else {
 		$t_relationship_info_html = '<tr>' . $t_relationship_info_html . '</tr>';
 	}
diff --git a/my_view_inc.php b/my_view_inc.php
index 892ce64..cedc67f 100644
--- a/my_view_inc.php
+++ b/my_view_inc.php
@@ -432,7 +432,7 @@ echo "($v_start - $v_end / $t_bug_count)";
 	$t_last_updated = date( config_get( 'normal_date_format' ), $t_bug->last_updated );
 
 	# choose color based on status
-	$status_color = get_status_color( $t_bug->status );
+	$status_color = get_status_color( $t_bug->status, auth_get_current_user_id(), $t_bug->project_id );
 
 	# Check for attachments
 	$t_attachment_count = 0;
diff --git a/view_all_inc.php b/view_all_inc.php
index 0972a83..dfd0d09 100644
--- a/view_all_inc.php
+++ b/view_all_inc.php
@@ -202,7 +202,7 @@
 			}
 
 			# choose color based on status
-			$status_color = get_status_color( $t_row->status );
+			$status_color = get_status_color( $t_row->status, auth_get_current_user_id(), $t_row->project_id );
 
 			echo '<tr bgcolor="', $status_color, '" border="1" valign="top">';
 
-- 
1.7.5.4

Relationships

related to 0011323 closeddregad Cross project relationships not picking up custom statuses 
related to 0015721 closedgrangeway Functionality to consider porting to master-2.0.x 
has duplicate 0013679 closedatrol Cross project relationships not picking up colors of custom statuses 
related to 0013707 closeddregad Custom resolutions not displayed cross-project 
related to 0013951 new Dynamic CSS for status colors does not allow project-specific colors 
child of 0013728 closeddregad Various display issues of custom enums cross-project 

Activities

dregad

dregad

2011-12-15 10:56

developer   ~0030631

Last edited: 2011-12-15 10:57

Please test the attached patch to address the color display issue described in 0011323. Note that the changeset 4b7492d4 is also required for this to work in releases < 1.2.8

JanHegewald

JanHegewald

2011-12-19 04:32

reporter   ~0030652

I applied the patch and it works.

Thanks for patching this issue!

grangeway

grangeway

2013-04-05 17:57

reporter   ~0036374

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

Related Changesets

MantisBT: master-1.2.x 4b7492d4

2011-08-29 09:01

Paul Richards

Committer: dhx


Details Diff
Project override should only apply if $p_project hasn't been explicity set.

For the most part, we use config_get(var) to get information for the current project [or overriden project]

If we are explicity passing in a project ID, we should use this ID instead, and not override.

Signed-off-by: David Hicks <d@hx.id.au>
Affected Issues
0011323, 0013682
mod - core/config_api.php Diff File

MantisBT: master a5aaf06b

2011-12-15 02:43

dregad


Details Diff
Fix cross-project display of custom status colors

When a custom status is defined in a different project, its custom
color was not used (displayed white) in the following cases

- view issue details page, relationship
- View Issues
- My View
- Sponsorship
- Bug group action list

This ports 1.2.x commit 7dfab37c3c79328d55aa851190a86414f5664cf0,
applying the modifications made in get_status_color() to
html_get_status_css_class().

Fixes 0013682
Affected Issues
0013682
mod - account_sponsor_page.php Diff File
mod - core/bug_group_action_api.php Diff File
mod - core/helper_api.php Diff File
mod - core/html_api.php Diff File
mod - core/relationship_api.php Diff File
mod - my_view_inc.php Diff File
mod - view_all_inc.php Diff File

MantisBT: master-1.2.x 7dfab37c

2011-12-15 02:43

dregad


Details Diff
Fix cross-project display of custom status colors

When a custom status is defined in a different project, its custom
color was not used (displayed white) in the following cases

- view issue details page, relationship
- View Issues
- My View
- Sponsorship
- Bug group action list

Fixes 0013682
Affected Issues
0013682
mod - account_sponsor_page.php Diff File
mod - core/bug_group_action_api.php Diff File
mod - core/helper_api.php Diff File
mod - core/relationship_api.php Diff File
mod - my_view_inc.php Diff File
mod - view_all_inc.php Diff File