diff options
author | ivan <ivan> | 2009-01-05 00:26:54 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-01-05 00:26:54 +0000 |
commit | 125fb1a284ae96b46fe433c418aafa87862c4382 (patch) | |
tree | cb9485c9cfd7e685bc63ea40fe214f80c18407b1 /httemplate/elements/checkboxes.html | |
parent | c23d6e1673dbec98fe9d778ee55962d2cbd145d5 (diff) |
add rate copying, RT#4431
Diffstat (limited to 'httemplate/elements/checkboxes.html')
-rw-r--r-- | httemplate/elements/checkboxes.html | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/httemplate/elements/checkboxes.html b/httemplate/elements/checkboxes.html new file mode 100644 index 000000000..126224538 --- /dev/null +++ b/httemplate/elements/checkboxes.html @@ -0,0 +1,103 @@ +<%doc> + +Example: + + include( '/elements/checkboxes.html', + + # required + + #? 'name_callback' => sub { }, + + 'names_list' => [ 'value', + 'other value', + [ 'complex value' => { 'desc' => "Add'l description", + 'note' => ' *', + } + ], + ], + + 'element_name_prefix' => "$link_table.", + + #recommended + + 'checked_callback' => sub { my( $cgi, $name ) = @_; }, + + ) + +</%doc> + +<TABLE CELLSPACING=0 CELLPADDING=0> + +<TR> + <TD COLSPAN=2 ALIGN="center"><FONT SIZE="-1">( + <A HREF="javascript:setAll<%$prefix%>(true)">select all</A> | + <A HREF="javascript:setAll<%$prefix%>(false)">unselect all</A> | + <A HREF="javascript:toggleAll<%$prefix%>()">toggle all</A> + )</FONT></TD> +</TR> + +% my $num=0; +% foreach my $item ( @{ $opt{'names_list'} } ) { +% +% my $name = ref($item) ? $item->[0] : $item; +% ( my $display = $name ) =~ s/ / /g; +% $display .= $item->[1]{note} if ref($item) && $item->[1]{note}; +% my $desc = ref($item) && $item->[1]{desc} ? $item->[1]{desc} : ''; +% +% my $callback = +% ( $cgi->param('error') ? 'error_' : '' ). 'checked_callback'; +% my $checked = &{ $opt{$callback} }( $cgi, $name ) ? 'CHECKED' : ''; + + <TR> + <TD VALIGN="top"> + <INPUT TYPE="checkbox" NAME="<% $opt{'element_name_prefix'}. $name %>" <% $checked %> ID="<%$prefix.$num++%>" VALUE="ON"> + </TD> + <TD><% $display %> +% if ( $desc ) { + <BR><FONT SIZE="-2"><% $desc %></FONT> +% } + </TD> + </TR> + +% } + +</TABLE> + +<SCRIPT TYPE="text/javascript"> + + function setAll<%$prefix%>(setTo) { +% for ( 0 .. ($num-1) ) { + document.getElementById('<%$prefix.$_%>').checked = setTo; +% } + } + + function toggleAll<%$prefix%>(setTo) { +% for ( 0 .. ($num-1) ) { + var element = document.getElementById('<%$prefix.$_%>'); + if ( element.checked == true ) { + element.checked = false; + } else { + element.checked = true; + } +% } + } + +</SCRIPT> + +<%init> + +my( %opt ) = @_; + +my @pset = ( 'a'..'z', 'A'..'Z', '0'..'9' ); + +my $prefix = $opt{prefix} + || join('', map $pset[ int(rand $#pset) ], (0..20) ); + +$opt{checked_callback} ||= sub {}; + +$opt{'error_checked_callback'} ||= sub { + my( $cgi, $name ) = @_; + $cgi->param($opt{'element_name_prefix'}. $name ); +}; + +</%init> |