public function actionSaveForm()
{
$this->requirePostRequest();
// Get form if available
$formId = craft()->request->getPost('formId');
if ($formId && $formId !== 'copy') {
$form = craft()->amForms_forms->getFormById($formId);
if (!$form) {
throw new Exception(Craft::t('No form exists with the ID “{id}”.', array('id' => $formId)));
}
} else {
$form = new AmForms_FormModel();
}
// Field layout
$fieldLayout = craft()->fields->assembleLayoutFromPost();
$fieldLayout->type = AmFormsModel::ElementTypeForm;
$form->setFieldLayout($fieldLayout);
// Get redirectEntryId
$redirectEntryId = craft()->request->getPost('redirectEntryId');
// Form attributes
$form->redirectEntryId = $redirectEntryId && is_array($redirectEntryId) && count($redirectEntryId) ? $redirectEntryId[0] : null;
$form->name = craft()->request->getPost('name');
$form->handle = craft()->request->getPost('handle');
$form->titleFormat = craft()->request->getPost('titleFormat');
$form->submitAction = craft()->request->getPost('submitAction');
$form->submitButton = craft()->request->getPost('submitButton');
$form->afterSubmit = craft()->request->getPost('afterSubmit');
$form->afterSubmitText = craft()->request->getPost('afterSubmitText');
$form->submissionEnabled = craft()->request->getPost('submissionEnabled');
$form->displayTabTitles = craft()->request->getPost('displayTabTitles');
$form->redirectUrl = craft()->request->getPost('redirectUrl');
$form->sendCopy = craft()->request->getPost('sendCopy');
$form->sendCopyTo = craft()->request->getPost('sendCopyTo');
$form->notificationEnabled = craft()->request->getPost('notificationEnabled');
$form->notificationFilesEnabled = craft()->request->getPost('notificationFilesEnabled');
$form->notificationRecipients = craft()->request->getPost('notificationRecipients');
$form->notificationSubject = craft()->request->getPost('notificationSubject');
$form->confirmationSubject = craft()->request->getPost('confirmationSubject');
$form->notificationSenderName = craft()->request->getPost('notificationSenderName');
$form->confirmationSenderName = craft()->request->getPost('confirmationSenderName');
$form->notificationSenderEmail = craft()->request->getPost('notificationSenderEmail');
$form->confirmationSenderEmail = craft()->request->getPost('confirmationSenderEmail');
$form->notificationReplyToEmail = craft()->request->getPost('notificationReplyToEmail');
$form->formTemplate = craft()->request->getPost('formTemplate', $form->formTemplate);
$form->tabTemplate = craft()->request->getPost('tabTemplate', $form->tabTemplate);
$form->fieldTemplate = craft()->request->getPost('fieldTemplate', $form->fieldTemplate);
$form->notificationTemplate = craft()->request->getPost('notificationTemplate', $form->notificationTemplate);
$form->confirmationTemplate = craft()->request->getPost('confirmationTemplate', $form->confirmationTemplate);
// Duplicate form, so the name and handle are taken
if ($formId && $formId === 'copy') {
craft()->amForms_forms->getUniqueNameAndHandle($form);
}
// Save form
if (craft()->amForms_forms->saveForm($form)) {
craft()->userSession->setNotice(Craft::t('Form saved.'));
$this->redirectToPostedUrl($form);
} else {
craft()->userSession->setError(Craft::t('Couldn’t save form.'));
// Send the form back to the template
craft()->urlManager->setRouteVariables(array('form' => $form));
}
}