Bivio::UI::XHTML::Widget::FormFieldLabel
# Copyright (c) 2005-2013 bivio Software, Inc. All Rights Reserved. # $Id$ package Bivio::UI::XHTML::Widget::FormFieldLabel; use strict; use Bivio::Base 'XHTMLWidget.Simple'; use Bivio::UI::ViewLanguageAUTOLOAD; my($_CB) = b_use('XHTMLWidget.ControlBase'); my($_IS_HTML5) = b_use('UI.Facade')->is_html5; sub internal_as_string { my($self) = @_; return $self->unsafe_get('field'); } sub internal_new_args { shift; return $_CB->internal_compute_new_args([qw(field label ?class)], \@_); } sub initialize { my($self) = @_; $self->initialize_attr('field'); $self->put_unless_exists( value => $_IS_HTML5 ? _error_bubble($self) : _error_indicator($self) ); return shift->SUPER::initialize(@_); } sub _error_bubble { my($self) = @_; $self->put(cell_class => 'label'); return Grid([[ IfFieldError( $self->get('field'), Join([ DIV_b_error_bubble(Join([ FormFieldError({ field => $self->get('field'), label => $self->get('label')->get('value'), }), ])), ]), )->put(cell_class => 'b_error_bubble'), IfFieldError( $self->get('field'), DIV_b_error_arrow_holder(Join([ SPAN_b_error_arrow_border(), SPAN_b_error_arrow(), ])), )->put(cell_class => 'b_error_arrow'), $self->get('label')->put(cell_class => 'label label_ok'), ]], { class => 'b_label_group', }); } sub _error_indicator { my($self) = @_; $self->put(cell_class => IfFieldError( $self->get('field'), 'label label_err', 'label label_ok', )); return Join([ IfFieldError( $self->get('field'), [sub { my($source) = @_; return vs_text( $source->req, $self->resolve_form_model($source)->simple_package_name, 'prose', 'error_indicator', ); }], ), $self->get('label'), ]); } 1;