diff options
Diffstat (limited to 'httemplate/elements')
-rw-r--r-- | httemplate/elements/checkboxes-table-name.html | 88 | ||||
-rw-r--r-- | httemplate/elements/checkboxes.html | 103 | ||||
-rw-r--r-- | httemplate/elements/select-rate.html | 9 | ||||
-rw-r--r-- | httemplate/elements/tr-select-rate.html | 21 |
4 files changed, 148 insertions, 73 deletions
diff --git a/httemplate/elements/checkboxes-table-name.html b/httemplate/elements/checkboxes-table-name.html index b236787b6..31652f330 100644 --- a/httemplate/elements/checkboxes-table-name.html +++ b/httemplate/elements/checkboxes-table-name.html @@ -41,79 +41,12 @@ Example: </%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 $checked; -% if ( $cgi->param('error') ) { -% -% $checked = $cgi->param($opt{'link_table'}. ".$name" ) -% ? 'CHECKED' -% : ''; -% -% } else { -% -% $checked = -% qsearchs( $opt{'link_table'}, { -% $source_pkey => $sourcenum, -% $opt{'name_col'} => $name, -% %$link_static, -% } ) -% ? 'CHECKED' -% : '' -% -% } - - <TR> - <TD VALIGN="top"> - <INPUT TYPE="checkbox" NAME="<% $opt{'link_table'}. ".$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> +<% include('checkboxes.html', + 'names_list' => $opt{'names_list'}, + 'checked_callback' => $checked_callback, + 'element_name_prefix' => $opt{'link_table'}. '.', + ) +%> <%init> @@ -145,4 +78,13 @@ $source_pkey = $opt{'num_col'} || $source_pkey; my $link_static = $opt{'link_static'} || {}; +my $checked_callback = sub { + my( $cgi, $name ) = @_; + qsearchs( $opt{'link_table'}, { + $source_pkey => $sourcenum, + $opt{'name_col'} => $name, + %$link_static, + }); +}; + </%init> 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> diff --git a/httemplate/elements/select-rate.html b/httemplate/elements/select-rate.html new file mode 100644 index 000000000..83a7add06 --- /dev/null +++ b/httemplate/elements/select-rate.html @@ -0,0 +1,9 @@ +<% include( '/elements/select-table.html', + 'table' => 'rate', + 'name_col' => 'ratename', + 'empty_label' => 'Select rate plan', + #'hashref' => { 'disabled' => '' }, + 'order_by' => ' ORDER BY ratenum', #ratename ? + @_, + ) +%> diff --git a/httemplate/elements/tr-select-rate.html b/httemplate/elements/tr-select-rate.html new file mode 100644 index 000000000..27f2645af --- /dev/null +++ b/httemplate/elements/tr-select-rate.html @@ -0,0 +1,21 @@ +% unless ( $opt{'js_only'} ) { + + <% include('tr-td-label.html', @_ ) %> + + <TD <% $style %>> +% } + + <% include( '/elements/select-rate.html', %opt ) %> + +% unless ( $opt{'js_only'} ) { + </TD> + </TR> +% } +<%init> + +my( %opt ) = @_; + +my $style = $opt{'cell_style'} ? 'STYLE="'. $opt{'cell_style'}. '"' : ''; + +</%init> + |