diff --git a/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php b/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php index fa48ca253e..3987296e0c 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php @@ -92,7 +92,7 @@ public function indexAction(Request $request) } } - $availableSubdefName = []; + $availableSubdefLabel = []; $countSubdefTodo = []; /** @var record_adapter $rec */ @@ -101,11 +101,12 @@ public function indexAction(Request $request) if ($databoxSubdefs !== null) { foreach ($databoxSubdefs as $sub) { if ($sub->isTobuild()) { - $availableSubdefName[] = $sub->get_name(); - if (isset($countSubdefTodo[$sub->get_name()])) { - $countSubdefTodo[$sub->get_name()] ++; + $label = trim($sub->get_label($this->app['locale'])); + $availableSubdefLabel[] = $label; + if (isset($countSubdefTodo[$label])) { + $countSubdefTodo[$label] ++; } else { - $countSubdefTodo[$sub->get_name()] = 1; + $countSubdefTodo[$label] = 1; } } } @@ -118,7 +119,7 @@ public function indexAction(Request $request) 'recordSubdefs' => $recordAccessibleSubdefs, 'metadatas' => $metadatas, 'listsubdef' => $listsubdef, - 'availableSubdefName' => array_unique($availableSubdefName), + 'availableSubdefLabel' => array_unique($availableSubdefLabel), 'nbRecords' => count($records), 'countSubdefTodo' => $countSubdefTodo ]); @@ -167,10 +168,11 @@ public function imageAction(Request $request) $return = ['success' => true]; $force = $request->request->get('force_substitution') == '1'; - $subdefsName = $request->request->get('subdefs', []); + $subdefsLabel = $request->request->get('subdefsLabel', []); $selection = RecordsRequest::fromRequest($this->app, $request, false, [\ACL::CANMODIFRECORD]); + /** @var record_adapter $record */ foreach ($selection as $record) { $substituted = false; /** @var \media_subdef $subdef */ @@ -187,6 +189,18 @@ public function imageAction(Request $request) } if (!$substituted || $force) { + $subdefsName = []; + + // get subdefinition name from selected subdefinition label + $databoxSubdefs = $record->getDatabox()->get_subdef_structure()->getSubdefGroup($record->getType()); + if ($databoxSubdefs !== null) { + foreach ($databoxSubdefs as $sub) { + if (in_array(trim($sub->get_label($this->app['locale'])), $subdefsLabel)) { + $subdefsName[] = $sub->get_name(); + } + } + } + $this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($record, false, $subdefsName)); } } diff --git a/templates/web/prod/actions/Tools/index.html.twig b/templates/web/prod/actions/Tools/index.html.twig index e2615b6027..d4fa372ec0 100644 --- a/templates/web/prod/actions/Tools/index.html.twig +++ b/templates/web/prod/actions/Tools/index.html.twig @@ -83,11 +83,11 @@ - {% for subdefName in availableSubdefName %} + {% for subdefLabel in availableSubdefLabel %}
-
{% endfor %}