diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php index dda3829c..67329bab 100644 --- a/src/DataTables/PartsDataTable.php +++ b/src/DataTables/PartsDataTable.php @@ -44,10 +44,12 @@ namespace App\DataTables; use App\DataTables\Adapter\FetchJoinORMAdapter; use App\DataTables\Column\EntityColumn; +use App\DataTables\Column\IconLinkColumn; use App\DataTables\Column\LocaleDateTimeColumn; use App\DataTables\Column\MarkdownColumn; use App\DataTables\Column\PartAttachmentsColumn; use App\DataTables\Column\TagsColumn; +use App\Entity\LogSystem\AbstractLogEntry; use App\Entity\Parts\Category; use App\Entity\Parts\Footprint; use App\Entity\Parts\Manufacturer; @@ -67,6 +69,7 @@ use Omines\DataTablesBundle\Column\TextColumn; use Omines\DataTablesBundle\DataTable; use Omines\DataTablesBundle\DataTableTypeInterface; use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Component\Security\Core\Security; use Symfony\Contracts\Translation\TranslatorInterface; final class PartsDataTable implements DataTableTypeInterface @@ -76,6 +79,8 @@ final class PartsDataTable implements DataTableTypeInterface private $amountFormatter; private $previewGenerator; private $attachmentURLGenerator; + private $security; + /** * @var EntityURLGenerator */ @@ -83,7 +88,7 @@ final class PartsDataTable implements DataTableTypeInterface public function __construct(EntityURLGenerator $urlGenerator, TranslatorInterface $translator, NodesListBuilder $treeBuilder, AmountFormatter $amountFormatter, - PartPreviewGenerator $previewGenerator, AttachmentURLGenerator $attachmentURLGenerator) + PartPreviewGenerator $previewGenerator, AttachmentURLGenerator $attachmentURLGenerator, Security $security) { $this->urlGenerator = $urlGenerator; $this->translator = $translator; @@ -91,6 +96,7 @@ final class PartsDataTable implements DataTableTypeInterface $this->amountFormatter = $amountFormatter; $this->previewGenerator = $previewGenerator; $this->attachmentURLGenerator = $attachmentURLGenerator; + $this->security = $security; } public function configureOptions(OptionsResolver $optionsResolver): void @@ -283,6 +289,17 @@ final class PartsDataTable implements DataTableTypeInterface 'label' => $this->translator->trans('part.table.attachments'), 'visible' => false, ]) + ->add('edit', IconLinkColumn::class, [ + 'label' => $this->translator->trans('part.table.edit'), + 'visible' => false, + 'href' => function ($value, Part $context) { + return $this->urlGenerator->editURL($context); + }, + 'disabled' => function ($value, Part $context) { + return !$this->security->isGranted('edit', $context); + }, + 'title' => $this->translator->trans('part.table.edit.title'), + ]) ->addOrderBy('name') ->createAdapter(FetchJoinORMAdapter::class, [ diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index c06da569..51235b37 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -9099,5 +9099,17 @@ Element 3 Users still uses this group! Change their group, to be able to delete this group. + + + part.table.edit + Edit + + + + + part.table.edit.title + Edit part + +