Bivio::UI::HTML::Widget::MultiCheckHandler
# Copyright (c) 2009 bivio Software Inc. All Rights Reserved. # $Id$ package Bivio::UI::HTML::Widget::MultiCheckHandler; use strict; use Bivio::Base 'UI.Widget'; my($_JS) = b_use('HTMLWidget.JavaScript'); sub get_html_field_attributes { return ' onclick="mc_checked(this, event)"'; } sub render { my($self, $source, $buffer) = @_; $_JS->render($source, $buffer, $self->package_name, <<'EOF'); var mc_last_check = -1; function mc_checked(c, e) { var index = parseInt(c.name.substr(c.name.lastIndexOf('_') + 1)); if (e.shiftKey && mc_last_check != -1) { for (var i = (mc_last_check < index ? mc_last_check : index); i <= (mc_last_check > index ? mc_last_check : index); i++) { if (i != index) { var field = c.name.substr(0, c.name.lastIndexOf('_') + 1) + i; if (c.form[field]) c.form[field].checked = c.checked; } } } mc_last_check = index; return; } EOF return; } 1;