[interchange-cvs] interchange - heins modified 2 files

interchange-cvs at icdevgroup.org interchange-cvs at icdevgroup.org
Sun Jun 6 23:01:49 EDT 2004


User:      heins
Date:      2004-06-07 03:01:45 GMT
Modified:  lib/Vend/Table Editor.pm
Modified:  lib/Vend Data.pm
Log:
* Allow table editor to set mv_return_table if not already set, ensures
  that a linked spreadsheet won't command the table upon return to the
  select page.

* Allow a field's restrict_allow to be set to control expansion of
  append/prepend values.

* Make ui_wizard_fields control when ui_data_fields not set. Used
  to always come from ui_data_fields.

Revision  Changes    Path
1.58      +15 -4     interchange/lib/Vend/Table/Editor.pm


rev 1.58, prev_rev 1.57
Index: Editor.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Table/Editor.pm,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- Editor.pm	16 Apr 2004 16:23:12 -0000	1.57
+++ Editor.pm	7 Jun 2004 03:01:45 -0000	1.58
@@ -1,6 +1,6 @@
 # Vend::Table::Editor - Swiss-army-knife table editor for Interchange
 #
-# $Id: Editor.pm,v 1.57 2004/04/16 16:23:12 mheins Exp $
+# $Id: Editor.pm,v 1.58 2004/06/07 03:01:45 mheins Exp $
 #
 # Copyright (C) 2002-2003 Interchange Development Group
 # Copyright (C) 2002 Mike Heins <mike at perusion.net>
@@ -26,7 +26,7 @@
 package Vend::Table::Editor;
 
 use vars qw($VERSION);
-$VERSION = substr(q$Revision: 1.57 $, 10);
+$VERSION = substr(q$Revision: 1.58 $, 10);
 
 use Vend::Util;
 use Vend::Interpolate;
@@ -403,7 +403,8 @@
 			last METAMAKE;
 		}
 
