[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