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

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Sun Mar 30 17:06:00 2003


User:      heins
Date:      2003-03-30 22:05:20 GMT
Modified:  lib/Vend Form.pm
Log:
* Allow multiple semi-colon-separated queries to populate options via
  lookup_query.

Revision  Changes    Path
2.29      +15 -5     interchange/lib/Vend/Form.pm


rev 2.29, prev_rev 2.28
Index: Form.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Form.pm,v
retrieving revision 2.28
retrieving revision 2.29
diff -u -r2.28 -r2.29
--- Form.pm	26 Mar 2003 17:08:19 -0000	2.28
+++ Form.pm	30 Mar 2003 22:05:20 -0000	2.29
@@ -1,6 +1,6 @@
 # Vend::Form - Generate Form widgets
 # 
-# $Id: Form.pm,v 2.28 2003/03/26 17:08:19 mheins Exp $
+# $Id: Form.pm,v 2.29 2003/03/30 22:05:20 mheins Exp $
 #
 # Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -37,7 +37,7 @@
 require Exporter;
 @ISA = qw(Exporter);
 
-$VERSION = substr(q$Revision: 2.28 $, 10);
+$VERSION = substr(q$Revision: 2.29 $, 10);
 
 @EXPORT = qw (
 	display
@@ -1020,9 +1020,19 @@
 	if($look = $opt->{lookup_query}) {
 		my $tab = $opt->{table} || $Vend::Cfg->{ProductFiles}[0];
 		my $db = Vend::Data::database_exists_ref($tab);
-		$data = $db->query($look)
-			if $db;
-		$data ||= [];
+		my @looks = split /\s*;\s*/, $look;
+		$data = [];
+		for my $l (@looks) {
+			next unless $db;
+			next unless $l =~ /^select\s+/i;
+			push @$data, @{$db->query($l)};
+		}
+		if($data->[0] and @{$data->[0]} > 2) {
+			my $j = $opt->{label_joiner} || '-';
+			for(@$data) {
+				$_->[1] = join $j, splice @$_, 1;
+			}
+		}
 	}
 	elsif($look = $opt->{lookup}) {
 #::logDebug("lookup called, opt=" . uneval($opt));