add email verification flag in the UI and API
authorKurund Jalmi <kurundjalmi@thirdsectordesign.org>
Fri, 11 Aug 2023 12:04:22 +0000 (13:04 +0100)
committerKurund Jalmi <kurundjalmi@thirdsectordesign.org>
Wed, 6 Dec 2023 00:23:33 +0000 (00:23 +0000)
ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js
ext/afform/admin/ang/afGuiEditor/config-form.html
ext/afform/core/Civi/Api4/Afform.php

index 7d33889d374a0d514bc1ef181f84e4c06664b59f..f593defc15d1a03a08d290bea16cdc4a94756914 100644 (file)
         }
       };
 
+      this.toggleEmailVerification = function() {
+        if (editor.afform.require_email_confirmation) {
+          editor.afform.require_email_confirmation = null;
+        } else {
+          editor.afform.create_submission = true;
+        }
+      }
+
       function loadNavigationMenu() {
         if ('navigationMenu' in editor) {
           return;
         var afform = JSON.parse(angular.toJson(editor.afform));
         // This might be set to undefined by validation
         afform.server_route = afform.server_route || '';
+        // create submission is required if email confirmation is selected.
+        if (afform.require_email_confirmation) {
+          afform.create_submission = true;
+        }
         $scope.saving = true;
         crmApi4('Afform', 'save', {formatWhitespace: true, records: [afform]})
           .then(function (data) {
index b439b4c81621c6e6af7f12eaef4b775804ef5336..0d2701e0c595bd62876289afbf35589aa4957b8b 100644 (file)
     </p>
 
     <div ng-if="editor.afform.submit_enabled">
-
       <div class="form-group">
         <label>
-          <input type="checkbox" ng-model="editor.afform.create_submission" >
+          <input type="checkbox" ng-model="editor.afform.create_submission" ng-class="{'disabled': !!editor.afform.require_email_confirmation}">
           {{:: ts('Log Submissions') }}
         </label>
         <p class="help-block">{{:: ts('Keep a log of the date, time, user, and items saved by each form submission.') }}</p>
         <input type="number" min="1" step="1" id="submit_limit" ng-model="editor.afform.submit_limit" placeholder="{{:: ts('Unlimited') }}">
       </div>
 
+      <div class="form-group" >
+        <label>
+          <input type="checkbox" ng-model="editor.afform.require_email_confirmation" ng-click="editor.toggleEmailVerification()">
+          {{:: ts('Verify email before processing') }}
+        </label>
+        <p class="help-block">{{:: ts('The data will be processed and stored in CiviCRM only after email verfication. Email field is required if you enable this setting.') }}</p>
+      </div>
+
       <div class="form-group" ng-class="{'has-error': !!config_form.redirect.$error.pattern}">
         <label for="af_config_redirect">
           {{:: ts('Post-Submit Page') }}
index cac1f9f799374c5290fe8f82922979c01ecc76c7..667809eb38421a761d841ee2aea1701399d30171 100644 (file)
@@ -231,6 +231,10 @@ class Afform extends Generic\AbstractEntity {
           'title' => E::ts('Log Submissions'),
           'data_type' => 'Boolean',
         ],
+        [
+          'name' => 'require_email_confirmation',
+          'data_type' => 'Boolean',
+        ],
         [
           'name' => 'navigation',
           'title' => E::ts('Navigation Menu'),