From 8e5720f7b93dcda9cd76a1ad3f1b959e60536c6d Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 27 Sep 2016 18:21:11 +0300 Subject: [PATCH] Improve multi-site support --- admin.php | 16 +++++++++++----- classes/controller.php | 6 +++--- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/admin.php b/admin.php index 5310f44f..6355955d 100644 --- a/admin.php +++ b/admin.php @@ -41,6 +41,11 @@ class AdminPlugin extends Plugin */ protected $route; + /** + * @var string + */ + protected $admin_route; + /** * @var Uri */ @@ -97,6 +102,7 @@ class AdminPlugin extends Plugin } $this->base = '/' . trim($route, '/'); + $this->admin_route = rtrim($this->grav['pages']->base(), '/') . $this->base; $this->uri = $this->grav['uri']; // check for existence of a user account @@ -106,7 +112,7 @@ class AdminPlugin extends Plugin // If no users found, go to register if ($user_check == false || count((array)$user_check) == 0) { if (!$this->isAdminPath()) { - $this->grav->redirect($this->base); + $this->grav->redirect($this->admin_route); } $this->template = 'register'; } @@ -236,7 +242,7 @@ class AdminPlugin extends Plugin $messages = $this->grav['messages']; $messages->add($this->grav['language']->translate('PLUGIN_ADMIN.LOGIN_LOGGED_IN'), 'info'); - $this->grav->redirect($this->base); + $this->grav->redirect($this->admin_route); break; } @@ -429,7 +435,7 @@ class AdminPlugin extends Plugin throw new \RuntimeException('Page Not Found', 404); } } else { - $this->grav->redirect($this->base); + $this->grav->redirect($this->admin_route); } } @@ -471,7 +477,7 @@ class AdminPlugin extends Plugin $twig->twig_vars['location'] = $this->template; $twig->twig_vars['base_url_relative_frontend'] = $twig->twig_vars['base_url_relative'] ?: '/'; - $twig->twig_vars['admin_route'] = trim($this->config->get('plugins.admin.route'), '/'); + $twig->twig_vars['admin_route'] = trim($this->admin_route, '/'); $twig->twig_vars['base_url_relative'] = $twig->twig_vars['base_url_simple'] . '/' . $twig->twig_vars['admin_route']; $theme_url = '/' . ltrim($this->grav['locator']->findResource('plugin://admin/themes/' . $this->theme, false), '/'); @@ -660,7 +666,7 @@ class AdminPlugin extends Plugin $this->route = array_shift($array); } - $this->admin = new Admin($this->grav, $this->base, $this->template, $this->route); + $this->admin = new Admin($this->grav, $this->admin_route, $this->template, $this->route); // And store the class into DI container. diff --git a/classes/controller.php b/classes/controller.php index 66d25473..d166057e 100644 --- a/classes/controller.php +++ b/classes/controller.php @@ -1552,7 +1552,7 @@ class AdminController $this->admin->setMessage($this->admin->translate('PLUGIN_ADMIN.SUCCESSFULLY_SAVED'), 'info'); $multilang = $this->isMultilang(); - $admin_route = $this->grav['config']->get('plugins.admin.route'); + $admin_route = $this->admin->base; $redirect_url = '/' . ($multilang ? ($this->grav['session']->admin_lang) : '') . $admin_route . '/' . $this->view; $this->setRedirect($redirect_url); @@ -1978,7 +1978,7 @@ class AdminController $obj->language($this->grav['session']->admin_lang); } } - $admin_route = $this->grav['config']->get('plugins.admin.route'); + $admin_route = $this->admin->base; //Handle system.home.hide_in_urls $route = $obj->route(); @@ -2281,7 +2281,7 @@ class AdminController $this->admin->setMessage($this->admin->translate('PLUGIN_ADMIN.SUCCESSFULLY_SWITCHED_LANGUAGE'), 'info'); - $admin_route = $this->grav['config']->get('plugins.admin.route'); + $admin_route = $this->admin->base; $this->setRedirect('/' . $language . $admin_route . '/' . $redirect); }