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
}