/** * Fired before information is sent back to the admin UI about an element * @param \Zend_EventManager_Event $e * @throws \Exception */ public static function adminElementGetPreSendData($e) { $element = self::extractElementFromEvent($e); $returnValueContainer = $e->getParam('returnValueContainer'); $data = $returnValueContainer->getData(); //create a new namespace for WorkflowManagement //set some defaults $data['workflowManagement'] = ['hasWorkflowManagement' => false]; if (Workflow\Manager::elementCanAction($element)) { $data['workflowManagement']['hasWorkflowManagement'] = true; //see if we can change the layout $currentUser = Admin::getCurrentUser(); $manager = Workflow\Manager\Factory::getManager($element, $currentUser); $data['workflowManagement']['workflowName'] = $manager->getWorkflow()->getName(); //get the state and status $state = $manager->getElementState(); $data['workflowManagement']['state'] = $manager->getWorkflow()->getStateConfig($state); $status = $manager->getElementStatus(); $data['workflowManagement']['status'] = $manager->getWorkflow()->getStatusConfig($status); if ($element instanceof ConcreteObject) { $workflowLayoutId = $manager->getObjectLayout(); //check for !is_null here as we might want to specify 0 in the workflow config if (!is_null($workflowLayoutId)) { //load the new layout into the object container $validLayouts = Object\Service::getValidLayouts($element); //check that the layout id is valid before trying to load if (!empty($validLayouts)) { //todo check user permissions again if ($validLayouts && $validLayouts[$workflowLayoutId]) { $customLayout = ClassDefinition\CustomLayout::getById($workflowLayoutId); $customLayoutDefinition = $customLayout->getLayoutDefinitions(); Object\Service::enrichLayoutDefinition($customLayoutDefinition, $e->getParam('object')); $data["layout"] = $customLayoutDefinition; } } } } } $returnValueContainer->setData($data); }
/** * Returns a new workflow manager for the current element * @return Workflow\Manager */ protected function getWorkflowManager() { if (!$this->manager) { $this->manager = Workflow\Manager\Factory::getManager($this->element, $this->user); } return $this->manager; }