chg: [singleViews] Meta data are now clustered based on their template namespace
parent
4cfff0fce4
commit
340626ce4e
|
@ -235,6 +235,23 @@ class CRUDComponent extends Component
|
|||
$this->Controller->set('entity', $data);
|
||||
}
|
||||
|
||||
public function attachMetaData($id, $data)
|
||||
{
|
||||
if (empty($this->Table->metaFields)) {
|
||||
return $data;
|
||||
}
|
||||
$query = $this->MetaFields->MetaTemplates->find();
|
||||
$query->contain('MetaTemplateFields', function ($q) {
|
||||
return $q->innerJoinWith('MetaFields');
|
||||
});
|
||||
$query->innerJoinWith('MetaTemplateFields', function ($q) {
|
||||
return $q->contain('MetaFields')->innerJoinWith('MetaFields');
|
||||
});
|
||||
$metaTemplates = $query->all();
|
||||
$data['metaTemplates'] = $metaTemplates;
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function getMetaFields($id, $data)
|
||||
{
|
||||
if (empty($this->Table->metaFields)) {
|
||||
|
@ -257,7 +274,7 @@ class CRUDComponent extends Component
|
|||
}
|
||||
|
||||
$data = $this->Table->get($id, $params);
|
||||
$data = $this->getMetaFields($id, $data);
|
||||
$data = $this->attachMetaData($id, $data);
|
||||
if ($this->Controller->ParamHandler->isRest()) {
|
||||
$this->Controller->restResponsePayload = $this->Controller->RestResponse->viewData($data, 'json');
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ class MetaFieldsTable extends AppTable
|
|||
parent::initialize($config);
|
||||
$this->addBehavior('UUID');
|
||||
$this->setDisplayField('field');
|
||||
$this->hasOne('MetaTemplates');
|
||||
$this->belongsTo('MetaTemplates');
|
||||
$this->belongsTo('MetaTemplateFields');
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ class MetaTemplateFieldsTable extends AppTable
|
|||
$this->BelongsTo(
|
||||
'MetaTemplates'
|
||||
);
|
||||
$this->hasMany('MetaFields');
|
||||
$this->setDisplayField('field');
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ echo $this->element(
|
|||
'scope' => 'organisations'
|
||||
]
|
||||
],
|
||||
'metaFields' => empty($metaFields) ? [] : $metaFields,
|
||||
'metaTemplates' => empty($metaFields) ? [] : $metaFields,
|
||||
'children' => []
|
||||
]
|
||||
);
|
||||
|
|
|
@ -43,22 +43,39 @@
|
|||
);
|
||||
}
|
||||
}
|
||||
if (!empty($data['metaFields'])) {
|
||||
foreach ($data['metaFields'] as $metaField => $value) {
|
||||
$listElements .= sprintf(
|
||||
$metaTemplateTabs = '';
|
||||
if (!empty($data['metaTemplates'])) {
|
||||
$tabData = [
|
||||
'navs' => [],
|
||||
'content' => []
|
||||
];
|
||||
foreach($data['metaTemplates'] as $metaTemplate) {
|
||||
$tabData['navs'][] = $metaTemplate->namespace;
|
||||
$fieldsHtml = '<table class="table table-striped col-sm-8">';
|
||||
foreach ($metaTemplate->meta_template_fields as $metaTemplateField) {
|
||||
$metaField = $metaTemplateField->meta_fields[0];
|
||||
$fieldsHtml .= sprintf(
|
||||
'<tr class="row"><td class="col-sm-2 font-weight-bold">%s</td><td class="col-sm-10">%s</td></tr>',
|
||||
h($metaField),
|
||||
h($metaField->field),
|
||||
$this->element(
|
||||
'/genericElements/SingleViews/Fields/genericField',
|
||||
[
|
||||
'data' => $value,
|
||||
'data' => $metaField->value,
|
||||
'field' => [
|
||||
'raw' => $value
|
||||
'raw' => $metaField->value
|
||||
]
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
$fieldsHtml .= '</table>';
|
||||
$tabData['content'][] = $fieldsHtml;
|
||||
}
|
||||
$metaTemplateTabs = $this->Bootstrap->Tabs([
|
||||
'pills' => true,
|
||||
'card' => true,
|
||||
'data' => $tabData
|
||||
]);
|
||||
}
|
||||
$ajaxLists = '';
|
||||
if (!empty($children)) {
|
||||
|
@ -76,11 +93,12 @@
|
|||
__('{0} view', \Cake\Utility\Inflector::singularize(\Cake\Utility\Inflector::humanize($this->request->getParam('controller')))) :
|
||||
$title;
|
||||
echo sprintf(
|
||||
'<div><h2>%s</h2>%s%s<div class="px-3"><table class="table table-striped col-sm-8">%s</table></div><div id="accordion">%s</div></div>',
|
||||
'<div><h2>%s</h2>%s%s<div class="px-3"><table class="table table-striped col-sm-8">%s</table></div><div id="metaTemplates">%s</div><div id="accordion">%s</div></div>',
|
||||
h($title),
|
||||
empty($description) ? '' : sprintf('<p>%s</p>', h($description)),
|
||||
empty($description_html) ? '' : sprintf('<p>%s</p>', $description_html),
|
||||
$listElements,
|
||||
$metaTemplateTabs,
|
||||
$ajaxLists
|
||||
);
|
||||
?>
|
||||
|
|
Loading…
Reference in New Issue