use subdef label instead of subdef name (#4337)

This commit is contained in:
Aina Sitraka
2023-07-14 16:05:37 +03:00
committed by GitHub
parent 8d60402a68
commit 41b17868a9
2 changed files with 25 additions and 11 deletions

View File

@@ -92,7 +92,7 @@ class ToolsController extends Controller
} }
} }
$availableSubdefName = []; $availableSubdefLabel = [];
$countSubdefTodo = []; $countSubdefTodo = [];
/** @var record_adapter $rec */ /** @var record_adapter $rec */
@@ -101,11 +101,12 @@ class ToolsController extends Controller
if ($databoxSubdefs !== null) { if ($databoxSubdefs !== null) {
foreach ($databoxSubdefs as $sub) { foreach ($databoxSubdefs as $sub) {
if ($sub->isTobuild()) { if ($sub->isTobuild()) {
$availableSubdefName[] = $sub->get_name(); $label = trim($sub->get_label($this->app['locale']));
if (isset($countSubdefTodo[$sub->get_name()])) { $availableSubdefLabel[] = $label;
$countSubdefTodo[$sub->get_name()] ++; if (isset($countSubdefTodo[$label])) {
$countSubdefTodo[$label] ++;
} else { } else {
$countSubdefTodo[$sub->get_name()] = 1; $countSubdefTodo[$label] = 1;
} }
} }
} }
@@ -118,7 +119,7 @@ class ToolsController extends Controller
'recordSubdefs' => $recordAccessibleSubdefs, 'recordSubdefs' => $recordAccessibleSubdefs,
'metadatas' => $metadatas, 'metadatas' => $metadatas,
'listsubdef' => $listsubdef, 'listsubdef' => $listsubdef,
'availableSubdefName' => array_unique($availableSubdefName), 'availableSubdefLabel' => array_unique($availableSubdefLabel),
'nbRecords' => count($records), 'nbRecords' => count($records),
'countSubdefTodo' => $countSubdefTodo 'countSubdefTodo' => $countSubdefTodo
]); ]);
@@ -167,10 +168,11 @@ class ToolsController extends Controller
$return = ['success' => true]; $return = ['success' => true];
$force = $request->request->get('force_substitution') == '1'; $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]); $selection = RecordsRequest::fromRequest($this->app, $request, false, [\ACL::CANMODIFRECORD]);
/** @var record_adapter $record */
foreach ($selection as $record) { foreach ($selection as $record) {
$substituted = false; $substituted = false;
/** @var \media_subdef $subdef */ /** @var \media_subdef $subdef */
@@ -187,6 +189,18 @@ class ToolsController extends Controller
} }
if (!$substituted || $force) { 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)); $this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($record, false, $subdefsName));
} }
} }

View File

@@ -83,11 +83,11 @@
</label> </label>
</div> </div>
{% for subdefName in availableSubdefName %} {% for subdefLabel in availableSubdefLabel %}
<div class="well-small"> <div class="well-small">
<label for="recreate_{{ subdefName }}" class="checkbox"> <label for="recreate_{{ subdefLabel | replace({' ':'_'}) }}" class="checkbox">
<input class="subdefTodo" type="checkbox" id="recreate_{{ subdefName }}" name="subdefs[]" value="{{ subdefName }}" /> <input class="subdefTodo" type="checkbox" id="recreate_{{ subdefLabel | replace({' ':'_'}) }}" name="subdefsLabel[]" value="{{ subdefLabel }}" />
{{ subdefName }} {{ countSubdefTodo[subdefName] }} / {{ nbRecords }} {{ subdefLabel }} {{ countSubdefTodo[subdefLabel] }} / {{ nbRecords }}
</label> </label>
</div> </div>
{% endfor %} {% endfor %}