19 declare(strict_types=1);
51 private readonly PoolDefinitionList $source_pool_definition_list,
52 private readonly
bool $editable,
53 private readonly
bool $show_amount
55 $this->target = $this->data_factory->uri((
string) $this->request->getUri());
56 $this->url_builder =
new URLBuilder($this->target);
65 foreach ($this->
getData() as $qp) {
67 'sequence_position' => (
int) $qp[
'sequence_position'],
68 'source_pool_label' => $this->title_builder->buildAccessCheckedQuestionpoolTitleAsLink(
70 $qp[
'source_pool_label'],
73 'taxonomy_filter' => $this->taxonomy_translator->getTaxonomyFilterLabel(
74 $qp[
'taxonomy_filter'],
77 'lifecycle_filter' => $this->taxonomy_translator->getLifecycleFilterLabel($qp[
'lifecycle_filter']),
78 'type_filter' => $this->taxonomy_translator->getTypeFilterLabel($qp[
'type_filter']),
79 'question_amount' => (
int) $qp[
'question_amount']
89 foreach ($this->source_pool_definition_list as $source_pool_definition) {
90 $taxonomie_filter = $source_pool_definition->getOriginalTaxonomyFilter();
91 if ($taxonomie_filter === []) {
92 $taxonomie_filter = $source_pool_definition->getMappedTaxonomyfilter();
95 $set[
'def_id'] = $source_pool_definition->getId();
96 $set[
'sequence_position'] = $source_pool_definition->getSequencePosition();
97 $set[
'source_pool_label'] = $source_pool_definition->getPoolTitle();
98 $set[
'taxonomy_filter'] = $taxonomie_filter;
99 $set[
'lifecycle_filter'] = $source_pool_definition->getLifecycleFilter();
100 $set[
'type_filter'] = $source_pool_definition->getTypeFilter();
102 $set[
'question_amount'] = $source_pool_definition->getQuestionAmount();
103 $set[
'ref_id'] = $source_pool_definition->getPoolRefId();
107 usort(
$data, fn(
$a,
$b) =>
$a[
'sequence_position'] <=>
$b[
'sequence_position']);
113 return $this->ui_factory->table()
115 $this->
lng->txt(
'tst_src_quest_pool_def_list_table'),
118 $this->
getTarget(ConfigGUI::CMD_SAVE_SRC_POOL_DEF_LIST)
121 ->withRequest($this->request)
122 ->withOrderingDisabled(!$this->editable)
123 ->withId(
'src_pool_def_list');
130 foreach ($this->source_pool_definition_list as $source_pool_definition) {
131 $pool_id = $source_pool_definition->getId();
132 $sequence_pos = array_key_exists($pool_id, $quest_pos) ? $quest_pos[$pool_id] : 0;
133 $source_pool_definition->setSequencePosition($sequence_pos);
142 $column_factory = $this->ui_factory->table()->column();
143 $columns_definition = [
144 'sequence_position' => $column_factory->number($this->
lng->txt(
'position'))->withUnit(
'.'),
145 'source_pool_label' => $column_factory->link($this->
lng->txt(
'tst_source_question_pool')),
146 'taxonomy_filter' => $column_factory->text(
147 $this->lng->txt(
'tst_filter_taxonomy') .
' / ' . $this->
lng->txt(
'tst_filter_tax_node')
149 'lifecycle_filter' => $column_factory->text($this->lng->txt(
'qst_lifecycle')),
150 'type_filter' => $column_factory->text($this->lng->txt(
'tst_filter_question_type')),
151 'question_amount' => $column_factory->number($this->lng->txt(
'tst_question_amount')),
154 $columns_conditions = [
155 'sequence_position' => !$this->editable,
156 'question_amount' => $this->show_amount,
159 return array_filter($columns_definition,
function ($key) use ($columns_conditions) {
160 return !isset($columns_conditions[$key]) || $columns_conditions[$key];
161 }, ARRAY_FILTER_USE_KEY);
169 if (!$this->editable) {
173 'delete' => $this->ui_factory->table()->action()->standard(
174 $this->
lng->txt(
'delete'),
175 $this->url_builder->withURI($this->
getTarget(ConfigGUI::CMD_DELETE_SRC_POOL_DEF)),
178 'edit' => $this->ui_factory->table()->action()->single(
179 $this->
lng->txt(
'edit'),
180 $this->url_builder->withURI($this->
getTarget(ConfigGUI::CMD_SHOW_EDIT_SRC_POOL_DEF_FORM)),
getRows(OrderingRowBuilder $row_builder, array $visible_column_ids)
This is called by the (ordering-)table to retrieve rows; map data-records to rows using the $row_buil...
__construct(private readonly \ilCtrlInterface $ctrl, private readonly \ilLanguage $lng, private readonly UIFactory $ui_factory, private readonly DataFactory $data_factory, private readonly ServerRequestInterface $request, private readonly TitleColumnsBuilder $title_builder, private readonly \ilTestQuestionFilterLabelTranslator $taxonomy_translator, private readonly PoolDefinitionList $source_pool_definition_list, private readonly bool $editable, private readonly bool $show_amount)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
The scope of this class is split ilias-conform URI's into components.
applySubmit(RequestDataCollector $request)
buildOrderingRow(string $id, array $record)
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
URLBuilderToken $id_token
withParameter(string $key, $value)
Get URI with modified parameters.