public function moveAction(Request $request, $id)
{
$em = $this->get('em');
$repository = $em->getRepository('Newscoop\\NewscoopBundle\\Entity\\Topic');
$topicService = $this->get('newscoop_newscoop.topic_service');
$translator = $this->get('translator');
$cacheService = $this->get('newscoop.cache');
$node = $this->findOr404($id);
if (is_array($node)) {
return new JsonResponse($node, 404);
}
$params = $request->request->all();
$parent = isset($params['parent']) && $params['parent'] ? $params['parent'] : null;
$result = $topicService->saveTopicPosition($node, $params);
if (!$result) {
return new JsonResponse(array('status' => false, 'message' => $translator->trans('topics.failedfind', array('%id%' => $id), 'topics')));
}
if (($request->get('last') || $request->get('first') || $request->get('middle')) && !$parent) {
$rootNodes = $repository->getRootNodesQuery()->getResult();
$order = array_reverse(explode(',', $request->get('order')));
$topicService->reorderRootNodes($rootNodes, $order);
}
$cacheService->clearNamespace('topic');
return new JsonResponse(array('status' => true, 'message' => $translator->trans('topics.alerts.ordersaved', array(), 'topics')), 200);
}