Class ::xowiki::formfield::date
::xowiki::formfield::date
 create ... \
           [ -display_format (default "%Y-%m-%d %T") ] \
           [ -format (default "DD MONTH YYYY") ]
Class Relations
- class: ::xotcl::Class
![[i]](/resources/acs-subsite/ZoomIn16.gif)
 
- superclass: ::xowiki::formfield::CompoundField
![[i]](/resources/acs-subsite/ZoomIn16.gif)
 
::xotcl::Class create ::xowiki::formfield::date \
     -superclass ::xowiki::formfield::CompoundField
Methods (to be applied on instances)
convert_to_external (scripted)
return $internal
display_format (setter)
format (setter)
get_compound_value (scripted)
set year ""; set month ""; set day ""; set hour ""; set min ""; set sec ""
if {[nsf::is object [self]::YYYY]}  {set year  [[self]::YYYY  value]}
if {[nsf::is object [self]::month]} {set month [[self]::month value]}
if {[nsf::is object [self]::mon]}   {set month [[self]::mon   value]}
if {[nsf::is object [self]::MM]}    {set month [[self]::MM    value]}
if {[nsf::is object [self]::DD]}    {set day   [[self]::DD    value]}
if {[nsf::is object [self]::HH24]}  {set hour  [[self]::HH24  value]}
if {[nsf::is object [self]::MI]}    {set min   [[self]::MI    value]}
if {[nsf::is object [self]::SS]}    {set sec   [[self]::SS    value]}
if {"$year$month$day$hour$min$sec" eq ""} {
  return ""
}
if {![nsf::is integer $year]} {
  set year 0
}
foreach v [list year month day hour min sec] {
  if {[set $v] eq ""} {
    set $v [set :defaults($v)]
  }
}
if {[catch {set ticks [clock scan "$year-$month-$day ${hour}:${min}:${sec}"]}]} {
  set ticks 0 ;
}
return [clock format $ticks -format "%Y-%m-%d %T"]initialize (scripted)
set :widget_type date
set :format [string map [list _ " "] ${:format}]
array set :defaults {year 2000 month 01 day 01 hour 00 min 00 sec 00}
array set :format_map {
  SS    {SS    %S 1}
  MI    {MI    %M 1}
  HH24  {HH24  %H 1}
  DD    {DD    %e 0}
  MM    {MM    %m 1}
  MON   {mon   %m 1}
  MONTH {month %m 1}
  YYYY  {YYYY  %Y 0}
}
foreach c ${:components} {$c destroy}
:components {}
foreach element [split ${:format}] {
  if {![info exists :format_map($element)]} {
    
    
    
    set name $element
    set c [::xowiki::formfield::label create [self]::$name  -name ${:name}.$name -id ${:id}.$name  -locale [:locale] -object ${:object}  -value $element]
    $c set_disabled 1; 
    if {$c ni ${:components}} {lappend :components $c}
    continue
  }
  lassign [set :format_map($element)] class code trim_zeros
  
  
  
  set name $class
  set c [::xowiki::formfield::$class create [self]::$name  -name ${:name}.$name -id ${:id}.$name  -locale [:locale] -object ${:object}]
  
  $c set_disabled [:is_disabled]
  $c set code $code
  $c set trim_zeros $trim_zeros
  if {$c ni ${:components}} {lappend :components $c}
}pretty_value (scripted)
regexp {^([^.]+)[.]} $v _ v
if {${:display_format} eq "pretty-age"} {
  return [::xowiki::utility pretty_age -timestamp [clock scan $v] -locale [:locale]]
} else {
  return [lc_time_fmt $v [string map [list _ " "] ${:display_format}] [:locale]]
}render_input (scripted)
set :style "margin: 0px; padding: 0px;"
html::fieldset [:get_attributes id style] {
  foreach c ${:components} { $c render_input }
}same_value (scripted)
if {$v1 eq $v2} {return 1}
return 0set_compound_value (scripted)
if { $value eq {} } {
  
  
  
  
  foreach c ${:components} {
    $c value ""
  }
  return
}
set value [::xo::db::tcl_date $value tz]
if {$value ne ""} {
  
  set ticks [clock scan [string map [list _ " "] $value]]
} else {
  error "date: the parsed database value must not be empty"
}
set :defaults(year)  [clock format $ticks -format %Y]
set :defaults(month) [clock format $ticks -format %m]
set :defaults(day)   [clock format $ticks -format %e]
set :defaults(hour)  [clock format $ticks -format %H]
set :defaults(min)   [clock format $ticks -format %M]
foreach c ${:components} {
  if {[$c istype ::xowiki::formfield::label]} continue
  if {$ticks ne ""} {
    set value_part [string trim [clock format $ticks -format [$c set code]]]
    if {[$c set trim_zeros]} {
      set value_part [string trimleft $value_part 0]
      if {$value_part eq ""} {
        set value_part 0
      }
    }
  } else {
    set value_part ""
  }
  
  $c value $value_part
}