From 3264dfe63d80d81df7ae646e5039511731f4d591 Mon Sep 17 00:00:00 2001 From: martinyde Date: Wed, 22 Apr 2026 08:53:42 +0200 Subject: [PATCH 1/5] Updated advisory display --- src/Admin/Field/AffectedSitesField.php | 22 +++++++++++++ .../Admin/AdvisoryCrudController.php | 2 ++ src/Entity/Advisory.php | 19 +++++++++++ .../Fields/affected_sites.html.twig | 33 +++++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 src/Admin/Field/AffectedSitesField.php create mode 100644 templates/EasyAdminBundle/Fields/affected_sites.html.twig diff --git a/src/Admin/Field/AffectedSitesField.php b/src/Admin/Field/AffectedSitesField.php new file mode 100644 index 0000000..058b5b6 --- /dev/null +++ b/src/Admin/Field/AffectedSitesField.php @@ -0,0 +1,22 @@ +setProperty($propertyName) + ->setLabel($label) + ->setTemplatePath('EasyAdminBundle/Fields/affected_sites.html.twig'); + } +} diff --git a/src/Controller/Admin/AdvisoryCrudController.php b/src/Controller/Admin/AdvisoryCrudController.php index 8e89d9b..50c18ec 100644 --- a/src/Controller/Admin/AdvisoryCrudController.php +++ b/src/Controller/Admin/AdvisoryCrudController.php @@ -4,6 +4,7 @@ namespace App\Controller\Admin; +use App\Admin\Field\AffectedSitesField; use App\Admin\Field\SourcesField; use App\Admin\Field\TextMonospaceField; use App\Entity\Advisory; @@ -58,6 +59,7 @@ public function configureFields(string $pageName): iterable yield DateField::new('reportedAt')->setColumns(6)->onlyOnIndex(); yield DateTimeField::new('reportedAt')->setColumns(6)->onlyOnDetail(); yield SourcesField::new('sourceLinks')->setColumns(6)->onlyOnDetail(); + yield AffectedSitesField::new('sites')->setLabel('Affected Sites'); } #[\Override] diff --git a/src/Entity/Advisory.php b/src/Entity/Advisory.php index 160a914..d7a8b58 100644 --- a/src/Entity/Advisory.php +++ b/src/Entity/Advisory.php @@ -190,6 +190,25 @@ public function removePackageVersion(PackageVersion $packageVersion): self return $this; } + /** + * @return Collection + */ + public function getSites(): Collection + { + $sites = new ArrayCollection(); + foreach ($this->packageVersions as $packageVersion) { + foreach ($packageVersion->getInstallations() as $installation) { + foreach ($installation->getSites() as $site) { + if (!$sites->contains($site)) { + $sites->add($site); + } + } + } + } + + return $sites; + } + public function getPackage(): ?Package { return $this->package; diff --git a/templates/EasyAdminBundle/Fields/affected_sites.html.twig b/templates/EasyAdminBundle/Fields/affected_sites.html.twig new file mode 100644 index 0000000..a2eb5e3 --- /dev/null +++ b/templates/EasyAdminBundle/Fields/affected_sites.html.twig @@ -0,0 +1,33 @@ +{# @var ea \EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext #} +{# @var field \EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto #} +{# @var entity \EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto #} +{% set sites = entity.instance.sites %} +{% if ea().crud.currentAction == 'detail' %} + {% if sites|length > 0 %} + + + + + + + + + {% for site in sites %} + {% set url = ea_url() + .unsetAll() + .setController('App\\Controller\\Admin\\SiteCrudController') + .setAction('detail') + .setEntityId(site.id) %} + + + + + {% endfor %} + +
DomainServer
{{ site.primaryDomain }}{{ site.server }}
+ {% else %} + None + {% endif %} +{% else %} + {{ sites|length }} +{% endif %} From 56734761f0351dfb67448981de134742c3f89e4e Mon Sep 17 00:00:00 2001 From: martinyde Date: Wed, 22 Apr 2026 08:54:16 +0200 Subject: [PATCH 2/5] Updated advisory display --- .claude/settings.local.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .claude/settings.local.json diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..f00791f --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,5 @@ +{ + "enabledMcpjsonServers": [ + "context7" + ] +} From e9d79dcff2b96f4014d008823b3d7a0568f76f5d Mon Sep 17 00:00:00 2001 From: martinyde Date: Wed, 22 Apr 2026 08:57:05 +0200 Subject: [PATCH 3/5] Removed added file --- .claude/settings.local.json | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .claude/settings.local.json diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index f00791f..0000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "enabledMcpjsonServers": [ - "context7" - ] -} From 68dbbe300164c97860926b89a2474fa912fedc5c Mon Sep 17 00:00:00 2001 From: martinyde Date: Wed, 22 Apr 2026 09:02:14 +0200 Subject: [PATCH 4/5] Updated changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bc70a0..8c0fd78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#68](https://github.com/itk-dev/devops_itksites/pull/68) 6667: Update advisories on Detailed site display +- [#68](https://github.com/itk-dev/devops_itksites/pull/68) + 6667: Show sites affected on advisories. + ## [1.9.2] - 2026-04-07 - [#67](https://github.com/itk-dev/devops_itksites/pull/67) From 167d9d08831ea244c6d0aa993e643f111b841bbd Mon Sep 17 00:00:00 2001 From: martinyde Date: Wed, 22 Apr 2026 09:10:24 +0200 Subject: [PATCH 5/5] Applied code styles --- src/Entity/Advisory.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Entity/Advisory.php b/src/Entity/Advisory.php index d7a8b58..586f15e 100644 --- a/src/Entity/Advisory.php +++ b/src/Entity/Advisory.php @@ -195,18 +195,16 @@ public function removePackageVersion(PackageVersion $packageVersion): self */ public function getSites(): Collection { - $sites = new ArrayCollection(); + $sites = []; foreach ($this->packageVersions as $packageVersion) { foreach ($packageVersion->getInstallations() as $installation) { foreach ($installation->getSites() as $site) { - if (!$sites->contains($site)) { - $sites->add($site); - } + $sites[$site->getId()->toRfc4122()] = $site; } } } - return $sites; + return new ArrayCollection(array_values($sites)); } public function getPackage(): ?Package