From a5f3119b1c672c47e54c114d96f131557d39fbfc Mon Sep 17 00:00:00 2001 From: Mattias Michaux Date: Mon, 9 Nov 2015 12:14:49 +0100 Subject: [PATCH] Added is_view check to prevent editing read only custom fields. --- .../Page/MultipleRecordFieldsListing.php | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/CRM/Profile/Page/MultipleRecordFieldsListing.php b/CRM/Profile/Page/MultipleRecordFieldsListing.php index e0bee925f3..808a5f9bde 100644 --- a/CRM/Profile/Page/MultipleRecordFieldsListing.php +++ b/CRM/Profile/Page/MultipleRecordFieldsListing.php @@ -228,6 +228,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { 'time_format', 'default_value', 'is_required', + 'is_view', ); foreach ($fieldIDs as $key => $fieldID) { $fieldIDs[$key] = !is_numeric($fieldID) ? CRM_Core_BAO_CustomField::getKeyID($fieldID) : $fieldID; @@ -252,6 +253,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { $options[$fieldIDs[$key]]['attributes']['data_type'] = $returnValues['data_type']; $options[$fieldIDs[$key]]['attributes']['is_required'] = !empty($returnValues['is_required']); $options[$fieldIDs[$key]]['attributes']['default_value'] = CRM_Utils_Array::value('default_value', $returnValues); + $options[$fieldIDs[$key]]['attributes']['is_view'] = CRM_Utils_Array::value('is_view', $returnValues); $options[$fieldIDs[$key]]['attributes']['format'] = $options[$fieldIDs[$key]]['attributes']['date_format'] = CRM_Utils_Array::value('date_format', $returnValues); @@ -337,29 +339,31 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { $editable = FALSE; if ($linkAction & CRM_Core_Action::UPDATE) { $spec = $options[$fieldId]['attributes']; - switch ($spec['html_type']) { - case 'Text': - // Other data types like money would require some extra validation - // FIXME: crmEditable currently does not support any validation rules :( - $supportedDataTypes = array('Float', 'String', 'Int'); - $editable = in_array($spec['data_type'], $supportedDataTypes); - break; - - case 'TextArea': - $editable = TRUE; - $fieldAttributes['data-type'] = 'textarea'; - break; - - case 'Radio': - case 'Select': - case 'Select Country': - case 'Select State/Province': - $editable = TRUE; - $fieldAttributes['data-type'] = $spec['data_type'] == 'Boolean' ? 'boolean' : 'select'; - if (!$spec['is_required']) { - $fieldAttributes['data-empty-option'] = ts('- none -'); - } - break; + if ($spec['is_view'] == '0') { + switch ($spec['html_type']) { + case 'Text': + // Other data types like money would require some extra validation + // FIXME: crmEditable currently does not support any validation rules :( + $supportedDataTypes = array('Float', 'String', 'Int'); + $editable = in_array($spec['data_type'], $supportedDataTypes); + break; + + case 'TextArea': + $editable = TRUE; + $fieldAttributes['data-type'] = 'textarea'; + break; + + case 'Radio': + case 'Select': + case 'Select Country': + case 'Select State/Province': + $editable = TRUE; + $fieldAttributes['data-type'] = $spec['data_type'] == 'Boolean' ? 'boolean' : 'select'; + if (!$spec['is_required']) { + $fieldAttributes['data-empty-option'] = ts('- none -'); + } + break; + } } } if ($editable) { -- 2.25.1