[interchange-cvs] interchange - heins modified lib/Vend/Table/Editor.pm

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Mon May 5 10:19:00 2003


User:      heins
Date:      2003-05-05 14:18:54 GMT
Modified:  lib/Vend/Table Editor.pm
Log:
Various changes to Vend::Table::Editor.

* Fix bug found by Jon where extra queries were done by Vend::Form due
  to table and column parameters being passed when not necessary.
  TODO: Investigate use of table and column at all for Vend::Form --
  I think that code is only needed to support the old, old, static
  option/modifier type of IC, i.e. [item-accessories].

* Add "hidden_all" parameter that allows passing of parameters in links
  generated by [table-editor].

* Add --none-- option to storage book select, so that you can save
  the main data without adding to storage book.

* Minor language change clarifying "save here only".

* Probably final address editing changes prior to hoped-for new address
  capability Kevin Old is working on.

Revision  Changes    Path
1.30      +46 -17    interchange/lib/Vend/Table/Editor.pm


rev 1.30, prev_rev 1.29
Index: Editor.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Table/Editor.pm,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- Editor.pm	9 Apr 2003 15:08:50 -0000	1.29
+++ Editor.pm	5 May 2003 14:18:53 -0000	1.30
@@ -1,6 +1,6 @@
 # Vend::Table::Editor - Swiss-army-knife table editor for Interchange
 #
-# $Id: Editor.pm,v 1.29 2003/04/09 15:08:50 mheins Exp $
+# $Id: Editor.pm,v 1.30 2003/05/05 14:18:53 mheins Exp $
 #
 # Copyright (C) 2002 ICDEVGROUP <interchange@icdevgroup.org>
 # Copyright (C) 2002 Mike Heins <mike@perusion.net>
@@ -26,7 +26,7 @@
 package Vend::Table::Editor;
 
 use vars qw($VERSION);
-$VERSION = substr(q$Revision: 1.29 $, 10);
+$VERSION = substr(q$Revision: 1.30 $, 10);
 
 use Vend::Util;
 use Vend::Interpolate;
@@ -175,7 +175,7 @@
 
 	my $mkey = $view ? "${view}::$item" : $item;
 
-	if(! $mtable) {
+	if( ref ($mdb) eq 'HASH') {
 		$record = $mdb;
 	}
 	else {
@@ -292,7 +292,7 @@
 		for my $metakey (@tries) {
 			## In case we were passed a meta record
 			last if $record = $sess->{$metakey} and ref $record;
-			$record = UI::Primitive::meta_record($metakey, $view, $meta)
+			$record = meta_record($metakey, $view, $meta)
 				and last;
 		}
 	}
@@ -428,10 +428,8 @@
 		my %things = (
 			attribute	=> $column,
 			cols	 	=> $opt->{cols}   || $record->{width},
-			column	 	=> $column,
 			passed	 	=> $record->{options},
 			rows 		=> $opt->{rows}	|| $record->{height},
-			table		=> $table,
 			value		=> $opt->{value},
 		);
 
@@ -1762,7 +1760,8 @@
 	my $elabel = $opt->{elabel};
 	my $mlabel = '';
 	my $hidden = $opt->{hidden} ||= {};
-
+	my $hidden_all = $opt->{hidden_all} ||= {};
+#::logDebug("hidden_all=" . ::uneval($hidden_all));
 	my $ntext;
 	my $btext;
 	my $ctext;
@@ -2080,28 +2079,54 @@
 			my %wid_data;
 			my %url_data;
 			my @labels = keys %$blob;
+			unshift @labels, '';
+
+			my $extra = '';
+			for my $k (keys %$hidden_all) {
+				my $v = $hidden_all->{$k};
+				if(ref($v) eq 'ARRAY') {
+					for(@$v) {
+						$extra .= "\n$k=$_";
+					}
+				}
+				else {
+					$extra .= "\n$k=$v";
+				}
+			}
+
 			for my $key (@labels) {
-				my $ref = $blob->{$_};
-				my $lab = $ref->{$opt->{mv_blob_label} || 'name'};
+				my $ref;
+				my $lab;
+				if($key) {
+					$ref = $blob->{$key};
+					$lab = $ref->{$opt->{mv_blob_label} || 'name'};
+				}
+				else {
+					$key = '';
+					$lab = '--' . errmsg('none') . '--';
+					$ref = {};
+				}
 				if($lab) {
 					$lab =~ s/,/&#44/g;
-					$wid_data{$lab} = "$key=$key - $lab";
-					$url_data{$lab} = $Tag->page( {
+					$wid_data{$key} = "$key=$key - $lab";
+					next unless $key;
+					$url_data{$key} = $Tag->page( {
 											href => $Global::Variable->{MV_PAGE},
 											form => "
 												item_id=$opt->{item_id}
-												mv_blob_nick=$key
+												mv_blob_nick=$key$extra
 											",
 										});
-					$url_data{$lab} .= "$key - $lab</A>";
+					$url_data{$key} .= "$key - $lab</A><br>";
 				}
 				else {
 					$wid_data{$key} = $key;
+					next unless $key;
 					$url_data{$key} = $Tag->page( {
 											href => $Global::Variable->{MV_PAGE},
 											form => "
 												item_id=$opt->{item_id}
-												mv_blob_nick=$key
+												mv_blob_nick=$key$extra
 											",
 										});
 					$url_data{$key} .= "$key</A>";
@@ -2154,7 +2179,7 @@
 									passed => join (",", @wid_data{ sort keys %wid_data }) || 'default',
 									});
 				my $msg1 = errmsg('Save to');
-				my $msg2 = errmsg('Save here only');
+				my $msg2 = errmsg('Save to book only');
 				for (\$msg1, \$msg2) {
 					$$_ =~ s/ /&nbsp;/g;
 				}
@@ -2181,6 +2206,7 @@
 EOF
 
 		if($opt->{mv_blob_nick}) {
+			delete $opt->{force_defaults};
 			my @keys = split /::/, $opt->{mv_blob_nick};
 			my $ref = $blob->{shift @keys};
 			for(@keys) {
@@ -2302,10 +2328,13 @@
 #::logDebug("return-to stack = " . ::uneval($r_ary));
 	}
 
-	if(ref $opt->{hidden}) {
+	if(ref $opt->{hidden} or ref $opt->{hidden_all}) {
 		my ($hk, $hv);
 		my @o;
-		while ( ($hk, $hv) = each %{$opt->{hidden}} ) {
+		while ( ($hk, $hv) = each %$hidden ) {
+			push @o, produce_hidden($hk, $hv);
+		}
+		while ( ($hk, $hv) = each %$hidden_all ) {
 			push @o, produce_hidden($hk, $hv);
 		}
 		chunk 'HIDDEN_USER', 'OUTPUT_MAP', join("", @o); # unless $wo;