diff --git a/assets/css/app.css b/assets/css/app.css index 76de5786..8021b679 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -689,6 +689,9 @@ table.dataTable { .attach-table-icon:hover { color: var(--gray-dark); } +.badge-table { + margin-right: 0.2em; +} /********************************* Workarounds diff --git a/src/DataTables/Column/PartAttachmentsColumn.php b/src/DataTables/Column/PartAttachmentsColumn.php index 3b0a867d..d7ccddd3 100644 --- a/src/DataTables/Column/PartAttachmentsColumn.php +++ b/src/DataTables/Column/PartAttachmentsColumn.php @@ -68,14 +68,14 @@ class PartAttachmentsColumn extends AbstractColumn $count = 5; foreach ($attachments as $attachment) { //Only show the first 5 attachments - if (--$count <= 0) { - continue; + if (--$count < 0) { + break; } /** @var Attachment $attachment */ $tmp .= sprintf( '%s', $this->urlGenerator->getViewURL($attachment), - $attachment->getName() . ': ' . $attachment->getFilename(), + htmlspecialchars($attachment->getName()) . ': ' . htmlspecialchars($attachment->getFilename()), $this->FAIconGenerator->generateIconHTML( $this->FAIconGenerator->fileExtensionToFAType($attachment->getExtension()), 'fas', diff --git a/src/DataTables/Column/TagsColumn.php b/src/DataTables/Column/TagsColumn.php new file mode 100644 index 00000000..733ef100 --- /dev/null +++ b/src/DataTables/Column/TagsColumn.php @@ -0,0 +1,70 @@ +urlGenerator = $urlGenerator; + } + + /** + * The normalize function is responsible for converting parsed and processed data to a datatables-appropriate type. + * + * @param mixed $value The single value of the column + * @return mixed + */ + public function normalize($value) + { + if (empty($value)) { + return []; + } + return explode(',', $value); + } + + public function render($tags, $context) + { + $html = ''; + $count = 10; + foreach ($tags as $tag) { + //Only show max 10 tags + if (--$count < 0) { + break; + } + $html .= sprintf( + '%s', + $this->urlGenerator->generate('part_list_tags', ['tag' => $tag]), + htmlspecialchars($tag) + ); + } + + return $html; + } +} \ No newline at end of file diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php index 21c0cb57..a8a1c368 100644 --- a/src/DataTables/PartsDataTable.php +++ b/src/DataTables/PartsDataTable.php @@ -24,6 +24,7 @@ namespace App\DataTables; use App\DataTables\Column\EntityColumn; use App\DataTables\Column\LocaleDateTimeColumn; use App\DataTables\Column\PartAttachmentsColumn; +use App\DataTables\Column\TagsColumn; use App\Entity\Attachments\Attachment; use App\Entity\Parts\Category; use App\Entity\Parts\Footprint; @@ -273,7 +274,7 @@ class PartsDataTable implements DataTableTypeInterface 'label' => $this->translator->trans('part.table.mass'), 'visible' => false, ]) - ->add('tags', TextColumn::class, [ + ->add('tags', TagsColumn::class, [ 'label' => $this->translator->trans('part.table.tags'), 'visible' => false, ])