View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002686 | mantisbt | bugtracker | public | 2002-11-05 15:07 | 2005-04-25 07:47 |
| Reporter | Assigned To | thraxisp | |||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Fixed in Version | 1.0.0a2 | ||||
| Summary | 0002686: switch project often goes back to the main page | ||||
| Description | I'm in a project, in the "Users" section, doing management stuff. I pull down the swtich thing, to switch to another project. My expectation is to be switched to that other project, and still be in the "Users" section. But instead I am put to the top level, and have to click down to the "Users" subsection. | ||||
| Tags | No tags attached. | ||||
| Attached Files | set_project.php.txt (2,698 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: set_project.php,v 1.52 2005/02/14 10:21:44 vboctor Exp $
# --------------------------------------------------------
?>
<?php
require_once( 'core.php' );
$t_core_path = config_get( 'core_path' );
require_once( $t_core_path.'current_user_api.php' );
?>
<?php
$f_project_id = gpc_get_string( 'project_id' );
$f_make_default = gpc_get_bool ( 'make_default' );
$f_ref = gpc_get_string( 'ref', '' );
$t_project = split( ';', $f_project_id );
$t_top = $t_project[0];
$t_bottom = $t_project[ count( $t_project ) - 1 ];
if ( ALL_PROJECTS != $t_bottom ) {
project_ensure_exists( $t_bottom );
}
# Set default project
if ( $f_make_default ) {
current_user_set_default_project( $t_top );
}
helper_set_current_project( $f_project_id );
# redirect to 'same page' when switching projects.
# view_all_* pages, and summary
# for proxies that clear out HTTP_REFERER
if ( !is_blank( $f_ref ) ) {
$t_redirect_url = $f_ref;
} else if ( !isset( $_SERVER['HTTP_REFERER'] ) || is_blank( $_SERVER['HTTP_REFERER'] ) ) {
$t_redirect_url = config_get( 'default_home_page' );
} else {
# Check that referrer matches our address
$t_path = config_get( 'path' );
if ( $t_path == substr( $_SERVER['HTTP_REFERER'], 0, strlen( $t_path ) ) ) {
# if view_all_bug_page, pass on filter
if ( eregi( 'view_all_bug_page.php', $_SERVER['HTTP_REFERER'] ) ){
$t_source_filter_id = filter_db_get_project_current( $f_project_id );
$t_redirect_url = 'view_all_set.php?type=4';
if ( $t_source_filter_id != null ) {
$t_redirect_url = 'view_all_set.php?type=3&source_query_id=' . $t_source_filter_id;
}
} else if ( eregi( '_page.php', $_SERVER['HTTP_REFERER'] ) ){
# if any other page, return to that page
$t_redirect_url = substr( $_SERVER['HTTP_REFERER'], strlen( $t_path ) );
} else {
$t_redirect_url = config_get( 'default_home_page' );
}
} else {
$t_redirect_url = config_get( 'default_home_page' );
}
}
print_header_redirect( $t_redirect_url );
?>
<?php html_page_top1() ?>
<?php
html_meta_redirect( $t_redirect_url );
?>
<?php html_page_top1() ?>
<br />
<div align="center">
<?php
echo lang_get( 'operation_successful' ).'<br />';
print_bracket_link( $t_redirect_url, lang_get( 'proceed' ) );
?>
</div>
<?php html_page_bottom1( __FILE__ ) ?>
| ||||
|
Set project sometimes remembers what page you came from (set_project.php) but it's hardcoded to a few pages. There's also support for passing f_ref into the page to be used for redirection (apparently some proxies clear the HTTP_REFERRER). We definitely need to make this work better. My question is, why can't we always redirect directly to the full referrer URL? (maybe assuming it's within our domain at least) |
|
|
Here is the proposed patch. Comments from other developers welcome. diff -u -r1.52 set_project.php
|
|
|
Review comments from IRC chat: <Victor> $t_path == substr( $_SERVER['HTTP_REFERER'], 0, strlen( $t_path ) ) |
|
|
Fixed in CVS. set_project.php -> 1.54 |
|
|
MantisBT: master 64542fed 2002-11-10 17:31 Julian Fitzell Details Diff |
a little work on issue 0002686 (mantisbt.sourceforge.net/mantis/view_bug_advanced_page.php?f_id=0002686) but it isn't really fixed... this needs more work git-svn-id: http://mantisbt.svn.sourceforge.net/svnroot/mantisbt/trunk@1607 <a class="text" href="/?p=mantisbt.git;a=object;h=f5dc347c">f5dc347c</a>-c33d-0410-90a0-b07cc1902cb9 |
Affected Issues 0002686 |
|
| mod - set_project.php | Diff File | ||