Bivio::UI::XHTML::Widget::MainErrors
# Copyright (c) 2009 bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::UI::XHTML::Widget::MainErrors;
use strict;
use Bivio::Base 'HTMLWidget.Tag';
my($_HANDLERS) = b_use('Biz.Registrar')->new;
b_use('XHTMLWidget.Page')->register_handler(__PACKAGE__);
b_use('IO.ClassLoader')->map_require_all(__PACKAGE__->simple_package_name);
sub CLASSLOADER_MAP_NAME {
return 'XHTMLWidget';
}
sub NEW_ARGS {
return [];
}
sub handle_page_render_end {
my($proto, $source, $buffer) = @_;
return
unless my $self = $proto->unsafe_self_from_req($source->req);
$$buffer =~ s/\Q$self/_render($self, $source)/es;
return;
}
sub initialize {
return shift->put_unless_exists(
tag => 'div',
value => '',
class => 'b_main_errors',
tag_if_empty => 0,
)->SUPER::initialize(@_);
}
sub register_handler {
shift;
$_HANDLERS->push_object(@_);
return;
}
sub render {
my($self, $source, $buffer) = @_;
#TODO: Generalize backpatching.
$self->put_on_req($source->req);
$$buffer .= "$self";
return;
}
sub render_tag_value {
my($self, $source, $buffer) = @_;
$_HANDLERS->do_filo(handle_render_main_errors => [$source, $buffer]);
return;
}
sub _render {
my($self, $source) = @_;
my($b) = '';
$self->SUPER::render($source, \$b);
return $b;
}
1;