diff --git a/classes/admin.php b/classes/admin.php index 18a18a2e..efcbd78b 100644 --- a/classes/admin.php +++ b/classes/admin.php @@ -261,7 +261,7 @@ class Admin * @return Data\Data|null * @throws \RuntimeException */ - public function data($type, $post = array()) + public function data($type, array $post = []) { static $data = []; @@ -270,7 +270,7 @@ class Admin } if (!$post) { - $post = isset($_POST) ? $_POST : []; + $post = isset($_POST['data']) ? $_POST['data'] : []; } switch ($type) { diff --git a/classes/controller.php b/classes/controller.php index cf3bef2d..e89f517b 100644 --- a/classes/controller.php +++ b/classes/controller.php @@ -52,6 +52,11 @@ class AdminController */ public $post; + /** + * @var array|null + */ + public $data; + /** * @var Admin */ @@ -79,6 +84,10 @@ class AdminController $this->grav = $grav; $this->view = $view; $this->task = $task ? $task : 'display'; + if (isset($post['data'])) { + $this->data = $this->getPost($post['data']); + unset($post['data']); + } $this->post = $this->getPost($post); $this->route = $route; $this->admin = $this->grav['admin']; @@ -898,7 +907,7 @@ class AdminController // Filter value and save it. $this->post = ['enabled' => true]; - $obj = $this->prepareData(); + $obj = $this->prepareData($this->post); $obj->save(); $this->post = ['_redirect' => 'plugins']; @@ -924,7 +933,7 @@ class AdminController // Filter value and save it. $this->post = ['enabled' => false]; - $obj = $this->prepareData(); + $obj = $this->prepareData($this->post); $obj->save(); $this->post = ['_redirect' => 'plugins']; @@ -1244,7 +1253,7 @@ class AdminController return false; } - $data = $this->post; + $data = (array) $this->data; if ($data['route'] == '/') { $path = $this->grav['locator']->findResource('page://'); @@ -1323,7 +1332,7 @@ class AdminController return false; } - $data = $this->post; + $data = (array) $this->data; $config = $this->grav['config']; @@ -1395,7 +1404,7 @@ class AdminController } else { // Handle standard data types. - $obj = $this->prepareData(); + $obj = $this->prepareData($data); $obj = $this->processFiles($obj); $obj->validate(); $obj->filter(); @@ -1479,7 +1488,7 @@ class AdminController return false; } - $data = $this->post; + $data = (array) $this->data; $route = $data['route'] != '/' ? $data['route'] : ''; $folder = ltrim($data['folder'], '_'); if (!empty($data['modular'])) { @@ -1662,7 +1671,7 @@ class AdminController return false; } - $data = $this->post; + $data = (array) $this->data; $language = $data['lang']; if ($language) { @@ -1802,7 +1811,7 @@ class AdminController * * @return array */ - protected function &getPost($post) + protected function getPost($post) { unset($post['task']); @@ -1852,10 +1861,10 @@ class AdminController * * @return object */ - protected function prepareData() + protected function prepareData(array $data) { $type = trim("{$this->view}/{$this->admin->route}", '/'); - $data = $this->admin->data($type, $this->post); + $data = $this->admin->data($type, $data); return $data; } @@ -1905,7 +1914,7 @@ class AdminController */ protected function preparePage(Page $page, $clean_header = false, $language = '') { - $input = $this->post; + $input = (array) $this->data; if (isset($input['order'])) { $order = max(0, (int)isset($input['order']) ? $input['order'] : $page->value('order')); diff --git a/themes/grav/templates/forms/fields/list/list.html.twig b/themes/grav/templates/forms/fields/list/list.html.twig index d8da4824..a476b9a2 100644 --- a/themes/grav/templates/forms/fields/list/list.html.twig +++ b/themes/grav/templates/forms/fields/list/list.html.twig @@ -1,5 +1,5 @@ {% set value = (value is null ? field.default : value) %} -{% set name = scope ~ field.name %} +{% set name = field.name %} {% set btnLabel = field.btnLabel is defined ? field.btnLabel : "PLUGIN_ADMIN.ADD_ITEM" %} diff --git a/themes/grav/templates/partials/blueprints-new-folder.html.twig b/themes/grav/templates/partials/blueprints-new-folder.html.twig index 6e222145..b12184ab 100644 --- a/themes/grav/templates/partials/blueprints-new-folder.html.twig +++ b/themes/grav/templates/partials/blueprints-new-folder.html.twig @@ -1,4 +1,5 @@ {% set form_id = form_id ? form_id : 'blueprints' %} +{% set scope = scope ?: 'data.' %}