From aaedd26e97b51719a9b256977ac4408b89b57ba6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Cailly?= Date: Thu, 25 Apr 2024 15:54:06 +0200 Subject: [PATCH] feat: Adding a new abstract class as base class for form question types --- .../QuestionType/AbstractQuestionType.php | 77 +++++++++++++++++++ .../AbstractQuestionTypeActors.php | 7 +- .../AbstractQuestionTypeShortAnswer.php | 25 +----- .../QuestionType/QuestionTypeDateTime.php | 25 +----- .../QuestionType/QuestionTypeLongText.php | 37 +-------- src/Form/QuestionType/QuestionTypeUrgency.php | 37 +-------- 6 files changed, 82 insertions(+), 126 deletions(-) create mode 100644 src/Form/QuestionType/AbstractQuestionType.php diff --git a/src/Form/QuestionType/AbstractQuestionType.php b/src/Form/QuestionType/AbstractQuestionType.php new file mode 100644 index 00000000000..7f9db167e60 --- /dev/null +++ b/src/Form/QuestionType/AbstractQuestionType.php @@ -0,0 +1,77 @@ +. + * + * --------------------------------------------------------------------- + */ + +namespace Glpi\Form\QuestionType; + +use Glpi\Form\Question; +use Override; + +abstract class AbstractQuestionType implements QuestionTypeInterface +{ + #[Override] + public function __construct() + { + } + + #[Override] + public static function formatDefaultValueForDB(mixed $value): ?string + { + return $value; // Default value is already formatted + } + + #[Override] + public static function validateExtraDataInput(array $input): bool + { + return empty($input); // No extra data by default + } + + #[Override] + public function renderAdministrationOptionsTemplate(?Question $question): string + { + return ''; // No options by default + } + + #[Override] + public function getName(): string + { + return $this->getCategory()->getLabel(); + } + + #[Override] + public function getWeight(): int + { + return 10; + } +} diff --git a/src/Form/QuestionType/AbstractQuestionTypeActors.php b/src/Form/QuestionType/AbstractQuestionTypeActors.php index f299d7ff337..7fa7d7c96af 100644 --- a/src/Form/QuestionType/AbstractQuestionTypeActors.php +++ b/src/Form/QuestionType/AbstractQuestionTypeActors.php @@ -42,13 +42,8 @@ /** * "Actors" questions represent an input field for actors (requesters, ...) */ -abstract class AbstractQuestionTypeActors implements QuestionTypeInterface +abstract class AbstractQuestionTypeActors extends AbstractQuestionType { - #[Override] - public function __construct() - { - } - /** * Retrieve the allowed actor types * diff --git a/src/Form/QuestionType/AbstractQuestionTypeShortAnswer.php b/src/Form/QuestionType/AbstractQuestionTypeShortAnswer.php index 4ed3864b667..eff8f5276a5 100644 --- a/src/Form/QuestionType/AbstractQuestionTypeShortAnswer.php +++ b/src/Form/QuestionType/AbstractQuestionTypeShortAnswer.php @@ -42,13 +42,8 @@ /** * Short answers are single line inputs used to answer simple questions. */ -abstract class AbstractQuestionTypeShortAnswer implements QuestionTypeInterface +abstract class AbstractQuestionTypeShortAnswer extends AbstractQuestionType { - #[Override] - public function __construct() - { - } - /** * Specific input type for child classes * @@ -56,18 +51,6 @@ public function __construct() */ abstract public function getInputType(): string; - #[Override] - public static function formatDefaultValueForDB(mixed $value): ?string - { - return $value; - } - - #[Override] - public static function validateExtraDataInput(array $input): bool - { - return empty($input); // No extra data for this question type - } - #[Override] public function renderAdministrationTemplate( ?Question $question = null, @@ -91,12 +74,6 @@ class="form-control mb-2" ]); } - #[Override] - public function renderAdministrationOptionsTemplate(?Question $question): string - { - return ''; - } - #[Override] public function renderEndUserTemplate( Question $question, diff --git a/src/Form/QuestionType/QuestionTypeDateTime.php b/src/Form/QuestionType/QuestionTypeDateTime.php index d6715210670..7915b37a6e2 100644 --- a/src/Form/QuestionType/QuestionTypeDateTime.php +++ b/src/Form/QuestionType/QuestionTypeDateTime.php @@ -43,37 +43,14 @@ /** * Short answers are single line inputs used to answer simple questions. */ -class QuestionTypeDateTime implements QuestionTypeInterface +class QuestionTypeDateTime extends AbstractQuestionType { - #[Override] - public function __construct() - { - } - - #[Override] - public static function formatDefaultValueForDB(mixed $value): ?string - { - return $value; - } - #[Override] public function getCategory(): QuestionTypeCategory { return QuestionTypeCategory::DATE_AND_TIME; } - #[Override] - public function getName(): string - { - return 'Date and time'; - } - - #[Override] - public function getWeight(): int - { - return 10; - } - public function getInputType(?Question $question, bool $ignoreDefaultValueIsCurrentTime = false): string { if ( diff --git a/src/Form/QuestionType/QuestionTypeLongText.php b/src/Form/QuestionType/QuestionTypeLongText.php index 886d7a25524..12cca7f3710 100644 --- a/src/Form/QuestionType/QuestionTypeLongText.php +++ b/src/Form/QuestionType/QuestionTypeLongText.php @@ -42,25 +42,8 @@ /** * Long answers are multiple lines inputs used to answer questions with as much details as needed. */ -final class QuestionTypeLongText implements QuestionTypeInterface +final class QuestionTypeLongText extends AbstractQuestionType { - #[Override] - public function __construct() - { - } - - #[Override] - public static function formatDefaultValueForDB(mixed $value): ?string - { - return $value; - } - - #[Override] - public static function validateExtraDataInput(array $input): bool - { - return empty($input); // No extra data for this question type - } - #[Override] public function renderAdministrationTemplate(?Question $question): string { @@ -91,12 +74,6 @@ public function renderAdministrationTemplate(?Question $question): string ]); } - #[Override] - public function renderAdministrationOptionsTemplate(?Question $question): string - { - return ''; - } - #[Override] public function renderEndUserTemplate(Question $question): string { @@ -139,21 +116,9 @@ public function renderAnswerTemplate($answer): string ]); } - #[Override] - public function getName(): string - { - return __("Long answer"); - } - #[Override] public function getCategory(): QuestionTypeCategory { return QuestionTypeCategory::LONG_ANSWER; } - - #[Override] - public function getWeight(): int - { - return 10; - } } diff --git a/src/Form/QuestionType/QuestionTypeUrgency.php b/src/Form/QuestionType/QuestionTypeUrgency.php index b58fa163a6b..591bc6c9dc2 100644 --- a/src/Form/QuestionType/QuestionTypeUrgency.php +++ b/src/Form/QuestionType/QuestionTypeUrgency.php @@ -40,25 +40,8 @@ use Glpi\Form\Question; use Override; -final class QuestionTypeUrgency implements QuestionTypeInterface +final class QuestionTypeUrgency extends AbstractQuestionType { - #[Override] - public function __construct() - { - } - - #[Override] - public static function formatDefaultValueForDB(mixed $value): ?string - { - return $value; - } - - #[Override] - public static function validateExtraDataInput(array $input): bool - { - return empty($input); // No extra data for this question type - } - /** * Retrieve the default value for the urgency question type * @@ -111,12 +94,6 @@ public function renderAdministrationTemplate(?Question $question): string ]); } - #[Override] - public function renderAdministrationOptionsTemplate(?Question $question): string - { - return ''; - } - #[Override] public function renderEndUserTemplate(Question $question): string { @@ -159,21 +136,9 @@ public function renderAnswerTemplate($answer): string ]); } - #[Override] - public function getName(): string - { - return __("Urgency"); - } - #[Override] public function getCategory(): QuestionTypeCategory { return QuestionTypeCategory::URGENCY; } - - #[Override] - public function getWeight(): int - { - return 10; - } }