disableCsrfValidation(); $this->supported_popups = [ 'acknowledge.edit' => _('Update problem') ]; } protected function checkInput() { $fields = [ 'popup_action' => 'required|in '.implode(',', array_keys($this->supported_popups)) ]; $ret = $this->validateInput($fields); if ($ret) { /** @var CRouter $router */ $router = clone APP::Component()->get('router'); $router->setAction('popup.'.$this->getInput('popup_action')); $popup_controller_class = $router->getController(); $this->popup_controller = new $popup_controller_class; $ret = $this->popup_controller->checkInput(); } if (!$ret) { $this->setResponse(new CControllerResponseFatal()); } return $ret; } protected function checkPermissions() { return $this->popup_controller->checkPermissions(); } protected function doAction() { $data = [ 'popup' => [ 'action' => 'popup.'.$this->getInput('popup_action'), 'options' => $this->popup_controller->getInputAll() ] ]; $response = (new CControllerResponseData($data)); $response->setTitle($this->supported_popups[$this->getInput('popup_action')]); $this->setResponse($response); } }