From 4e18cc8625a243ac6e45832c9ec1bb60645ea32c Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 12 Apr 2023 12:29:25 -0400 Subject: [PATCH] APIv4 - Add "localizable" to getFields metadata --- Civi/Api4/Generic/BasicGetFieldsAction.php | 5 +++++ Civi/Api4/Service/Spec/SpecFormatter.php | 1 + Civi/Schema/Traits/GuiSpecTrait.php | 24 ++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/Civi/Api4/Generic/BasicGetFieldsAction.php b/Civi/Api4/Generic/BasicGetFieldsAction.php index 82dd6e0e5f..26780be1ee 100644 --- a/Civi/Api4/Generic/BasicGetFieldsAction.php +++ b/Civi/Api4/Generic/BasicGetFieldsAction.php @@ -346,6 +346,11 @@ class BasicGetFieldsAction extends BasicGetAction { 'name' => 'entity', 'data_type' => 'String', ], + [ + 'name' => 'localizable', + 'data_type' => 'Boolean', + 'default_value' => FALSE, + ], [ 'name' => 'readonly', 'data_type' => 'Boolean', diff --git a/Civi/Api4/Service/Spec/SpecFormatter.php b/Civi/Api4/Service/Spec/SpecFormatter.php index fc99a65e79..1e83d8f579 100644 --- a/Civi/Api4/Service/Spec/SpecFormatter.php +++ b/Civi/Api4/Service/Spec/SpecFormatter.php @@ -66,6 +66,7 @@ class SpecFormatter { $field->setRequired(!empty($data['required']) && empty($data['default'])); $field->setTitle($data['title'] ?? NULL); $field->setLabel($data['html']['label'] ?? NULL); + $field->setLocalizable($data['localizable'] ?? FALSE); if (!empty($data['pseudoconstant'])) { // Do not load options if 'prefetch' is explicitly FALSE if (!isset($data['pseudoconstant']['prefetch']) || $data['pseudoconstant']['prefetch'] === FALSE) { diff --git a/Civi/Schema/Traits/GuiSpecTrait.php b/Civi/Schema/Traits/GuiSpecTrait.php index 1a084f8fc2..888c71d2ae 100644 --- a/Civi/Schema/Traits/GuiSpecTrait.php +++ b/Civi/Schema/Traits/GuiSpecTrait.php @@ -37,6 +37,13 @@ trait GuiSpecTrait { */ public $inputType; + /** + * Can the field be translated. + * + * @var bool + */ + public $localizable = FALSE; + /** * @var array */ @@ -93,6 +100,23 @@ trait GuiSpecTrait { return $this; } + /** + * @return bool + */ + public function getLocalizable() { + return $this->localizable; + } + + /** + * @param bool $localizable + * + * @return $this + */ + public function setLocalizable(bool $localizable) { + $this->localizable = $localizable; + return $this; + } + /** * @param string $label * -- 2.25.1