[interchange-cvs] interchange - pajamian modified 8 files

interchange-cvs at icdevgroup.org interchange-cvs at icdevgroup.org
Tue Nov 13 23:50:20 EST 2007


User:      pajamian
Date:      2007-11-14 04:50:19 GMT
Modified:  .        MANIFEST WHATSNEW-5.5
Modified:  code/Widget checkbox.widget movecombo.widget multiple.widget
Modified:  dist/lib/UI/pages/include/Options Matrix
Modified:  lib/Vend Config.pm
Added:     code/UI_Tag widget_info.coretag
Log:
* New Multiple CodeDef flag to indicate that a widget can return multiple
  selections.  Usage example:
       CodeDef checkbox Multiple 1

* Set new Multiple flag for checkbox, movecombo, check_nbsp and multiple
  widgets.

* Option editor will now correctly generate variants for options that use
  widgets capable of multiple selections (ie, multiple or checkout widgets).

* New [widget-info] UI tag:

	[widget-info name attribute]

	name: Name of widget to fetch info on, eg: checkbox, if not specified
	then a hashref of hashrefs will be returned with all attributes for all
	defined widgets.

	attribute: Info to get for widget, eg: Multiple.  If not specified then
	all attributes will be returned for the named widget in a hashref.

Revision  Changes    Path
2.214     +1 -0      interchange/MANIFEST


rev 2.214, prev_rev 2.213
Index: MANIFEST
===================================================================
RCS file: /var/cvs/interchange/MANIFEST,v
retrieving revision 2.213
retrieving revision 2.214
diff -u -r2.213 -r2.214
--- MANIFEST	2 Sep 2007 19:21:04 -0000	2.213
+++ MANIFEST	14 Nov 2007 04:50:19 -0000	2.214
@@ -264,6 +264,7 @@
 code/UI_Tag/user_merge.tag
 code/UI_Tag/version.coretag
 code/UI_Tag/widget.coretag
+code/UI_Tag/widget_info.coretag
 code/UI_Tag/widget_meta.coretag
 code/UI_Tag/write_relative_file.coretag
 code/UI_Tag/write_shipping.coretag



1.73      +12 -0     interchange/WHATSNEW-5.5


rev 1.73, prev_rev 1.72
Index: WHATSNEW-5.5
===================================================================
RCS file: /var/cvs/interchange/WHATSNEW-5.5,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -r1.72 -r1.73
--- WHATSNEW-5.5	10 Nov 2007 10:44:10 -0000	1.72
+++ WHATSNEW-5.5	14 Nov 2007 04:50:19 -0000	1.73
@@ -61,6 +61,13 @@
   in catalog.cfg like this:
 	Options Matrix display_type separate
 
+* New Multiple CodeDef flag to indicate that a widget can return multiple
+  selections.  Usage example:
+	CodeDef checkbox Multiple 1
+
+* Set new Multiple flag for checkbox, movecombo, check_nbsp and multiple
+  widgets.
+
 UI
 --
 
@@ -76,6 +83,11 @@
   want to use a text or textarea widget (which is not possible with matrix
   options).  Requires the addition of an o_simple column to the options table
   for existing catalogs.
+
+* New [widget-info] UI tag.
+
+* Option editor will now correctly generate variants for options that use
+  widgets capable of multiple selections (ie, multiple or checkout widgets).
 
 
 Interchange 5.5.1 released on 2007-08-21.



1.1                  interchange/code/UI_Tag/widget_info.coretag


rev 1.1, prev_rev 1.0
Index: widget_info.coretag
===================================================================
UserTag widget-info	Order	name attribute
UserTag widget-info	Version	$Revision: 1.1 $
UserTag	widget-info	Routine	<<EOR
my %wi_attr = ((map { (lc $_, $_) } qw(
	Widget
	Documentation
	Visibility
	Description
	Help
	Multiple
	Version
)), qw(
	exists	Widget
));

