Mar 26th, 2015, 11:06 AM
(This post was last modified: Mar 27th, 2015, 10:35 AM by john-m-adams.)
Ok, I believe I have come up with a solution. By the way, my custom template set began as a clone of Default Template Set.
Poking around with {{php}} tags, I found {{$view_info}}. {{$view_info.fields}} is an array of every field in the View, whether on the current tab or not.
The field has to be in a group to be in the field list. It also has to be "editable" for the {{edit_custom_field}} call to put it on the page.
So I created a "Universal Hidden Fields" group, and a placeholder for the group ID. I would have preferred group name, but {{$view_info}} doesn't have a full list of the View's groups, only the groups for the current tab.
Note that the only field in my group is a custom field, type="hidden", and this code does not display the group name. If you want a repeating group that is visible on the page, or want to hide repeating core fields, modify accordingly.
I placed this inside the opening <form> tag, just after the {{$published_form_id}} hidden input.
By the original Smarty code of the Page Template from the Default Template Set, the hidden field group would display on whichever tab it was placed. To prevent this, you need to exclude the group ID. Note, I had already restructured this, so that there was only a single {{if $fields|@count}}, with the {{foreach from=$fields item=curr_field}} inside.
EDIT:
I did miss something. {{$view_info.fields}} does not contain submission values... so in my Custom Field Display Edit code, {{$VALUE}} was empty. With some more prodding, this PHP worked.
I'm not sure how safe it is to call a core function from a Smarty {{php}} tag, so if anyone knows a better way, please let me know.
Hope this helps someone in the future.
Thanks for Form Tools.
Poking around with {{php}} tags, I found {{$view_info}}. {{$view_info.fields}} is an array of every field in the View, whether on the current tab or not.
The field has to be in a group to be in the field list. It also has to be "editable" for the {{edit_custom_field}} call to put it on the page.
So I created a "Universal Hidden Fields" group, and a placeholder for the group ID. I would have preferred group name, but {{$view_info}} doesn't have a full list of the View's groups, only the groups for the current tab.
Note that the only field in my group is a custom field, type="hidden", and this code does not display the group name. If you want a repeating group that is visible on the page, or want to hide repeating core fields, modify accordingly.
I placed this inside the opening <form> tag, just after the {{$published_form_id}} hidden input.
Code:
{{foreach from=$view_info.fields item=curr_field}}
{{if $curr_field.group_id == $P.universal_field_group}}
{{edit_custom_field form_id=$form_id field_info=$curr_field field_types=$field_types
settings=$settings submission_id=$submission_id}}
{{/if}}
{{/foreach}}
By the original Smarty code of the Page Template from the Default Template Set, the hidden field group would display on whichever tab it was placed. To prevent this, you need to exclude the group ID. Note, I had already restructured this, so that there was only a single {{if $fields|@count}}, with the {{foreach from=$fields item=curr_field}} inside.
Code:
{{foreach from=$grouped_fields key=k item=curr_group name=row}}
{{assign var=group value=$curr_group.group}}
{{assign var=fields value=$curr_group.fields}}
{{if $fields|@count > 0 && $group.group_id != $P.universal_field_group}}
{* Display Start of Group Here *}
{{foreach from=$fields item=curr_field}}
{* Display Field Here *}
{{/foreach}}
{* Display End of Group Here *}
{{/if}}
{{/foreach}}
EDIT:
I did miss something. {{$view_info.fields}} does not contain submission values... so in my Custom Field Display Edit code, {{$VALUE}} was empty. With some more prodding, this PHP worked.
PHP Code:
$form_id = $this->get_template_vars("FORM_ID");
$submission_id = $this->get_template_vars("SUBMISSION_ID");
$field_name = $this->get_template_vars("NAME");
$submission_info = ft_get_submission_info($form_id,$submission_id);
$value = $submission_info[$field_name];
...
I'm not sure how safe it is to call a core function from a Smarty {{php}} tag, so if anyone knows a better way, please let me know.
Hope this helps someone in the future.
Thanks for Form Tools.