[interchange] Improvements to the timed-display usertag

David Christensen <[email protected]>
Newsgroups gmane.comp.web.interchange.cvs
Message-ID <[email protected]>
commit 1748c01907b5974f9f6f346a226bd2a1c4838d36
Author: David Christensen <[email protected]>
Date:   Sun Jun 12 22:39:21 2011 -0500

    Improvements to the timed-display usertag

 code/UserTag/timed_display.tag |   48 +++++++++++++++++++++++++++++++--------
 1 files changed, 38 insertions(+), 10 deletions(-)
---
diff --git a/code/UserTag/timed_display.tag b/code/UserTag/timed_display.tag
index 6c4bb3d..357ee28 100644
--- a/code/UserTag/timed_display.tag
+++ b/code/UserTag/timed_display.tag
@@ -1,10 +1,19 @@
-UserTag timed-display Order	start stop
+UserTag timed-display Order start stop
 UserTag timed-display HasEndTag
+UserTag timed-display AddAttr 1
 UserTag timed-display Routine <<EOR
 sub {
-	my ($start, $stop, $body) = @_;
+	my ($start, $stop, $opt, $body) = @_;
 
-	my $now = $Tag->convert_date({ fmt => '%Y%m%d%H%M%S',});
+	my $tv		 = $opt->{tv};
+	my $adjust	 = $opt->{adjust};
+	my $currtime = $tv && ($CGI->{$tv} || $Scratch->{$tv});
+
+	my $now = $Tag->convert_date({
+		fmt	   => '%Y%m%d%H%M',
+		body   => $currtime,
+		adjust => $adjust,
+	});
 	my $else = pull_else($body);
 
 	if (!$start){
@@ -14,12 +23,17 @@ sub {
 		$stop = '599900010000';#forever or at least after I die.
 	}
 
-	$start = $Tag->convert_date({ fmt => '%Y%m%d%H%M%S', body => $start,});
-	$stop = $Tag->convert_date({ fmt => '%Y%m%d%H%M%S', body => $stop,});
-
+	$start = $Tag->convert_date({
+		fmt	   => '%Y%m%d%H%M',
+		body   => $start,
+	});
+	$stop = $Tag->convert_date({
+		fmt	   => '%Y%m%d%H%M',
+		body   => $stop,
+	});
 	return $body if !$start;
 
-	if ($start < $now and $now < $stop){
+	if ($start <= $now and $now <= $stop){
 		return $body;
 	}
 	else {
@@ -27,6 +41,7 @@ sub {
 	}
 }
 
+
 EOR
 
 UserTag timed-display Documentation <<EOD
@@ -39,10 +54,23 @@ Usage:
 Some text/code to display between June 06, 2007 between 8am and Noon.
 [/timed-display]
 
-For open ended display you can just specify a start date. 
-To start immediately and end on a specific date you can just specify a stop date.
+For open ended display you can just specify a start date.  To start
+immediately and end on a specific date you can just specify a stop
+date.
+
+The start and stop date use the convert_date tag, so you can use any
+format acceptable by that tag to specify your start and stop
+dates.	(See convert_date documentation for details.)
+
+If the 'timevar' parameter is provided, instead of the current time
+look first in the CGI and the Scratch variables with the provided name
+for a date string to convert.  This allows you to provide a way to
+test this behavior outside of the wall-clock time and see the actual
+behavior at a specific time.
 
-The start and stop date use the convert_date tag, so you can use any format acceptable by that tag to specify your start and stop dates. (see convert_date documentation)
+You can also use the 'adjust' parameter, which will pass its argument
+directly on to the convert_date calls; this can be used to localize
+the timezone relative to the server time.
 
 EOD
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.