mirror of
https://github.com/flextype/flextype.git
synced 2025-08-14 17:14:22 +02:00
- Entries Controller/Views implementation
This commit is contained in:
@@ -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']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user