API changes to allow extra tags for checkbox in a table
authorJamie Cameron <jcameron@webmin.com>
Sat, 24 Sep 2011 18:37:36 +0000 (11:37 -0700)
committerJamie Cameron <jcameron@webmin.com>
Sat, 24 Sep 2011 18:37:36 +0000 (11:37 -0700)
https://www.virtualmin.com/node/19588

blue-theme/theme.pl
ui-lib.pl

index fc2ba78..c3b9bc1 100755 (executable)
@@ -471,7 +471,7 @@ return "<a class='select_rows' href='#' onClick='$js'>$text</a>";
 sub theme_ui_checked_columns_row
 {
 $theme_ui_columns_row_toggle = $theme_ui_columns_row_toggle ? '0' : '1';
-local ($cols, $tdtags, $checkname, $checkvalue, $checked, $disabled) = @_;
+local ($cols, $tdtags, $checkname, $checkvalue, $checked, $disabled, $tags) = @_;
 my $rv;
 my $cbid = &quote_escape(quotemeta("${checkname}_${checkvalue}"));
 my $rid = &quote_escape(quotemeta("row_${checkname}_${checkvalue}"));
@@ -483,7 +483,7 @@ if ($checked) {
 $mycb =~ s/class='/class='row$theme_ui_columns_row_toggle ui_checked_columns /;
 $rv .= "<tr id=\"$ridtr\" $mycb onMouseOver=\"this.className = document.getElementById('$cbid').checked ? 'mainhighsel' : 'mainhigh'\" onMouseOut=\"this.className = document.getElementById('$cbid').checked ? 'mainsel' : 'mainbody row$theme_ui_columns_row_toggle'\">\n";
 $rv .= "<td ".$tdtags->[0]." class='ui_checked_checkbox'>".
-       &ui_checkbox($checkname, $checkvalue, undef, $checked, "onClick=\"document.getElementById('$rid').className = this.checked ? 'mainhighsel' : 'mainhigh';\"", $disabled).
+       &ui_checkbox($checkname, $checkvalue, undef, $checked, $tags." "."onClick=\"document.getElementById('$rid').className = this.checked ? 'mainhighsel' : 'mainhigh';\"", $disabled).
        "</td>\n";
 my $i;
 for($i=0; $i<@$cols; $i++) {
@@ -504,7 +504,7 @@ return $rv;
 
 sub theme_ui_radio_columns_row
 {
-local ($cols, $tdtags, $checkname, $checkvalue, $checked) = @_;
+local ($cols, $tdtags, $checkname, $checkvalue, $checked, $tags) = @_;
 my $rv;
 my $cbid = &quote_escape(quotemeta("${checkname}_${checkvalue}"));
 my $rid = &quote_escape(quotemeta("row_${checkname}_${checkvalue}"));
@@ -517,7 +517,7 @@ if ($checked) {
 $mycb =~ s/class='/class='ui_radio_columns /;
 $rv .= "<tr $mycb id=\"$ridtr\" onMouseOver=\"this.className = document.getElementById('$cbid').checked ? 'mainhighsel' : 'mainhigh'\" onMouseOut=\"this.className = document.getElementById('$cbid').checked ? 'mainsel' : 'mainbody'\">\n";
 $rv .= "<td ".$tdtags->[0]." class='ui_radio_radio'>".
-       &ui_oneradio($checkname, $checkvalue, undef, $checked, "onClick=\"for(i=0; i<form.$checkname.length; i++) { ff = form.${checkname}[i]; r = document.getElementById('row_'+ff.id); if (r) { r.className = 'mainbody' } } document.getElementById('$rid').className = this.checked ? 'mainhighsel' : 'mainhigh';\"").
+       &ui_oneradio($checkname, $checkvalue, undef, $checked, $tags." "."onClick=\"for(i=0; i<form.$checkname.length; i++) { ff = form.${checkname}[i]; r = document.getElementById('row_'+ff.id); if (r) { r.className = 'mainbody' } } document.getElementById('$rid').className = this.checked ? 'mainhighsel' : 'mainhigh';\"").
        "</td>\n";
 my $i;
 for($i=0; $i<@$cols; $i++) {
index a23c149..178677f 100755 (executable)
--- a/ui-lib.pl
+++ b/ui-lib.pl
@@ -264,7 +264,7 @@ $rv .= "</tr>\n";
 return $rv;
 }
 
-=head2 ui_checked_columns_row(&columns, &tdtags, checkname, checkvalue, [checked?], [disabled])
+=head2 ui_checked_columns_row(&columns, &tdtags, checkname, checkvalue, [checked?], [disabled], [tags])
 
 Returns HTML for a row in a multi-column table, in which the first column 
 contains a checkbox. The parameters are :
@@ -281,15 +281,17 @@ contains a checkbox. The parameters are :
 
 =item disabled - Set to 1 if the checkbox should be disabled and thus un-clickable.
 
+=item tags - Extra HTML tags to include in the radio button.
+
 =cut
 sub ui_checked_columns_row
 {
 return &theme_ui_checked_columns_row(@_) if (defined(&theme_ui_checked_columns_row));
-my ($cols, $tdtags, $checkname, $checkvalue, $checked, $disabled) = @_;
+my ($cols, $tdtags, $checkname, $checkvalue, $checked, $disabled, $tags) = @_;
 my $rv;
 $rv .= "<tr $cb class='ui_checked_columns'>\n";
 $rv .= "<td class='ui_checked_checkbox' ".$tdtags->[0].">".
-       &ui_checkbox($checkname, $checkvalue, undef, $checked, undef, $disabled).
+       &ui_checkbox($checkname, $checkvalue, undef, $checked, $tags, $disabled).
        "</td>\n";
 my $i;
 for($i=0; $i<@$cols; $i++) {
@@ -308,7 +310,7 @@ $rv .= "</tr>\n";
 return $rv;
 }
 
-=head2 ui_radio_columns_row(&columns, &tdtags, checkname, checkvalue, [checked], [disabled])
+=head2 ui_radio_columns_row(&columns, &tdtags, checkname, checkvalue, [checked], [disabled], [tags])
 
 Returns HTML for a row in a multi-column table, in which the first
 column is a radio button. The parameters are :
@@ -325,11 +327,13 @@ column is a radio button. The parameters are :
 
 =item disabled - Set to 1 if the radio button should be disabled and thus un-clickable.
 
+=item tags - Extra HTML tags to include in the radio button.
+
 =cut
 sub ui_radio_columns_row
 {
 return &theme_ui_radio_columns_row(@_) if (defined(&theme_ui_radio_columns_row));
-my ($cols, $tdtags, $checkname, $checkvalue, $checked, $dis) = @_;
+my ($cols, $tdtags, $checkname, $checkvalue, $checked, $dis, $tags) = @_;
 my $rv;
 $rv .= "<tr $cb class='ui_radio_columns'>\n";
 $rv .= "<td class='ui_radio_radio' ".$tdtags->[0].">".
@@ -441,13 +445,15 @@ foreach my $r (@$data) {
                        # Checkbox in non-first column
                        push(@cols, &ui_checkbox($c->{'name'}, $c->{'value'},
                                                 $c->{'label'}, $c->{'checked'},
-                                                undef, $c->{'disabled'}));
+                                                $c->{'tags'},
+                                                $c->{'disabled'}));
                        }
                elsif ($c->{'type'} eq 'radio') {
                        # Radio button in non-first column
                        push(@cols, &ui_oneradio($c->{'name'}, $c->{'value'},
                                                 $c->{'label'}, $c->{'checked'},
-                                                undef, $c->{'disabled'}));
+                                                $c->{'tags'},
+                                                $c->{'disabled'}));
                        }
                elsif ($c->{'type'} eq 'group') {
                        # Header row that spans whole table
@@ -475,12 +481,14 @@ foreach my $r (@$data) {
        elsif ($c0->{'type'} eq 'checkbox') {
                $rv .= &ui_checked_columns_row(\@cols, \@rtds, $c0->{'name'},
                                               $c0->{'value'}, $c0->{'checked'},
-                                              $c0->{'disabled'});
+                                              $c0->{'disabled'},
+                                              $c0->{'tags'});
                }
        elsif ($c0->{'type'} eq 'radio') {
                $rv .= &ui_radio_columns_row(\@cols, \@rtds, $c0->{'name'},
                                             $c0->{'value'}, $c0->{'checked'},
-                                            $c0->{'disabled'});
+                                            $c0->{'disabled'},
+                                            $c0->{'tags'});
                }
        }