The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
[% MACRO form_add_column_input(do_action, column, column_moniker)  BLOCK; %]
        <label>

        [% form_field_item(column, column_moniker, ['list'], 'input_field') %]
        [% element = c.view("TT").element_req(c, do_action, column); %]
        [% element.as_HTML('<>&"\'') %]

        [% IF c.form.missing(column); %]
            <span class="error_text">[% c.form.msgs.$column || 'Missing'; %]</span>
        [% ELSIF c.form.invalid(column); %]
            <span class="error_text">[% c.form.msgs.$column || 'Invalid'; %]</span>
        [% END; %]
	    </label>

[% END; %]



[% MACRO form_edit_column_input(do_action, column, column_moniker)  BLOCK; %]
        <label>

        [% form_field_item(column, column_moniker, ['list'], 'input_field') %]

        [%
        IF c.action.name == do_action;       #invalid, redisplay req            
            element = c.view("TT").element_req(c, do_action, column);
        ELSE;                                #display item
            element = item.to_field(column);
        END;
        %]
        [% element.as_HTML('<>&"\'') %]

        [% IF c.form.missing(column); %]
            <span class="error_text">[% c.form.msgs.$column || 'Missing'; %]</span>
        [% ELSIF c.form.invalid(column); %]
            <span class="error_text">[% c.form.msgs.$column || 'Invalid'; %]</span>
        [% END; %]
        </label>

[% END; %]



[% MACRO form_field_item(column, column_moniker, link_params, span_class)  BLOCK; %]
        [% namespace = crud.model.namespace_of_column_has_a(c, column); %]
        [% IF span_class %]<span class="[% span_class %]">[% END %]
            [% IF namespace; %]
                <a href="[% c.uri_for(namespace, link_params.0, link_params.1) %]">[% column_moniker | html %]</a>
            [% ELSE; %]
                [% column_moniker | html %]
            [% END %]
        [% IF span_class %]</span>[% END %]
[% END; %]