[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