/** * Handle the reorder operation. * * @param ReorderEvent $event * * @throws DocumentManagerException */ public function handleReorder(ReorderEvent $event) { $document = $event->getDocument(); $siblingId = $event->getDestId(); $after = $event->getAfter(); $node = $this->documentRegistry->getNodeForDocument($document); $parentNode = $node->getParent(); $nodeName = $node->getName(); $siblingName = $this->resolveSiblingName($siblingId, $parentNode, $node); if (true === $after) { $siblingName = $this->resolveAfterSiblingName($parentNode, $siblingName); } $parentNode->orderBefore($nodeName, $siblingName); }
/** * Reordering is also not draftable, and therefore also immediately applied to the live session. * * @param ReorderEvent $event */ public function reorderNodeInPublicWorkspace(ReorderEvent $event) { $node = $this->getLiveNode($event->getDocument()); $this->nodeHelper->reorder($node, $event->getDestId()); // FIXME duplicating logic of OrderSubscriber, maybe move to NodeHelper? $count = 1; foreach ($node->getParent()->getNodes() as $childNode) { $childNode->setProperty($this->propertyEncoder->systemName('order'), $count * 10); ++$count; } }