saner formatting for time input fields
authorTony Cook <tony@develop-help.com>
Thu, 6 Dec 2012 22:39:49 +0000 (09:39 +1100)
committerTony Cook <tony@develop-help.com>
Thu, 6 Dec 2012 22:39:49 +0000 (09:39 +1100)
site/cgi-bin/modules/BSE/Variables.pm
site/templates/preload.tmpl

index 8ca416b..fdebef0 100644 (file)
@@ -4,7 +4,7 @@ use Scalar::Util qw(blessed);
 use BSE::TB::Site;
 use BSE::Util::HTML;
 
-our $VERSION = "1.008";
+our $VERSION = "1.009";
 
 sub _base_variables {
   my ($self, %opts) = @_;
@@ -213,7 +213,14 @@ sub _date_format {
   my ($format, $date) = @_;
 
   my ($year, $month, $day, $hour, $min, $sec) = 
-    $date =~ /(\d+)\D+(\d+)\D+(\d+)(?:\D+(\d+)\D+(\d+)\D+(\d+))?/;
+    $date =~ /^\s*(\d+)-(\d+)\D+(\d+)(?:\D+(\d+)\D+(\d+)\D+(\d+))?/;
+  unless (defined $year) {
+    ($hour, $min, $sec) = $date =~ /^(\d+)\D+(\d+)\D+(\d+)/;
+print STDERR "time $hour $min $sec?\n";
+
+    # values that won't make strftime crazy
+    ($year, $month, $day) = ( 2000, 1, 1 );
+  }
   $hour = $min = $sec = 0 unless defined $sec;
   $year -= 1900;
   --$month;
index e5d3684..10d1deb 100644 (file)
@@ -95,6 +95,8 @@ Page <:= pages.page :> of <:= pages.pagecount :>
 <:  .else -:>
 <:    .if f.type and f.type eq "date" and default ne "" -:>
 <:      .set default = default.replace(/(\d+)\D+(\d+)\D+(\d+)/, "$3/$2/$1") -:>
+<:    .elsif f.type and f.type eq "time" and default ne "" -:>
+<:      .set default = bse.date(default =~ /:00$/ ? "%I:%M%p" : "%I:%M:%S%p", default).replace(/^0/, "").lower() -:>
 <:    .end if -:>
 <input id="<:= name | html :>" type="text" name="<:= name | html :>" value="<:.call "old", "field":name, "default":default :>" 
 <:-= f.maxlength ? ' maxlength="' _ f.maxlength _ '"' : '' :>