diff --git a/libraries/default/InboxProcessors/templates/Notification/DataChange.php b/libraries/default/InboxProcessors/templates/Notification/DataChange.php index eb5679a..66746c3 100644 --- a/libraries/default/InboxProcessors/templates/Notification/DataChange.php +++ b/libraries/default/InboxProcessors/templates/Notification/DataChange.php @@ -28,29 +28,93 @@ $form = $this->element('genericElements/Form/genericForm', [ ] ]); +$properties = array_unique(array_merge(array_keys($data['original']), array_keys($data['changed']))); +$tableData = []; +foreach ($properties as $i => $property) { + $tableData[] = [ + $property, + $data['original'][$property] ?? '', + $data['changed'][$property] ?? '', + ]; +} + +$diffTable = $this->Bootstrap->table( + [ + 'hover' => false, + 'striped' => false, + 'bordered' => false, + ], + [ + 'items' => $tableData, + 'fields' => [ + [ + 'label' => __('Property name'), + 'formatter' => function ($field, $row) { + return $this->Bootstrap->node('pre', [], h($field)); + } + ], + [ + 'label' => __('New value'), + 'formatter' => function ($field, $row) { + return $this->Bootstrap->alert([ + 'text' => $field, + 'variant' => 'success', + 'dismissible' => false, + 'class' => ['p-2', 'mb-0'], + ]); + } + ], + [ + 'label' => __('Old value'), + 'formatter' => function ($field, $row) { + return $this->Bootstrap->alert([ + 'text' => $field, + 'variant' => 'danger', + 'dismissible' => false, + 'class' => ['p-2', 'mb-0'], + ]); + } + ], + ], + ] +); + + +$cards = sprintf( + '
+
+
%s
+
%s
+
+
', + $this->Bootstrap->card([ + 'headerText' => __('Original values'), + 'bodyHTML' => $this->element('genericElements/SingleViews/Fields/jsonField', ['field' => ['raw' => $data['original']]]) + ]), + $this->Bootstrap->card([ + 'headerText' => __('Changed values'), + 'bodyHTML' => $this->element('genericElements/SingleViews/Fields/jsonField', ['field' => ['raw' => $data['changed']]]) + ]) +); + +$collapse = $this->Bootstrap->collapse([ + 'button' => [ + 'text' => __('Show raw changes'), + 'variant' => 'link', + ], + 'card' => false +], $cards); + echo $this->Bootstrap->modal([ 'title' => __('Acknowledge notification'), 'size' => 'xl', 'type' => 'confirm', 'bodyHtml' => sprintf( - '
%s
-
-
-

%s

-
%s
-
%s
-
-
', + '
%s

%s

%s%s', $form, $changedSummary, - $this->Bootstrap->card([ - 'headerText' => __('Original values'), - 'bodyHTML' => $this->element('genericElements/SingleViews/Fields/jsonField', ['field' => ['raw' => $data['original']]]) - ]), - $this->Bootstrap->card([ - 'headerText' => __('Changed values'), - 'bodyHTML' => $this->element('genericElements/SingleViews/Fields/jsonField', ['field' => ['raw' => $data['changed']]]) - ]) + $diffTable, + $collapse ), 'confirmButton' => [ 'text' => __('Acknowledge & Discard'),