From 50e8d3c6bee35d497ea44d65e1d023288b8d2d06 Mon Sep 17 00:00:00 2001 From: Christian Fasching Date: Mon, 19 Aug 2024 17:34:10 +0200 Subject: [PATCH 1/5] added grid preview for field collections --- .../pimcore/object/tags/fieldcollections.js | 29 ++++++++++++++++++- src/Service/GridData/DataObject.php | 2 +- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/public/js/pimcore/object/tags/fieldcollections.js b/public/js/pimcore/object/tags/fieldcollections.js index 583817c2ef..dd4a50a1ec 100644 --- a/public/js/pimcore/object/tags/fieldcollections.js +++ b/public/js/pimcore/object/tags/fieldcollections.js @@ -48,8 +48,35 @@ pimcore.object.tags.fieldcollections = Class.create(pimcore.object.tags.abstract return {text: t(field.label), width: 150, sortable: false, dataIndex: field.key, renderer: function (key, value, metaData, record) { this.applyPermissionStyle(key, value, metaData, record); + if(typeof record.data[key] === 'string') { + return record.data[key]; + } + + let preview = ''; + + const fieldCollectionItems = record.data[key]; + - return t("not_supported"); + for (let fieldCollectionItemKey in fieldCollectionItems) { + if (!fieldCollectionItems.hasOwnProperty(fieldCollectionItemKey)) { + continue; + } + let fieldCollectionItem = fieldCollectionItems[fieldCollectionItemKey]; + + preview += `

${t(fieldCollectionItemKey)}

`; + + preview += `
`; + for (let fieldKey in fieldCollectionItem) { + if (!fieldCollectionItem.hasOwnProperty(fieldKey)) { + continue; + } + + preview += `
${t(fieldCollectionItem[fieldKey].title)}:
`; + preview += `
${fieldCollectionItem[fieldKey].value ? fieldCollectionItem[fieldKey].value : '-'}
`; + } + preview += `
`; + } + return preview; }.bind(this, field.key)}; }, diff --git a/src/Service/GridData/DataObject.php b/src/Service/GridData/DataObject.php index 9757cc95c1..1e58e09875 100644 --- a/src/Service/GridData/DataObject.php +++ b/src/Service/GridData/DataObject.php @@ -280,7 +280,7 @@ private static function getValueForObject(Concrete $object, string $key, string $fieldDefinition = $brickClass->getFieldDefinition($brickKey, $context); } - if ($fieldDefinition->isEmpty($value)) { + if ($fieldDefinition->isEmpty($value) && $fieldDefinition->supportsInheritance()) { $parent = Service::hasInheritableParentObject($object); if (!empty($parent)) { return self::getValueForObject($parent, $key, $brickType, $brickKey, $fieldDefinition, $context, $brickDescriptor); From 9c941b973e2887605142017f8f6c2676fa2104aa Mon Sep 17 00:00:00 2001 From: Christian Fasching Date: Mon, 19 Aug 2024 17:45:54 +0200 Subject: [PATCH 2/5] added grid preview for field collections --- .../pimcore/object/tags/fieldcollections.js | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/public/js/pimcore/object/tags/fieldcollections.js b/public/js/pimcore/object/tags/fieldcollections.js index dd4a50a1ec..550f1221ff 100644 --- a/public/js/pimcore/object/tags/fieldcollections.js +++ b/public/js/pimcore/object/tags/fieldcollections.js @@ -56,23 +56,24 @@ pimcore.object.tags.fieldcollections = Class.create(pimcore.object.tags.abstract const fieldCollectionItems = record.data[key]; + console.log(fieldCollectionItems); - for (let fieldCollectionItemKey in fieldCollectionItems) { - if (!fieldCollectionItems.hasOwnProperty(fieldCollectionItemKey)) { - continue; - } - let fieldCollectionItem = fieldCollectionItems[fieldCollectionItemKey]; + let previousFieldCollectionItemType = null; + for (let fieldCollectionItem of fieldCollectionItems) { - preview += `

${t(fieldCollectionItemKey)}

`; + if(previousFieldCollectionItemType !== fieldCollectionItem.type) { + preview += `

${t(fieldCollectionItem.type)}

`; + previousFieldCollectionItemType = fieldCollectionItem.type; + } preview += `
`; - for (let fieldKey in fieldCollectionItem) { - if (!fieldCollectionItem.hasOwnProperty(fieldKey)) { + for (let fieldKey in fieldCollectionItem.data) { + if (!fieldCollectionItem.data.hasOwnProperty(fieldKey)) { continue; } - preview += `
${t(fieldCollectionItem[fieldKey].title)}:
`; - preview += `
${fieldCollectionItem[fieldKey].value ? fieldCollectionItem[fieldKey].value : '-'}
`; + preview += `
${t(fieldCollectionItem.data[fieldKey].title)}:
`; + preview += `
${fieldCollectionItem.data[fieldKey].value ? fieldCollectionItem.data[fieldKey].value : '-'}
`; } preview += `
`; } From 54ec4863438f5ea1bd93fac355dfe57d6a498884 Mon Sep 17 00:00:00 2001 From: Christian Fasching Date: Thu, 29 Aug 2024 15:03:05 +0200 Subject: [PATCH 3/5] remove console log --- public/js/pimcore/object/tags/fieldcollections.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/public/js/pimcore/object/tags/fieldcollections.js b/public/js/pimcore/object/tags/fieldcollections.js index 550f1221ff..7f16a48743 100644 --- a/public/js/pimcore/object/tags/fieldcollections.js +++ b/public/js/pimcore/object/tags/fieldcollections.js @@ -56,8 +56,6 @@ pimcore.object.tags.fieldcollections = Class.create(pimcore.object.tags.abstract const fieldCollectionItems = record.data[key]; - console.log(fieldCollectionItems); - let previousFieldCollectionItemType = null; for (let fieldCollectionItem of fieldCollectionItems) { From 8e9fe514b9bcf3f83bb440c85dde6173c8a5aa40 Mon Sep 17 00:00:00 2001 From: JiaJia Ji Date: Wed, 18 Sep 2024 14:57:50 +0200 Subject: [PATCH 4/5] fix grid options preview --- .../pimcore/object/tags/fieldcollections.js | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/public/js/pimcore/object/tags/fieldcollections.js b/public/js/pimcore/object/tags/fieldcollections.js index 7f16a48743..649531ccc5 100644 --- a/public/js/pimcore/object/tags/fieldcollections.js +++ b/public/js/pimcore/object/tags/fieldcollections.js @@ -53,32 +53,53 @@ pimcore.object.tags.fieldcollections = Class.create(pimcore.object.tags.abstract } let preview = ''; + let plainText = false; + let fieldCollectionItems = record.data[key]; - const fieldCollectionItems = record.data[key]; + if (typeof record.data.preview !== 'undefined'){ + fieldCollectionItems = record.data.preview; + plainText = true; + } let previousFieldCollectionItemType = null; for (let fieldCollectionItem of fieldCollectionItems) { - if(previousFieldCollectionItemType !== fieldCollectionItem.type) { - preview += `

${t(fieldCollectionItem.type)}

`; - previousFieldCollectionItemType = fieldCollectionItem.type; - } - - preview += `
`; - for (let fieldKey in fieldCollectionItem.data) { - if (!fieldCollectionItem.data.hasOwnProperty(fieldKey)) { - continue; + if (plainText) { + preview += this.generatePlainTextPreview(fieldCollectionItem); + } else { + if (previousFieldCollectionItemType !== fieldCollectionItem.type) { + preview += `

${t(fieldCollectionItem.type)}

`; + previousFieldCollectionItemType = fieldCollectionItem.type; } - preview += `
${t(fieldCollectionItem.data[fieldKey].title)}:
`; - preview += `
${fieldCollectionItem.data[fieldKey].value ? fieldCollectionItem.data[fieldKey].value : '-'}
`; + preview += `
`; + for (let fieldKey in fieldCollectionItem.data) { + if (!fieldCollectionItem.data.hasOwnProperty(fieldKey)) { + continue; + } + + preview += `
${t(fieldCollectionItem.data[fieldKey].title)}:
`; + preview += `
${fieldCollectionItem.data[fieldKey].value ? fieldCollectionItem.data[fieldKey].value : '-'}
`; + } + preview += `
`; } - preview += `
`; } + return preview; }.bind(this, field.key)}; }, + generatePlainTextPreview: function (fieldCollectionItem) { + let preview = `${t(fieldCollectionItem.type)} - `; + for (let fieldKey in fieldCollectionItem.data) { + if (!fieldCollectionItem.data.hasOwnProperty(fieldKey)) { + continue; + } + preview += `${t(fieldCollectionItem.data[fieldKey].title)}:
`; + preview += `${fieldCollectionItem.data[fieldKey].value ? fieldCollectionItem.data[fieldKey].value.replace(/<[^>]*>/g, '') : '-'}`; + } + return preview; + }, loadFieldDefinitions: function () { var allowedTypes = this.fieldConfig.allowedTypes; From 695d5f285fe48adc2c59b678b505264a51f78a19 Mon Sep 17 00:00:00 2001 From: JiaJia Ji Date: Wed, 18 Sep 2024 15:12:37 +0200 Subject: [PATCH 5/5] fix security hotspot --- public/js/pimcore/object/tags/fieldcollections.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/js/pimcore/object/tags/fieldcollections.js b/public/js/pimcore/object/tags/fieldcollections.js index 649531ccc5..145e9dcb7c 100644 --- a/public/js/pimcore/object/tags/fieldcollections.js +++ b/public/js/pimcore/object/tags/fieldcollections.js @@ -95,7 +95,11 @@ pimcore.object.tags.fieldcollections = Class.create(pimcore.object.tags.abstract continue; } preview += `${t(fieldCollectionItem.data[fieldKey].title)}:
`; - preview += `${fieldCollectionItem.data[fieldKey].value ? fieldCollectionItem.data[fieldKey].value.replace(/<[^>]*>/g, '') : '-'}`; + if (fieldCollectionItem.data[fieldKey].value) { + preview += `${Ext.util.Format.stripTags(fieldCollectionItem.data[fieldKey].value)}`; + }else{ + preview += '-'; + } } return preview;