From d28bac7032a0d95fffbba01ad7eaa6a85fd7be16 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 1 Mar 2008 09:37:45 +0000 Subject: aggiunto supporto date (data creazione deve essere scritta nel documento) git-svn-id: svn://luxion/repos/WebCoso/trunk@330 fcb26f47-9200-0410-b104-b98ab5b095f3 --- lib/WebCoso/XSLT.pm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'lib/WebCoso/XSLT.pm') diff --git a/lib/WebCoso/XSLT.pm b/lib/WebCoso/XSLT.pm index 18d2416..1f9208a 100644 --- a/lib/WebCoso/XSLT.pm +++ b/lib/WebCoso/XSLT.pm @@ -5,6 +5,7 @@ use WebCoso::Common; use Path::Class; use XML::LibXML; use XML::LibXSLT; +use DateTime::Format::Strptime; my $NS='http://webcoso.thenautilus.net/'; @@ -19,6 +20,8 @@ sub new { $self->{xslt_proc}->register_function($NS,'title-for', sub{WebCoso::Common::getTitleFor($self->{fc},@_)}); $self->{xslt_proc}->register_function($NS,'tagged',sub{$self->getTagsXML}); + $self->{xslt_proc}->register_function($NS,'dates-for', + sub{$self->getDatesXML(WebCoso::Common::getDatesFor($self->{fc},@_))}); $self->{fc}->add_parser(qr{\.xml$} => sub { $self->{xml_parser}->parse_string($_[1],$_[0]) }); @@ -92,4 +95,23 @@ sub getTagsXML { return $doc; } +{ +my %name_map=(creation=>'wc:creation-date', + last_change=>'wc:last-change'); +my $format=DateTime::Format::Strptime->new(pattern=>'%F %T',time_zone=>'UTC'); +sub getDatesXML { + my ($self,$dates)=@_; + my $doc=XML::LibXML::Document->new(); + return $doc unless defined $dates; + + my $de=$doc->createElementNS($NS,'wc:dates'); + $doc->setDocumentElement($de); + while (my ($k,$v)=each %$dates) { + my $d=$doc->createElementNS($NS,$name_map{$k}); + $d->appendTextNode($format->format_datetime($v)); + $de->appendChild($d); + } + return $doc; +} +} 1; -- cgit v1.2.3