[interchange-cvs] interchange - jon modified 2 files

interchange-cvs at icdevgroup.org interchange-cvs at icdevgroup.org
Wed Mar 1 17:09:42 EST 2006


User:      jon
Date:      2006-03-01 22:09:41 GMT
Modified:  .        MANIFEST
Added:     code/Filter date_change_null.filter
Log:
Add new date_change_null filter.

This is meant for use with databases such as PostgreSQL that do not accept
invalid dates (the '0000-00-00' used in the date_change filter), but
require a NULL to indicate the absence of a date.

To use, set metadata to use widget "date_blank", filter "date_change_null",
and optionally set the default value to "0000-00-00" if you want the
default to be no date, rather than today's date.

Provided by Mark Johnson <mark at endpoint.com> with help from Stefan Hornburg.

Revision  Changes    Path
2.189     +1 -0      interchange/MANIFEST


rev 2.189, prev_rev 2.188
Index: MANIFEST
===================================================================
RCS file: /var/cvs/interchange/MANIFEST,v
retrieving revision 2.188
retrieving revision 2.189
diff -u -u -r2.188 -r2.189
--- MANIFEST	30 Jan 2006 22:36:32 -0000	2.188
+++ MANIFEST	1 Mar 2006 22:09:41 -0000	2.189
@@ -14,6 +14,7 @@
 code/Filter/currency.filter
 code/Filter/date2time.filter
 code/Filter/date_change.filter
+code/Filter/date_change_null.filter
 code/Filter/dbi_quote.filter
 code/Filter/decode_entities.filter
 code/Filter/digits.filter



1.1                  interchange/code/Filter/date_change_null.filter


rev 1.1, prev_rev 1.0
Index: date_change_null.filter
===================================================================
# Copyright 2002-2006 Interchange Development Group (http://www.icdevgroup.org/)
# Copyright 1996-2002 Red Hat, Inc.
# Licensed under the GNU GPL v2. See file LICENSE for details.
# $Id: date_change_null.filter,v 1.1 2006/03/01 22:09:41 jon Exp $

CodeDef date_change_null Filter
CodeDef date_change_null Description Date widget for NULL Blank
CodeDef date_change_null Routine <<EOR
sub {
	my $val = shift;
	HTML::Entities::decode_entities($val) if $val =~ /\&/;
	$val =~ s/\0+//g;
	return $val 
		unless $val =~ m:(\d*)[-/]+(\d*)[-/]+(\d*):;
	my ($yr, $mon, $day);

	if (length($1) == 4) {
        # ISO date style 2003-03-20
		($yr, $mon, $day) = ($1, $2, $3);
	}
	else {
		($yr, $mon, $day) = ($3, $1, $2);
	}

	return unless grep /[1-9]/, ($yr, $mon, $day);

	my $time;
	$val =~ /:(\d+)$/
		and $time = $1;
	if (length($yr) < 4) {
		$yr =~ s/^0//;
		$yr = $yr < 50 ? $yr + 2000 : $yr + 1900;
	}
	$mon =~ s/^0//;
	$day =~ s/^0//;
	$val = sprintf("%04d%02d%02d", $yr, $mon, $day);
	return $val unless $time;
	$val .= sprintf('%04d', $time);
	return $val;
}
EOR








More information about the interchange-cvs mailing list