chg: [metaTemplate] Moved to namespaced meta fields based on their
template - WiPpull/37/head
parent
97b6ed8cbf
commit
14509edef8
|
@ -48,7 +48,7 @@ class CRUDComponent extends Component
|
||||||
|
|
||||||
private function getMetaTemplates()
|
private function getMetaTemplates()
|
||||||
{
|
{
|
||||||
$metaFields = [];
|
$metaTemplates = [];
|
||||||
if (!empty($this->Table->metaFields)) {
|
if (!empty($this->Table->metaFields)) {
|
||||||
$metaQuery = $this->MetaTemplates->find();
|
$metaQuery = $this->MetaTemplates->find();
|
||||||
$metaQuery->where([
|
$metaQuery->where([
|
||||||
|
@ -57,13 +57,8 @@ class CRUDComponent extends Component
|
||||||
]);
|
]);
|
||||||
$metaQuery->contain(['MetaTemplateFields']);
|
$metaQuery->contain(['MetaTemplateFields']);
|
||||||
$metaTemplates = $metaQuery->all();
|
$metaTemplates = $metaQuery->all();
|
||||||
foreach ($metaTemplates as $metaTemplate) {
|
|
||||||
foreach ($metaTemplate->meta_template_fields as $field) {
|
|
||||||
$metaFields[$field['field']] = $field;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$this->Controller->set('metaFields', $metaFields);
|
$this->Controller->set('metaTemplates', $metaTemplates);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,18 +131,30 @@ class CRUDComponent extends Component
|
||||||
|
|
||||||
private function saveMetaFields($id, $input)
|
private function saveMetaFields($id, $input)
|
||||||
{
|
{
|
||||||
foreach ($input['metaFields'] as $metaField => $values) {
|
foreach ($input['metaFields'] as $templateID => $metaFields) {
|
||||||
if (!is_array($values)) {
|
$metaTemplates = $this->MetaTemplates->find()->where([
|
||||||
$values = [$values];
|
'id' => $templateID,
|
||||||
|
'enabled' => 1
|
||||||
|
])->contain(['MetaTemplateFields'])->first();
|
||||||
|
$fieldNameToId = [];
|
||||||
|
foreach ($metaTemplates->meta_template_fields as $i => $metaTemplateField) {
|
||||||
|
$fieldNameToId[$metaTemplateField->field] = $metaTemplateField->id;
|
||||||
}
|
}
|
||||||
foreach ($values as $value) {
|
foreach ($metaFields as $metaField => $values) {
|
||||||
if ($value !== '') {
|
if (!is_array($values)) {
|
||||||
$temp = $this->MetaFields->newEmptyEntity();
|
$values = [$values];
|
||||||
$temp->field = $metaField;
|
}
|
||||||
$temp->value = $value;
|
foreach ($values as $value) {
|
||||||
$temp->scope = $this->Table->metaFields;
|
if ($value !== '') {
|
||||||
$temp->parent_id = $id;
|
$temp = $this->MetaFields->newEmptyEntity();
|
||||||
$this->MetaFields->save($temp);
|
$temp->field = $metaField;
|
||||||
|
$temp->value = $value;
|
||||||
|
$temp->scope = $this->Table->metaFields;
|
||||||
|
$temp->parent_id = $id;
|
||||||
|
$temp->meta_template_id = $templateID;
|
||||||
|
$temp->meta_template_field_id = $fieldNameToId[$metaField];
|
||||||
|
$this->MetaFields->save($temp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -227,7 +234,7 @@ class CRUDComponent extends Component
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
$query = $this->MetaFields->find();
|
$query = $this->MetaFields->find();
|
||||||
$query->where(['scope' => $this->Table->metaFields, 'parent_id' => $id]);
|
$query->where(['MetaFields.scope' => $this->Table->metaFields, 'MetaFields.parent_id' => $id]);
|
||||||
$metaFields = $query->all();
|
$metaFields = $query->all();
|
||||||
$data['metaFields'] = [];
|
$data['metaFields'] = [];
|
||||||
foreach($metaFields as $metaField) {
|
foreach($metaFields as $metaField) {
|
||||||
|
|
|
@ -13,6 +13,8 @@ class MetaFieldsTable extends AppTable
|
||||||
parent::initialize($config);
|
parent::initialize($config);
|
||||||
$this->addBehavior('UUID');
|
$this->addBehavior('UUID');
|
||||||
$this->setDisplayField('field');
|
$this->setDisplayField('field');
|
||||||
|
$this->hasOne('MetaTemplates');
|
||||||
|
$this->belongsTo('MetaTemplateFields');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validationDefault(Validator $validator): Validator
|
public function validationDefault(Validator $validator): Validator
|
||||||
|
@ -22,7 +24,9 @@ class MetaFieldsTable extends AppTable
|
||||||
->notEmptyString('field')
|
->notEmptyString('field')
|
||||||
->notEmptyString('uuid')
|
->notEmptyString('uuid')
|
||||||
->notEmptyString('value')
|
->notEmptyString('value')
|
||||||
->requirePresence(['scope', 'field', 'value', 'uuid'], 'create');
|
->notEmptyString('meta_template_id')
|
||||||
|
->notEmptyString('meta_template_field_id')
|
||||||
|
->requirePresence(['scope', 'field', 'value', 'uuid', 'meta_template_id', 'meta_template_field_id'], 'create');
|
||||||
return $validator;
|
return $validator;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,6 +138,13 @@ class BootstrapTabs extends Helper
|
||||||
$this->data['navs'][$activeTab]['active'] = true;
|
$this->data['navs'][$activeTab]['active'] = true;
|
||||||
|
|
||||||
$this->options['vertical-size'] = $this->options['vertical-size'] < 0 || $this->options['vertical-size'] > 11 ? 3 : $this->options['vertical-size'];
|
$this->options['vertical-size'] = $this->options['vertical-size'] < 0 || $this->options['vertical-size'] > 11 ? 3 : $this->options['vertical-size'];
|
||||||
|
|
||||||
|
if (!is_array($this->options['nav-class'])) {
|
||||||
|
$this->options['nav-class'] = [$this->options['nav-class']];
|
||||||
|
}
|
||||||
|
if (!is_array($this->options['content-class'])) {
|
||||||
|
$this->options['content-class'] = [$this->options['content-class']];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function checkOptionValidity()
|
private function checkOptionValidity()
|
||||||
|
|
|
@ -29,7 +29,8 @@
|
||||||
'field' => 'type'
|
'field' => 'type'
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
'metaFields' => empty($metaFields) ? [] : $metaFields,
|
// 'metaFields' => empty($metaFields) ? [] : $metaFields,
|
||||||
|
'metaTemplates' => empty($metaTemplates) ? [] : $metaTemplates,
|
||||||
'submit' => array(
|
'submit' => array(
|
||||||
'action' => $this->request->getParam('action')
|
'action' => $this->request->getParam('action')
|
||||||
)
|
)
|
||||||
|
|
|
@ -62,19 +62,12 @@
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$metaFieldString = '';
|
$metaTemplateString = $this->element(
|
||||||
if (!empty($data['metaFields'])) {
|
'genericElements/Form/metaTemplateScaffold', [
|
||||||
foreach ($data['metaFields'] as $metaField) {
|
'metaTemplatesData' => $data['metaTemplates'],
|
||||||
$metaField['label'] = \Cake\Utility\Inflector::humanize($metaField['field']);
|
'form' => $this->Form,
|
||||||
$metaField['field'] = 'metaFields.' . $metaField['field'];
|
]
|
||||||
$metaFieldString .= $this->element(
|
);
|
||||||
'genericElements/Form/fieldScaffold', [
|
|
||||||
'fieldData' => $metaField->toArray(),
|
|
||||||
'form' => $this->Form
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$submitButtonData = ['model' => $modelForForm, 'formRandomValue' => $formRandomValue];
|
$submitButtonData = ['model' => $modelForForm, 'formRandomValue' => $formRandomValue];
|
||||||
if (!empty($data['submit'])) {
|
if (!empty($data['submit'])) {
|
||||||
$submitButtonData = array_merge($submitButtonData, $data['submit']);
|
$submitButtonData = array_merge($submitButtonData, $data['submit']);
|
||||||
|
@ -104,9 +97,9 @@
|
||||||
$ajaxFlashMessage,
|
$ajaxFlashMessage,
|
||||||
$formCreate,
|
$formCreate,
|
||||||
$fieldsString,
|
$fieldsString,
|
||||||
empty($metaFieldString) ? '' : $this->element(
|
empty($metaTemplateString) ? '' : $this->element(
|
||||||
'genericElements/accordion_scaffold', [
|
'genericElements/accordion_scaffold', [
|
||||||
'body' => $metaFieldString,
|
'body' => $metaTemplateString,
|
||||||
'title' => 'Meta fields'
|
'title' => 'Meta fields'
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
use Cake\Utility\Inflector;
|
||||||
|
|
||||||
|
$tabData = [];
|
||||||
|
foreach($metaTemplatesData as $i => $metaTemplate) {
|
||||||
|
$tabData['navs'][$i] = [
|
||||||
|
'text' => $metaTemplate->name
|
||||||
|
];
|
||||||
|
$fieldsHtml = '';
|
||||||
|
foreach ($metaTemplate->meta_template_fields as $metaField) {
|
||||||
|
$metaField->label = Inflector::humanize($metaField->field);
|
||||||
|
$metaField->field = sprintf('%s.%s.%s', 'metaFields', $metaTemplate->id, $metaField->field);
|
||||||
|
$fieldsHtml .= $this->element(
|
||||||
|
'genericElements/Form/fieldScaffold', [
|
||||||
|
'fieldData' => $metaField->toArray(),
|
||||||
|
'form' => $this->Form
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$tabData['content'][$i] = $fieldsHtml;
|
||||||
|
}
|
||||||
|
echo $this->Bootstrap->Tabs([
|
||||||
|
'pills' => true,
|
||||||
|
'data' => $tabData,
|
||||||
|
'nav-class' => ['pb-1']
|
||||||
|
]);
|
Loading…
Reference in New Issue