diff --git a/src/Controller/LogController.php b/src/Controller/LogController.php index a7938b96..28417d75 100644 --- a/src/Controller/LogController.php +++ b/src/Controller/LogController.php @@ -104,15 +104,19 @@ class LogController extends AbstractController * @return Response */ public function logDetails(Request $request, AbstractLogEntry $logEntry, LogEntryExtraFormatter $logEntryExtraFormatter, - LogLevelHelper $logLevelHelper, LogTargetHelper $logTargetHelper): Response + LogLevelHelper $logLevelHelper, LogTargetHelper $logTargetHelper, EntityManagerInterface $entityManager): Response { $this->denyAccessUnlessGranted('read', $logEntry); $extra_html = $logEntryExtraFormatter->format($logEntry); $target_html = $logTargetHelper->formatTarget($logEntry); + $repo = $entityManager->getRepository(AbstractLogEntry::class); + $target_element = $repo->getTargetElement($logEntry); + return $this->render('log_system/details/log_details.html.twig', [ 'log_entry' => $logEntry, + 'target_element' => $target_element, 'extra_html' => $extra_html, 'target_html' => $target_html, 'log_level_helper' => $logLevelHelper, diff --git a/src/Twig/EntityExtension.php b/src/Twig/EntityExtension.php index 6d477d88..c892c8f1 100644 --- a/src/Twig/EntityExtension.php +++ b/src/Twig/EntityExtension.php @@ -71,6 +71,8 @@ final class EntityExtension extends AbstractExtension new TwigFunction('entity_type', [$this, 'getEntityType']), /* Returns the URL to the given entity */ new TwigFunction('entity_url', [$this, 'generateEntityURL']), + /* Returns the URL to the given entity in timetravel mode */ + new TwigFunction('timetravel_url', [$this->entityURLGenerator, 'timetravelURL']), /* Generates a JSON array of the given tree */ new TwigFunction('tree_data', [$this, 'treeData']), diff --git a/templates/log_system/details/helper.macro.html.twig b/templates/log_system/details/helper.macro.html.twig index 1081cdda..e9d59948 100644 --- a/templates/log_system/details/helper.macro.html.twig +++ b/templates/log_system/details/helper.macro.html.twig @@ -1,3 +1,48 @@ +{% macro undo_buttons(entry, target_element) %} + {# @var entry \App\Entity\LogSystem\ElementEditedLogEntry|\App\Entity\LogSystem\ElementDeletedLogEntry entry #} + {% set disabled = not is_granted('revert_element', entry.targetClass) %} + + {% if entry is instanceof('App\\Entity\\LogSystem\\CollectionElementDeleted') + or (entry is instanceof('App\\Entity\\LogSystem\\ElementDeletedLogEntry') and entry.hasOldDataInformation) %} + + {% set icon = 'fa-trash-restore' %} + {% set title = 'log.undo.undelete'|trans %} + {% set title_short = 'log.undo.undelete.short'|trans %} + + {% elseif entry is instanceof('App\\Entity\\LogSystem\\ElementCreatedLogEntry') + or (entry is instanceof('App\\Entity\\LogSystem\\ElementEditedLogEntry') and entry.hasOldDataInformation) %} + + {% set icon = 'fa-undo' %} + {% set title = 'log.undo.undo'|trans %} + {% set title_short = 'log.undo.undo.short'|trans %} + {% endif %} + +
+{% endmacro %} + {% macro comment_field(entry) %} {# @var entry \App\Entity\Contracts\LogWithComment #} diff --git a/templates/log_system/details/log_details.html.twig b/templates/log_system/details/log_details.html.twig index c2cee6a9..422548a0 100644 --- a/templates/log_system/details/log_details.html.twig +++ b/templates/log_system/details/log_details.html.twig @@ -1,6 +1,7 @@ {% extends "main_card.html.twig" %} {% import "helper.twig" as helper %} +{% import "log_system/details/helper.macro.html.twig" as log_helper %} {% block title %} {% trans %}log.details.title{% endtrans %}: @@ -58,6 +59,22 @@