/**
  * 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);
 }
Example #2
0
 /**
  * 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;
     }
 }