diff options
Diffstat (limited to 'httemplate/elements/select-month_year.html')
| -rw-r--r-- | httemplate/elements/select-month_year.html | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/httemplate/elements/select-month_year.html b/httemplate/elements/select-month_year.html new file mode 100644 index 000000000..ad84b915d --- /dev/null +++ b/httemplate/elements/select-month_year.html @@ -0,0 +1,58 @@ +<SELECT NAME="<% $prefix %>_month" SIZE="1" <% $disabled%>> + +<% $empty ? '<OPTION VALUE="">' : '' %> +% foreach ( 1 .. 12 ) { + + <OPTION<% $_ == $mon ? ' SELECTED' : '' %> VALUE="<% $_ %>"><% $mon[$_-1] %> +% } + + +</SELECT>/<SELECT NAME="<% $prefix %>_year" SIZE="1" <% $disabled%>> + +<% $empty ? '<OPTION VALUE="">' : '' %> +% for ( $start_year .. $end_year ) { + + <OPTION<% $_ == $year ? ' SELECTED' : '' %> VALUE="<% $_ %>"><% $_ %> +% } + +</SELECT> + +<%init> + my %opt = @_; + + my $prefix = $opt{'prefix'} || ''; + my $disabled = $opt{'disabled'} || ''; + my $empty = $opt{'empty_option'} || ''; + my $start_year = $opt{'start_year'}; + my $end_year = $opt{'end_year'} || '2037'; + + my @mon; + if ( $opt{'show_month_abbr'} ) { + @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); + # XXX: localization + } else { + @mon = ( ( map "0$_", 1 .. 9 ), 10 .. 12 ), + } + + my $date = $opt{'selected_date'} || ''; + $date = '' if $date eq '-'; + + my $mon = $opt{'selected_mon'} || 0; + my $year = $opt{'selected_year'} || 0; + if ( $date ) { + if ( $date =~ /^(\d{4})-(\d{1,2})-\d{1,2}$/ ) { #PostgreSQL date format + ( $mon, $year ) = ( $2, $1 ); + } elsif ( $date =~ /^(\d{1,2})-(\d{1,2}-)?(\d{4}$)/ ) { + ( $mon, $year ) = ( $1, $3 ); + } else { + die "unrecognized expiration date format: $date"; + } + } + + unless ( $start_year ) { + my @t = localtime; + $start_year = $t[5] + 1900; + } + $start_year = $year if $start_year > $year && $year > 0; + +</%init> |
