/** * Action to go to the previous type of action for the provided node * @param \ride\web\cms\Cms $cms * @param \ride\web\cms\controller\backend\action\node\NodeActionManager $nodeActionManager * @param string $locale * @param string $site * @param string $revision * @param string $node * @return null */ public function defaultAction(Cms $cms, NodeActionManager $nodeActionManager, $locale, $site, $revision, $node) { if (!$cms->resolveNode($site, $revision, $node)) { return; } $nodeType = $cms->getNodeType($node); $urlVars = array('site' => $node->getRootNodeId(), 'revision' => $node->getRevision(), 'node' => $node->getId(), 'locale' => $locale); $redirectUrl = null; $action = $cms->getLastAction(ContentNodeAction::NAME); if ($action == 'edit') { $redirectUrl = $this->getUrl($nodeType->getRouteEdit(), $urlVars); } else { $nodeAction = $nodeActionManager->getNodeAction($action); if ($nodeAction->isAvailableForNode($node)) { $redirectUrl = $this->getUrl($nodeAction->getRoute(), $urlVars); } else { $redirectUrl = $this->getUrl($nodeType->getRouteEdit(), $urlVars); } } $referer = $this->request->getQueryParameter('referer'); if ($referer) { $referer = '?referer=' . urlencode($referer); } $this->response->setRedirect($redirectUrl . $referer); }