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
+
+