Skip to content

Commit 5401e06

Browse files
Clear conditions
1 parent e9269da commit 5401e06

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/Glpi/Form/Form.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
use Glpi\Form\Condition\FormData;
5757
use Glpi\Form\Condition\QuestionData;
5858
use Glpi\Form\Condition\SectionData;
59+
use Glpi\Form\Condition\VisibilityStrategy;
5960
use Glpi\Form\Destination\FormDestination;
6061
use Glpi\Form\Destination\FormDestinationTicket;
6162
use Glpi\Form\QuestionType\QuestionTypeInterface;
@@ -374,6 +375,13 @@ private function prepareInput(array $input): array
374375
unset($input['_submit_button_conditions']);
375376
}
376377

378+
if (
379+
isset($input['submit_button_visibility_strategy'])
380+
&& $input['submit_button_visibility_strategy'] == VisibilityStrategy::ALWAYS_VISIBLE->value
381+
) {
382+
$input['submit_button_conditions'] = json_encode([]);
383+
}
384+
377385
return $input;
378386
}
379387

tests/functional/Glpi/Form/FormTest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@
4343
use Glpi\Form\AccessControl\FormAccessControl;
4444
use Glpi\Form\AnswersHandler\AnswersHandler;
4545
use Glpi\Form\Comment;
46+
use Glpi\Form\Condition\LogicOperator;
47+
use Glpi\Form\Condition\Type;
48+
use Glpi\Form\Condition\ValueOperator;
49+
use Glpi\Form\Condition\VisibilityStrategy;
4650
use Glpi\Form\Destination\FormDestination;
4751
use Glpi\Form\Destination\FormDestinationChange;
4852
use Glpi\Form\Destination\FormDestinationProblem;
@@ -811,4 +815,29 @@ public function testDefinedTabs(
811815
// Assert: the tabs should match the expected data
812816
$this->assertEquals($expected_tabs, $tabs);
813817
}
818+
819+
public function testSubmitConditionsDataIsCleanedWhenStrategyIsReset(): void
820+
{
821+
// Arrange: create a form with some conditions
822+
$builder = new FormBuilder();
823+
$builder->addQuestion("My question", QuestionTypeShortText::class);
824+
$builder->setSubmitButtonVisibility(VisibilityStrategy::VISIBLE_IF, [
825+
[
826+
'logic_operator' => LogicOperator::AND,
827+
'item_name' => "My question",
828+
'item_type' => Type::QUESTION,
829+
'value_operator' => ValueOperator::EQUALS,
830+
'value' => "Yes",
831+
],
832+
]);
833+
$form = $this->createForm($builder);
834+
835+
// Act: reset the visibility strategy
836+
$form = $this->updateItem(Form::class, $form->getID(), [
837+
'submit_button_visibility_strategy' => VisibilityStrategy::ALWAYS_VISIBLE->value
838+
]);
839+
840+
// Assert: the conditions should be deleted
841+
$this->assertEmpty($form->getConfiguredConditionsData());
842+
}
814843
}

0 commit comments

Comments
 (0)