public function actionEditForm(array $variables = array())
{
// Do we have a form model?
if (!isset($variables['form'])) {
// Get form if available
if (!empty($variables['formId'])) {
$variables['form'] = craft()->amForms_forms->getFormById($variables['formId']);
if (!$variables['form']) {
throw new Exception(Craft::t('No form exists with the ID “{id}”.', array('id' => $variables['formId'])));
}
} else {
$variables['form'] = new AmForms_FormModel();
}
}
// Fields per set setting
$fieldsPerSet = craft()->amForms_settings->getSettingsByHandleAndType('fieldsPerSet', AmFormsModel::SettingGeneral);
$fieldsPerSet = $fieldsPerSet && is_numeric($fieldsPerSet->value) ? (int) $fieldsPerSet->value : 8;
// Get available fields with our context
$groupId = 1;
$counter = 1;
$variables['groups'] = array();
$fields = craft()->fields->getAllFields('id', AmFormsModel::FieldContext);
foreach ($fields as $field) {
if ($counter % $fieldsPerSet == 1) {
$groupId++;
$counter = 1;
}
$variables['groups'][$groupId]['fields'][] = $field;
$counter++;
}
// Get redirectEntryId elementType
$variables['entryElementType'] = craft()->elements->getElementType(ElementType::Entry);
// Get available attributes
$variables['availableAttributes'] = array();
$submission = new AmForms_SubmissionModel();
$ignoreAttributes = array('slug', 'uri', 'root', 'lft', 'rgt', 'level', 'searchScore', 'localeEnabled', 'archived', 'spamFree');
foreach ($submission->getAttributes() as $attribute => $value) {
if (!in_array($attribute, $ignoreAttributes)) {
$variables['availableAttributes'][] = $attribute;
}
}
foreach ($fields as $field) {
$variables['availableAttributes'][] = $field['handle'];
}
$this->renderTemplate('amforms/forms/_edit', $variables);
}