sub {
	my ($name, $attr) = @_;

	if (length $name) {
		# Global or Local?
		my $repo = $Global::CodeDef->{Widget};
		$repo = $Vend::Cfg->{CodeDef}{Widget} if $Vend::Cfg->{CodeDef}{Widget}{Widget}{$name};
		return unless $repo->{Widget}{$name};

		if (length $attr) {
			# return just one attribute for the given name.
			$attr = $wi_attr{lc $attr} or return;
			return $repo->{$attr}{$name};
		}
		else {
			# return a hashref with all the available attributes for a given name.
			my %build = reverse %wi_attr;
			while (my $key = each %build) {
				if (exists $repo->{$key}{$name}) {
					$build{$key} = $repo->{$key}{$name};
				}
				else {
					delete $build{$key};
				}
			}
			return \%build;
		}
	}
	else {
		# return a hashref of hashrefs for all the widgets and their attributes.
		my %build = %{$Global::CodeDef->{Widget}{Widget}};
		@build{keys %build} = ($Global::CodeDef->{Widget}) x scalar keys %build;
		@build{keys %{$Vend::Cfg->{CodeDef}{Widget}{Widget}}} = ($Vend::Cfg->{CodeDef}{Widget}) x scalar keys %{$Vend::Cfg->{CodeDef}{Widget}{Widget}};

		foreach my $name (keys %build) {
			my $repo = $build{$name};
			$build{$name} = {reverse %wi_attr};
			while (my $key = each %{$build{$name}}) {
				if (exists $repo->{$key}{$name}) {
					$build{$name}{$key} = $repo->{$key}{$name};
				}
				else {
					delete $build{$name}{$key};
				}
			}
		}
		return \%build;
	}
}
EOR



1.4       +3 -1      interchange/code/Widget/checkbox.widget


rev 1.4, prev_rev 1.3
Index: checkbox.widget
===================================================================
RCS file: /var/cvs/interchange/code/Widget/checkbox.widget,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- checkbox.widget	30 Mar 2007 23:40:58 -0000	1.3
+++ checkbox.widget	14 Nov 2007 04:50:19 -0000	1.4
@@ -5,12 +5,14 @@
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.  See the LICENSE file for details.
 # 
-# $Id: checkbox.widget,v 1.3 2007/03/30 23:40:58 pajamian Exp $
+# $Id: checkbox.widget,v 1.4 2007/11/14 04:50:19 pajamian Exp $
 
 CodeDef checkbox Widget 1
 CodeDef checkbox Description Checkbox
 CodeDef checkbox Help Selection of single/multiple values
+CodeDef checkbox Multiple 1
 CodeDef checkbox MapRoutine Vend::Form::box
 CodeDef check_nbsp Widget 1
 CodeDef check_nbsp Description Checkbox (nbsp)
+CodeDef checkbox Multiple 1
 CodeDef check_nbsp Help Selection of single/multiple values, &nbsp; for spaces



1.4       +2 -1      interchange/code/Widget/movecombo.widget


rev 1.4, prev_rev 1.3
Index: movecombo.widget
===================================================================
RCS file: /var/cvs/interchange/code/Widget/movecombo.widget,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- movecombo.widget	30 Mar 2007 23:40:58 -0000	1.3
+++ movecombo.widget	14 Nov 2007 04:50:19 -0000	1.4
@@ -5,11 +5,12 @@
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.  See the LICENSE file for details.
 # 
-# $Id: movecombo.widget,v 1.3 2007/03/30 23:40:58 pajamian Exp $
+# $Id: movecombo.widget,v 1.4 2007/11/14 04:50:19 pajamian Exp $
 
 CodeDef movecombo Widget 1
 CodeDef movecombo Description Combo move
 CodeDef movecombo Help Selects any/all of many options, puts in text box
+CodeDef movecombo Multiple 1
 CodeDef movecombo MapRoutine Vend::Form::movecombo
 CodeDef movecombo_replace Widget 1
 CodeDef movecombo_replace Description Combo move (one value)



1.4       +2 -1      interchange/code/Widget/multiple.widget


rev 1.4, prev_rev 1.3
Index: multiple.widget
===================================================================
RCS file: /var/cvs/interchange/code/Widget/multiple.widget,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- multiple.widget	30 Mar 2007 23:40:58 -0000	1.3
+++ multiple.widget	14 Nov 2007 04:50:19 -0000	1.4
@@ -5,9 +5,10 @@
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.  See the LICENSE file for details.
 # 
-# $Id: multiple.widget,v 1.3 2007/03/30 23:40:58 pajamian Exp $
+# $Id: multiple.widget,v 1.4 2007/11/14 04:50:19 pajamian Exp $
 
 CodeDef multiple Widget 1
 CodeDef multiple Description Select multiple
 CodeDef multiple Help Dropdown list with all options shown 
+CodeDef multiple Multiple 1
 CodeDef multiple MapRoutine Vend::Form::dropdown



1.7       +18 -12    interchange/dist/lib/UI/pages/include/Options/Matrix


rev 1.7, prev_rev 1.6
Index: Matrix
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/include/Options/Matrix,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Matrix	10 Nov 2007 10:32:26 -0000	1.6
+++ Matrix	14 Nov 2007 04:50:19 -0000	1.7
@@ -85,8 +85,8 @@
 
 					tf=[calcn]$Config->{Options_repository}{$Scratch->{setting}}{o_sort}[/calcn]
 
