View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0005169 | mantisbt | printing | public | 2005-01-27 06:25 | 2005-05-31 11:23 |
| Reporter | Schroedi | Assigned To | masc | ||
| Priority | normal | Severity | tweak | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Product Version | 0.19.2 | ||||
| Fixed in Version | 1.0.0a3 | ||||
| Summary | 0005169: Exporting to Exel file - field names are not selected by language | ||||
| Description | By exporting to an exel file the field names are not printed in the users language. | ||||
| Steps To Reproduce | View Issues > [ Print Reports ] > Excel 2000(icon) | ||||
| Additional Information | Replace the get_field_names() function in print_all_bug_options_inc.php with attached code. | ||||
| Tags | No tags attached. | ||||
| Attached Files | function_code.txt (1,145 bytes)
function get_field_names()
{
#currently 27 fields
return $t_arr = array (
lang_get( 'id' ),
lang_get( 'category' ),
lang_get( 'severity' ),
lang_get( 'reproducibility' ),
lang_get( 'date_submitted' ),
lang_get( 'last_update' ),
lang_get( 'reporter' ),
lang_get( 'assigned_to' ),
lang_get( 'priority' ),
lang_get( 'status' ),
lang_get( 'build' ),
lang_get( 'projection' ),
lang_get( 'eta' ),
lang_get( 'platform' ),
lang_get( 'os' ),
lang_get( 'os_version' ),
lang_get( 'product_version' ),
lang_get( 'resolution' ),
lang_get( 'duplicate_id' ),
lang_get( 'summary' ),
lang_get( 'description' ),
lang_get( 'steps_to_reproduce' ),
lang_get( 'additional' ).'_'.lang_get( 'information' ),
lang_get( 'attached_files' ),
lang_get( 'bugnote_title' ),
lang_get( 'bugnote_date' ),
lang_get( 'bugnote_description' )
) ;
} print_all_bug_page_excel.php.txt (16,368 bytes)
<?php
# Mantis - a php based bugtracking system
# Copyright (C) 2000 - 2002 Kenzaburo Ito - kenito@300baud.org
# Copyright (C) 2002 - 2004 Mantis Team - mantisbt-dev@lists.sourceforge.net
# This program is distributed under the terms and conditions of the GPL
# See the README and LICENSE files for details
# --------------------------------------------------------
# $Id: print_all_bug_page_excel.php,v 1.8 2005/03/02 11:14:10 christian Exp $
# --------------------------------------------------------
?>
<?php
# Excel (97 and above) export page
# The bugs displayed in print_all_bug_page.php are saved in a .xls file
# The IE icon allows to see or directly print the same result
?>
<?php
require_once( 'core.php' );
$t_core_path = config_get( 'core_path' );
require_once( $t_core_path.'current_user_api.php' );
require_once( $t_core_path.'bug_api.php' );
require_once( $t_core_path.'string_api.php' );
?>
<?php require( 'print_all_bug_options_inc.php' ) ?>
<?php auth_ensure_user_authenticated() ?>
<?php
$f_type_page = gpc_get_string( 'type_page', 'excel' );
$f_search = gpc_get_string( 'search', false ); # @@@ need a better default
$f_offset = gpc_get_int( 'offset', 0 );
$f_export = gpc_get_string( 'export' );
$f_show_flag = gpc_get_bool( 'show_flag' );
# excel or html export
if ( $f_type_page != 'html' ) {
$t_export_title = $g_page_title."_excel";
$t_export_title = ereg_replace( '[\/:*?"<>|]', '', $t_export_title );
# Make sure that IE can download the attachments under https.
header( 'Pragma: public' );
header( 'Content-Type: application/vnd.ms-excel' );
header( 'Content-Disposition: attachment; filename="' . $t_export_title . '.xls"' );
}
#settings for choosing the fields to print
# get the fields list
$t_field_name_arr = get_field_names();
# This is where we used to do the entire actual filter ourselves
$t_page_number = gpc_get_int( 'page_number', 1 );
$t_per_page = null;
$t_bug_count = null;
$t_page_count = null;
$result = filter_get_bug_rows( $t_page_number, $t_per_page, $t_page_count, $t_bug_count );
if ( $result === false ) {
print_header_redirect( 'view_all_set.php?type=0&print=1' );
}
$row_count = sizeof( $result );
#settings for choosing the fields to print
# get the fields list
$t_field_name_arr = get_field_names();
$field_name_count = count( $t_field_name_arr );
# get printing preferences
$t_user_id = auth_get_current_user_id();
$query3 ="SELECT print_pref ".
"FROM $g_mantis_user_print_pref_table ".
"WHERE user_id='$t_user_id' ";
$result3 = db_query( $query3 );
$row = db_fetch_array( $result3 );
$t_prefs = $row['print_pref'];
?>
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<?php html_page_top1() ?>
<style id="Classeur1_16681_Styles">
</style>
<?php html_head_end() ?>
<?php html_body_begin() ?>
<div id="Classeur1_16681" align=center x:publishsource="Excel">
<table x:str border=0 cellpadding=0 cellspacing=0 width=100% style='border-collapse:
collapse'>
<tr>
<?php
# titles desactivated for html pages
if ( $f_type_page != 'html' ) {
for ( $i=0 ; $i <$field_name_count ; $i++ ) {
if ( isset( $t_prefs[$i] ) && ( 1 == $t_prefs[$i] ) ) { ?>
<td class=xl2316681 style='border-left:none'><?php echo lang_get($t_field_name_arr[$i]) ?></td>
<?php
} //if isset
} //for
} //if
?>
</tr>
<?php
$field_name_count = $field_name_count;
$f_bug_arr = explode_enum_string( $f_export );
for( $i=0; $i < $row_count; $i++ ) {
if ( isset( $f_bug_arr[$i] ) ) {
$index = $f_bug_arr[$i];
$t_bug_arr_sort[$index]=1;
}
}
for( $i=0; $i < $row_count; $i++ ) {
# prefix bug data with v_
extract( $result[$i], EXTR_PREFIX_ALL, 'v' );
$t_last_updated = date( $g_short_date_format, $v_last_updated );
# grab the bugnote count
$bugnote_count = bug_get_bugnote_count( $v_id, CHANGELOG );
# grab the project name
$project_name = project_get_field( $v_project_id, 'name' );
$query4 = "SELECT *
FROM $g_mantis_bug_text_table
WHERE id='$v_bug_text_id'";
$result4 = db_query( $query4 );
$row = db_fetch_array( $result4 );
extract( $row, EXTR_PREFIX_ALL, 'v2' );
$v_os = string_display( $v_os );
$v_os_build = string_display( $v_os_build );
$v_platform = string_display( $v_platform );
$v_version = string_display( $v_version );
$v_summary = string_display_links( $v_summary );
# line feeds are desactivated in case of excel export, to avoid multiple lines
if ( $f_type_page != 'html' ) {
$v2_description = stripslashes( str_replace( '\n',' ',$v2_description ));
$v2_steps_to_reproduce = stripslashes( str_replace( '\n',' ',$v2_steps_to_reproduce ) );
$v2_additional_information = stripslashes( str_replace( '\n',' ',$v2_additional_information ));
}
else {
$v2_description = string_display_links( $v2_description );
$v2_steps_to_reproduce = string_display_links( $v2_steps_to_reproduce );
$v2_additional_information = string_display_links( $v2_additional_information );
}
# an index for incrementing the array position
$name_index=0;
if ( isset( $t_bug_arr_sort[$i] ) || ( $f_show_flag==0 ) && ($bugnote_count>0) ) {
?>
<tr>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v_id;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v_category;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo get_enum_element( 'severity', $v_severity );
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo get_enum_element( 'reproducibility', $v_reproducibility );
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo date( config_get( 'normal_date_format' ), $v_date_submitted );
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo date( config_get( 'normal_date_format' ),$v_last_updated );
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php print_user_with_subject( $v_reporter_id, $v_id ) ;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php print_user_with_subject( $v_handler_id, $v_id ) ;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo get_enum_element( 'priority', $v_priority );
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo get_enum_element( 'status', $v_status );
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v_build;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo get_enum_element( 'projection', $v_projection );
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo get_enum_element( 'eta', $v_eta );
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v_platform;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v_os;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v_os_build;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v_version;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo get_enum_element( 'resolution', $v_resolution );
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v_duplicate_id;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v_summary;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v2_description ;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v2_steps_to_reproduce;
echo "</td>";
}
$name_index++; ?>
<?php if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v2_additional_information;
echo "</td>";
}
$name_index++; ?>
<?php
if ( ( $name_index < $field_name_count ) && ( !isset( $t_prefs[$name_index] ) || ( 1 == $t_prefs[$name_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php
$query5 = "SELECT filename, filesize, date_added
FROM $g_mantis_bug_file_table
WHERE bug_id='$v_id'";
$result5 = db_query( $query5 );
$num_files = db_num_rows( $result5 );
for ( $j=0;$j<$num_files;$j++ ) {
$row = db_fetch_array( $result5 );
extract( $row, EXTR_PREFIX_ALL, 'v2' );
$v2_filesize = round( $v2_filesize / 1024 );
$v2_date_added = date( config_get( 'normal_date_format' ), ( $v2_date_added ) );
switch ( $g_file_upload_method ) {
case DISK: PRINT "$v2_filename ($v2_filesize KB) $v2_date_added";
break;
case DATABASE: PRINT "$v2_filename ($v2_filesize KB) $v2_date_added";
break;
} #case
if ( $j != ( $num_files - 1 ) && ( $f_type_page == 'html' ) ) {
PRINT '<br />';
}
else {
PRINT ' ';
} #if
} #for loop
echo "</td>";
}# if index
$name_index++;
?>
<?php # Bugnotes BEGIN (3 rows) ?>
<td colspan=3>
<?php # print bugnotes
# get the bugnote data
if ( !access_has_bug_level( config_get( 'private_bugnote_threshold' ), $v_id ) ) {
$t_restriction = 'AND view_state=' . VS_PUBLIC;
} else {
$t_restriction = '';
}
$t_bugnote_table = config_get( 'mantis_bugnote_table' );
$t_bugnote_text_table = config_get( 'mantis_bugnote_text_table' );
$t_bugnote_order = current_user_get_pref( 'bugnote_order' );
$query6 = "SELECT *,date_submitted
FROM $t_bugnote_table
WHERE bug_id='$v_id' AND note_type='".CHANGELOG."'
ORDER BY date_submitted $t_bugnote_order";
$result6 = db_query( $query6 );
$num_notes = db_num_rows( $result6 );
# save the index, and use an own bugnote_index
$bugnote_index = $name_index ;
for ( $k=0; $k < $num_notes; $k++ ) {
# prefix all bugnote data with v3_
$row = db_fetch_array( $result6 );
extract( $row, EXTR_PREFIX_ALL, 'v3' );
$v3_date_submitted = date( config_get( 'normal_date_format' ), ( db_unixtimestamp( $v3_date_submitted ) ) );
# grab the bugnote text and id and prefix with v3_
$query6 = "SELECT note, id
FROM $t_bugnote_text_table
WHERE id='$v3_bugnote_text_id'";
$result7 = db_query( $query6 );
$v3_note = db_result( $result7, 0, 0 );
$v3_bugnote_text_id = db_result( $result7, 0, 1 );
$t_note = '';
switch ( $v3_note_type ) {
case REMINDER:
$t_note .= lang_get( 'reminder_sent_to' ) . ': ';
$v3_note_attr = substr( $v3_note_attr, 1, strlen( $v3_note_attr ) - 2 );
$t_to = array();
foreach ( explode( '|', $v3_note_attr ) as $t_recipient ) {
$t_to[] = prepare_user_name( $t_recipient );
}
$t_note .= implode( ', ', $t_to ) . '|';
default:
$t_note .= $v3_note;
}
if ( $f_type_page != 'html' ) {
$v3_note = stripslashes( str_replace( '\n','|',$t_note ));
} else {
$v3_note = string_display_links( $t_note );
}
?>
<table>
<tr>
<?php if ( ( $bugnote_index < $field_name_count ) && ( !isset( $t_prefs[$bugnote_index] )||( 1 == $t_prefs[$bugnote_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php print_user( $v3_reporter_id ) ;
echo "</td>";
}
$bugnote_index++; ?>
<?php if ( ( $bugnote_index < $field_name_count ) && ( !isset( $t_prefs[$bugnote_index] )||( 1 == $t_prefs[$bugnote_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v3_date_submitted;
echo "</td>";
}
$bugnote_index++; ?>
<?php if ( ( $bugnote_index < $field_name_count ) && ( !isset( $t_prefs[$bugnote_index] )||( 1 == $t_prefs[$bugnote_index] ) ) ) { ?>
<td class=xl2216681 nowrap style='border-top:none;border-left:none'>
<?php echo $v3_note;
echo "</td>";
}
$bugnote_index++; ?>
</tr>
</table>
<?php
# get back
$bugnote_index = $name_index ;
} # end for bugnote
?>
<?php # Bugnotes END ?>
</tr>
<?php
} #isset
} #for loop
?>
</table>
</div>
| ||||