From a7fa9ea9d60d4bf285f5ac08c8616b3d4408f471 Mon Sep 17 00:00:00 2001 From: taslangraham Date: Thu, 2 Oct 2025 12:12:37 -0500 Subject: [PATCH] pkp/pkp-lib#11726 Display full category depth when editing a series --- .../grid/settings/series/form/SeriesForm.php | 15 +++++++-------- .../grid/settings/series/form/seriesForm.tpl | 3 +++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/controllers/grid/settings/series/form/SeriesForm.php b/controllers/grid/settings/series/form/SeriesForm.php index 70e2a47d041..5cd17fdce5a 100644 --- a/controllers/grid/settings/series/form/SeriesForm.php +++ b/controllers/grid/settings/series/form/SeriesForm.php @@ -162,20 +162,19 @@ public function fetch($request, $template = null, $display = false) $allCategories = []; $categories = Repo::category()->getCollector() ->filterByContextIds([$context->getId()]) - ->getMany() - ->toArray(); + ->getMany(); - foreach ($categories as $category) { - $title = $category->getLocalizedTitle(); - if ($category->getParentId()) { - $title = $categories[$category->getParentId()]->getLocalizedTitle() . ' > ' . $title; - } - $allCategories[(int) $category->getId()] = $title; + $categoriesBreadcrumb = Repo::category()->getBreadcrumbs($categories); + $hasAllBreadcrumbs = count($categories) === $categoriesBreadcrumb->count(); + + foreach ($categoriesBreadcrumb as $categoryId => $breadcrumb) { + $allCategories[(int) $categoryId] = $breadcrumb; } $templateMgr->assign([ 'allCategories' => $allCategories, 'selectedCategories' => $this->getData('categories')?->values()?->all() ?? [], + 'hasAllBreadcrumbs' => $hasAllBreadcrumbs, ]); return parent::fetch($request, $template, $display); diff --git a/templates/controllers/grid/settings/series/form/seriesForm.tpl b/templates/controllers/grid/settings/series/form/seriesForm.tpl index e2616092f71..042dfe95ee8 100644 --- a/templates/controllers/grid/settings/series/form/seriesForm.tpl +++ b/templates/controllers/grid/settings/series/form/seriesForm.tpl @@ -100,6 +100,9 @@ {if count($allCategories)} {fbvFormSection list=true title="grid.category.categories"} + {if !$hasAllBreadcrumbs} + {translate key="submission.categories.circularReferenceWarning"} + {/if} {foreach from=$allCategories item="category" key="id"} {fbvElement type="checkbox" id="categories[]" value=$id checked=in_array($id, $selectedCategories) label=$category|escape translate=false} {/foreach}