X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=httemplate%2Fsearch%2Felements%2Fcheckbox-foot.html;h=f33a87467b4800de24f20867ae4d67e68c48442f;hb=3f2a7b01b59902faed5767d81e2959e131bdbdfd;hp=be1caab916809f12b4864bdbf1b106071324b026;hpb=6a0458ad05422b664918b0c7a18b456c022909ba;p=freeside.git
diff --git a/httemplate/search/elements/checkbox-foot.html b/httemplate/search/elements/checkbox-foot.html
index be1caab91..f33a87467 100644
--- a/httemplate/search/elements/checkbox-foot.html
+++ b/httemplate/search/elements/checkbox-foot.html
@@ -4,13 +4,14 @@
html_foot => include('elements/checkbox-foot.html',
actions => [
{ label => 'Edit selected packages',
- action => 'popup_package_edit()',
+ onclick => 'popup_package_edit()',
},
{ submit => 'Delete selected packages',
confirm => 'Really delete these packages?'
},
],
filter => '.name = "pkgpart"', # see below
+ minboxes => 2, #will remove checkboxes if there aren't at least this many
),
&>
@@ -26,7 +27,8 @@ array is a hashref of either:
of "submit" becomes the "value" property of the button (and thus its label).
If "confirm" is specified, the button will have an onclick handler that
displays the value of "confirm" in a popup message box and asks the user to
-confirm the choice.
+confirm the choice. The hashref may also have a "name" property, which
+sets the name of the submit button.
- "onclick" and "label". Creates a non-submit button that executes the
Javascript code in "onclick". "label" is used as the text of the button.
@@ -48,7 +50,7 @@ false.
% foreach my $action (@$actions) {
% if ( $action->{onclick} ) {
-{name} %> onclick="<% $opt{onclick} %>"\
+{name} %> onclick="<% $action->{onclick} %>"\
VALUE="<% $action->{label} |h%>">
% } elsif ( $action->{submit} ) {
{name} %> <% $action->{confirm} %>\
@@ -66,6 +68,14 @@ for (var i = 0; i < inputs.length; i++) {
}
}
%# avoid the need for "$areboxes" late-evaluation hackery
+% if ($opt{'minboxes'}) {
+if ( checkboxes.length < <% $opt{'minboxes'} %> ) {
+ for (i = 0; i < checkboxes.length; i++) {
+ checkboxes[i].parentNode.removeChild(checkboxes[i]);
+ }
+ checkboxes = [];
+}
+% }
if ( checkboxes.length == 0 ) {
document.getElementById('checkbox_footer').style.display = 'none';
}
@@ -74,6 +84,15 @@ function setAll(setTo) {
checkboxes[i].checked = setTo;
}
}
+function toCGIString() {
+ var out = '';
+ for (var i = 0; i < checkboxes.length; i++) {
+ if (checkboxes[i].checked) {
+ out += '&' + checkboxes[i].name + '=' + checkboxes[i].value;
+ }
+ }
+ return out;
+}
<%init>
my %opt = @_;