diff --git a/app/components/field-edit.vue b/app/components/field-edit.vue index 8c53c5c..e0c2e65 100644 --- a/app/components/field-edit.vue +++ b/app/components/field-edit.vue @@ -33,7 +33,7 @@
- +
diff --git a/app/components/field-options.vue b/app/components/field-options.vue index de416e8..c279733 100644 --- a/app/components/field-options.vue +++ b/app/components/field-options.vue @@ -6,7 +6,12 @@ {{ 'Manage options' | trans }}
-
@@ -31,19 +31,40 @@ {{ 'No email field is selected for user confirmation mail.' | trans }}
- +
+ +
+
+ +
+ + +
- -

{{ 'Please enter valid email address' | trans }}

+ v-model="formitem.data.submitEmail" v-validate:email v-validate:required="!!formitem.data.user_email_field && !formitem.data.submitEmailMultiple"> + +

{{ 'Please enter valid email address' | trans }}

-

- {{ 'No email will be sent to the user when no address is entered here!' | trans }}

-
-
+

+ {{ 'No email will be sent to the user when no address is entered here!' | trans }}

+ + +
+ + + +

+ {{ 'No email will be sent to the user when no email receiver field is selected here!' | trans }}

+
+
@@ -81,6 +102,20 @@ props: ['formitem', 'formfields', 'form'], + computed: { + userEmailFields () { + return this.formfields.filter((field) => { + return field.type === 'email' + }) + }, + + submitEmailFields () { + return this.formfields.filter((field) => { + return field.type === 'emailpulldown' + }) + } + }, + components: { formfieldslist: require('./form-fieldslist.vue') } diff --git a/app/views/admin/edit.js b/app/views/admin/edit.js index d1d9cd8..cad212d 100644 --- a/app/views/admin/edit.js +++ b/app/views/admin/edit.js @@ -10,6 +10,8 @@ module.exports = { classSfx: '', user_email_field: false, submitEmail: window.$data.config.from_address, + submitEmailMultiple: false, + submitEmailField: '', email_subject: this.$trans('Thank you for your submission'), thankyou_markdown: true, email_body_markdown: true, diff --git a/src/Model/Field.php b/src/Model/Field.php index 9739c75..4dcf24b 100644 --- a/src/Model/Field.php +++ b/src/Model/Field.php @@ -50,6 +50,14 @@ class Field extends FieldBase implements \JsonSerializable { public function jsonSerialize () { $field = $this->toArray([], ['fieldValue', 'fieldType']); $field['options'] = $this->getOptions(); + if (is_array($field['options']) && !App::user()->isAdministrator()) { + $fieldOptions = []; + foreach ($field['options'] as $fieldOption) { + unset($fieldOption['email']); + $fieldOptions[] = $fieldOption; + } + $field['options'] = $fieldOptions; + } return $field; } diff --git a/src/Model/Submission.php b/src/Model/Submission.php index 92f070a..c5700f8 100644 --- a/src/Model/Submission.php +++ b/src/Model/Submission.php @@ -103,6 +103,25 @@ public function getUserEmail () { return ''; } + public function getAdminEmail () { + $this->getFieldsubmissions(); + if ($this->form->get('submitEmailMultiple')) { + $submitEmailSubmission = $this->fieldsubmissions[$this->form->get('submitEmailField')]; + if (isset($submitEmailSubmission) + and $selectionValue = count($submitEmailSubmission['value']) ? $submitEmailSubmission['value'][0] : '' + and $submitEmailField = Field::find($submitEmailSubmission['field']['id'])) { + foreach ($submitEmailField->getOptions() as $submitEmailOption) { + if ($submitEmailOption['value'] == $selectionValue) { + return $submitEmailOption['email']; + } + } + } + } else { + return $this->form->get('submitEmail'); + } + return ''; + } + public function getFieldsubmissions () { if (!isset($this->fieldsubmissions)) { $fields = $this->form->getFields(); diff --git a/src/Submission/Fieldsubmission.php b/src/Submission/Fieldsubmission.php index 1455202..2e6a31c 100644 --- a/src/Submission/Fieldsubmission.php +++ b/src/Submission/Fieldsubmission.php @@ -27,6 +27,15 @@ public function __construct (Field $field, $value, $data) { public function toFormattedArray (array $data = [], array $ignore = []) { $data['field_id'] = $this->field_id; + $data = parent::toFormattedArray($data, $ignore); + if (isset($data['field']['options']) && is_array($data['field']['options']) && !App::user()->isAdministrator()) { + $fieldOptions = []; + foreach ($data['field']['options'] as $fieldOption) { + unset($fieldOption['email']); + $fieldOptions[] = $fieldOption; + } + $data['field']['options'] = $fieldOptions; + } return parent::toFormattedArray($data, $ignore); } diff --git a/src/Submission/MailHelper.php b/src/Submission/MailHelper.php index 26e7189..4e2710c 100644 --- a/src/Submission/MailHelper.php +++ b/src/Submission/MailHelper.php @@ -26,7 +26,7 @@ public function __construct (Submission $submission) { * @return MailHelper */ public function sendMail () { - if (!$adminMail = $this->submission->form->get('submitEmail')) { + if (!$adminMail = $this->submission->getAdminEmail()) { return $this; } $user_email = $this->submission->email ? : false;