View Issue Details

IDProjectCategoryView StatusLast Update
0016869mantisbtbugtrackerpublic2019-12-08 12:05
ReporterHyper Assigned Todregad  
PrioritylowSeverityfeatureReproducibilityhave not tried
Status assignedResolutionopen 
Product Version1.2.15 
Summary0016869: Change of due date background color
Description

Hello all!

I was wondering if it is possible to add another background color for the ticket's field "DUE DATE". Right now if due date has been reached, the field becomes red. That's fine, but maybe somebody would know how to add another color, let's say orange or yellow, when there are 2 days till due date. It should work as a reminder when I am directly looking on the list of unassigned tickets.

Could please someone help me in this case? Thanks in advance!

TagsNo tags attached.

Relationships

related to 0021642 closedsyncguru Highlight due date when the date has passed 
related to 0009155 assigneddregad Cell coloring for due date indicates "overdue" when not overdue yet. 
child of 0026438 assigneddregad Allow multiple, customizable due date levels 

Activities

dregad

dregad

2014-01-22 12:36

developer   ~0039140

Currently the system does not allow "intermediate" states for due date, it's either OK or past the date (red). Introducing another color like you suggest would also require a parameter to define the thresholds.

As a side note, you can change the color by tweaking the CSS (td.overdue).

Hyper

Hyper

2014-01-23 06:27

reporter   ~0039149

Thank you for the answer. How shall I proceed with creating new parameter to define the new threshold?

MPAA

MPAA

2019-09-19 03:03

reporter   ~0062865

Very much wanted this new potential feature.
Is there anyone who already did some research?

MPAA

MPAA

2019-09-25 14:11

reporter   ~0062908

Last edited: 2019-09-26 07:08

View 5 revisions

Found a neat solution. Testes in version 2.21.1

*Add 2 lines in your config_inc.php file;

# When do you want to be warned before due_date in seconds
$g_1st_due_date_warning = 432000; # get's color green
$g_2nd_due_date_warning = 172800; # get's color orange and always less seconds then the 1st warning

*Add two lines in file 'default.css' under 'td.overdue ' near line 95;

