View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0022104 | mantisbt | ui | public | 2017-01-02 15:52 | 2019-04-21 02:53 |
Reporter | gthomas | Assigned To | dregad | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 2.0.0 | ||||
Target Version | 2.21.0 | Fixed in Version | 2.21.0 | ||
Summary | 0022104: My View Page layout misses some boxes | ||||
Description | The n/2th box and the last box is hidden. The code in my_view_page.php is simply wrong: the if/elseif/else prints the box only in the else branch, and skips it in the if branch, when it ends the first column, starts the second, but does not print the n/2th box. | ||||
Tags | patch | ||||
Attached Files | my_view_page.php.patch (4,122 bytes)
diff --git a/my_view_page.php b/my_view_page.php index f3a479462..9893ac497 100644 --- a/my_view_page.php +++ b/my_view_page.php @@ -85,8 +85,6 @@ $t_page_count = null; $t_boxes = config_get( 'my_view_boxes' ); asort( $t_boxes ); -reset( $t_boxes ); -#print_r ($t_boxes); $t_project_id = helper_get_current_project(); $t_timeline_view_threshold_access = access_has_project_level( config_get( 'timeline_view_threshold' ) ); @@ -95,56 +93,59 @@ $t_timeline_view_class = ( $t_timeline_view_threshold_access ) ? "col-md-7" : "c <div class="col-xs-12 <?php echo $t_timeline_view_class ?>"> <?php -$t_number_of_boxes = count ( $t_boxes ); $t_boxes_position = config_get( 'my_view_boxes_fixed_position' ); -$t_counter = 0; $t_two_columns_applied = false; define( 'MY_VIEW_INC_ALLOW', true ); -while (list ($t_box_title, $t_box_display) = each ($t_boxes)) { - # don't display bugs that are set as 0 +# First, filter out the non-visible boxes +$t_box_titles = array(); +foreach( $t_boxes as $t_box_title => $t_box_display ) { + # don't display bugs that are set as 0 if ($t_box_display == 0) { - $t_number_of_boxes = $t_number_of_boxes - 1; + continue; } - # don't display "Assigned to Me" bugs to users that bugs can't be assigned to - else if( - $t_box_title == 'assigned' - && ( current_user_is_anonymous() + # don't display "Assigned to Me" bugs to users that bugs can't be assigned to + if( $t_box_title == 'assigned' + && ( current_user_is_anonymous() || !access_has_project_level( config_get( 'handle_bug_threshold' ), $t_project_id, $t_current_user_id ) ) ) { - $t_number_of_boxes = $t_number_of_boxes - 1; + continue; } - # don't display "Monitored by Me" bugs to users that can't monitor bugs - else if( $t_box_title == 'monitored' && ( current_user_is_anonymous() OR !access_has_project_level( config_get( 'monitor_bug_threshold' ), $t_project_id, $t_current_user_id ) ) ) { - $t_number_of_boxes = $t_number_of_boxes - 1; + # don't display "Monitored by Me" bugs to users that can't monitor bugs + if( $t_box_title == 'monitored' && ( current_user_is_anonymous() || !access_has_project_level( config_get( 'monitor_bug_threshold' ), $t_project_id, $t_current_user_id ) ) ) { + continue; } - # don't display "Reported by Me" bugs to users that can't report bugs - else if( in_array( $t_box_title, array( 'reported', 'feedback', 'verify' ) ) && + # don't display "Reported by Me" bugs to users that can't report bugs + if( in_array( $t_box_title, array( 'reported', 'feedback', 'verify' ) ) && ( current_user_is_anonymous() OR !access_has_project_level( config_get( 'report_bug_threshold' ), $t_project_id, $t_current_user_id ) ) ) { - $t_number_of_boxes = $t_number_of_boxes - 1; - } - - # display the box - else { - if( !$t_timeline_view_threshold_access ) { - if ($t_counter >= $t_number_of_boxes / 2 && !$t_two_columns_applied) { - echo '</div>'; - echo '<div class="col-xs-12 col-md-6">'; - $t_two_columns_applied = true; - } elseif ($t_counter >= $t_number_of_boxes && $t_two_columns_applied) { - echo '</div>'; - } else { - include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'my_view_inc.php' ); - echo '<div class="space-10"></div>'; - } - $t_counter++; - } else { - include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'my_view_inc.php' ); - echo '<div class="space-10"></div>'; - } + continue; } + + $t_box_titles[] = $t_box_title; +} + +if( $t_timeline_view_threshold_access ) { + include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'my_view_inc.php' ); + echo '<div class="space-10"></div>'; +} + +$t_counter = 0; +$t_number_of_boxes = count( $t_box_titles ); +foreach( $t_box_titles as $t_box_title) { + if ($t_counter >= $t_number_of_boxes / 2 && !$t_two_columns_applied) { + echo '</div>'; + echo '<div class="col-xs-12 col-md-6">'; + $t_two_columns_applied = true; + } + # display the box + include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'my_view_inc.php' ); + echo '<div class="space-10"></div>'; + $t_counter++; +} +if ($t_two_columns_applied && $t_counter != 0) { + echo '</div>'; } ?> </div> | ||||
I can confirm the problem, which only occurs when the Timeline is hidden. The proposed patch is equally wrong however, because it does not work when the Timeline is enabled (see attached screenshot). |
|
Hmm, I cannot reproduce this issue. Here is a snapshot of what I am getting: |
|
I had the same problem when the Timeline was hidden, this correction of the file my_view_page works for me. my_view_page.php (5,971 bytes)
<?php # MantisBT - A PHP based bugtracking system # MantisBT is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # MantisBT is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with MantisBT. If not, see <http://www.gnu.org/licenses/>. /** * My View Page * * @package MantisBT * @copyright Copyright 2000 - 2002 Kenzaburo Ito - kenito@300baud.org * @copyright Copyright 2002 MantisBT Team - mantisbt-dev@lists.sourceforge.net * @link http://www.mantisbt.org * * @uses core.php * @uses access_api.php * @uses authentication_api.php * @uses category_api.php * @uses compress_api.php * @uses config_api.php * @uses constant_inc.php * @uses current_user_api.php * @uses gpc_api.php * @uses helper_api.php * @uses html_api.php * @uses lang_api.php * @uses print_api.php * @uses user_api.php */ require_once( 'core.php' ); require_api( 'access_api.php' ); require_api( 'authentication_api.php' ); require_api( 'category_api.php' ); require_api( 'compress_api.php' ); require_api( 'config_api.php' ); require_api( 'constant_inc.php' ); require_api( 'current_user_api.php' ); require_api( 'gpc_api.php' ); require_api( 'helper_api.php' ); require_api( 'html_api.php' ); require_api( 'lang_api.php' ); require_api( 'print_api.php' ); require_api( 'user_api.php' ); require_api( 'layout_api.php' ); require_css( 'status_config.php' ); auth_ensure_user_authenticated(); $t_current_user_id = auth_get_current_user_id(); # Improve performance by caching category data in one pass category_get_all_rows( helper_get_current_project() ); compress_enable(); # don't index my view page html_robots_noindex(); layout_page_header_begin( lang_get( 'my_view_link' ) ); if( current_user_get_pref( 'refresh_delay' ) > 0 ) { html_meta_redirect( 'my_view_page.php?refresh=true', current_user_get_pref( 'refresh_delay' ) * 60 ); } layout_page_header_end(); layout_page_begin( __FILE__ ); $f_page_number = gpc_get_int( 'page_number', 1 ); $t_per_page = config_get( 'my_view_bug_count' ); $t_bug_count = null; $t_page_count = null; $t_boxes = config_get( 'my_view_boxes' ); asort( $t_boxes ); reset( $t_boxes ); #print_r ($t_boxes); // MODIFICATION ALTECA - START // Display or not the moved box (on the fly: not cached) $t_current_user_acces = user_get_access_level( $t_current_user_id, helper_get_current_project() ); if( $t_current_user_acces != PERFORM_DIRECTEUR) { $t_boxes['moved'] = "0"; // Hide (already shown by default) } // MODIFICATION ALTECA - END $t_project_id = helper_get_current_project(); $t_timeline_view_threshold_access = access_has_project_level( config_get( 'timeline_view_threshold' ) ); $t_timeline_view_class = ( $t_timeline_view_threshold_access ) ? "col-md-7" : "col-md-6"; ?> <div class="col-xs-12 <?php echo $t_timeline_view_class ?>"> <?php $t_number_of_boxes = count ( $t_boxes ); $t_boxes_position = config_get( 'my_view_boxes_fixed_position' ); $t_counter = 0; $t_two_columns_applied = false; define( 'MY_VIEW_INC_ALLOW', true ); while (list ($t_box_title, $t_box_display) = each ($t_boxes)) { # don't display bugs that are set as 0 if ($t_box_display == 0) { $t_number_of_boxes = $t_number_of_boxes - 1; } # don't display "Assigned to Me" bugs to users that bugs can't be assigned to else if( $t_box_title == 'assigned' && ( current_user_is_anonymous() || !access_has_project_level( config_get( 'handle_bug_threshold' ), $t_project_id, $t_current_user_id ) ) ) { $t_number_of_boxes = $t_number_of_boxes - 1; } # don't display "Monitored by Me" bugs to users that can't monitor bugs else if( $t_box_title == 'monitored' && ( current_user_is_anonymous() OR !access_has_project_level( config_get( 'monitor_bug_threshold' ), $t_project_id, $t_current_user_id ) ) ) { $t_number_of_boxes = $t_number_of_boxes - 1; } # don't display "Reported by Me" bugs to users that can't report bugs else if( in_array( $t_box_title, array( 'reported', 'feedback', 'verify' ) ) && ( current_user_is_anonymous() OR !access_has_project_level( config_get( 'report_bug_threshold' ), $t_project_id, $t_current_user_id ) ) ) { $t_number_of_boxes = $t_number_of_boxes - 1; } # display the box else { if( !$t_timeline_view_threshold_access ) { if ($t_counter >= $t_number_of_boxes / 2 && !$t_two_columns_applied) { echo '</div>'; echo '<div class="col-xs-12 col-md-6">'; include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'my_view_inc.php' ); echo '<div class="space-10"></div>'; $t_two_columns_applied = true; } elseif ($t_counter >= $t_number_of_boxes && $t_two_columns_applied) { echo '</div>'; } else { include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'my_view_inc.php' ); echo '<div class="space-10"></div>'; } $t_counter++; } else { include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'my_view_inc.php' ); echo '<div class="space-10"></div>'; } } } ?> </div> <?php if( $t_timeline_view_threshold_access ) { ?> <div class="col-md-5 col-xs-12"> <?php # Build a simple filter that gets all bugs for current project $g_timeline_filter = array(); $g_timeline_filter[FILTER_PROPERTY_HIDE_STATUS] = array( META_FILTER_NONE ); $g_timeline_filter = filter_ensure_valid_filter( $g_timeline_filter ); include( $g_core_path . 'timeline_inc.php' ); ?> <div class="space-10"></div> </div> <?php } layout_page_end(); |
|
Thank you sperraud for your workaround. with Your my_view_page.php worked for me. Zazzarim |
|
@Kirill reported on Gitter [1] that he's facing the same issue in current master branch ( MantisBT master 6d288c64 as I write this) |
|
MantisBT: master a239f827 2019-04-04 08:00 Details Diff |
Fix My View Page missing boxes When displaying boxes on 2 columns (i.e. when Timeline is not shown), the code handling the display of boxes failed to print the first box after starting the 2nd column. This commit simplifies the logic, only handling the closing of first column's div and opening of 2nd column, and always printing the box regardless of status. It also removes dead code: the elseif to close the div at end of 2nd column was never called, the div is actually closed after the foreach loop ends. Fixes 0022104 |
Affected Issues 0022104 |
|
mod - my_view_page.php | Diff File | ||
MantisBT: master 5ad064d8 2019-04-11 05:36 Details Diff |
Fixes for "My View" boxes display Addresses the following issues: - 0022104 My View Page layout misses some boxes - 0023418 Plugin tab in Summary section not highlighted when selected - 0025679 Uneven distribution of boxes on My View page when Timeline is OFF Plus some minor code cleanup. Fixes 0022104, 0023418, 0025679 PR https://github.com/mantisbt/mantisbt/pull/1497 |
Affected Issues 0022104, 0023418, 0025679 |
|
mod - config_defaults_inc.php | Diff File | ||
mod - core/obsolete.php | Diff File | ||
mod - my_view_page.php | Diff File |