diff options
Diffstat (limited to 'application/forms/BasketUploadForm.php')
-rw-r--r-- | application/forms/BasketUploadForm.php | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/application/forms/BasketUploadForm.php b/application/forms/BasketUploadForm.php index a88dc06..aa26258 100644 --- a/application/forms/BasketUploadForm.php +++ b/application/forms/BasketUploadForm.php @@ -25,10 +25,12 @@ class BasketUploadForm extends DirectorObjectForm */ public function setup() { - $this->addElement('text', 'basket_name', [ - 'label' => $this->translate('Basket Name'), - 'required' => true, - ]); + if ($this->object === null) { + $this->addElement('text', 'basket_name', [ + 'label' => $this->translate('Basket Name'), + 'required' => true, + ]); + } $this->setAttrib('enctype', 'multipart/form-data'); $this->addElement('file', 'uploaded_file', [ @@ -53,16 +55,6 @@ class BasketUploadForm extends DirectorObjectForm return '\\Icinga\\Module\\Director\\DirectorObject\\Automation\\Basket'; } - protected function setObjectSuccessUrl() - { - /** @var Basket $basket */ - $basket = $this->object(); - $this->setSuccessUrl( - 'director/basket', - ['name' => $basket->get('basket_name')] - ); - } - /** * @return bool * @throws IcingaException @@ -134,13 +126,17 @@ class BasketUploadForm extends DirectorObjectForm $basket->set('owner_type', 'user'); $basket->set('owner_value', $this->getAuth()->getUser()->getUsername()); - $basket->store($this->db); + if ($basket->hasBeenLoadedFromDb()) { + $this->setSuccessUrl('director/basket/snapshots', ['name' => $basket->get('basket_name')]); + } else { + $this->setSuccessUrl('director/basket', ['name' => $basket->get('basket_name')]); + $basket->store($this->db); + } BasketSnapshot::forBasketFromJson( $basket, $this->rawUpload )->store($this->db); - $this->setObjectSuccessUrl(); $this->beforeSuccessfulRedirect(); $this->redirectOnSuccess($this->translate('Basket has been uploaded')); } |