Data-MuForm

 view release on metacpan or  search on metacpan

lib/Data/MuForm/Renderer/Base.pm  view on Meta::CPAN

package Data::MuForm::Renderer::Base;
# ABSTRACT: Renderer

use Moo;
use List::Util ('any');
use Scalar::Util ('weaken');


has 'form' => ( is => 'ro', weak_ref => 1 );

has 'localizer' => ( is => 'ro' );

has 'standard_layout' => ( is => 'rw', default => 'lbl_ele_err' );

has 'cb_layout' => ( is => 'rw', default => 'cbwrlr' );

has 'rdgo_layout' => ( is => 'rw', default => 'labels_right' );

has 'cbgo_layout' => ( is => 'rw', default => 'labels_right' );

has 'display_layout' => ( is => 'rw', default => 'span' );

has 'field_wrapper' => ( is => 'rw', default => 'simple' );

has 'wrapper_tag' => ( is => 'rw', default => 'div' );

has 'error_tag' => ( is => 'rw', default => 'span' );

has 'error_class' => ( is => 'rw', default => 'error_message' );

has 'render_element_errors' => ( is => 'rw', default => 0 );

has 'is_html5' => ( is => 'rw', default => 0 );

sub BUILD {
    my $self = shift;
    if ( $self->form ) {
        weaken($self->{localizer});
    }
}

sub render_hook {
    my $self = shift;
    return $self->form->render_hook($self, @_);
}


sub localize {
   my ( $self, @message ) = @_;
   return $self->localizer->loc_($message[0]);
}

#==============================
#  Forms
#==============================

sub render_form {
    my ($self, $rargs, $fields ) = @_;

    my $out = '';
    $out .= $self->render_start($rargs);
    $out .= $self->render_form_errors($rargs);

    foreach my $field ( @$fields ) {
        $out .= $field->render;
    }

    $out .= $self->render_end($rargs);
    return $out;
}

sub render_start {
    my ($self, $rargs ) = @_;

    my $name = $rargs->{name};
    my $method = $rargs->{method};
    my $out = qq{<form };
    $out .= qq{id="$name" };
    $out .= process_attrs($rargs->{form_attr}, ['id','name']);
    $out .= q{>};
}

sub render_end {
    my ($self, $rargs ) = @_;

   return q{</form>};
}

sub render_form_errors {
    my ( $self, $rargs ) = @_;
    my $out = '';
    if ( scalar @{$rargs->{form_errors}} ) {
      $out .= q{<div class="form_errors>};
      my $error_tag = $rargs->{error_tag} || $self->error_tag;
      my $error_class = $rargs->{error_class} || $self->error_class;
      foreach my $error ( @{$rargs->{form_errors}} ) {
        $out .= qq{\n<$error_tag class="$error_class">$error</$error_tag>};
      }



( run in 1.508 second using v1.01-cache-2.11-cpan-39bf76dae61 )