View Issue Details

IDProjectCategoryView StatusLast Update
0009213mantisbtfilterspublic2017-01-31 04:02
Reportermkornatzki Assigned Tocproensa  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Target Version2.1.0Fixed in Version2.1.0 
Summary0009213: manage filter
Description

hi, i missed the possibility to edit filter, so i made a patch for this.

you can now edit the name and the properties of the filter.

instructions

  1. select a filter in view_all_bug_page
  2. click on the new button "Manage Filter"
  3. select what you want to do a filter (edit, delete)
  4. if you click edit than you can set the filter
  5. after changing the filter click "Update current filter" (the name of the filter is displyaed in the left corner of the filter-table
  6. now you can cange the name of the filter or the project assignment
Tagspatch
Attached Files
manage_filter.patch (39,268 bytes)   
Property changes on: .
___________________________________________________________________
Name: svn:ignore
   - !core
custom_constant_inc.php
custom_strings_inc.php
custom_functions_inc.php
config_inc.php
.#*
.project
project.index
.DS_Store
custom_relationships_inc.php

   + !core
custom_constant_inc.php
custom_strings_inc.php
custom_functions_inc.php
config_inc.php
.#*
.project
project.index
.DS_Store
custom_relationships_inc.php
jpgraph
avatar


Index: query_store_page.php
===================================================================
--- query_store_page.php	(revision 5305)
+++ query_store_page.php	(working copy)
@@ -40,6 +40,11 @@
 <?php
 	$t_query_to_store = filter_db_get_filter( gpc_get_cookie( config_get( 'view_all_cookie' ), '' ) );
 	$t_query_arr = filter_db_get_available_queries();
+	$f_source_query_id = gpc_get_string( 'source_query_id', null );
+	
+	if (!is_null($f_source_query_id)) {
+ 		$filter_row = filter_get_row($f_source_query_id);
+ 	}	
 
 	# Let's just see if any of the current filters are the
 	# same as the one we're about the try and save
@@ -58,21 +63,54 @@
 	print lang_get( 'query_name' ) . ': ';
 ?>
 	<form method="post" action="query_store.php">
-	<input type="text" name="query_name" /><br />
+	<input type="text" name="query_name" value="<?php echo $filter_row['name']; ?>"/><br />
 	<?php
 	if ( access_has_project_level( config_get( 'stored_query_create_shared_threshold' ) ) ) {
-		print '<input type="checkbox" name="is_public" value="on" /> ';
+		print '<input type="checkbox" name="is_public" ';
+		if ($filter_row['is_public'] == 1) {
+			print 'checked="checked"';
+		}		
+		print ' /> ';
 		print lang_get( 'make_public' );
 		print '<br />';
 	}
 	?>
-	<input type="checkbox" name="all_projects" value="on" <?php check_checked( ALL_PROJECTS == helper_get_current_project() ) ?> >
+	
+	<input type="checkbox" name="all_projects" <?php check_checked( $filter_row['project_id'] == ALL_PROJECTS ) ?> >
 	<?php print lang_get( 'all_projects' ); ?><br /><br />
+	<?php
+		if (!is_null($f_source_query_id)) {
+	?>	
+ 		<input type="hidden" name="edit" value="true" />
+		<input type="hidden" name="source_query_id" value="<?php echo $f_source_query_id; ?>" />
+	<?php
+		} 
+	?>
 	<input type="submit" class="button" value="<?php print lang_get( 'save_query' ); ?>" />
 	</form>
-	<form action="view_all_bug_page.php">
-	<input type="submit" class="button" value="<?php print lang_get( 'go_back' ); ?>" />
-	</form>
+	<?php
+		if (is_blank($filter_row)) {
+	?>		
+			<form action="view_all_bug_page.php">
+				<input type="submit" class="button" value="<?php print lang_get( 'go_back' ); ?>" />
+			</form>
+	<?php
+		} else {
+	?>
+			<form action="filter_edit_page.php">
+			<?php
+				if (!is_null($f_source_query_id)) {
+			?>	
+ 					<input type="hidden" name="edit" value="true" />
+					<input type="hidden" name="source_query_id" value="<?php echo $f_source_query_id; ?>" />
+			<?php
+				}
+			?>
+				<input type="submit" class="button" value="<?php print lang_get( 'go_back' ); ?>" />
+			</form>
+	<?php
+		}
+	?>
 <?php
 	echo '</div>';
 	html_page_bottom1( __FILE__ );
Index: view_filters_page.php
===================================================================
--- view_filters_page.php	(revision 5305)
+++ view_filters_page.php	(working copy)
@@ -97,6 +97,7 @@
 	$t_filter_cols = config_get( 'filter_custom_fields_per_row' );
 	$t_custom_cols = 1;
 	$t_custom_rows = 0;
+	$f_source_query_id = gpc_get_string( 'source_query_id' , null);
 
 	#get valid target fields
 	$t_fields = helper_get_columns_to_view();
@@ -180,7 +181,11 @@
 <tr>
 	<td class="right" colspan="<?php PRINT ( 8 * $t_custom_cols ); ?>">
 	<?php
-		$f_switch_view_link = 'view_filters_page.php?target_field=' . $t_target_field . '&amp;view_type=';
+		$f_switch_view_link = 'view_filters_page.php?';
+		if (!is_null($f_source_query_id)) {
+			$f_switch_view_link = $f_switch_view_link . 'source_query_id=' . $f_source_query_id . '&amp;';
+		}
+		$f_switch_view_link = $f_switch_view_link . 'target_field=' . $t_target_field . '&amp;view_type=';
 
 		if ( ( SIMPLE_ONLY != config_get( 'view_filters' ) ) && ( ADVANCED_ONLY != config_get( 'view_filters' ) ) ) {
 			if ( 'advanced' == $f_view_type ) {
@@ -432,10 +437,18 @@
 
 	<!-- Submit button -->
 	<td class="right" colspan="<?php echo ( 1 * $t_custom_cols ); ?>">
+	<?php
+	 	if (!is_null($f_source_query_id)) {
+	 ?>	
+			<input type="hidden" name="source_query_id" value="<?php echo gpc_get_string( 'source_query_id' ) ?>" />
+			<input type="hidden" name="edit" value="true" />
+	 <?php		
+	 	}
+	 ?>	 	 
 		<input type="submit" name="filter" class="button" value="<?php echo lang_get( 'filter_button' ) ?>" />
 	</td>
 </tr>
 </table>
 </form>
 
-<?php html_page_bottom1( __FILE__ ) ?>
+<?php html_page_bottom1( __FILE__ ) ?>
\ No newline at end of file
Index: view_all_set.php
===================================================================
--- view_all_set.php	(revision 5305)
+++ view_all_set.php	(working copy)
@@ -28,6 +28,7 @@
 	$f_source_query_id		= gpc_get_int( 'source_query_id', -1 );
 	$f_print				= gpc_get_bool( 'print' );
 	$f_temp_filter			= gpc_get_bool( 'temporary' );
+	$f_edit	= gpc_get_bool( 'edit' );
 
 	# validate filter type
 	$f_default_view_type = 'simple';
@@ -519,11 +520,13 @@
 		gpc_set_cookie( config_get( 'view_all_cookie' ), $t_row_id, time()+config_get( 'cookie_time_length' ), config_get( 'cookie_path' ) );
 	}
 
-	# redirect to print_all or view_all page
-	if ( $f_print ) {
-		$t_redirect_url = 'print_all_bug_page.php';
+	# redirect to print_all, view_all page or filter_edit
+ 	if ($f_print && !$f_edit) {
+ 		$t_redirect_url = 'print_all_bug_page.php';
+ 	} else if (!$f_edit){
+ 		$t_redirect_url = 'view_all_bug_page.php';
 	} else {
-		$t_redirect_url = 'view_all_bug_page.php';
+		$t_redirect_url = 'filter_edit_page.php?source_query_id=' . $f_source_query_id;
 	}
 
 	if ( $f_temp_filter ) {
@@ -533,4 +536,4 @@
 	} else {
 		print_header_redirect( $t_redirect_url );
 	}
-?>
+?>
\ No newline at end of file
Index: query_store.php
===================================================================
--- query_store.php	(revision 5305)
+++ query_store.php	(working copy)
@@ -36,27 +36,35 @@
 	$f_query_name = strip_tags( gpc_get_string( 'query_name' ) );
 	$f_is_public = gpc_get_bool( 'is_public' );
 	$f_all_projects = gpc_get_bool( 'all_projects' );
+	$f_edit = gpc_get_bool( 'edit', false );
+	$f_source_query_id		= gpc_get_string( 'source_query_id', null);
 
-	$t_query_redirect_url = 'query_store_page.php';
+	$t_query_redirect_url = 'query_store_page.php?';
 
+	if (!is_blank($f_source_query_id)) {
+		$t_query_redirect_url = $t_query_redirect_url . 'edit=true&source_query_id=' . $f_source_query_id . '&';
+	}
+
 	# We can't have a blank name
 	if ( is_blank( $f_query_name ) ) {
-		$t_query_redirect_url = $t_query_redirect_url . '?error_msg='
+		$t_query_redirect_url = $t_query_redirect_url . 'error_msg='
 			. urlencode( lang_get( 'query_blank_name' ) );
 		print_header_redirect( $t_query_redirect_url );
 	}
 
 	# Check and make sure they don't already have a
 	# query with the same name
-	$t_query_arr = filter_db_get_available_queries();
-	foreach( $t_query_arr as $t_id => $t_name )	{
-		if ( $f_query_name == $t_name ) {
-			$t_query_redirect_url = $t_query_redirect_url . '?error_msg='
-				. urlencode( lang_get( 'query_dupe_name' ) );
-			print_header_redirect( $t_query_redirect_url );
-			exit;
+	if (is_null($f_source_query_id)) {
+		$t_query_arr = filter_db_get_available_queries();
+		foreach( $t_query_arr as $t_id => $t_name )	{
+			if ( $f_query_name == $t_name ) {
+				$t_query_redirect_url = $t_query_redirect_url . 'error_msg='
+					. urlencode( lang_get( 'query_dupe_name' ) );
+				print_header_redirect( $t_query_redirect_url );
+				exit;
+			}
 		}
-	}
+	}	
 
 	$t_project_id = helper_get_current_project();
 	if ( $f_all_projects ) {
@@ -66,13 +74,17 @@
 	$t_filter_string = filter_db_get_filter( gpc_get_cookie( config_get( 'view_all_cookie' ), '' ) );
 
 	$t_new_row_id = filter_db_set_for_current_user($t_project_id, $f_is_public,
-													$f_query_name, $t_filter_string);
+													$f_query_name, $t_filter_string, $f_source_query_id);
 
 	if ( $t_new_row_id == -1 ) {
 		$t_query_redirect_url = $t_query_redirect_url . '?error_msg='
 			. urlencode( lang_get( 'query_store_error' ) );
 		print_header_redirect( $t_query_redirect_url );
 	} else {
-		print_header_redirect( 'view_all_bug_page.php' );
+		if (!$f_edit) {
+			print_header_redirect( 'view_all_bug_page.php' );
+		} else {
+			print_header_redirect( 'filter_edit_page.php?edit=true&source_query_id=' . $f_source_query_id );
+		}			
 	}
 ?>
Index: view_all_bug_page.php
===================================================================
--- view_all_bug_page.php	(revision 5305)
+++ view_all_bug_page.php	(working copy)
@@ -73,4 +73,4 @@
 	include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'view_all_inc.php' );
 
 	html_page_bottom1( __FILE__ );
-?>
+?>
\ No newline at end of file
Index: filter_edit_page.php
===================================================================
--- filter_edit_page.php	(revision 0)
+++ filter_edit_page.php	(revision 0)
@@ -0,0 +1,90 @@
+<?php
+# Mantis - a php based bugtracking system
+
+# Copyright (C) 2000 - 2002  Kenzaburo Ito - kenito@300baud.org
+# Copyright (C) 2002 - 2007  Mantis Team   - mantisbt-dev@lists.sourceforge.net
+
+# Mantis 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.
+#
+# Mantis 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 Mantis.  If not, see <http://www.gnu.org/licenses/>.
+
+	# --------------------------------------------------------
+	# $Revision: 1.62.2.1 $
+	# $Author: giallu $
+	# $Date: 2007-10-13 22:34:48 $
+	#
+	# $Id: view_all_bug_page.php,v 1.62.2.1 2007-10-13 22:34:48 giallu Exp $
+	# --------------------------------------------------------
+?>
+<?php
+	require_once( 'core.php' );
+
+	$t_core_path = config_get( 'core_path' );
+
+	require_once( $t_core_path.'compress_api.php' );
+	require_once( $t_core_path.'filter_api.php' );
+	require_once( $t_core_path.'last_visited_api.php' );
+?>
+<?php auth_ensure_user_authenticated() ?>
+<?php
+	$f_page_number		= gpc_get_int( 'page_number', 1 );
+	$f_source_query_id = gpc_get_string( 'source_query_id' );
+
+	$t_per_page = null;
+	$t_bug_count = null;
+	$t_page_count = null;
+
+#		print_header_redirect( 'view_all_set.php?type=0' );
+
+	$t_bugslist = Array();
+	$t_row_count = sizeof( $rows );
+	for($i=0; $i < $t_row_count; $i++) {
+		array_push($t_bugslist, $rows[$i]["id"] );
+	}
+
+	gpc_set_cookie( config_get( 'bug_list_cookie' ), implode( ',', $t_bugslist ) );
+
+	compress_enable();
+
+	html_page_top1( lang_get( 'view_bugs_link' ) );
+	html_page_top2();
+
+
+	#include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'view_all_inc.php' );
+	$t_filter = current_user_get_bug_filter();
+
+	if( $t_filter ) {
+		list( $t_sort, ) = split( ',', $t_filter['sort'] );
+		list( $t_dir, ) = split( ',', $t_filter['dir'] );
+	}
+	
+	$t_checkboxes_exist = false;
+
+	$t_icon_path = config_get( 'icon_path' );
+	$t_update_bug_threshold = config_get( 'update_bug_threshold' );
+
+	$t_columns = helper_get_columns_to_view( COLUMNS_TARGET_VIEW_PAGE );
+
+	$col_count = sizeof( $t_columns );
+
+
+
+	$t_filter_position = config_get( 'filter_position' );
+	# -- ====================== FILTER FORM ========================= --
+	if ( ( $t_filter_position & FILTER_POSITION_TOP ) == FILTER_POSITION_TOP ) {
+		filter_draw_selection_area( $f_page_number );
+	}
+	# -- ====================== end of FILTER FORM ================== --
+
+
+	html_page_bottom1( __FILE__ );
+?>
Index: query_view_page.php
===================================================================
--- query_view_page.php	(revision 5305)
+++ query_view_page.php	(working copy)
@@ -45,53 +45,96 @@
 
 	$t_use_query_url = 'view_all_set.php?type=3&amp;source_query_id=';
 	$t_delete_query_url = 'query_delete_page.php?source_query_id=';
+	$t_edit_query_url = 'view_all_set.php?type=3&amp;edit=true&amp;advanced_view_type=true&amp;source_query_id=';
 	
 	$t_rss_enabled = config_get( 'rss_enabled' );
 ?>
 <br />
 <div align="center">
 <table class="width75" cellspacing="0">
+	<tr>
+		<td></td>
+		<td>
+			<?php print lang_get_defaulted( 'id' );?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted('query_name');?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted('query_name_translated');?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted('username');?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted('query_project');?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted( 'public' );?>
+		</td>
+		<td></td>
+		<td></td>
+	</tr>
 <?php
-	$t_column_count = 0;
-	$t_max_column_count = 2;
-
 	foreach( $t_query_arr as $t_id => $t_name ) {
-		if ( $t_column_count == 0 ) {
-			print '<tr ' . helper_alternate_class() . '>';
-		}
+		$filter_row = filter_get_row( $t_id );
 
+		print '<tr ' . helper_alternate_class() . '>';
+
 		print '<td>';
-
 		if ( OFF != $t_rss_enabled ) {
 			# Use the "new" RSS link style.
 			print_rss( rss_get_issues_feed_url( null, null, $t_id ), lang_get( 'rss' ) );
 			echo ' ';
 		}
+		print '</td>';
 
-		print '<a href="' . $t_use_query_url . db_prepare_int( $t_id ) . '">' . string_display( $t_name ) . '</a>';
+		print '<td>';
+		print string_display( $filter_row['id'] );
+		print '</td>';
 
+		print '<td>';
+		print string_display( $filter_row['name'] );
+		print '</td>';
+
+		print '<td>';
+		print '<a href="' . $t_use_query_url . db_prepare_int( $t_id ) . '">' . string_display( lang_get_defaulted($t_name) ) . '</a>';
+		print '</td>';
+
+		print '<td>';
+ 		print '<a href="manage_user_edit_page.php?user_id=' . $filter_row['user_id'] . '">' . string_display( user_get_name($filter_row['user_id']) ) . '</a>';
+		print '</td>';
+
+ 		print '<td>';
+ 		if ($filter_row['project_id'] == ALL_PROJECTS) {
+ 			print string_display( lang_get_defaulted(all_projects) );
+ 		} else {
+			print string_display( project_get_field($filter_row['project_id'], 'name'));
+ 		}
+ 		print '</td>';
+
+		print '<td style="text-align: center">';
+ 		print '<input type="checkbox" name="enabled" disabled ';
+ 		if ($filter_row['is_public'] == 1) {
+ 			print 'checked="checked"';
+ 		}
+ 		print '/>';
+ 		print '</td>';
+
+ 		print '<td>';
 		if ( filter_db_can_delete_filter( $t_id ) ) {
 			echo ' ';
 			print_button( $t_delete_query_url . db_prepare_int( $t_id ), lang_get( 'delete_query' ) );
 		}
-
 		print '</td>';
 
-		$t_column_count++;
-		if ( $t_column_count == $t_max_column_count ) {
-			print '</tr>';
-			$t_column_count = 0;
-		}
-	}
+ 		print '<td>';
+ 			print_button( $t_edit_query_url . db_prepare_int( $t_id ), lang_get( 'edit_query' ) );
+ 		print '</td>';
 
-	# Tidy up this row
-	if ( ( $t_column_count > 0 ) && ( $t_column_count < $t_max_column_count ) ) {
-		for ( $i = $t_column_count; $i < $t_max_column_count; $i++ ) {
-			print '<td>&nbsp;</td>';
-		}
 		print '</tr>';
 	}
 ?>
 </table>
 </div>
-<?php html_page_bottom1( __FILE__ ) ?>
+<?php html_page_bottom1( __FILE__ ) ?>
\ No newline at end of file
Index: set_project.php
===================================================================
--- set_project.php	(revision 5305)
+++ set_project.php	(working copy)
@@ -63,13 +63,15 @@
 		if ( strtolower( $t_path ) == strtolower( substr( $_SERVER['HTTP_REFERER'], 0, strlen( $t_path ) ) ) ) {
 			$t_referrer_page = substr( $_SERVER['HTTP_REFERER'], strlen( $t_path ) );
 			# if view_all_bug_page, pass on filter	
-			if ( eregi( 'view_all_bug_page.php', $t_referrer_page ) ) {
+			if ( eregi( 'view_all_bug_page.php', $t_referrer_page ) || eregi( 'filter_edit_page.php', $t_referrer_page ) ) {
 				$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&amp;source_query_id=' . $t_source_filter_id;
 				}
+			} else if ( eregi( 'query_store_page.php', $t_referrer_page ) ) {
+					$t_redirect_url = $t_home_page;
 			} else if ( eregi( '_page.php', $t_referrer_page ) ) {
 				# get just the page component
 				if ( strpos( $t_referrer_page, '?' ) !== FALSE ) {
Index: core/filter_api.php
===================================================================
--- core/filter_api.php	(revision 5305)
+++ core/filter_api.php	(working copy)
@@ -1727,7 +1727,13 @@
 				}
 			}
 
-			$t_filters_url = 'view_filters_page.php?for_screen=' . $p_for_screen;
+ 			$t_filters_url = 'view_filters_page.php?';
+			$f_source_query_id = gpc_get_string('source_query_id', null);
+			if (!is_null($f_source_query_id)) {
+				$t_filters_url = $t_filters_url . 'source_query_id=' . $f_source_query_id . '&';
+			}	
+ 			$t_filters_url = $t_filters_url . 'for_screen=' . $p_for_screen;			
+			
 			if ( 'advanced' == $t_view_type ) {
 				$t_filters_url = $t_filters_url . '&amp;view_type=advanced';
 			}
@@ -1742,6 +1748,16 @@
 			} 
 		?>
 
+		<?php if (!is_null($f_source_query_id)) {?>
+			<tr class="row-1">
+				<td class="filter-caption" valign="top" colspan="8">
+				<?php 
+					$filter_row = filter_get_row($f_source_query_id);
+					PRINT lang_get('edit_query') . ': ' .   $filter_row['name'];
+				?>
+				</td>
+			</tr>
+		<?php } ?>
 		<tr <?php PRINT "class=\"" . $t_trclass . "\""; ?>>
 			<td class="small-caption" valign="top">
 				<a href="<?php PRINT $t_filters_url . 'reporter_id[]'; ?>" id="reporter_id_filter"><?php PRINT lang_get( 'reporter' ) ?>:</a>
@@ -2874,10 +2890,18 @@
 					<form method="post" name="save_query" action="query_store_page.php">
 					<input type="submit" name="save_query_button" class="button-small" value="<?php PRINT lang_get( 'save_query' ) ?>" />
 					</form>
+					<?php 
+						$f_source_query_id = gpc_get_string('source_query_id', null);
+						if ($f_source_query_id > 0) {
+					?>
+							<form method="post" name="update_query" action="query_store_page.php" method="post">
+								<input type="hidden" name="source_query_id" value="<?php echo $f_source_query_id; ?>" />
+								<input type="submit" name="update_query_button" class="button-small" value="<?php PRINT lang_get( 'update_query' ) ?>" />
+							</form>
+					<?php
+						}
+					?>								
 			<?php
-			} else {
-			?>
-			<?php
 			}
 			?>
 			</td>
@@ -2888,7 +2912,7 @@
 
 	# Add a filter to the database for the current user
 	function filter_db_set_for_current_user( $p_project_id, $p_is_public,
-										$p_name, $p_filter_string ) {
+										$p_name, $p_filter_string, $p_source_query_id = null ) {
 		$t_user_id = auth_get_current_user_id();
 		$c_project_id = db_prepare_int( $p_project_id );
 		$c_is_public = db_prepare_bool( $p_is_public, false );
@@ -2912,6 +2936,9 @@
 					WHERE user_id=" . db_param(0) . "
 					AND project_id=" . db_param(1) . "
 					AND name=" . db_param(2);
+		if (!is_null($p_source_query_id)) {
+			$query = $query . " OR id=$p_source_query_id";
+ 		}							
 		$result = db_query_bound( $query, Array( $t_user_id, $c_project_id, $c_name ) );
 
 		if ( db_num_rows( $result ) > 0 ) {
@@ -2919,8 +2946,10 @@
 
 			$query = "UPDATE $t_filters_table
 					  SET is_public=" . db_param(0) . ",
-					  	filter_string=" . db_param(1) . "
-					  WHERE id=" . db_param(2);
+					  	filter_string=" . db_param(1) . ",
+					  	project_id=$c_project_id, 
+					    name='$c_name'
+					  	WHERE id=" . db_param(2);
 			db_query_bound( $query, Array( $c_is_public, $p_filter_string, $row['id'] ) );
 
 			return $row['id'];
Index: css/default.css
===================================================================
--- css/default.css	(revision 5305)
+++ css/default.css	(working copy)
@@ -63,6 +63,7 @@
 td.print-category	{ font-size: 8pt; color: #000000; font-weight: bold; text-align: right; padding: 2px; }
 td.print-bottom		{ border-bottom: 1px solid #000000; }
 td.print-spacer		{ background-color: #ffffff; color: #000000; font-size: 1pt; line-height: 0.1; padding: 0px;}
+td.filter-caption	{ font-size: 8pt; font-weight: bold;}
 
 tr					{}
 tr.spacer			{ background-color: #ffffff; color: #000000; height: 5px; }
Index: filter_edit_page.php
===================================================================
--- filter_edit_page.php	(revision 0)
+++ filter_edit_page.php	(revision 0)
@@ -0,0 +1,90 @@
+<?php
+# Mantis - a php based bugtracking system
+
+# Copyright (C) 2000 - 2002  Kenzaburo Ito - kenito@300baud.org
+# Copyright (C) 2002 - 2007  Mantis Team   - mantisbt-dev@lists.sourceforge.net
+
+# Mantis 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.
+#
+# Mantis 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 Mantis.  If not, see <http://www.gnu.org/licenses/>.
+
+	# --------------------------------------------------------
+	# $Revision: 1.62.2.1 $
+	# $Author: giallu $
+	# $Date: 2007-10-13 22:34:48 $
+	#
+	# $Id: view_all_bug_page.php,v 1.62.2.1 2007-10-13 22:34:48 giallu Exp $
+	# --------------------------------------------------------
+?>
+<?php
+	require_once( 'core.php' );
+
+	$t_core_path = config_get( 'core_path' );
+
+	require_once( $t_core_path.'compress_api.php' );
+	require_once( $t_core_path.'filter_api.php' );
+	require_once( $t_core_path.'last_visited_api.php' );
+?>
+<?php auth_ensure_user_authenticated() ?>
+<?php
+	$f_page_number		= gpc_get_int( 'page_number', 1 );
+	$f_source_query_id = gpc_get_string( 'source_query_id' );
+
+	$t_per_page = null;
+	$t_bug_count = null;
+	$t_page_count = null;
+
+#		print_header_redirect( 'view_all_set.php?type=0' );
+
+	$t_bugslist = Array();
+	$t_row_count = sizeof( $rows );
+	for($i=0; $i < $t_row_count; $i++) {
+		array_push($t_bugslist, $rows[$i]["id"] );
+	}
+
+	gpc_set_cookie( config_get( 'bug_list_cookie' ), implode( ',', $t_bugslist ) );
+
+	compress_enable();
+
+	html_page_top1( lang_get( 'view_bugs_link' ) );
+	html_page_top2();
+
+
+	#include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'view_all_inc.php' );
+	$t_filter = current_user_get_bug_filter();
+
+	if( $t_filter ) {
+		list( $t_sort, ) = split( ',', $t_filter['sort'] );
+		list( $t_dir, ) = split( ',', $t_filter['dir'] );
+	}
+	
+	$t_checkboxes_exist = false;
+
+	$t_icon_path = config_get( 'icon_path' );
+	$t_update_bug_threshold = config_get( 'update_bug_threshold' );
+
+	$t_columns = helper_get_columns_to_view( COLUMNS_TARGET_VIEW_PAGE );
+
+	$col_count = sizeof( $t_columns );
+
+
+
+	$t_filter_position = config_get( 'filter_position' );
+	# -- ====================== FILTER FORM ========================= --
+	if ( ( $t_filter_position & FILTER_POSITION_TOP ) == FILTER_POSITION_TOP ) {
+		filter_draw_selection_area( $f_page_number );
+	}
+	# -- ====================== end of FILTER FORM ================== --
+
+
+	html_page_bottom1( __FILE__ );
+?>
Index: lang/strings_english.txt
===================================================================
--- lang/strings_english.txt	(revision 5305)
+++ lang/strings_english.txt	(working copy)
@@ -1190,15 +1190,19 @@
 $s_use_query = 'Use Filter';
 $s_delete_query = 'Delete Filter';
 $s_query_deleted = 'Filter Deleted';
+$s_edit_query = 'Edit Filter';
 $s_save_query = 'Save Current Filter';
+$s_update_query = 'Update Current Filter';
 $s_reset_query = 'Reset Filter';
 $s_query_name = 'Filter Name';
+$s_query_name_translated = 'Filter Name (translated)';
 $s_query_exists = 'This particular query appears to already exist.';
 $s_query_dupe_name = 'Another query already has this name. Please choose a different name for this query.';
 $s_query_blank_name = 'You cannot store a filter without a name. Please give this filter a name before saving it.';
 $s_query_store_error = 'There was an error saving this query.';
 $s_open_queries = 'Manage Filters';
 $s_query_delete_msg = 'Are you sure you wish to delete this query?';
+$s_query_project = 'Project';
 
 # view_bug_advanced_page.php
 $s_view_simple_link = 'View Simple';
Index: lang/strings_german.txt
===================================================================
--- lang/strings_german.txt	(revision 5305)
+++ lang/strings_german.txt	(working copy)
@@ -1177,12 +1177,14 @@
 $s_save_query = 'Filter speichern';
 $s_reset_query = 'Filter zurücksetzen';
 $s_query_name = 'Filtername';
+$s_query_name_translated = 'Filtername (übersetzt)';
 $s_query_exists = 'Ein Filter mit diesen Optionen existiert bereits.';
 $s_query_dupe_name = 'Ein Filter mit diesem Namen existiert bereits. Bitte geben Sie einen anderen Namen ein.';
 $s_query_blank_name = 'Bitte geben Sie einen Namen für diesen Filter ein.';
 $s_query_store_error = 'Ein Fehler ist beim Speichern des Filters aufgetreten.';
 $s_open_queries = 'Filter verwalten';
 $s_query_delete_msg = 'Möchten Sie diesen Filter wirklich löschen?';
+$s_query_project = 'Projekt';
 
 # view_bug_advanced_page.php
 $s_view_simple_link = 'einfache Anzeige';
Index: query_store.php
===================================================================
--- query_store.php	(revision 5305)
+++ query_store.php	(working copy)
@@ -36,27 +36,35 @@
 	$f_query_name = strip_tags( gpc_get_string( 'query_name' ) );
 	$f_is_public = gpc_get_bool( 'is_public' );
 	$f_all_projects = gpc_get_bool( 'all_projects' );
+	$f_edit = gpc_get_bool( 'edit', false );
+	$f_source_query_id		= gpc_get_string( 'source_query_id', null);
 
-	$t_query_redirect_url = 'query_store_page.php';
+	$t_query_redirect_url = 'query_store_page.php?';
 
+	if (!is_blank($f_source_query_id)) {
+		$t_query_redirect_url = $t_query_redirect_url . 'edit=true&source_query_id=' . $f_source_query_id . '&';
+	}
+
 	# We can't have a blank name
 	if ( is_blank( $f_query_name ) ) {
-		$t_query_redirect_url = $t_query_redirect_url . '?error_msg='
+		$t_query_redirect_url = $t_query_redirect_url . 'error_msg='
 			. urlencode( lang_get( 'query_blank_name' ) );
 		print_header_redirect( $t_query_redirect_url );
 	}
 
 	# Check and make sure they don't already have a
 	# query with the same name
-	$t_query_arr = filter_db_get_available_queries();
-	foreach( $t_query_arr as $t_id => $t_name )	{
-		if ( $f_query_name == $t_name ) {
-			$t_query_redirect_url = $t_query_redirect_url . '?error_msg='
-				. urlencode( lang_get( 'query_dupe_name' ) );
-			print_header_redirect( $t_query_redirect_url );
-			exit;
+	if (is_null($f_source_query_id)) {
+		$t_query_arr = filter_db_get_available_queries();
+		foreach( $t_query_arr as $t_id => $t_name )	{
+			if ( $f_query_name == $t_name ) {
+				$t_query_redirect_url = $t_query_redirect_url . 'error_msg='
+					. urlencode( lang_get( 'query_dupe_name' ) );
+				print_header_redirect( $t_query_redirect_url );
+				exit;
+			}
 		}
-	}
+	}	
 
 	$t_project_id = helper_get_current_project();
 	if ( $f_all_projects ) {
@@ -66,13 +74,17 @@
 	$t_filter_string = filter_db_get_filter( gpc_get_cookie( config_get( 'view_all_cookie' ), '' ) );
 
 	$t_new_row_id = filter_db_set_for_current_user($t_project_id, $f_is_public,
-													$f_query_name, $t_filter_string);
+													$f_query_name, $t_filter_string, $f_source_query_id);
 
 	if ( $t_new_row_id == -1 ) {
 		$t_query_redirect_url = $t_query_redirect_url . '?error_msg='
 			. urlencode( lang_get( 'query_store_error' ) );
 		print_header_redirect( $t_query_redirect_url );
 	} else {
-		print_header_redirect( 'view_all_bug_page.php' );
+		if (!$f_edit) {
+			print_header_redirect( 'view_all_bug_page.php' );
+		} else {
+			print_header_redirect( 'filter_edit_page.php?edit=true&source_query_id=' . $f_source_query_id );
+		}			
 	}
 ?>
Index: query_store_page.php
===================================================================
--- query_store_page.php	(revision 5305)
+++ query_store_page.php	(working copy)
@@ -40,6 +40,11 @@
 <?php
 	$t_query_to_store = filter_db_get_filter( gpc_get_cookie( config_get( 'view_all_cookie' ), '' ) );
 	$t_query_arr = filter_db_get_available_queries();
+	$f_source_query_id = gpc_get_string( 'source_query_id', null );
+	
+	if (!is_null($f_source_query_id)) {
+ 		$filter_row = filter_get_row($f_source_query_id);
+ 	}	
 
 	# Let's just see if any of the current filters are the
 	# same as the one we're about the try and save
@@ -58,21 +63,54 @@
 	print lang_get( 'query_name' ) . ': ';
 ?>
 	<form method="post" action="query_store.php">
-	<input type="text" name="query_name" /><br />
+	<input type="text" name="query_name" value="<?php echo $filter_row['name']; ?>"/><br />
 	<?php
 	if ( access_has_project_level( config_get( 'stored_query_create_shared_threshold' ) ) ) {
-		print '<input type="checkbox" name="is_public" value="on" /> ';
+		print '<input type="checkbox" name="is_public" ';
+		if ($filter_row['is_public'] == 1) {
+			print 'checked="checked"';
+		}		
+		print ' /> ';
 		print lang_get( 'make_public' );
 		print '<br />';
 	}
 	?>
-	<input type="checkbox" name="all_projects" value="on" <?php check_checked( ALL_PROJECTS == helper_get_current_project() ) ?> >
+	
+	<input type="checkbox" name="all_projects" <?php check_checked( $filter_row['project_id'] == ALL_PROJECTS ) ?> >
 	<?php print lang_get( 'all_projects' ); ?><br /><br />
+	<?php
+		if (!is_null($f_source_query_id)) {
+	?>	
+ 		<input type="hidden" name="edit" value="true" />
+		<input type="hidden" name="source_query_id" value="<?php echo $f_source_query_id; ?>" />
+	<?php
+		} 
+	?>
 	<input type="submit" class="button" value="<?php print lang_get( 'save_query' ); ?>" />
 	</form>
-	<form action="view_all_bug_page.php">
-	<input type="submit" class="button" value="<?php print lang_get( 'go_back' ); ?>" />
-	</form>
+	<?php
+		if (is_blank($filter_row)) {
+	?>		
+			<form action="view_all_bug_page.php">
+				<input type="submit" class="button" value="<?php print lang_get( 'go_back' ); ?>" />
+			</form>
+	<?php
+		} else {
+	?>
+			<form action="filter_edit_page.php">
+			<?php
+				if (!is_null($f_source_query_id)) {
+			?>	
+ 					<input type="hidden" name="edit" value="true" />
+					<input type="hidden" name="source_query_id" value="<?php echo $f_source_query_id; ?>" />
+			<?php
+				}
+			?>
+				<input type="submit" class="button" value="<?php print lang_get( 'go_back' ); ?>" />
+			</form>
+	<?php
+		}
+	?>
 <?php
 	echo '</div>';
 	html_page_bottom1( __FILE__ );
Index: query_view_page.php
===================================================================
--- query_view_page.php	(revision 5305)
+++ query_view_page.php	(working copy)
@@ -45,53 +45,96 @@
 
 	$t_use_query_url = 'view_all_set.php?type=3&amp;source_query_id=';
 	$t_delete_query_url = 'query_delete_page.php?source_query_id=';
+	$t_edit_query_url = 'view_all_set.php?type=3&amp;edit=true&amp;advanced_view_type=true&amp;source_query_id=';
 	
 	$t_rss_enabled = config_get( 'rss_enabled' );
 ?>
 <br />
 <div align="center">
 <table class="width75" cellspacing="0">
+	<tr>
+		<td></td>
+		<td>
+			<?php print lang_get_defaulted( 'id' );?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted('query_name');?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted('query_name_translated');?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted('username');?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted('query_project');?>
+		</td>
+		<td>
+			<?php print lang_get_defaulted( 'public' );?>
+		</td>
+		<td></td>
+		<td></td>
+	</tr>
 <?php
-	$t_column_count = 0;
-	$t_max_column_count = 2;
-
 	foreach( $t_query_arr as $t_id => $t_name ) {
-		if ( $t_column_count == 0 ) {
-			print '<tr ' . helper_alternate_class() . '>';
-		}
+		$filter_row = filter_get_row( $t_id );
 
+		print '<tr ' . helper_alternate_class() . '>';
+
 		print '<td>';
-
 		if ( OFF != $t_rss_enabled ) {
 			# Use the "new" RSS link style.
 			print_rss( rss_get_issues_feed_url( null, null, $t_id ), lang_get( 'rss' ) );
 			echo ' ';
 		}
+		print '</td>';
 
-		print '<a href="' . $t_use_query_url . db_prepare_int( $t_id ) . '">' . string_display( $t_name ) . '</a>';
+		print '<td>';
+		print string_display( $filter_row['id'] );
+		print '</td>';
 
+		print '<td>';
+		print string_display( $filter_row['name'] );
+		print '</td>';
+
+		print '<td>';
+		print '<a href="' . $t_use_query_url . db_prepare_int( $t_id ) . '">' . string_display( lang_get_defaulted($t_name) ) . '</a>';
+		print '</td>';
+
+		print '<td>';
+ 		print '<a href="manage_user_edit_page.php?user_id=' . $filter_row['user_id'] . '">' . string_display( user_get_name($filter_row['user_id']) ) . '</a>';
+		print '</td>';
+
+ 		print '<td>';
+ 		if ($filter_row['project_id'] == ALL_PROJECTS) {
+ 			print string_display( lang_get_defaulted(all_projects) );
+ 		} else {
+			print string_display( project_get_field($filter_row['project_id'], 'name'));
+ 		}
+ 		print '</td>';
+
+		print '<td style="text-align: center">';
+ 		print '<input type="checkbox" name="enabled" disabled ';
+ 		if ($filter_row['is_public'] == 1) {
+ 			print 'checked="checked"';
+ 		}
+ 		print '/>';
+ 		print '</td>';
+
+ 		print '<td>';
 		if ( filter_db_can_delete_filter( $t_id ) ) {
 			echo ' ';
 			print_button( $t_delete_query_url . db_prepare_int( $t_id ), lang_get( 'delete_query' ) );
 		}
-
 		print '</td>';
 
-		$t_column_count++;
-		if ( $t_column_count == $t_max_column_count ) {
-			print '</tr>';
-			$t_column_count = 0;
-		}
-	}
+ 		print '<td>';
+ 			print_button( $t_edit_query_url . db_prepare_int( $t_id ), lang_get( 'edit_query' ) );
+ 		print '</td>';
 
-	# Tidy up this row
-	if ( ( $t_column_count > 0 ) && ( $t_column_count < $t_max_column_count ) ) {
-		for ( $i = $t_column_count; $i < $t_max_column_count; $i++ ) {
-			print '<td>&nbsp;</td>';
-		}
 		print '</tr>';
 	}
 ?>
 </table>
 </div>
-<?php html_page_bottom1( __FILE__ ) ?>
+<?php html_page_bottom1( __FILE__ ) ?>
\ No newline at end of file
Index: set_project.php
===================================================================
--- set_project.php	(revision 5305)
+++ set_project.php	(working copy)
@@ -63,13 +63,15 @@
 		if ( strtolower( $t_path ) == strtolower( substr( $_SERVER['HTTP_REFERER'], 0, strlen( $t_path ) ) ) ) {
 			$t_referrer_page = substr( $_SERVER['HTTP_REFERER'], strlen( $t_path ) );
 			# if view_all_bug_page, pass on filter	
-			if ( eregi( 'view_all_bug_page.php', $t_referrer_page ) ) {
+			if ( eregi( 'view_all_bug_page.php', $t_referrer_page ) || eregi( 'filter_edit_page.php', $t_referrer_page ) ) {
 				$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&amp;source_query_id=' . $t_source_filter_id;
 				}
+			} else if ( eregi( 'query_store_page.php', $t_referrer_page ) ) {
+					$t_redirect_url = $t_home_page;
 			} else if ( eregi( '_page.php', $t_referrer_page ) ) {
 				# get just the page component
 				if ( strpos( $t_referrer_page, '?' ) !== FALSE ) {
Index: view_all_bug_page.php
===================================================================
--- view_all_bug_page.php	(revision 5305)
+++ view_all_bug_page.php	(working copy)
@@ -73,4 +73,4 @@
 	include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'view_all_inc.php' );
 
 	html_page_bottom1( __FILE__ );
-?>
+?>
\ No newline at end of file
Index: view_all_set.php
===================================================================
--- view_all_set.php	(revision 5305)
+++ view_all_set.php	(working copy)
@@ -28,6 +28,7 @@
 	$f_source_query_id		= gpc_get_int( 'source_query_id', -1 );
 	$f_print				= gpc_get_bool( 'print' );
 	$f_temp_filter			= gpc_get_bool( 'temporary' );
+	$f_edit	= gpc_get_bool( 'edit' );
 
 	# validate filter type
 	$f_default_view_type = 'simple';
@@ -519,11 +520,13 @@
 		gpc_set_cookie( config_get( 'view_all_cookie' ), $t_row_id, time()+config_get( 'cookie_time_length' ), config_get( 'cookie_path' ) );
 	}
 
-	# redirect to print_all or view_all page
-	if ( $f_print ) {
-		$t_redirect_url = 'print_all_bug_page.php';
+	# redirect to print_all, view_all page or filter_edit
+ 	if ($f_print && !$f_edit) {
+ 		$t_redirect_url = 'print_all_bug_page.php';
+ 	} else if (!$f_edit){
+ 		$t_redirect_url = 'view_all_bug_page.php';
 	} else {
-		$t_redirect_url = 'view_all_bug_page.php';
+		$t_redirect_url = 'filter_edit_page.php?source_query_id=' . $f_source_query_id;
 	}
 
 	if ( $f_temp_filter ) {
@@ -533,4 +536,4 @@
 	} else {
 		print_header_redirect( $t_redirect_url );
 	}
-?>
+?>
\ No newline at end of file
Index: view_filters_page.php
===================================================================
--- view_filters_page.php	(revision 5305)
+++ view_filters_page.php	(working copy)
@@ -97,6 +97,7 @@
 	$t_filter_cols = config_get( 'filter_custom_fields_per_row' );
 	$t_custom_cols = 1;
 	$t_custom_rows = 0;
+	$f_source_query_id = gpc_get_string( 'source_query_id' , null);
 
 	#get valid target fields
 	$t_fields = helper_get_columns_to_view();
@@ -180,7 +181,11 @@
 <tr>
 	<td class="right" colspan="<?php PRINT ( 8 * $t_custom_cols ); ?>">
 	<?php
-		$f_switch_view_link = 'view_filters_page.php?target_field=' . $t_target_field . '&amp;view_type=';
+		$f_switch_view_link = 'view_filters_page.php?';
+		if (!is_null($f_source_query_id)) {
+			$f_switch_view_link = $f_switch_view_link . 'source_query_id=' . $f_source_query_id . '&amp;';
+		}
+		$f_switch_view_link = $f_switch_view_link . 'target_field=' . $t_target_field . '&amp;view_type=';
 
 		if ( ( SIMPLE_ONLY != config_get( 'view_filters' ) ) && ( ADVANCED_ONLY != config_get( 'view_filters' ) ) ) {
 			if ( 'advanced' == $f_view_type ) {
@@ -432,10 +437,18 @@
 
 	<!-- Submit button -->
 	<td class="right" colspan="<?php echo ( 1 * $t_custom_cols ); ?>">
+	<?php
+	 	if (!is_null($f_source_query_id)) {
+	 ?>	
+			<input type="hidden" name="source_query_id" value="<?php echo gpc_get_string( 'source_query_id' ) ?>" />
+			<input type="hidden" name="edit" value="true" />
+	 <?php		
+	 	}
+	 ?>	 	 
 		<input type="submit" name="filter" class="button" value="<?php echo lang_get( 'filter_button' ) ?>" />
 	</td>
 </tr>
 </table>
 </form>
 
-<?php html_page_bottom1( __FILE__ ) ?>
+<?php html_page_bottom1( __FILE__ ) ?>
\ No newline at end of file
manage_filter.patch (39,268 bytes)   
button_manage_filter.bmp (42,678 bytes)   
button_manage_filter.bmp (42,678 bytes)   
manage_filter.bmp (173,878 bytes)   
manage_filter.bmp (173,878 bytes)   
manage_filter.jpg (11,721 bytes)   
manage_filter.jpg (11,721 bytes)   
query_store_page.jpg (10,142 bytes)   
query_store_page.jpg (10,142 bytes)   
filter_edit_page.jpg (45,979 bytes)   
filter_edit_page.jpg (45,979 bytes)   

Relationships

related to 0003803 closedcproensa Provide a way to update a saved filter 
related to 0009301 closedcproensa Add support for updating a current filter 
child of 0021935 closedcproensa Filter api refactoring, manage stored filters 

Activities

mkornatzki

mkornatzki

2008-06-01 14:54

reporter   ~0017983

if you want a translated filter name make an entry in your custom_strings_inc.php like

#custom filter
$s_qry_reported_by_me = 'Reported by me';
daryn

daryn

2008-06-05 10:56

reporter   ~0018016

Looks like this feature my have some functionality in addition to 3803. Will review both for possible inclusion.

brody

brody

2008-07-08 09:27

reporter   ~0018341

Hi mkornatzki, looks great, but not usable for me, because you used a relative new base version for your patch. Which version of mantis was your base for the complete patch?

mkornatzki

mkornatzki

2008-08-06 08:35

reporter   ~0019062

Hi brody, sorry for the long time for my answer.
I made the patch for 1.2.0a1 but it works also for 1.1.0 if you made the changes manually.

brody

brody

2008-08-07 07:29

reporter   ~0019071

Mkonrnatzki,
thank you for your feedback - then I'll take a deeper look on it, when having time to upgrade my installation to 1.1.0 (I'm on 1.0.7 heavily changed)

atrol

atrol

2014-02-01 06:17

developer   ~0039271

Unassigned after having been assigned for a long time without progress.