Admin_WorkflowController::getWorkflowFormAction PHP Метод

getWorkflowFormAction() публичный Метод

Returns a JSON of the available workflow actions to the admin panel
    public function getWorkflowFormAction()
    {
        $params = $this->getParam('workflow', []);
        $manager = $this->getWorkflowManager();
        $workflow = $manager->getWorkflow();
        //this is the default returned workflow data
        $wfConfig = ['message' => '', 'available_actions' => [], 'available_states' => [], 'available_statuses' => [], 'notes_required' => false, 'additional_fields' => []];
        try {
            //get user selections
            $this->selectedAction = empty($params['action']) ? null : $params['action'];
            $this->newState = empty($params['newState']) ? null : $params['newState'];
            $this->newStatus = empty($params['newStatus']) ? null : $params['newStatus'];
            //always return the available actions
            $wfConfig['available_actions'] = $this->getDecorator()->getAvailableActionsForForm($manager->getAvailableActions());
            //if only one action select it by default
            if (count($wfConfig['available_actions']) === 1) {
                $this->selectedAction = $wfConfig['available_actions'][0]['value'];
            } elseif ($this->selectedAction && !$workflow->isValidAction($this->selectedAction)) {
                $this->selectedAction = null;
            }
            //if user has selected an action & it's valid
            if ($this->selectedAction) {
                //set the available states for this action
                $wfConfig['available_states'] = $this->getDecorator()->getAvailableStatesForForm($manager->getAvailableStates($this->selectedAction));
                //validate the new state
                if (count($wfConfig['available_states']) === 1) {
                    $this->newState = $wfConfig['available_states'][0]['value'];
                } elseif ($this->newState && !$workflow->isValidState($this->newState)) {
                    $this->newState = null;
                }
                //load the available statuses, notes and additional fields
                if ($this->newState) {
                    $wfConfig['available_statuses'] = $this->getDecorator()->getAvailableStatusesForForm($manager->getAvailableStatuses($this->selectedAction, $this->newState));
                    // fetch additional fields, using the current status of the element
                    // to load additional fields that may be required
                    $wfConfig['notes_required'] = $manager->getNotesRequiredForAction($this->selectedAction);
                    $wfConfig['additional_fields'] = $manager->getAdditionalFieldsForAction($this->selectedAction);
                }
            }
        } catch (\Exception $e) {
            $wfConfig['message'] = $e->getMessage();
        }
        $this->_helper->json($wfConfig);
    }