[interchange] * Add new UserTag parameter "Underride". This allows you to define

Mike Heins interchange-cvs at icdevgroup.org
Sat Mar 22 16:00:03 UTC 2014


commit 0d0fe200c7933322372aafd3cf3caee9dea15642
Author: Mike Heins <mike at perusion.com>
Date:   Sat Mar 22 11:55:57 2014 -0400

    * Add new UserTag parameter "Underride". This allows you to define
      a new UserTag for use, then later have that tag become part of
      the distribution Interchange without causing errors.
    
      Has the effect of ignoring the second definition of a tag
      if that tag begins its stanza with
    
      	UserTag  tagname  Underride
    
      Intended for allowing a new "strap" template admin and catalog
      template with a few new UserTag definitions distributed with
      the template, then have those tags be superseded by distribution
      Interchange tags. (The first of those is ts/tn/tv, for defining
      page titles, ephemeral JavaScript code, etc.)

 lib/Vend/Config.pm |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)
---
diff --git a/lib/Vend/Config.pm b/lib/Vend/Config.pm
index 17cc467..86a63f5 100644
--- a/lib/Vend/Config.pm
+++ b/lib/Vend/Config.pm
@@ -255,6 +255,7 @@ for( values %extmap ) {
 	cannest			canNest
 	description  	Description
 	override	  	Override
+	underride	  	Underride
 	visibility  	Visibility
 	help		  	Help
 	documentation	Documentation
@@ -5050,7 +5051,7 @@ sub parse_mapped_code {
 	get_system_code() unless defined $SystemCodeDone;
 
 	my($tag,$p,$val) = split /\s+/, $value, 3;
-	
+
 	# Canonicalize
 	$p = $tagCanon{lc $p} || ''
 		or ::logDebug("bizarre mapped code line '$value'");
@@ -5130,7 +5131,7 @@ sub parse_tag {
 		config_warn("Bad user tag parameter '%s' for '%s', skipping.", $p, $tag);
 		return $c;
 	}
-	
+
 	# Canonicalize
 	$p = $tagCanon{lc $p};
 	$tag =~ tr/-/_/;
@@ -5140,7 +5141,15 @@ sub parse_tag {
 	if ($tagSkip{$p}) {
 		return $c;
 	}
-	
+
+	if($p eq 'Underride') {
+		if($Global::UserTag->{Routine}->{$tag} or $C && $C->{UserTag}->{Routine}->{$tag}) {
+			$c->{Done}{$tag} = 1;
+		}
+	}
+
+	return $c if $c->{Done}{$tag};
+
 	if($CodeDest and $CodeDest eq 'CoreTag') {
 		return $c unless $Global::TagInclude->{$tag} || $Global::TagInclude->{ALL};
 	}



More information about the interchange-cvs mailing list