1
0
mirror of https://github.com/flextype/flextype.git synced 2025-08-23 13:23:18 +02:00

feat(admin-plugin): add new heading field #299

This commit is contained in:
Awilum
2019-12-01 11:01:35 +03:00
parent 5f560cf803
commit c40ab3e758

View File

@@ -193,62 +193,61 @@ class EntriesController extends Controller
// Check if entry exists then try to create
if (!$this->entries->has($id)) {
// Check if we have fieldset for this entry
if ($this->fieldsets->has($data['fieldset'])) {
// Get fieldset
$fieldset = $this->fieldsets->fetch($data['fieldset']);
// We need to check if template for current fieldset is exists
// if template is not exist then default template will be used!
// if template is not exist then `default` template will be used!
$template_path = PATH['themes'] . '/' . $this->registry->get('settings.theme') . '/templates/' . $data['fieldset'] . '.html';
$template = (Filesystem::has($template_path)) ? $data['fieldset'] : 'default';
// Init entry data
$data_from_post = [];
$_data_from_post = [];
$data_result = [];
$data_from_post = [];
$data_from_post_override = [];
$data_result = [];
// Define data values based on POST data
$data_from_post['title'] = $data['title'];
$data_from_post['template'] = $template;
$data_from_post['fieldset'] = $data['fieldset'];
$data_from_post['title'] = $data['title'];
$data_from_post['template'] = $template;
$data_from_post['fieldset'] = $data['fieldset'];
// Predefine data values based on selected fieldset
foreach ($fieldset['sections'] as $key => $section) {
foreach ($section['fields'] as $element => $property) {
// Predefine data values based on fieldset default values
foreach ($fieldset['sections'] as $section_name => $section_body) {
foreach ($section_body['fields'] as $field => $properties) {
// Ingnore fields where property: heading
if ($properties['type'] == 'heading') {
continue;
}
// Get values from $data_from_post
if (isset($data_from_post[$element])) {
$value = $data_from_post[$element];
if (isset($data_from_post[$field])) {
$value = $data_from_post[$field];
// Get values from fieldsets predefined field values
} elseif (isset($property['value'])) {
$value = $property['value'];
} elseif (isset($properties['value'])) {
$value = $properties['value'];
// or set empty value
} else {
$value = '';
}
$_data_from_post[$element] = $value;
$data_from_post_override[$field] = $value;
}
}
// Merge data
if(count($_data_from_post) > 0) {
$data_result = array_replace_recursive($_data_from_post, $data_from_post);
if (count($data_from_post_override) > 0) {
$data_result = array_replace_recursive($data_from_post_override, $data_from_post);
} else {
$data_result = $data_from_post;
}
if ($this->entries->create($id, $data_result)) {
$this->clearEntryCounter($parent_entry_id);
$this->flash->addMessage('success', __('admin_message_entry_created'));
} else {
$this->flash->addMessage('error', __('admin_message_entry_was_not_created'));
}
} else {
$this->flash->addMessage('error', __('admin_message_fieldset_not_found'));
}