1
0
mirror of https://github.com/flextype/flextype.git synced 2025-08-14 17:14:22 +02:00

Flextype Box Plugin: Admin #125 #117

- Entries Controller/Views implementation
This commit is contained in:
Awilum
2019-05-13 12:37:28 +03:00
parent c607da774f
commit c48fded722

View File

@@ -5,6 +5,7 @@ namespace Flextype;
use Flextype\Component\Filesystem\Filesystem;
use Flextype\Component\Date\Date;
use Flextype\Component\Arr\Arr;
use Flextype\Component\Text\Text;
use Flextype\Component\Registry\Registry;
use function Flextype\Component\I18n\__;
@@ -87,5 +88,78 @@ class EntriesController extends Controller
public function addProcess($request, $response, $args)
{
$data = $request->getParsedBody();
// Set parent entry
if ($data['parent_entry']) {
$parent_entry = '/' . $data['parent_entry'];
} else {
$parent_entry = '/';
}
// Set new entry name
$entry = $parent_entry . Text::safeString($data['slug'], '-', true);
// Check if new entry exists
if (!$this->entries->has($entry)) {
// Get fieldset
$fieldset = JsonParser::decode(Filesystem::read(PATH['themes'] . '/' . $this->registry->get('settings.theme') . '/fieldsets/' . $data['fieldset'] . '.json'));
// We need to check if template for current fieldset is exists
// if template is not exist then default template will be used!
$template_path = PATH['themes'] . '/' . $this->registry->get('settings.theme') . '/views/templates/' . $data['fieldset'] . '.html';
if (Filesystem::has($template_path)) {
$template = $data['fieldset'];
} else {
$template = 'default';
}
// Init entry data
$data = [];
$default_data = [];
// Define data values based on POST data
$default_data['title'] = $data['title'];
$default_data['template'] = $template;
$default_data['fieldset'] = $data['fieldset'];
$default_data['date'] = date($this->registry->get('settings.date_format'), time());
// Predefine data values based on selected fieldset
foreach ($fieldset['sections'] as $section) {
foreach ($section as $key => $field) {
// Get values from default data
if (isset($default_data[$key])) {
$_value = $default_data[$key];
// Get values from fieldsets predefined field values
} elseif (isset($field['value'])) {
$_value = $field['value'];
// or set empty value
} else {
$_value = '';
}
$data[$key] = $_value;
}
}
// Merge data
$data = array_replace_recursive($data, $default_data);
if ($this->entries->create($entry, $data)) {
$this->flash->addMessage('success', __('admin_message_entry_created'));
} else {
$this->flash->addMessage('success', __('admin_message_entry_was_not_created'));
}
return $response->withRedirect($this->container->get('router')->urlFor('admin.entries.index') . '?entry=' . $data['parent_entry']);
}
}
}