From 58622151ae790ba755025a6e3e55aba32ce25fe7 Mon Sep 17 00:00:00 2001 From: Awilum Date: Thu, 16 May 2019 19:10:57 +0300 Subject: [PATCH] Flextype Box Plugin: Admin #125 #117 - Entries Controller/Views implementation --- .../app/Controllers/EntriesController.php | 56 ++++++++++++++++++- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/site/plugins/admin/app/Controllers/EntriesController.php b/site/plugins/admin/app/Controllers/EntriesController.php index 990eecc8..2c570aed 100644 --- a/site/plugins/admin/app/Controllers/EntriesController.php +++ b/site/plugins/admin/app/Controllers/EntriesController.php @@ -221,7 +221,7 @@ class EntriesController extends Controller Arr::delete($_data, 'entry'); $data = array_merge($entry, $_data); - + if ($this->entries->update( $entry_name, $data @@ -231,13 +231,63 @@ class EntriesController extends Controller $this->flash->addMessage('success', __('admin_message_entry_was_not_moved')); } - return $response->withRedirect($this->container->get('router')->urlFor('admin.entries.index') . '?entry=' . $data['parent_entry']); + return $response->withRedirect($this->container->get('router')->urlFor('admin.entries.index') . '?entry=' . implode('/', array_slice(explode("/", $entry_name), 0, -1))); } - public function move($request, $response, $args) { + $entry_name = $this->getEntriesQuery($request->getQueryParams()['entry']); + $entry = $this->entries->fetch($this->getEntriesQuery($request->getQueryParams()['entry'])); + $_entries_list = $this->entries->fetchAll('', 'slug'); + $entries_list['/'] = '/'; + foreach ($_entries_list as $_entry) { + if ($_entry['slug'] != '') { + $entries_list[$_entry['slug']] = $_entry['slug']; + } else { + $entries_list[$this->registry->get('settings.entries.main')] = $this->registry->get('settings.entries.main'); + } + } + + return $this->view->render($response, + 'plugins/admin/views/templates/content/entries/move.html', [ + 'entry_path_current' => $entry_name, + 'entries_list' => $entries_list, + 'name_current' => Arr::last(explode("/", $entry_name)), + 'entry_parent' => implode('/', array_slice(explode("/", $entry_name), 0, -1)), + 'menu_item' => 'entries', + 'links' => [ + 'entries' => [ + 'link' => $this->router->urlFor('admin.entries.index'), + 'title' => __('admin_entries'), + 'attributes' => ['class' => 'navbar-item'] + ], + 'entries_move' => [ + 'link' => $this->router->urlFor('admin.entries.move'), + 'title' => __('admin_move'), + 'attributes' => ['class' => 'navbar-item active'] + ] + ] + ]); + } + + public function moveProcess($request, $response, $args) + { + + $data = $request->getParsedBody(); + + if (!$this->entries->has($data['parent_entry'] . '/' . $data['name_current'])) { + if ($this->entries->rename( + $data['entry_path_current'], + $data['parent_entry'] . '/' . Text::safeString($data['name_current'], '-', true) + )) { + $this->flash->addMessage('success', __('admin_message_entry_moved')); + } else { + $this->flash->addMessage('success', __('admin_message_entry_was_not_moved')); + } + + return $response->withRedirect($this->container->get('router')->urlFor('admin.entries.index') . '?entry=' . $data['parent_entry']); + } } public function rename($request, $response, $args)