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

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Sun Aug 18 04:01:01 2002


User:      heins
Date:      2002-08-18 08:00:20 GMT
Modified:  lib/Vend Menu.pm
Log:
* Add "flydown" menu, with anchor_down=3D1 parameter.

* Fix bug in menu_group transform.

Revision  Changes    Path
2.12      +33 -8     interchange/lib/Vend/Menu.pm


rev 2.12, prev_rev 2.11
Index: Menu.pm
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /var/cvs/interchange/lib/Vend/Menu.pm,v
retrieving revision 2.11
retrieving revision 2.12
diff -u -r2.11 -r2.12
--- Menu.pm	15 Aug 2002 06:42:56 -0000	2.11
+++ Menu.pm	18 Aug 2002 08:00:19 -0000	2.12
@@ -1,6 +1,6 @@
 # Vend::Menu - Interchange payment processing routines
 #
-# $Id: Menu.pm,v 2.11 2002/08/15 06:42:56 mheins Exp $
+# $Id: Menu.pm,v 2.12 2002/08/18 08:00:19 mheins Exp $
 #
 # Copyright (C) 2002 Mike Heins, <mike@perusion.net>
 #
@@ -21,7 +21,7 @@
=20
 package Vend::Menu;
=20
-$VERSION =3D substr(q$Revision: 2.11 $, 10);
+$VERSION =3D substr(q$Revision: 2.12 $, 10);
=20
 use Vend::Util;
 use strict;
@@ -108,7 +108,7 @@
 				$c ||=3D $f;
 				$status =3D $status && (
 								!  $row->{$f}
-								or $row->{$f} =3D~ /$CGI::values{$c}/i
+								or $CGI::values{$c} =3D~ /$row->{$f}/i
 								);
 			}
 		};
@@ -339,6 +339,8 @@
 		padding: 2px;
 EOF
=20
+	$opt->{anchor_down} =3D is_yes($opt->{anchor_down}) || 0;
+
=20
 	push @out, <<EOF;
 <script language=3D"JavaScript1.3">
@@ -373,6 +375,7 @@
 	shift @levels;
=20
 	push @out, <<EOF;
+var anchor_down =3D $opt->{anchor_down};
 var last_level =3D $levels[$#levels];
 var link_class =3D '$opt->{link_class}';
 var link_class_open =3D '$opt->{link_class_open}';
@@ -479,8 +482,12 @@
=20
 	function getRightX( obj )
 	{
+		var pos =3D 0;
 		if( browserType() =3D=3D "ie" )
-			return obj.getBoundingClientRect().right - 2;
+			if(anchor_down =3D=3D 1)=20
+				pos =3D obj.getBoundingClientRect().right - 2;
+			else
+				pos =3D obj.getBoundingClientRect().left + 2;
 		else {
 			var n =3D 0;
 			var x =3D obj.offsetParent;
@@ -488,14 +495,21 @@
 				n +=3D x.offsetLeft;
 				x =3D x.offsetParent;
 			}
-			return n + obj.offsetLeft + obj.offsetWidth;
+			pos =3D n + obj.offsetLeft;
+			if(anchor_down !=3D 1)
+				pos +=3D obj.offsetWidth;
 		}
+		return pos;
 	}
=20
 	function getTopX( obj )
 	{
+		var pos =3D 0;
 		if( browserType() =3D=3D "ie" )
-			return obj.getBoundingClientRect().top - 2;
+			if(anchor_down)=20
+				pos =3D obj.getBoundingClientRect().bottom + 2;
+			else
+				pos =3D obj.getBoundingClientRect().top - 2;
 		else {
 			var n =3D 0;
 			var x =3D obj;
@@ -503,8 +517,11 @@
 				n +=3D x.offsetParent.offsetTop;
 				x =3D x.offsetParent;
 			}
-			return n + obj.offsetTop;
+			pos =3D n + obj.offsetTop;
+			if(anchor_down)
+				pos +=3D obj.offsetHeight;
 		}
+		return pos;
 	}
=20=09
 	function mouseout( obj, level )
@@ -937,8 +954,16 @@
=20
 	$fields =3D $opt->{loopfields};
=20
+	if(defined $opt->{next_level}) {
+		return if $row->{mv_level} > $opt->{next_level};
+		undef $opt->{next_level};
+	}
+
 	for(@{$opt->{_transform}}) {
-		return unless $transform{$_}->($row, $opt->{$_});
+		my $status =3D $transform{$_}->($row, $opt->{$_});
+		$opt->{next_level} =3D $row->{mv_level}
+			if ! $status;
+		return unless $status;
 	}
=20
 	if($row->{page} and $row->{page} !~ /^\w+:/) {