Advertisement
cng

Subclass HFH Bootstrap theme/widget

cng
Mar 5th, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.37 KB | None | 0 0
  1. package MyApp::HTML::FormHandler::Widget::Theme::Bootstrap;
  2.  
  3. use HTML::FormHandler::Moose::Role;
  4. with   'HTML::FormHandler::Widget::Theme::BootstrapFormMessages';
  5.  
  6. after 'before_build' => sub {
  7.     my $self = shift;
  8.     $self->set_widget_wrapper('Bootstrap')
  9.        if $self->widget_wrapper eq 'Simple';
  10. };
  11.  
  12. ## sample method; not needed for example
  13. after 'html_attributes' => sub {
  14.     my ( $self, $obj, $type, $attr, $result ) = @_;
  15.  
  16.     $attr->{placeholder} = $self->_localize($attr->{placeholder})
  17.        if exists $attr->{placeholder};
  18.  
  19.     return $attr;
  20. };
  21.  
  22. no HTML::FormHandler::Moose::Role;
  23.  
  24. 1;
  25.  
  26. __END__
  27.  
  28. package MyApp::HTML::FormHandler::Widget::Wrapper::Bootstrap;
  29.  
  30. use Moose::Role;
  31. use namespace::autoclean;
  32. use HTML::FormHandler::Render::Util ('process_attrs');
  33.  
  34. with 'HTML::FormHandler::Widget::Wrapper::Base';
  35.  
  36.  
  37. ### LOTS of code here, can override pretty much any method
  38. ### I've heavily customized `wrap_field`, not included here
  39.  
  40. ## sample method; not needed for example
  41. # don't render label for checkboxes
  42. sub do_render_label {
  43.     my ( $self ) = @_;
  44.  
  45.     return '' if $self->type_attr eq 'checkbox';
  46.     HTML::FormHandler::Widget::Wrapper::Base::do_render_label(@_);
  47. }
  48.  
  49.  
  50. 1;
  51.  
  52. __END__
  53.  
  54. package MyApp::HTML::FormHandler::Form::Base;
  55.  
  56. use Moose;
  57. use namespace::autoclean;
  58.  
  59. use HTML::FormHandler::Moose;
  60. use HTML::FormHandler::Merge ('merge');
  61.  
  62. extends  'HTML::FormHandler';
  63. with   qw'HTML::FormHandler::Widget::Form::Role::HTMLAttributes
  64.          MyApp::HTML::FormHandler::Widget::Theme::Bootstrap
  65.          MyApp::Roles::DateTime
  66.          ';
  67.  
  68. has "+is_html5" => ( default => 1 );
  69.  
  70. # use MyApp namespaces
  71. has '+field_name_space'  => ( default => sub { ['MyApp::HTML::FormHandler::Field'] } );
  72. has '+widget_name_space' => ( default => sub { ['MyApp::HTML::FormHandler::Widget'] } );
  73.  
  74. ## sample attribute; not needed for example
  75. # init custom tags; tags used in MyApp::HFH::W::W::Bootstrap
  76. has '+widget_tags' => ( default => sub { {
  77.     label_is_after => 0,
  78.     label_cols => 'col-sm-3',
  79.     field_cols => 'col-sm-6',
  80.     error_cols => 'col-sm-3',
  81.  } } );
  82.  
  83.  
  84. ## sample method; not needed for example
  85. after 'html_attributes' => sub {
  86.     my ( $self, $field, $type, $attr ) = @_;
  87.     if ($type eq 'label' && $field->{required}) {
  88.         push @{ $attr->{class} }, ( 'required' );
  89.     }
  90.     return $attr;
  91. };
  92.  
  93.  
  94. no HTML::FormHandler::Moose;
  95.  
  96. 1;
  97.  
  98. __END__
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement