? bug_timetrack_view_inc.php
? config_inc.php
Index: bug_change_status_page.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/bug_change_status_page.php,v
retrieving revision 1.23
diff -u -r1.23 bug_change_status_page.php
--- bug_change_status_page.php 8 Aug 2005 22:30:58 -0000 1.23
+++ bug_change_status_page.php 6 Jul 2006 09:39:26 -0000
@@ -228,6 +228,24 @@
+
+
+ $f_new_status ) ) { ?>
+
+
>
+
+
+
+
+
+
+
+
+
+
+
= $t_resolved ) && ( CLOSED > $f_new_status ) ) { ?>
Index: bug_update.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/bug_update.php,v
retrieving revision 1.88.4.1
diff -u -r1.88.4.1 bug_update.php
--- bug_update.php 13 Dec 2005 00:58:52 -0000 1.88.4.1
+++ bug_update.php 11 Jul 2006 07:57:26 -0000
@@ -66,6 +66,26 @@
$t_bug_data->view_state = gpc_get_int( 'view_state', $t_bug_data->view_state );
$t_bug_data->summary = gpc_get_string( 'summary', $t_bug_data->summary );
+
+
+ # Sx: Time tracker
+ # Store values for estimated and elapsed time
+ $t_bug_data->est_curr = gpc_get_int( 'est_curr', $t_bug_data->est_curr );
+ $t_bug_data->elapsed = gpc_get_int( 'elapsed', $t_bug_data->elapsed );
+
+ # Check if more time elapsed than estimated (-> error)
+ if ($t_bug_data->elapsed > $t_bug_data->est_curr) {
+ # trigger_error( ERROR_MORE_ELAPSED_THAN_ESTIMATED, ERROR );
+ $t_bug_data->est_curr = $t_bug_data->elapsed;
+ };
+
+ # If OriginalEstimation is 0 (was not yet set) -> take value of CurrentEstimation
+ if ( $t_bug_data->est_orig == 0 ) {
+ $t_bug_data->est_orig = $t_bug_data->est_curr;
+ }
+
+
+
$t_bug_data->description = gpc_get_string( 'description', $t_bug_data->description );
$t_bug_data->steps_to_reproduce = gpc_get_string( 'steps_to_reproduce', $t_bug_data->steps_to_reproduce );
$t_bug_data->additional_information = gpc_get_string( 'additional_information', $t_bug_data->additional_information );
@@ -106,7 +126,7 @@
continue;
}
- # Only update the field if it is posted
+ # Only update the field if it is posted
# ( will fail in custom_field_set_value(), if it was required )
if ( $t_custom_field_value === null ) {
continue;
Index: bug_update_page.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/bug_update_page.php,v
retrieving revision 1.89
diff -u -r1.89 bug_update_page.php
--- bug_update_page.php 12 Jun 2005 21:04:43 -0000 1.89
+++ bug_update_page.php 6 Jul 2006 09:35:08 -0000
@@ -294,6 +294,46 @@
*/ ?>
+
+
+>
+
+
+
+
+
+
+ est_orig == "0" ) {
+ # echo "bgcolor=".get_status_color( $t_bug->status ); }
+ echo "bgcolor=#ffffb0"; }
+ ?>
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ est_curr - $t_bug->elapsed ?>
+
+
+
+
Index: bug_view_advanced_page.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/bug_view_advanced_page.php,v
retrieving revision 1.76.6.1
diff -u -r1.76.6.1 bug_view_advanced_page.php
--- bug_view_advanced_page.php 1 Jan 2006 02:58:50 -0000 1.76.6.1
+++ bug_view_advanced_page.php 25 Aug 2006 12:51:15 -0000
@@ -385,6 +385,14 @@
}
?>
+
+
+
+
+
Index: bug_view_page.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/bug_view_page.php,v
retrieving revision 1.77.6.1
diff -u -r1.77.6.1 bug_view_page.php
--- bug_view_page.php 1 Jan 2006 02:58:50 -0000 1.77.6.1
+++ bug_view_page.php 25 Aug 2006 12:51:15 -0000
@@ -291,6 +291,13 @@
+
+
+
+
Index: core/bug_api.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/core/bug_api.php,v
retrieving revision 1.95.8.1.6.1
diff -u -r1.95.8.1.6.1 bug_api.php
--- core/bug_api.php 18 Apr 2006 00:53:04 -0000 1.95.8.1.6.1
+++ core/bug_api.php 25 Aug 2006 12:51:20 -0000
@@ -53,6 +53,11 @@
var $sponsorship_total = 0;
var $sticky = 0;
+ # Sx: Time tracking
+ var $est_orig = 0;
+ var $est_curr = 0;
+ var $elapsed = 0;
+
# omitted:
# var $bug_text_id
var $profile_id;
@@ -745,6 +750,12 @@
reproducibility='$c_bug_data->reproducibility',
status='$c_bug_data->status',
resolution='$c_bug_data->resolution',
+
+ # Sx: Time tracking
+ est_orig='$c_bug_data->est_orig',
+ est_curr='$c_bug_data->est_curr',
+ elapsed='$c_bug_data->elapsed',
+
projection='$c_bug_data->projection',
category='$c_bug_data->category',
eta='$c_bug_data->eta',
@@ -787,6 +798,11 @@
history_log_event_direct( $p_bug_id, 'sponsorship_total', $t_old_data->sponsorship_total, $p_bug_data->sponsorship_total );
history_log_event_direct( $p_bug_id, 'sticky', $t_old_data->sticky, $p_bug_data->sticky );
+ # Sx: Time tracking
+ history_log_event_direct( $p_bug_id, 'est_orig', $t_old_data->est_orig, $p_bug_data->est_orig );
+ history_log_event_direct( $p_bug_id, 'est_curr', $t_old_data->est_curr, $p_bug_data->est_curr );
+ history_log_event_direct( $p_bug_id, 'elapsed', $t_old_data->elapsed, $p_bug_data->elapsed );
+
# Update extended info if requested
if ( $p_update_extended ) {
$t_bug_text_table = config_get( 'mantis_bug_text_table' );
@@ -1346,6 +1362,11 @@
$t_bug_data->sponsorship_total = db_prepare_int( $p_bug_data->sponsorship_total );
$t_bug_data->sticky = db_prepare_int( $p_bug_data->sticky );
+ # Sx: Time tracking
+ $t_bug_data->est_orig = db_prepare_int( $p_bug_data->est_orig );
+ $t_bug_data->est_curr = db_prepare_int( $p_bug_data->est_curr );
+ $t_bug_data->elapsed = db_prepare_int( $p_bug_data->elapsed );
+
$t_bug_data->description = db_prepare_string( $p_bug_data->description );
$t_bug_data->steps_to_reproduce = db_prepare_string( $p_bug_data->steps_to_reproduce );
$t_bug_data->additional_information = db_prepare_string( $p_bug_data->additional_information );
@@ -1370,6 +1391,11 @@
$p_bug_data->sponsorship_total = string_attribute( $p_bug_data->sponsorship_total );
$p_bug_data->sticky = string_attribute( $p_bug_data->sticky );
+ # Sx: Time tracking
+ $p_bug_data->est_orig = string_attribute( $p_bug_data->est_orig );
+ $p_bug_data->est_curr = string_attribute( $p_bug_data->est_curr );
+ $p_bug_data->elapsed = string_attribute( $p_bug_data->elapsed );
+
$p_bug_data->description = string_textarea( $p_bug_data->description );
$p_bug_data->steps_to_reproduce = string_textarea( $p_bug_data->steps_to_reproduce );
$p_bug_data->additional_information = string_textarea( $p_bug_data->additional_information );
@@ -1394,6 +1420,11 @@
$p_bug_data->sponsorship_total = string_display( $p_bug_data->sponsorship_total );
$p_bug_data->sticky = string_display( $p_bug_data->sticky );
+ # Sx: Time tracking
+ $p_bug_data->est_orig = string_display( $p_bug_data->est_orig );
+ $p_bug_data->est_curr = string_display( $p_bug_data->est_curr );
+ $p_bug_data->elapsed = string_display( $p_bug_data->elapsed );
+
$p_bug_data->description = string_display_links( $p_bug_data->description );
$p_bug_data->steps_to_reproduce = string_display_links( $p_bug_data->steps_to_reproduce );
$p_bug_data->additional_information = string_display_links( $p_bug_data->additional_information );
Index: core/constant_inc.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/core/constant_inc.php,v
retrieving revision 1.52.4.1.6.1
diff -u -r1.52.4.1.6.1 constant_inc.php
--- core/constant_inc.php 7 May 2006 05:56:22 -0000 1.52.4.1.6.1
+++ core/constant_inc.php 25 Aug 2006 12:55:49 -0000
@@ -277,6 +277,9 @@
define( 'ERROR_SIGNUP_NOT_MATCHING_CAPTCHA', 1904 );
define( 'ERROR_LOST_PASSWORD_MAX_IN_PROGRESS_ATTEMPTS_REACHED', 1905 );
+ # Sx: Time tracking
+ # define( 'ERROR_MORE_ELAPSED_THAN_ESTIMATED', 2500 );
+
# ERROR_FILTER_NOT_FOUND
define( 'ERROR_FILTER_NOT_FOUND', 2000 );
define( 'ERROR_FILTER_TOO_OLD', 2001 );
Index: core/relationship_api.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/core/relationship_api.php,v
retrieving revision 1.36
diff -u -r1.36 relationship_api.php
--- core/relationship_api.php 28 Jun 2005 11:04:06 -0000 1.36
+++ core/relationship_api.php 6 Jul 2006 10:03:15 -0000
@@ -497,6 +497,36 @@
return true;
}
+
+ # Sx: Time tracking
+ function outstanding_time( $p_bug_id ) {
+
+ # retrieve all the relationships in which the bug is the source bug
+ $t_relationship = relationship_get_all_src( $p_bug_id );
+ $t_relationship_count = count( $t_relationship );
+ if ( $t_relationship_count == 0 ) {
+ return '';
+ }
+
+ $sumall = 0;
+ $sumremain = 0;
+ for ( $i = 0 ; $i < $t_relationship_count ; $i++ ) {
+ if ( $t_relationship[$i]->type == BUG_DEPENDANT ) {
+ $t_dest_bug_id = $t_relationship[$i]->dest_bug_id;
+ $sumall += bug_get_field( $t_dest_bug_id, 'est_curr' );
+ $t_status = bug_get_field( $t_dest_bug_id, 'status' );
+ if ( $t_status < config_get( 'bug_resolved_status_threshold' ) ) {
+ # the bug is NOT marked as resolved/closed
+ $sumremain += bug_get_field( $t_dest_bug_id, 'est_curr' ) - bug_get_field( $t_dest_bug_id, 'elapsed' );
+ }
+ }
+ }
+
+ return ' ' . $sumremain . ' units outstanding. (total of child issues : ' . $sumall . ')' ;
+ }
+
+
+
# --------------------
# return formatted string with all the details on the requested relationship
function relationship_get_details( $p_bug_id, $p_relationship, $p_html = false, $p_html_preview = false, $p_show_project = false ) {
@@ -560,6 +590,15 @@
}
$t_relationship_info_html .= ' ';
+ # Sx: time tracker : show outstanding time
+ if (( $p_relationship->type == BUG_DEPENDANT ) && ($t_bug->est_orig != 0)) {
+ $t_relationship_info_html .= $t_td .
+ ''.
+ $t_bug->elapsed . ' / ' . $t_bug->est_curr . ' ';}
+ else
+ { $t_relationship_info_html .= $t_td . ' '; };
+
+
# add project name
if( $p_show_project ) {
$t_relationship_info_html .= $t_td . $t_related_project_name . ' ';
@@ -619,7 +658,7 @@
if ( !is_blank( $t_summary ) ) {
if ( relationship_can_resolve_bug( $p_bug_id ) == false ) {
- $t_summary .= ' ' . lang_get( 'relationship_warning_blocking_bugs_not_resolved' ) . ' ';
+ $t_summary .= '' . lang_get( 'relationship_warning_blocking_bugs_not_resolved' ) . outstanding_time ( $p_bug_id ) . ' ';
}
$t_summary = '';
}
@@ -643,7 +682,7 @@
if ( !is_blank( $t_summary ) ) {
if ( relationship_can_resolve_bug( $p_bug_id ) == false ) {
- $t_summary .= '' . lang_get( 'relationship_warning_blocking_bugs_not_resolved' ) . ' ';
+ $t_summary .= '' . lang_get( 'relationship_warning_blocking_bugs_not_resolved' ) . outstanding_time ( $p_bug_id ) . ' ';
}
$t_summary = '';
}
Index: lang/strings_english.txt
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/lang/strings_english.txt,v
retrieving revision 1.267.10.1
diff -u -r1.267.10.1 strings_english.txt
--- lang/strings_english.txt 7 May 2006 05:56:22 -0000 1.267.10.1
+++ lang/strings_english.txt 12 Oct 2006 10:02:05 -0000
@@ -257,6 +257,8 @@
$MANTIS_ERROR[ERROR_LOST_PASSWORD_MAX_IN_PROGRESS_ATTEMPTS_REACHED] = 'Max. number of in-progress requests reached. Please contact the system administrator';
$MANTIS_ERROR[ERROR_PROJECT_RECURSIVE_HIERARCHY] = 'That operation would create a loop in the subproject hierarchy.';
$MANTIS_ERROR[ERROR_USER_CHANGE_LAST_ADMIN] = 'You cannot change the access level of the only ADMINISTRATOR in the system.';
+# Sx: Time tracking
+# $MANTIS_ERROR[ERROR_MORE_ELAPSED_THAN_ESTIMATED] = 'Elapsed time needs to be smaller or equal than estimated time!';
$MANTIS_ERROR[ERROR_PAGE_REDIRECTION] = 'Page redirection error, ensure that there are no spaces outside the PHP block (<?php ?>) in config_inc.php or custom_*.php files.';
#$s_login_error = 'Your account may be disabled or blocked (due to too many failed login attempts) or the username/password you entered is incorrect.';
@@ -574,6 +576,12 @@
$s_sticky_issue = 'Sticky Issue';
$s_profile = 'Profile';
+# Sx: Time tracking
+$s_est_orig = 'Initial';
+$s_est_curr = 'Est. Effort';
+$s_elapsed = 'Elapsed';
+$s_remaining = 'Remaining';
+
# bug_update_page.php
$s_update_advanced_link = 'Update Advanced';
$s_updating_bug_simple_title = 'Updating Issue Information';