From 224415c3b4a5c7ee83eda640c695889a6052920d Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Thu, 22 Feb 2024 08:32:47 +0100 Subject: [PATCH] chg: [analyst-data:edit] Added support of editable fields --- app/Controller/AnalystDataController.php | 1 + app/Model/AnalystData.php | 14 ++++++++++++++ app/Model/Note.php | 7 +++++-- app/Model/Opinion.php | 8 ++++++-- app/Model/Relationship.php | 7 +++++-- app/View/AnalystData/add.ctp | 2 ++ 6 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/Controller/AnalystDataController.php b/app/Controller/AnalystDataController.php index c0e6182d4..9659555d8 100644 --- a/app/Controller/AnalystDataController.php +++ b/app/Controller/AnalystDataController.php @@ -80,6 +80,7 @@ class AnalystDataController extends AppController $this->set('id', $id); $conditions = $this->AnalystData->buildConditions($this->Auth->user()); $params = [ + 'fields' => $this->AnalystData->getEditableFields(), 'conditions' => $conditions, 'afterFind' => function(array $analystData): array { $canEdit = $this->ACL->canEditAnalystData($this->Auth->user(), $analystData, $this->modelSelection); diff --git a/app/Model/AnalystData.php b/app/Model/AnalystData.php index 8e993e56e..774cf94a4 100644 --- a/app/Model/AnalystData.php +++ b/app/Model/AnalystData.php @@ -36,6 +36,15 @@ class AnalystData extends AppModel 'Relationship', ]; + protected const BASE_EDITABLE_FIELDS = [ + 'language', + 'authors', + 'modified', + 'distribution', + 'sharing_group_id', + ]; + protected $EDITABLE_FIELDS = []; + /** @var object|null */ protected $Note; /** @var object|null */ @@ -156,6 +165,11 @@ class AnalystData extends AppModel return true; } + public function getEditableFields(): array + { + return array_merge(self::BASE_EDITABLE_FIELDS, $this->EDITABLE_FIELDS); + } + /** * Checks if user can modify given analyst data * diff --git a/app/Model/Note.php b/app/Model/Note.php index 9f41df961..481a3711c 100644 --- a/app/Model/Note.php +++ b/app/Model/Note.php @@ -15,8 +15,11 @@ class Note extends AnalystData public $current_type = 'Note'; public $current_type_id = 0; - public $validate = array( - ); + public const EDITABLE_FIELDS = [ + 'note', + ]; + + public $validate = []; public function beforeValidate($options = array()) { diff --git a/app/Model/Opinion.php b/app/Model/Opinion.php index 33b65f29c..8a7c589d2 100644 --- a/app/Model/Opinion.php +++ b/app/Model/Opinion.php @@ -15,8 +15,12 @@ class Opinion extends AnalystData public $current_type = 'Opinion'; public $current_type_id = 1; - public $validate = array( - ); + public const EDITABLE_FIELDS = [ + 'opinion', + 'comment', + ]; + + public $validate = []; public function beforeValidate($options = array()) { diff --git a/app/Model/Relationship.php b/app/Model/Relationship.php index ea73cd777..b469e24a5 100644 --- a/app/Model/Relationship.php +++ b/app/Model/Relationship.php @@ -15,8 +15,11 @@ class Relationship extends AnalystData public $current_type = 'Relationship'; public $current_type_id = 2; - public $validate = array( - ); + protected $EDITABLE_FIELDS = [ + 'relationship_type', + ]; + + public $validate = []; /** @var object|null */ protected $Event; diff --git a/app/View/AnalystData/add.ctp b/app/View/AnalystData/add.ctp index de7ae5437..9d6eaf389 100644 --- a/app/View/AnalystData/add.ctp +++ b/app/View/AnalystData/add.ctp @@ -89,10 +89,12 @@ if ($modelSelection === 'Note') { 'options' => $dropdownData['valid_targets'], 'type' => 'dropdown', 'stayInLine' => 1, + 'disabled' => !empty($this->data[$modelSelection]['related_object_type']), ], [ 'field' => 'related_object_uuid', 'class' => 'span4', + 'disabled' => !empty($this->data[$modelSelection]['related_object_uuid']), ], sprintf('
', __('Related Object'), __('- No UUID provided -')) ]