-#::logDebug("formatting prepend/append/lookup_query");
+		$opt->{restrict_allow} ||= $record->{restrict_allow};
+#::logDebug("formatting prepend/append/lookup_query name=$opt->{name} restrict_allow=$opt->{restrict_allow}");
 		for(qw/append prepend lookup_query/) {
 			next unless $record->{$_};
 			if($opt->{restrict_allow}) {
@@ -1556,6 +1557,8 @@
 		$opt->{$mainp} = $thing;
 	}
 
+	$opt->{ui_data_fields} ||= $opt->{ui_wizard_fields};
+
 	###############################################################
 	# Get the field display information including breaks and labels
 	###############################################################
@@ -2011,7 +2014,7 @@
 	$opt->{ui_data_fields} =~ s/[,\0\s]+/ /g;
 
 	if($opt->{ui_wizard_fields}) {
-		$opt->{ui_data_fields} = $opt->{ui_display_only} = $opt->{ui_wizard_fields};
+		$opt->{ui_display_only} = $opt->{ui_data_fields};
 	}
 
 	if(! $opt->{ui_data_fields}) {
@@ -2333,6 +2336,12 @@
     $hidden->{mv_nextpage}   = $opt->{mv_nextpage};
     $hidden->{mv_data_table} = $table;
     $hidden->{mv_data_key}   = $keycol;
+	if($opt->{cgi}) {
+		$hidden->{mv_return_table}   = $CGI->{mv_return_table} || $table;
+	}
+	else {
+		$hidden->{mv_return_table}   = $table;
+	}
 
 	chunk 'HIDDEN_ALWAYS', 'OUTPUT_MAP', <<EOF;
 <INPUT TYPE=hidden NAME=mv_session_id VALUE="$Vend::Session->{id}">
@@ -3458,6 +3467,8 @@
 #::logDebug("include_before: $col $opt->{include_before}{$col}");
 			my $chunk = delete $opt->{include_before}{$col};
 			if($opt->{include_form_interpolate}) {
+				$Vend::Interpolate::Tmp->{table_editor_data} = $data;
+#::logDebug("data to include=" . ::uneval($data));
 				$chunk = interpolate_html($chunk);
 			}
 			elsif($opt->{include_form_expand}) {



2.42      +82 -17    interchange/lib/Vend/Data.pm


rev 2.42, prev_rev 2.41
Index: Data.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Data.pm,v
retrieving revision 2.41
retrieving revision 2.42
diff -u -r2.41 -r2.42
--- Data.pm	4 Jun 2004 06:17:16 -0000	2.41
+++ Data.pm	7 Jun 2004 03:01:45 -0000	2.42
@@ -1,6 +1,6 @@
 # Vend::Data - Interchange databases
 #
-# $Id: Data.pm,v 2.41 2004/06/04 06:17:16 mheins Exp $
+# $Id: Data.pm,v 2.42 2004/06/07 03:01:45 mheins Exp $
 # 
 # Copyright (C) 2002-2003 Interchange Development Group
 # Copyright (C) 1996-2002 Red Hat, Inc.
@@ -1918,7 +1918,8 @@
 	}
 	$function = 'update' unless $function;
 
-	my (%data);
+	my %data;
+	my %sneakdata;
 	for(@fields) {
 		$data{$_} = [];
 	}
@@ -1993,10 +1994,34 @@
 
 		for (my $i = 0; $i < @file_fields; $i++) {
 			my $nm = $file_fields[$i];
-			unless (length($data{$nm}->[0])) {
+
+			next if $nm =~ /__\d+$/;
+			my $dref;
+			my $dmain;
+			my $ntag = '';
+			if($nm =~ m{^(\d+)_} and $CGI::values{$nm}) {
+				$ntag = $1;
+				$ntag .= "_";
+				$sneakdata{$nm}->[0] =  $CGI::values{$nm};
+				for(qw/ mv_data_file_name_to_ mv_data_file_size_to_ /) {
+					my $t = $_ . $nm;
+					my $fld = $CGI::values{$t}
+						or next;
+					$fld = "$ntag$fld";
+					$sneakdata{$fld}->[0] = $CGI::values{$fld};
+				}
+				$dref = $sneakdata{$nm};
+				$dmain = \%sneakdata;
+			}
+			else {
+				$dref = $data{$nm};
+				$dmain = \%data;
+			}
+
+			unless (length($dref->[0])) {
 				# no need for a file update
 				if($file_oldfiles[$i]) {
-					$data{$nm}->[0] = $file_oldfiles[$i];
+					$dref->[0] = $file_oldfiles[$i];
 				}
 				else {
 					$skip_for_now{$nm} = 1;
@@ -2005,13 +2030,12 @@
 			}
 
 			# remove path components
-			$data{$nm}->[0] =~ s:.*/::; 
-			$data{$nm}->[0] =~ s:.*\\::; 
+			$dref->[0] =~ s:.*/::; 
+			$dref->[0] =~ s:.*\\::; 
 
 			if (length ($file_paths[$i])) {
 				# real file upload
-				$outfile = join('/', $file_paths[$i], $data{$nm}->[0]);
-#::logDebug("file upload: field=$nm path=$file_paths[$i] outfile=$outfile");
+				$outfile = join('/', $file_paths[$i], $dref->[0]);
 				my $ok;
 				if (-f $outfile) {
 					eval {
@@ -2039,7 +2063,7 @@
 										}
 										)
 					or do {
-						 logError("%s is not a file.", $data{$nm}->[0]);
+						 logError("%s is not a file.", $dref->[0]);
 						 next;
 					};
 				Vend::Interpolate::tag_value_extended(
@@ -2059,13 +2083,13 @@
 			else {
 				# preparing to dump file contents into database column
 				if(my $nfield = $CGI::values{"mv_data_file_name_to_$nm"}) {
-					$data{$nfield}->[0] = $data{$nm}->[0];
+					$dmain->{"$ntag$nfield"}->[0] = $dmain->{$nm}->[0];
 				}
-				$data{$nm}->[0]
+				$dmain->{$nm}->[0]
 					= Vend::Interpolate::tag_value_extended ($nm,
 						{file_contents => 1});
 				if(my $sfield = $CGI::values{"mv_data_file_size_to_$nm"}) {
-					$data{$sfield}->[0] = length $data{$nm}->[0];
+					$dmain->{"$ntag$sfield"}->[0] = length $dmain->{$nm}->[0];
 				}
 			}
 		}
@@ -2148,7 +2172,6 @@
 #::logDebug("iteration of update_data:db=$base_db key=$prikey data=" . ::uneval(\%data));
 		@k = (); @v = ();
 		for(keys %data) {
-#::logDebug("iteration of field $_");
 
 			next if $skip_for_now{$_};
 			next unless (length($value = $data{$_}->[$i]) || $CGI::values{mv_update_empty} );
@@ -2271,12 +2294,20 @@
 				if $CGI::values{mv_data_email};
 		}
 	}
+
+	%skip_for_now = ();
+
 	if(my $new = shift(@multis)) {
-#::logDebug("Doing multi for $new");
 		last SETDATA unless length $CGI::values{"${new}_$multiqual"};
 		for(@fields) {
-			my $value = $CGI::values{$_} = $CGI::values{"${new}_$_"};
-			$data{$_} = [ $value ];
+			my $t = $new . "_$_";
+			if($sneakdata{$t}) {
+				$data{$_} = delete $sneakdata{$t};
+			}
+			else {
+				$data{$_} = [ $CGI::values{$_} = $CGI::values{$t} ];
+			 
+			}
 		}
 		redo SETDATA;
 	}
@@ -2285,7 +2316,6 @@
 	if($CGI::values{mv_data_return_key}) {
 		my @keys = split /\0/, $CGI::values{mv_data_return_key};
 		for(@keys) {
-#::logDebug("return_key, setting $_");
 			$CGI::values{$_} = join("\0", @rows_set);
 		}
 	}
@@ -2323,6 +2353,38 @@
 			}
 		}
 
+		my @file_death;
+		my %filekill;
+		my %filemove;
+
+		for(my $i = 0; $i < @file_fields; $i++) {
+			push(@file_death, $i), next unless $file_fields[$i] =~ $some;
+			if($file_fields[$i] =~ $this) {
+				my $k = $file_fields[$i];
+				$k =~ s/$this//;
+				$filemove{$file_fields[$i]} = $k;
+			}
+		}
+
+		my $i;
+		while (defined($i = pop @file_death)) {
+			splice @file_fields, $i, 1;
+			splice @file_paths, $i, 1;
+			splice @file_oldfiles, $i, 1;
+		}
+
+		for(@file_fields) {
+			if(my $new = $filemove{$_}) {
+				$_ = $new;
+			}
+
+		}
+
+		while(my ($k,$v) = each %filemove) {
+			$CGI::file{$v} = delete $CGI::file{$k};
+		}
+
+
 		$::Scratch->{mv_data_enable} = delete $::Scratch->{"mv_data_enable__$new"};
 		delete $::Scratch->{mv_data_enable_key};
 
@@ -2332,6 +2394,9 @@
 		}
 
 		@CGI::values{keys %cgiset} = values %cgiset;
+		$CGI::values{mv_data_file_field} = join "\0", @file_fields;
+		$CGI::values{mv_data_file_path} = join "\0", @file_paths;
+		$CGI::values{mv_data_file_oldfiles} = join "\0", @file_oldfiles;
 #::logDebug("Reloading, function=$CGI::values{mv_data_function}");
 		update_data();
 	}








More information about the interchange-cvs mailing list