View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0003315 | mantisbt | bugtracker | public | 2003-08-26 10:41 | 2005-05-31 19:08 |
| Reporter | Alain Eckenschwiller | Assigned To | vboctor | ||
| Priority | normal | Severity | feature | Reproducibility | N/A |
| Status | closed | Resolution | fixed | ||
| Fixed in Version | 1.0.0a3 | ||||
| Summary | 0003315: Allow user to add custom fields in Reports, Exports and Bugs View | ||||
| Description | It would be nice if user could add custom fields in
| ||||
| Additional Information | allow user to design by hiding or showing fields in bugs overview form (view_all_bug_page.php). | ||||
| Tags | No tags attached. | ||||
| Attached Files | mantis.patch (15,880 bytes)
? mantis.patch
? core/view_columns_api.php
Index: config_defaults_inc.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/config_defaults_inc.php,v
retrieving revision 1.168
diff -u -r1.168 config_defaults_inc.php
--- config_defaults_inc.php 27 May 2004 22:09:20 -0000 1.168
+++ config_defaults_inc.php 7 Jun 2004 01:10:59 -0000
@@ -944,6 +944,7 @@
$g_mantis_custom_field_string_table = $g_db_table_prefix.'_custom_field_string_table';
$g_mantis_upgrade_table = $g_db_table_prefix.'_upgrade_table';
$g_mantis_filters_table = $g_db_table_prefix.'_filters_table';
+ $g_mantis_view_columns_table = $g_db_table_prefix.'_view_columns_table';
$g_mantis_sponsorship_table = $g_db_table_prefix.'_sponsorship_table';
###########################
Index: view_all_inc.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/view_all_inc.php,v
retrieving revision 1.141
diff -u -r1.141 view_all_inc.php
--- view_all_inc.php 26 May 2004 05:25:18 -0000 1.141
+++ view_all_inc.php 7 Jun 2004 01:10:59 -0000
@@ -17,7 +17,9 @@
require_once( $t_core_path.'string_api.php' );
require_once( $t_core_path.'date_api.php' );
require_once( $t_core_path.'icon_api.php' );
-
+ require_once( $t_core_path.'view_columns_api.php' );
+?>
+<?php
$t_filter = current_user_get_bug_filter();
$t_sort = $t_filter['sort'];
@@ -34,7 +36,7 @@
# -- ====================== BUG LIST ============================ --
- $col_count = 10;
+ $col_count = view_columns_get_column_count();
if ( STATUS_LEGEND_POSITION_TOP == config_get( 'status_legend_position' ) ) {
html_status_legend();
@@ -55,13 +57,10 @@
<form method="get" action="bug_actiongroup_page.php">
<table id="buglist" class="width100" cellspacing="1">
<tr>
- <td class="form-title" colspan="<?php echo $col_count - 2; ?>">
- <?php
+ <td class="form-title" colspan="<?php echo $col_count - 3; ?>">
+ <?php echo lang_get( 'viewing_bugs_title' ) ?>
+ <?php
# -- Viewing range info --
-
- $v_start = 0;
- $v_end = 0;
-
if ( sizeof( $rows ) > 0 ) {
$v_start = $t_filter['per_page'] * ($f_page_number-1) +1;
$v_end = $v_start + sizeof( $rows ) -1;
@@ -80,7 +79,7 @@
?> </span>
</td>
- <td class="right" colspan="2">
+ <td class="right" colspan="3">
<span class="small"> <?php
# -- Page number links --
@@ -89,264 +88,19 @@
</td>
</tr>
<?php # -- Bug list column header row -- ?>
-<tr class="row-category">
- <td> </td>
- <td> </td>
- <td> <?php
- # -- Priority column --
-
- print_view_bug_sort_link( 'P', 'priority', $t_sort, $t_dir );
- print_sort_icon( $t_dir, $t_sort, 'priority' );
- ?> </td>
- <td> <?php
- # -- Bug ID column --
-
- print_view_bug_sort_link( lang_get( 'id' ), 'id', $t_sort, $t_dir );
- print_sort_icon( $t_dir, $t_sort, 'id' );
- ?> </td>
-<?php
- # -- Sponsorship Amount --
-
- if ( ON == $t_enable_sponsorship ) {
- echo "\t<td>";
- print_view_bug_sort_link( sponsorship_get_currency(), 'sponsorship_total', $t_sort, $t_dir );
- print_sort_icon( $t_dir, $t_sort, 'sponsorship_total' );
- echo "</td>\n";
- }
-
- # -- Bugnote count column --
-?>
- <td> # </td>
-<?php
- # -- Attachment indicator --
-
- if ( ON == $t_show_attachments ) {
- echo "\t<td>";
- echo '<img src="' . $t_icon_path . 'attachment.png' . '" alt="" />';
- echo "</td>\n";
- }
-?>
- <td> <?php
- # -- Category column --
-
- print_view_bug_sort_link( lang_get( 'category' ), 'category', $t_sort, $t_dir );
- print_sort_icon( $t_dir, $t_sort, 'category' );
- ?> </td>
- <td> <?php
- # -- Severity column --
-
- print_view_bug_sort_link( lang_get( 'severity' ), 'severity', $t_sort, $t_dir );
- print_sort_icon( $t_dir, $t_sort, 'severity' );
- ?> </td>
- <td> <?php
- # -- Status column --
-
- print_view_bug_sort_link( lang_get( 'status' ), 'status', $t_sort, $t_dir );
- print_sort_icon( $t_dir, $t_sort, 'status' );
- ?> </td>
- <td> <?php
- # -- Last Updated column --
-
- print_view_bug_sort_link( lang_get( 'updated' ), 'last_updated', $t_sort, $t_dir );
- print_sort_icon( $t_dir, $t_sort, 'last_updated' );
- ?> </td>
- <td> <?php
- # -- Summary column --
-
- print_view_bug_sort_link( lang_get( 'summary' ), 'summary', $t_sort, $t_dir );
- print_sort_icon( $t_dir, $t_sort, 'summary' );
- ?> </td>
-</tr>
-
+<?php view_columns_draw_view_header_rows($t_dir, $t_sort); ?>
<?php # -- Spacer row -- ?>
<tr>
- <td class="spacer" colspan="<?php echo $col_count; ?>"> </td>
+ <td class="spacer" colspan="<?php echo $col_count ?>"> </td>
</tr>
+<?php mark_time( 'begin loop' ); ?>
+<?php # -- Loop over bug rows and create $v_* variables -- ?>
+<?php view_columns_draw_view_data_rows( $rows, $t_checkboxes_exist ); ?>
+<?php # -- ====================== end of BUG LIST ========================= -- ?>
-<?php
- mark_time( 'begin loop' );
-
- # -- Loop over bug rows and create $v_* variables --
-
- for($i=0; $i < sizeof( $rows ); $i++) {
- # prefix bug data with v_
-
- extract( $rows[$i], EXTR_PREFIX_ALL, 'v' );
-
- $v_summary = string_display_links( $v_summary );
- $t_last_updated = date( config_get( 'short_date_format' ), $v_last_updated );
-
- # choose color based on status
- $status_color = get_status_color( $v_status );
-
- # grab the bugnote count
- $t_bugnote_stats = bug_get_bugnote_stats( $v_id );
- if ( NULL != $t_bugnote_stats ) {
- $bugnote_count = $t_bugnote_stats['count'];
- $v_bugnote_updated = $t_bugnote_stats['last_modified'];
- } else {
- $bugnote_count = 0;
- }
-
- # Check for attachments
- $t_attachment_count = 0;
- if ( ( ON == $t_show_attachments )
- && ( file_can_view_bug_attachments( $v_id ) ) ) {
- $t_attachment_count = file_bug_attachment_count( $v_id );
- }
-
- # grab the project name
- $project_name = project_get_field( $v_project_id, 'name' );
-?>
-<tr bgcolor="<?php echo $status_color; ?>">
- <td> <?php
- # -- Checkbox --
-
- if ( access_has_bug_level( $t_update_bug_threshold, $v_id ) ) {
- $t_checkboxes_exist = true;
- printf( "<input type=\"checkbox\" name=\"bug_arr[]\" value=\"%d\" />" , $v_id );
- } else {
- echo " ";
- }
- ?> </td>
- <td> <?php
- # -- Pencil shortcut --
-
- if ( !bug_is_readonly( $v_id )
- && access_has_bug_level( $t_update_bug_threshold, $v_id ) ) {
- echo '<a href="' . string_get_bug_update_url( $v_id ) . '">';
- echo '<img border="0" src="' . $t_icon_path . 'update.png';
- echo '" alt="' . lang_get( 'update_bug_button' ) . '" /></a>';
- } else {
- echo ' ';
- }
- ?> </td>
- <td> <?php
- # -- Priority --
-
- if ( ON == config_get( 'show_priority_text' ) ) {
- print_formatted_priority_string( $v_status, $v_priority );
- } else {
- print_status_icon( $v_priority );
- }
- ?> </td>
- <td class="center"> <?php
- # -- Bug ID and details link --
-
- print_bug_link( $v_id, false );
- ?> </td>
-<?php
- # -- Sponsorship Amount --
-
- if ( $t_enable_sponsorship == ON ) {
- echo "\t<td class=\"right\">";
- if ( $v_sponsorship_total > 0 ) {
- echo sponsorship_format_amount( $v_sponsorship_total );
- }
- echo "</td>\n";
- }
-?>
- <td class="center"> <?php
- # -- Bugnote count --
-
- if ( $bugnote_count > 0 ) {
- $t_bugnote_link = '<a href="' . string_get_bug_view_url( $v_id )
- . '&nbn=' . $bugnote_count . '#bugnotes">'
- . $bugnote_count . '</a>';
-
- if ( $v_bugnote_updated > strtotime( '-'.$t_filter['highlight_changed'].' hours' ) ) {
- printf( '<span class="bold">%s</span>', $t_bugnote_link );
- } else {
- echo $t_bugnote_link;
- }
- } else {
- echo ' ';
- }
- ?> </td>
-<?php
- # -- Attachment indicator --
-
- if ( ON == $t_show_attachments ) {
- echo "\t<td>";
- if ( 0 < $t_attachment_count ) {
- echo '<a href="' . string_get_bug_view_url( $v_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' ) . '"';
- echo ' />';
- echo '</a>';
- } else {
- echo ' ';
- }
- echo "</td>\n";
- }
-?>
- <td class="center"> <?php
- # -- Category --
-
- # type project name if viewing 'all projects'
- if ( ON == config_get( 'show_bug_project_links' )
- && helper_get_current_project() == ALL_PROJECTS ) {
- echo '<small>[';
- print_view_bug_sort_link( $project_name, 'project_id', $t_sort, $t_dir );
- echo ']</small><br />';
- }
-
- echo string_display( $v_category );
- ?> </td>
- <td class="center"> <?php
- # -- Severity --
-
- print_formatted_severity_string( $v_status, $v_severity );
- ?> </td>
- <td class="center"> <?php
- # -- Status / Handler --
-
- printf( '<u><a title="%s">%s</a></u>'
- , get_enum_element( 'resolution', $v_resolution )
- , get_enum_element( 'status', $v_status )
- );
-
- # print username instead of status
- if ( ON == config_get( 'show_assigned_names' )
- && $v_handler_id > 0 ) {
- echo ' (';
- print_user( $v_handler_id );
- echo ')';
- }
- ?> </td>
- <td class="center"> <?php
- # -- Last Updated --
-
- if ( $v_last_updated > strtotime( '-'.$t_filter['highlight_changed'].' hours' ) ) {
- printf( '<span class="bold">%s</span>', $t_last_updated );
- } else {
- echo $t_last_updated;
- }
- ?> </td>
- <td class="left"> <?php
- # -- Summary --
-
- echo $v_summary;
- if ( VS_PRIVATE == $v_view_state ) {
- printf( ' <img src="%s" alt="(%s)" title="%s" />'
- , $t_icon_path . 'protected.gif'
- , lang_get( 'private' )
- , lang_get( 'private' )
- );
- }
- ?> </td>
-</tr>
-<?php
- # -- end of Repeating bug row --
- }
-
- # -- ====================== end of BUG LIST ========================= --
-
- # -- ====================== MASS BUG MANIPULATION =================== --
-?>
+<?php # -- ====================== MASS BUG MANIPULATION ========================= -- ?>
<tr>
- <td class="left" colspan="<?php echo $col_count-2; ?>">
+ <td colspan="<?php echo $col_count - 3 ?>">
<?php
if ( $t_checkboxes_exist ) {
?>
@@ -360,12 +114,14 @@
}
?>
</td>
- <?php # -- Page number links -- ?>
- <td class="right" colspan="2">
- <span class="small">
- <?php print_page_links( 'view_all_bug_page.php', 1, $t_page_count, $f_page_number ) ?>
- </span>
- </td>
+ <?php # -- Page view links -- ?>
+ <td class="right" colspan="3">
+ <?php view_columns_draw_views_selector(); ?>
+ <?php # -- Page number links -- ?>
+ <span class="small">
+ <?php print_page_links( 'view_all_bug_page.php', 1, $t_page_count, $f_page_number ) ?>
+ </span>
+ </td>
</tr>
<?php # -- ====================== end of MASS BUG MANIPULATION ========================= -- ?>
</table>
Index: view_all_set.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/view_all_set.php,v
retrieving revision 1.31
diff -u -r1.31 view_all_set.php
--- view_all_set.php 18 May 2004 19:32:58 -0000 1.31
+++ view_all_set.php 7 Jun 2004 01:11:00 -0000
@@ -280,11 +280,24 @@
$t_setting_arr['custom_fields'] = $t_custom_fields_data;
break;
- # Just set the search string value
- case '5':
- $t_setting_arr['search'] = $f_search;
-
- break;
+ case '5':
+ $t_setting_arr['search'] = $f_search;
+
+ break;
+
+ # Change column view
+ case '6':
+ $t_view_columns_string = view_columns_db_get_view_columns( $f_view_query_id );
+ # If we can use the query that we've requested,
+ # grab it. We will overwrite the current one at the
+ # bottom of this page
+ if ( $t_view_columns_string != null ) {
+ $t_cookie_detail = explode( '#', $t_view_columns_string, 2 );
+ $t_setting_arr = unserialize( $t_cookie_detail[1] );
+
+ break;
+ }
+ break;
# does nothing. catch all case
default:
break;
Index: core/current_user_api.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/core/current_user_api.php,v
retrieving revision 1.17
diff -u -r1.17 current_user_api.php
--- core/current_user_api.php 8 Apr 2004 22:44:59 -0000 1.17
+++ core/current_user_api.php 7 Jun 2004 01:11:00 -0000
@@ -12,6 +12,7 @@
$t_core_dir = dirname( __FILE__ ).DIRECTORY_SEPARATOR;
require_once( $t_core_dir . 'filter_api.php' );
+ require_once( $t_core_dir . 'view_columns_api.php' );
### Current User API ###
@@ -111,4 +112,33 @@
return $t_filter;
}
+
+ # --------------------
+ # return the bug column format parameters for the current user
+ # this could be modified to call a user_api function to get the
+ # filter out of a db or whatever
+ # This is a modified version of current_user_get_bug_filter
+ function current_user_get_bug_view_columns() {
+ # check to see if new cookie is needed
+ if ( !view_columns_is_cookie_valid() ) {
+ PRINT "<!-- Truely Invalid Cookie --!>\n";
+ return false;
+ }
+
+ $f_view_columns_string = gpc_get_string( 'view_columns', '' );
+ $t_view_all_cookie = '';
+ $t_cookie_detail = '';
+ $t_view_columns = '';
+
+ if ( '' != $f_view_columns_string ) {
+ $t_view_columns = unserialize( $f_view_columns_string );
+ } else {
+ $t_view_all_cookie_id = gpc_get_cookie( config_get( 'view_all_cookie' ), '' );
+ $t_view_all_cookie = view_columns_db_get_view_columns( $t_view_all_cookie_id );
+ $t_cookie_detail = explode( '#', $t_view_all_cookie, 2 );
+ $t_view_columns = unserialize( $t_cookie_detail[1] );
+ }
+
+ return $t_view_columns;
+ }
?>
Index: core/filter_api.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/core/filter_api.php,v
retrieving revision 1.37
diff -u -r1.37 filter_api.php
--- core/filter_api.php 28 May 2004 06:11:58 -0000 1.37
+++ core/filter_api.php 7 Jun 2004 01:11:01 -0000
@@ -407,7 +407,7 @@
$t_from_clauses = array( $t_bug_text_table, $t_project_table );
- array_push( $t_join_clauses, ",($t_bug_table LEFT JOIN $t_bugnote_table ON $t_bugnote_table.bug_id = $t_bug_table.id)" );
+ array_push( $t_join_clauses, ",$t_bug_table LEFT JOIN $t_bugnote_table ON $t_bugnote_table.bug_id = $t_bug_table.id" );
array_push( $t_join_clauses, "LEFT JOIN $t_bugnote_text_table ON $t_bugnote_text_table.id = $t_bugnote_table.bugnote_text_id" );
} else {
Index: lang/strings_english.txt
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/lang/strings_english.txt,v
retrieving revision 1.176
diff -u -r1.176 strings_english.txt
--- lang/strings_english.txt 26 May 2004 04:45:08 -0000 1.176
+++ lang/strings_english.txt 7 Jun 2004 01:11:02 -0000
@@ -865,6 +865,9 @@
$s_open_queries = 'Manage Filters';
$s_query_delete_msg = 'Are you sure you wish to delete this query?';
+# stored column views strings
+$s_switch_view_query = 'Switch View';
+
# view_bug_advanced_page.php
$s_view_simple_link = 'View Simple';
$s_viewing_bug_advanced_details_title = 'Viewing Issue Advanced Details';
| ||||
|
Hacked up the filter_api.php to do something like this but really wasn't sure about how to handle the formating of the columns.. I think there is a better way to do this but I really wasn't sure how. |
|
|
could you try uploading that file with a different name - using both mozilla and IE, it's not downloadable |
|
|
Yes.. I've been on vacation for a few weeks and got back on Monday, but then had some issues with cvs on source forge, but I'm merging the changes from the latest nightly and I will post the new changes here within a day or two. There are still some cluegy things about it (still not user configurable) but I just need to add an interface for that. |
|
|
Not exactly the right forum for a lesson in cvs, but how do I do a cvs diff on a working path to include a file that is not not added (with cvs add.) The reason I ask is because I cannot do a cvs add on a file since the repository tells me that it is read only, but cvs diff tells me that the file is of unknown status. |
|
|
Nevermind about the cvs diff, I just added the file as it's own attachment. |
|