diff --git a/ProcessMaker/Traits/HasScreenFields.php b/ProcessMaker/Traits/HasScreenFields.php index 3262f756bc..7451339729 100644 --- a/ProcessMaker/Traits/HasScreenFields.php +++ b/ProcessMaker/Traits/HasScreenFields.php @@ -1,20 +1,16 @@ parsedFields)) { @@ -35,7 +31,6 @@ public function getFieldsAttribute() ]); } } - return $this->parsedFields->unique('field'); } @@ -47,15 +42,25 @@ public function parseNestedScreen($node) } } + public function parseCollectionRecordControl($node) + { + $collection = Screen::find($node['config']['collection']['screen']); + foreach ($collection->fields as $field) { + $this->parsedFields->push($field); + } + } + public function walkArray($array, $key = null) { if (!is_array($array)) { $array = json_decode($array); } - foreach ($array as $subkey => $value) { + if (isset($value['component']) && $value['component'] === 'FormNestedScreen') { $this->parseNestedScreen($value); + } elseif (isset($value['component']) && $value['component'] === 'FormCollectionRecordControl') { + $this->parseCollectionRecordControl($value); } elseif ($key !== 'inspector' && is_array($value) && isset($value['config']['name'])) { $this->parseItem($value); } @@ -97,11 +102,9 @@ public function parseItemLabel($item) public function parseItemFormat($item) { $format = 'string'; - if (isset($item['config']['dataFormat'])) { $format = $item['config']['dataFormat']; } - if (isset($item['component'])) { switch ($item['component']) { case 'FileUpload': @@ -128,7 +131,6 @@ public function parseItemFormat($item) break; } } - return $format; } @@ -151,6 +153,7 @@ public function parseIsSubmitButton($item) * * @return array */ + public function screenFilteredFields() { return $this->fields->pluck('field');