Skip to content

Commit a598896

Browse files
committed
fix(forms): unable to add conditions to an unsaved question
1 parent b5779b2 commit a598896

File tree

3 files changed

+21
-16
lines changed

3 files changed

+21
-16
lines changed

js/modules/Forms/EditorController.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,6 +1014,9 @@ export class GlpiFormEditorController
10141014

10151015
const new_question = this.#addBlock(target, template);
10161016

1017+
// Set UUID
1018+
this.#setUuid(new_question);
1019+
10171020
// Mark as active
10181021
this.#setActiveItem(new_question);
10191022

@@ -1903,6 +1906,9 @@ export class GlpiFormEditorController
19031906

19041907
const new_comment = this.#addBlock(target, template);
19051908

1909+
// Set UUID
1910+
this.#setUuid(new_comment);
1911+
19061912
// Mark as active
19071913
this.#setActiveItem(new_comment);
19081914

src/Glpi/Controller/Form/Condition/EditorController.php

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
use Glpi\Form\Condition\ConditionData;
4040
use Glpi\Form\Condition\EditorManager;
4141
use Glpi\Form\Condition\FormData;
42+
use Glpi\Form\Condition\QuestionData;
4243
use Glpi\Form\Condition\Type;
4344
use Glpi\Form\Question;
4445
use InvalidArgumentException;
@@ -90,24 +91,21 @@ public function validationEditor(Request $request): Response
9091
);
9192
}
9293

93-
// Get the question by UUID
94-
$question = Question::getByUuid($form_data->getSelectedItemUuid());
95-
if ($question === null) {
96-
throw new NotFoundHttpException(
97-
sprintf(
98-
'Question with UUID "%s" not found.',
99-
$form_data->getSelectedItemUuid()
100-
)
101-
);
102-
}
94+
// Retrieve the question data
95+
$question_uuid = $form_data->getSelectedItemUuid();
96+
$question_name = current(array_filter(
97+
$form_data->getQuestionsData(),
98+
fn (QuestionData $question) => $question->getUuid() === $question_uuid
99+
))->getName();
103100

101+
// Retrieve the conditions data
104102
$conditions = $form_data->getConditionsData();
105103
$default_value_operator = current(array_keys($this->editor_manager->getValueOperatorForValidationDropdownValues(
106-
$question->fields['uuid']
104+
$question_uuid
107105
)));
108106
if (empty($conditions)) {
109107
$conditions[] = new ConditionData(
110-
item_uuid: $question->fields['uuid'],
108+
item_uuid: $question_uuid,
111109
item_type: Type::QUESTION->value,
112110
value_operator: $default_value_operator,
113111
value: null,
@@ -118,15 +116,16 @@ public function validationEditor(Request $request): Response
118116
$last_index = count($conditions) - 1;
119117
if (empty($conditions[$last_index]->getItemUuid())) {
120118
$conditions[$last_index] = new ConditionData(
121-
item_uuid: $question->fields['uuid'],
119+
item_uuid: $question_uuid,
122120
item_type: Type::QUESTION->value,
123121
value_operator: $default_value_operator,
124122
value: null,
125123
);
126124
}
127125

128126
return $this->render('pages/admin/form/conditional_validation_editor.html.twig', [
129-
'question' => $question,
127+
'question_uuid' => $question_uuid,
128+
'question_name' => $question_name,
130129
'manager' => $this->editor_manager,
131130
'defined_conditions' => $conditions,
132131
'items_values' => $this->editor_manager->getItemsDropdownValues(),

templates/pages/admin/form/conditional_validation_editor.html.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@
6767
</span>
6868
{% endif %}
6969

70-
{% set question_key = 'question-' ~ question.fields.uuid %}
70+
{% set question_key = 'question-' ~ question_uuid %}
7171
<span class="me-2 question-selector">
7272
{% do call('Dropdown::showFromArray', [
7373
'_validation_conditions[' ~ loop.index0 ~ '][item]',
7474
{
75-
(question_key): question.getName(),
75+
(question_key): question_name,
7676
},
7777
{
7878
'value': question_key,

0 commit comments

Comments
 (0)