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 = [];
/** @var record_adapter $rec */
@@ -101,11 +101,12 @@ class ToolsController extends Controller
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 @@ class ToolsController extends Controller
'recordSubdefs' => $recordAccessibleSubdefs,
'metadatas' => $metadatas,
'listsubdef' => $listsubdef,
'availableSubdefName' => array_unique($availableSubdefName),
'availableSubdefLabel' => array_unique($availableSubdefLabel),
'nbRecords' => count($records),
'countSubdefTodo' => $countSubdefTodo
]);
@@ -167,10 +168,11 @@ class ToolsController extends Controller
$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 @@ class ToolsController extends Controller
}
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));
}
}

View File

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