diff --git a/assets/ts_src/event_listeners.ts b/assets/ts_src/event_listeners.ts index 82f6e203..1a4f203a 100644 --- a/assets/ts_src/event_listeners.ts +++ b/assets/ts_src/event_listeners.ts @@ -23,6 +23,7 @@ import {ajaxUI} from "./ajax_ui"; import "bootbox"; import "marked"; import * as marked from "marked"; +import {parse} from "marked"; /************************************ * @@ -438,6 +439,7 @@ $(document).on("ajaxUI:start", function () { parseMarkdown(); $(document).on("ajaxUI:reload", parseMarkdown); + $(document).on("ajaxUI:dt_loaded", parseMarkdown); }); $(document).on("ajaxUI:start ajaxUI:reload attachment:create", function() { diff --git a/src/DataTables/Column/MarkdownColumn.php b/src/DataTables/Column/MarkdownColumn.php new file mode 100644 index 00000000..7ea0b2fd --- /dev/null +++ b/src/DataTables/Column/MarkdownColumn.php @@ -0,0 +1,47 @@ +markdown = $markdown; + } + + /** + * 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) + { + return $this->markdown->markForRendering($value, true); + } +} \ No newline at end of file diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php index a8a1c368..aa1c507d 100644 --- a/src/DataTables/PartsDataTable.php +++ b/src/DataTables/PartsDataTable.php @@ -23,6 +23,7 @@ namespace App\DataTables; use App\DataTables\Column\EntityColumn; use App\DataTables\Column\LocaleDateTimeColumn; +use App\DataTables\Column\MarkdownColumn; use App\DataTables\Column\PartAttachmentsColumn; use App\DataTables\Column\TagsColumn; use App\Entity\Attachments\Attachment; @@ -37,6 +38,7 @@ use App\Services\Attachments\AttachmentURLGenerator; use App\Services\Attachments\PartPreviewGenerator; use App\Services\EntityURLGenerator; use App\Services\FAIconGenerator; +use App\Services\MarkdownParser; use App\Services\TreeBuilder; use Doctrine\ORM\QueryBuilder; use Omines\DataTablesBundle\Adapter\Doctrine\ORM\SearchCriteriaProvider; @@ -177,7 +179,7 @@ class PartsDataTable implements DataTableTypeInterface 'label' => $this->translator->trans('part.table.id'), 'visible' => false, ]) - ->add('description', TextColumn::class, [ + ->add('description', MarkdownColumn::class, [ 'label' => $this->translator->trans('part.table.description'), ]) ->add('category', EntityColumn::class, [