/* within 1st due_date */
td.near_1st_due_date{ background-color: #a6d147; color: #ffffff; font-weight: bold; }
/* within 2nd due_date */
td.near_2nd_due_date{ background-color: #d19447; color: #ffffff; font-weight: bold; }

*Create two new functions (under function bug_is_overdue) in file /core/bug_api.php;

// Function to determine bug within the 1st_due_date_warning timeframe
function bug_is_1st_due_date( $p_bug_id ) {
    $t_due_date = bug_get_field( $p_bug_id, 'due_date' );
    $t_1st_due_date_warning = config_get( '1st_due_date_warning' );
    if( !date_is_null( $t_due_date ) ) {
        $t_now = db_now() + $t_1st_due_date_warning;
        if( $t_now > $t_due_date ) {
            if( !bug_is_resolved( $p_bug_id ) ) {
                return true;
            }
        }
    }
    return false;
}

// Function to determine bug within the 2nd_due_date_warning timeframe
function bug_is_2nd_due_date( $p_bug_id ) {
    $t_due_date = bug_get_field( $p_bug_id, 'due_date' );
    $t_2nd_due_date_warning = config_get( '2nd_due_date_warning' );
    if( !date_is_null( $t_due_date ) ) {
        $t_now = db_now() + $t_2nd_due_date_warning;
        if( $t_now > $t_due_date ) {
            if( !bug_is_resolved( $p_bug_id ) ) {
                return true;
            }
        }
    }
    return false;
}

*Replace function print_column_due_date (near bottom file) in file /core/columns_api.php with;

function print_column_due_date( BugData $p_bug, $p_columns_target = COLUMNS_TARGET_VIEW_PAGE ) {
    $t_overdue = '';

    if( !access_has_bug_level( config_get( 'due_date_view_threshold' ), $p_bug->id ) ||
        date_is_null( $p_bug->due_date )
    ) {
        $t_value = ' ';
    } else {
        if( bug_is_1st_due_date( $p_bug->id ) ) {
            $t_overdue = ' near_1st_due_date';
        }
        if( bug_is_2nd_due_date( $p_bug->id ) ) {
            $t_overdue = ' near_2nd_due_date';
        }       
        if( bug_is_overdue( $p_bug->id ) ) {
            $t_overdue = ' overdue';
        }

        $t_value = string_display_line( date( config_get( 'short_date_format' ), $p_bug->due_date ) );
    }

    printf( '<td class="column-due-date%s">%s</td>', $t_overdue, $t_value );
}

*Replace function print_column_overdue (bottom file) in file /core/columns_api.php with if you also want to change the 'overdue' column;

function print_column_overdue( BugData $p_bug, $p_columns_target = COLUMNS_TARGET_VIEW_PAGE ) {

    echo '<td class="column-overdue">';

    if( access_has_bug_level( config_get( 'due_date_view_threshold' ), $p_bug->id ) &&
        !date_is_null( $p_bug->due_date ) &&
        bug_is_overdue( $p_bug->id ) ) {
        $t_overdue_text = lang_get( 'overdue' );
        $t_overdue_text_hover = sprintf( lang_get( 'overdue_since' ), date( config_get( 'short_date_format' ), $p_bug->due_date ) );
        echo '&lt;i class=&quot;fa fa-times-circle-o&quot; title=&quot;' . string_display_line( $t_overdue_text_hover ) . '&quot;></i>';
    } else 
    if( access_has_bug_level( config_get( 'due_date_view_threshold' ), $p_bug->id ) &&
        !date_is_null( $p_bug->due_date ) &&
        bug_is_2nd_due_date( $p_bug->id ) ) {
        $t_overdue_text = lang_get( 'overdue' );
        $t_overdue_text_hover = sprintf( lang_get( 'overdue_since' ), date( config_get( 'short_date_format' ), $p_bug->due_date ) );
        echo '&lt;i class=&quot;fa fa-angle-double-up&quot; title=&quot;' . string_display_line( $t_overdue_text_hover ) . '&quot;></i>';
    } else 
    if( access_has_bug_level( config_get( 'due_date_view_threshold' ), $p_bug->id ) &&
        !date_is_null( $p_bug->due_date ) &&
        bug_is_1st_due_date( $p_bug->id ) ) {
        $t_overdue_text = lang_get( 'overdue' );
        $t_overdue_text_hover = sprintf( lang_get( 'overdue_since' ), date( config_get( 'short_date_format' ), $p_bug->due_date ) );
        echo '&lt;i class=&quot;fa fa-angle-up&quot; title=&quot;' . string_display_line( $t_overdue_text_hover ) . '&quot;></i>';
    } else

    {
        echo ' ';
    }

    echo '&lt;/td>';
}

*Add two lines in bug_view_inc.php under line 184 't_bug_overdue';

$t_bug_near_1st = bug_is_1st_due_date( $f_bug_id );
$t_bug_near_2nd = bug_is_2nd_due_date( $f_bug_id );

*And replace the #Due Date in file bug_view_inc.php;

    # Due Date
    if( $t_show_due_date ) {
        echo '&lt;th class=&quot;bug-due-date category&quot;>', lang_get( 'due_date' ), '&lt;/th>';

        if( $t_bug_overdue ) {
            echo '&lt;td class=&quot;bug-due-date overdue&quot;>', $t_bug_due_date, '&lt;/td>';
        } 
        else if( $t_bug_near_2nd ) {
            echo '&lt;td class=&quot;bug-due-date near_2nd_due_date&quot;>', $t_bug_due_date, '&lt;/td>'; # near_2nd_due_date
        }
        else if( $t_bug_near_1st ) {
            echo '&lt;td class=&quot;bug-due-date near_1st_due_date&quot;>', $t_bug_due_date, '&lt;/td>'; # near_1st_due_date
        }
        else {
            echo '&lt;td class=&quot;bug-due-date&quot;>', $t_bug_due_date, '&lt;/td>';
        }
    } else {
        $t_spacer += 2;
    }

    if( $t_spacer > 0 ) {
        echo '&lt;td colspan=&quot;', $t_spacer, '&quot;> &lt;/td>';
    }

    echo '&lt;/tr>';

*enjoy!

EDIT (dregad) markdown formatting

MPAA

MPAA

2019-09-26 04:02

reporter   ~0062910

dregad

dregad

2019-09-26 05:14

developer   ~0062911

@MPAA to make your changes easier to apply, I would suggest to provide them as a patch, ideally using git format-patch or git diff; if you're not using git, then unified diff (diff -u)

MPAA

MPAA

2019-09-26 06:52

reporter   ~0062912

I've did some magic, at least for me. My first Github project. Hope this helps.
https://github.com/Maximus48p/Mantisbt_due_date

dregad

dregad

2019-09-26 09:20

developer   ~0062915

Thanks. It's better, but still that's not really what I meant... Sorry if I was not clear.

What you should do is

  1. Fork MantisBT repo
  2. Create a feature branch (you should not use master)
  3. Apply your changes
  4. Commit
  5. run git format-patch
  6. upload resulting patch file here
dregad

dregad

2019-12-08 12:05

developer   ~0063198

PR https://github.com/mantisbt/mantisbt/pull/1589

Issue History

Date Modified Username Field Change
2014-01-22 12:28 Hyper New Issue
2014-01-22 12:36 dregad Note Added: 0039140
2014-01-22 12:36 dregad Priority normal => low
2014-01-22 12:36 dregad Severity minor => feature
2014-01-22 12:36 dregad Status new => acknowledged
2014-01-22 12:36 dregad Category customization => bugtracker
2014-01-23 06:27 Hyper Note Added: 0039149
2016-08-24 21:16 vboctor Relationship added related to 0021642
2017-01-04 04:42 dregad Relationship added related to 0009155
2019-09-19 03:03 MPAA Note Added: 0062865
2019-09-25 14:11 MPAA Note Added: 0062908
2019-09-25 14:27 MPAA Note Edited: 0062908 View Revisions
2019-09-25 14:28 MPAA Note Edited: 0062908 View Revisions
2019-09-26 04:02 MPAA Note Added: 0062910
2019-09-26 04:02 MPAA File Added: Schermafbeelding 2019-09-26 om 10.01.59.png
2019-09-26 05:14 dregad Note Added: 0062911
2019-09-26 05:18 dregad Note Edited: 0062908 View Revisions
2019-09-26 06:52 MPAA Note Added: 0062912
2019-09-26 06:52 MPAA File Added: Schermafbeelding 2019-09-26 om 10.01.59-2.png
2019-09-26 07:08 MPAA Note Edited: 0062908 View Revisions
2019-09-26 09:20 dregad Note Added: 0062915
2019-09-26 09:22 dregad File Deleted: Schermafbeelding 2019-09-26 om 10.01.59-2.png
2019-12-08 12:01 dregad Relationship added child of 0026438
2019-12-08 12:04 dregad Status acknowledged => assigned
2019-12-08 12:04 dregad Assigned To => dregad
2019-12-08 12:05 dregad Note Added: 0063198