Skip to content

Commit

Permalink
[Improvement]: Added grid preview for field collections (#663)
Browse files Browse the repository at this point in the history
* added grid preview for field collections

* added grid preview for field collections

* remove console log

* fix grid options preview

* fix security hotspot

---------

Co-authored-by: JiaJia Ji <kingjia90@gmail.com>
  • Loading branch information
fashxp and kingjia90 authored Sep 18, 2024
1 parent 70a3d4e commit a4fa58f
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 2 deletions.
53 changes: 52 additions & 1 deletion public/js/pimcore/object/tags/fieldcollections.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,62 @@ 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 = '';
let plainText = false;
let 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 (plainText) {
preview += this.generatePlainTextPreview(fieldCollectionItem);
} else {
if (previousFieldCollectionItemType !== fieldCollectionItem.type) {
preview += `<h3 style="margin-top: 0">${t(fieldCollectionItem.type)}</h3>`;
previousFieldCollectionItemType = fieldCollectionItem.type;
}

preview += `<div style="margin-bottom: 10px; border-bottom: 1px solid #e9e9e9; overflow: auto; white-space: normal">`;
for (let fieldKey in fieldCollectionItem.data) {
if (!fieldCollectionItem.data.hasOwnProperty(fieldKey)) {
continue;
}

preview += `<div style=""><b>${t(fieldCollectionItem.data[fieldKey].title)}:</b></div>`;
preview += `<div style="margin-bottom: 5px">${fieldCollectionItem.data[fieldKey].value ? fieldCollectionItem.data[fieldKey].value : '-'}</div>`;
}
preview += `</div>`;
}
}

return t("not_supported");
return preview;
}.bind(this, field.key)};
},
generatePlainTextPreview: function (fieldCollectionItem) {
let preview = `<b>${t(fieldCollectionItem.type)}</b> - `;
for (let fieldKey in fieldCollectionItem.data) {
if (!fieldCollectionItem.data.hasOwnProperty(fieldKey)) {
continue;
}
preview += `<b>${t(fieldCollectionItem.data[fieldKey].title)}:</b><br>`;
if (fieldCollectionItem.data[fieldKey].value) {
preview += `${Ext.util.Format.stripTags(fieldCollectionItem.data[fieldKey].value)}`;
}else{
preview += '-';
}
}

return preview;
},
loadFieldDefinitions: function () {

var allowedTypes = this.fieldConfig.allowedTypes;
Expand Down
2 changes: 1 addition & 1 deletion src/Service/GridData/DataObject.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit a4fa58f

Please sign in to comment.