From 2f24b50d2c71dfb49a74c616d84ebc8c6ce23c77 Mon Sep 17 00:00:00 2001 From: Sergi Tur Badenas Date: Sun, 4 Oct 2015 07:55:28 +0200 Subject: [PATCH] redirectBackURL could be explicitly changed by users If not redirectBackURL input is explicitly specified by will come back to display url (list of current model items) --- src/SleepingOwl/Admin/Form/FormDefault.php | 47 +++++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/src/SleepingOwl/Admin/Form/FormDefault.php b/src/SleepingOwl/Admin/Form/FormDefault.php index 17debee2..003935b9 100644 --- a/src/SleepingOwl/Admin/Form/FormDefault.php +++ b/src/SleepingOwl/Admin/Form/FormDefault.php @@ -1,6 +1,7 @@ beSureIsAbsoluteURL($redirect_back); + } else { + return $this->display_url($this->class); + } + + } + + protected function beSureIsAbsoluteURL($url) { + if (starts_with($url,'http://') || starts_with($url,'https://')) { + return $url; + } else { + if (starts_with($url,'/')) { + return URL::to('/') . $url; + } else { + return URL::to('/') . '/'. $url; + } + } + } + + /** + * Get display URL (list of item models) + * @param $model + * @return string + * @throws ModelNotFoundException + */ + protected function display_url($model) { + if (array_key_exists($model,Admin::modelAliases())) { + $alias = Admin::modelAliases()[$model]; + return URL::to('/') . '/' . Config::get('admin.prefix') . '/' . $alias ; + } else { + throw new ModelNotFoundException; + } + } + /** * @return View */ @@ -224,7 +267,7 @@ public function render() 'items' => $this->items(), 'instance' => $this->instance(), 'action' => $this->action, - 'backUrl' => session('_redirectBack', URL::previous()), + 'backUrl' => $this->obtainRedirectBack(), ]; return view(AdminTemplate::view('form.' . $this->view), $params); } @@ -237,4 +280,4 @@ function __toString() return (string)$this->render(); } -} \ No newline at end of file +}