-					rf=o_group,o_value,price
-		"][loop-param o_group]	[loop-param o_value]	[loop-param price]
+					rf=o_group,o_value,price,o_widget
+		"][loop-param o_group]	[loop-param o_value]	[loop-param price]	[loop-param o_widget]
 [/loop][/tmp]
 
 [tmp tmp_price][price noformat=1 code="[cgi item_id]"][/tmp]
@@ -111,12 +111,13 @@
 
 	my @dimensions;
 	for(@opts) {
-		my($g, $o, $p) = split /\t/, $_;
+		my($g, $o, $p, $w) = split /\t/, $_;
 		push @optnames, $g;
 		my @ary;
 		my (@o) = grep /\S/, split /\s*,\s*/, $o;
 		my (@p) = grep /\S/, split /\s*,\s*/, $p;
 		my %p;
+		my $multi = $Tag->widget_info($w, 'Multiple');
 		for(@p) {
 			my ($k, $v) = split /\s*=\s*/, $_;
 			next unless $k;
@@ -134,9 +135,14 @@
 			my ($k, $v) = split /\s*=\s*/, $_;
 			$k = '__MV_VARIANT_JOINER__' || '0' if ! length($k);
 			$v =~ s/\*$//;
-			push @ary, [ $k, $v, $p{$k} ];
+			if ($multi) {
+				push @dimensions, [[undef, undef, 0], [$k, $v, $p{$k}]];
+			}
+			else {
+				push @ary, [ $k, $v, $p{$k} ];
+			}
 		}
-		push @dimensions, \@ary;
+		push @dimensions, \@ary unless $multi;
 	}
 
 #Debug( "dimensions: " . $Tag->uneval( { ref => \@dimensions } ) );
@@ -163,14 +169,13 @@
 				$pointers[$dim] = $_;
 				if ($dim == $#dimensions) {
 
+					my $o = join( '-',
+	grep { defined $_ } map { $dimensions[$_]->[$pointers[$_]]->[0] } (0..$#dimensions));
+					next unless length $o;
+					push @options, $o;
 					push @descriptions,
 					join( ', ',
-	map { $dimensions[$_]->[$pointers[$_]]->[1] } (0..$#dimensions)
-						)
-					;
-					push @options,
-					join( '-',
-	map { $dimensions[$_]->[$pointers[$_]]->[0] } (0..$#dimensions)
+	grep { defined $_ } map { $dimensions[$_]->[$pointers[$_]]->[1] } (0..$#dimensions)
 						)
 					;
 					push @prices,
@@ -186,7 +191,8 @@
 					}
 					push @hashes, \%opthash;
 
-				} else {
+				}
+				else {
 					recurse_dim($dim + 1);
 				}
 			}



2.225     +6 -4      interchange/lib/Vend/Config.pm


rev 2.225, prev_rev 2.224
Index: Config.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Config.pm,v
retrieving revision 2.224
retrieving revision 2.225
diff -u -r2.224 -r2.225
--- Config.pm	27 Sep 2007 21:43:30 -0000	2.224
+++ Config.pm	14 Nov 2007 04:50:19 -0000	2.225
@@ -1,6 +1,6 @@
 # Vend::Config - Configure Interchange
 #
-# $Id: Config.pm,v 2.224 2007/09/27 21:43:30 kwalsh Exp $
+# $Id: Config.pm,v 2.225 2007/11/14 04:50:19 pajamian Exp $
 #
 # Copyright (C) 2002-2007 Interchange Development Group
 # Copyright (C) 1996-2002 Red Hat, Inc.
@@ -54,7 +54,7 @@
 use Vend::Data;
 use Vend::Cron;
 
-$VERSION = substr(q$Revision: 2.224 $, 10);
+$VERSION = substr(q$Revision: 2.225 $, 10);
 
 my %CDname;
 my %CPname;
@@ -265,6 +265,7 @@
 	interpolate		Interpolate
 	invalidatecache	InvalidateCache
 	isendanchor		isEndAnchor
+	multiple		Multiple
 	norearrange		noRearrange
 	order			Order
 	posnumber		PosNumber
@@ -294,9 +295,10 @@
                 Interpolate 1
                 isEndAnchor 1
                 isOperator  1
+		Multiple    1
                 ItemAction  1
-				noRearrange	1
-				NoReparse   1
+		noRearrange 1
+		NoReparse   1
                 OrderCheck  1
                 UserTag     1
 				! );








More information about the interchange-cvs mailing list