Skip to content

Commit

Permalink
Hotfix: Applied patch to handle nested elements in webform inherit
Browse files Browse the repository at this point in the history
  • Loading branch information
jekuaitk committed Oct 30, 2023
1 parent 7570b2c commit 23baff3
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
3 changes: 3 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,9 @@
},
"drupal/maestro": {
"Disallow empty queueToken": "patches/drupal/maestro/maestro_token.patch"
},
"os2forms/os2forms": {
"Handle nested elements in webform inherit": "patches/drupal/os2forms/handle_nested_elements_in_webform_inherit.patch"
}
},
"patches-ignore": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
diff --git a/modules/os2forms_forloeb/src/Plugin/EngineTasks/MaestroWebformInheritTask.php b/modules/os2forms_forloeb/src/Plugin/EngineTasks/MaestroWebformInheritTask.php
index b04137c..8bd0040 100644
--- a/modules/os2forms_forloeb/src/Plugin/EngineTasks/MaestroWebformInheritTask.php
+++ b/modules/os2forms_forloeb/src/Plugin/EngineTasks/MaestroWebformInheritTask.php
@@ -2,9 +2,11 @@

namespace Drupal\os2forms_forloeb\Plugin\EngineTasks;

+use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Form\FormStateInterface;
use Drupal\maestro\Engine\MaestroEngine;
use Drupal\maestro_webform\Plugin\EngineTasks\MaestroWebformTask;
+use Drupal\webform\Entity\Webform;
use Drupal\webform\Entity\WebformSubmission;
use Drupal\webform\Utility\WebformArrayHelper;

@@ -152,9 +154,18 @@ public static function webformSubmissionFormAlter(array &$form, FormStateInterfa
if ('webform_submission' === ($entityIdentifier['entity_type'] ?? NULL)) {
$submission = WebformSubmission::load($entityIdentifier['entity_id']);
$data = $submission->getData();
- foreach ($data as $key => $value) {
- if (isset($form['elements'][$key])) {
- $form['elements'][$key]['#default_value'] = $value;
+
+ // The target element may be hidden inside sections or field groups
+ // on the target form. Therefore, we need to load that form and get
+ // element information to properly set default element values nested
+ // inside the form.
+ if ($targetWebform = Webform::load($form['#webform_id'] ?? NULL)) {
+ foreach ($data as $key => $value) {
+ if ($targetElement = $targetWebform->getElement($key)) {
+ if ($element = &NestedArray::getValue($form['elements'], $targetElement['#webform_parents'])) {
+ $element['#default_value'] = $value;
+ }
+ }
}
}
}

0 comments on commit 23baff3

Please sign in to comment.