Bivio::UI::HTML::Widget::ImageFormButton
# Copyright (c) 2000-2006 bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::UI::HTML::Widget::ImageFormButton;
use strict;
use Bivio::Base 'HTMLWidget.ControlBase';
my($_IDI) = __PACKAGE__->instance_data_index;
sub control_on_render {
my($self, $source, $buffer) = @_;
my($req) = $self->get_request;
my($field) = $self->resolve_ancestral_attr('form_model', $req)
->get_field_name_for_html(${$self->render_attr('field', $source)});
my($super) = '';
my($alt) = $self->render_simple_attr('alt', $source);
$self->SUPER::control_on_render($source, \$super);
$$buffer .= '<input type="image" name="'
. $field
. '" src="'
. b_use('FacadeComponent.Icon')->get_value(
${$self->render_attr('image', $source)}, $req)->{uri}
. (length($alt) ? '" alt="' . Bivio::HTML->escape_attr_value($alt) : '')
. ($super =~ /id=/ ? '' : ('" id="' . $field))
. '"'
. $super
. $self->render_simple_attr('attributes', $source)
. ' />';
return;
}
sub initialize {
my($self) = @_;
$self->put_unless_exists(
field => sub {
Bivio::IO::Alert->warn_deprecated('field must be specified');
return 'submit';
});
$self->map_invoke(initialize_attr => [qw(field image)]);
$self->map_invoke(unsafe_initialize_attr => [qw(alt attributes)]);
return shift->SUPER::initialize(@_);
}
sub internal_new_args {
return shift->internal_compute_new_args([qw(field image ?class)], \@_);
}
1;