[%- USE form = HTML.SuperForm( self.params ) %] [%- form.start_form( action => ( view.form.action || self.uri ), enctype => view.form.enctype, class => ( view.form.class || 'form-box' ), method => ( view.data.method || 'post' ) ) %] [%- IF view.form.show_error_summary %] [% PROCESS error_summary %] [%- END %] [%# check for older style crud form %] [%- IF view.form.fields %]
[% view.form.legend %]

[% view.title %]

[%- FOREACH field_data IN view.form.fields %] [%- PROCESS field dta = field_data row = view.form.row layout = 'default' %] [%- END %]
[%- ELSE %] [%- WHILE ( row = view.form.row.next ) %]
[% view.form.legend %]
[%- FOREACH field_data IN view.form.fields %] [%- PROCESS field dta = field_data row = row layout = 'default' %] [%- END %]
[%- END %] [%- END %]
[%- UNLESS view.form.no_submit %] [% form.submit( id => 'submit', name => 'submit', default => ( view.form.submit_button_label || 'Submit' ), label => ( view.form.submit_button_label || 'Submit' ) ) -%] [%- END %] [%- IF view.form.submit_and_add_another %] [%- form.submit( name => 'submit_add_another', default => ( view.form.submit_and_add_another_label || 'Submit & Add Another' ), label => ( view.form.submit_and_add_another_label || 'Submit & Add Another' ) ) %] [%- END %] [%- UNLESS view.form.no_cancel %] [%- form.submit( id => 'cancel', name => 'cancel', default => ( view.form.cancel_button_label || 'Cancel' ) label => ( view.form.cancel_button_label || 'Cancel' ) ) -%] [%- END %]
[% form.end_form %] [% BLOCK field %] [%- type = dta.type %] [%- name = dta.name %] [%- missing = view.form.results.missing( "$name" ) %] [%- required = dta.optional ? 0 : 1 %] [%- IF type == 'file' %]
[%- PROCESS row_status invalid = view.form.results.invalid( "$name" ).join( ',' ) missing = view.form.results.missing( "$name" ) hint = dta.hint %]
[%- ELSIF type == 'display' %]
[%- row.$name || dta.default_value %]
[%- ELSIF type == 'textarea' %]
[%- form.$type( id => dta.name, name => name, default => (self.params.$name || row.$name || dta.default_value), class => dta.class, rows => dta.rows, cols => dta.cols ) %] [%- PROCESS row_status invalid = view.form.results.invalid( "$name" ).join( ',' ) missing = view.form.results.missing( "$name" ) hint = dta.hint %]
[%- ELSIF type == 'hidden' %] [%- form.$type( id => dta.name, name => dta.name, class => dta.class, default => (self.params.$name || row.$name || dta.default_value), size => dta.display_size, ) %] [%- ELSIF type == 'select' || type == 'multiple_select' %] [%- values = []; labels = {}; %] [%- FOREACH i IN dta.options %] [%- key = i.value %] [%- values.push( i.value ); labels.$key = i.label; %] [%- END %]
[% param_values = self.params.$name.split('\0') %] [%- form.select( id => dta.name, name => name, class => dta.class, default => ( param_values || row.$name _ '' || dta.default_value ), size => dta.display_size, values => values, labels => labels, multiple => ( type == 'multiple_select' ? 1 : 0 ) ) %] [%- PROCESS row_status invalid = view.form.results.invalid( "$name" ).join( ',' ) missing = view.form.results.missing( "$name" ) hint = dta.hint %]
[%- ELSIF type == 'html' %]
[%- dta.html %]
[%- ELSE %]
[%- form.$type( id => dta.name, name => dta.name, class => dta.class, default => (self.params.$name || row.$name || dta.default_value), size => dta.display_size, ) %] [%- PROCESS row_status invalid = view.form.results.invalid( "$name" ).join( ',' ) missing = view.form.results.missing( "$name" ) hint = dta.hint %]
[%- END %] [%- END %] [% BLOCK row_status %] [% IF invalid %] invalid [% invalid %] [% END %] [%- IF missing %] required [% END %] [% hint %] [% END %] [% BLOCK error_summary %] [% IF view.form.results.missing %]

Missing: [% missing_names = [] %] [% FOREACH field IN view.form.fields %] [% IF view.form.results.missing( "${field.name}" ) %] [% missing_names.push( field.label ) %] [% END %] [% END %] [% missing_names.join( ', ' ) %]

[% END %] [% IF view.form.results.invalid %]

Invalid: [% invalid_names = [] %] [% FOREACH field IN view.form.fields %] [% IF view.form.results.invalid( "${field.name}" ) %] [% invalid_names.push( field.label ) %] [% END %] [% END %] [% invalid_names.join( ', ' ) %]

[% END %] [% END %]