# Copyright (c) 2009 bivio Software Inc. All Rights Reserved. # # Visit http://www.bivio.biz for more info. # # This library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 2.1 of the # License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; If not, you may get a copy from: # http://www.opensource.org/licenses/lgpl-license.html # # $Id: MultiCheckHandler.pm,v 2.2 2010/04/23 21:58:36 moeller Exp $ package Bivio::UI::HTML::Widget::MultiCheckHandler; use strict; use Bivio::Base 'UI.Widget'; our($VERSION) = sprintf('%d.%02d', q$Revision: 2.2 $ =~ /\d+/g); 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.indexOf('_') + 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) c.form[c.name.substr(0, c.name.indexOf('_') + 1) + i].checked = c.checked; } } mc_last_check = index; return; } EOF return; } 1;