|
@@ 401-435 (lines=35) @@
|
| 398 |
|
* |
| 399 |
|
* @return RedirectResponse |
| 400 |
|
*/ |
| 401 |
|
protected function doMoveUpAction(AbstractAdminListConfigurator $configurator, $entityId, Request $request) |
| 402 |
|
{ |
| 403 |
|
$em = $this->getEntityManager(); |
| 404 |
|
$sortableField = $configurator->getSortableField(); |
| 405 |
|
|
| 406 |
|
$repositoryName = $this->getAdminListRepositoryName($configurator); |
| 407 |
|
|
| 408 |
|
$repo = $em->getRepository($repositoryName); |
| 409 |
|
$item = $repo->find($entityId); |
| 410 |
|
|
| 411 |
|
$setter = 'set'.ucfirst($sortableField); |
| 412 |
|
$getter = 'get'.ucfirst($sortableField); |
| 413 |
|
|
| 414 |
|
$nextItem = $repo->createQueryBuilder('i') |
| 415 |
|
->where('i.'.$sortableField.' < :weight') |
| 416 |
|
->setParameter('weight', $item->$getter()) |
| 417 |
|
->orderBy('i.'.$sortableField, 'DESC') |
| 418 |
|
->setMaxResults(1) |
| 419 |
|
->getQuery() |
| 420 |
|
->getOneOrNullResult(); |
| 421 |
|
if ($nextItem) { |
| 422 |
|
$nextItem->$setter($item->$getter()); |
| 423 |
|
$em->persist($nextItem); |
| 424 |
|
$item->$setter($item->$getter() - 1); |
| 425 |
|
|
| 426 |
|
$em->persist($item); |
| 427 |
|
$em->flush(); |
| 428 |
|
} |
| 429 |
|
|
| 430 |
|
$indexUrl = $configurator->getIndexUrl(); |
| 431 |
|
|
| 432 |
|
return new RedirectResponse( |
| 433 |
|
$this->generateUrl($indexUrl['path'], isset($indexUrl['params']) ? $indexUrl['params'] : array()) |
| 434 |
|
); |
| 435 |
|
} |
| 436 |
|
|
| 437 |
|
protected function doMoveDownAction(AbstractAdminListConfigurator $configurator, $entityId, Request $request) |
| 438 |
|
{ |
|
@@ 437-471 (lines=35) @@
|
| 434 |
|
); |
| 435 |
|
} |
| 436 |
|
|
| 437 |
|
protected function doMoveDownAction(AbstractAdminListConfigurator $configurator, $entityId, Request $request) |
| 438 |
|
{ |
| 439 |
|
$em = $this->getEntityManager(); |
| 440 |
|
$sortableField = $configurator->getSortableField(); |
| 441 |
|
|
| 442 |
|
$repositoryName = $this->getAdminListRepositoryName($configurator); |
| 443 |
|
|
| 444 |
|
$repo = $em->getRepository($repositoryName); |
| 445 |
|
$item = $repo->find($entityId); |
| 446 |
|
|
| 447 |
|
$setter = 'set'.ucfirst($sortableField); |
| 448 |
|
$getter = 'get'.ucfirst($sortableField); |
| 449 |
|
|
| 450 |
|
$nextItem = $repo->createQueryBuilder('i') |
| 451 |
|
->where('i.'.$sortableField.' > :weight') |
| 452 |
|
->setParameter('weight', $item->$getter()) |
| 453 |
|
->orderBy('i.'.$sortableField, 'ASC') |
| 454 |
|
->setMaxResults(1) |
| 455 |
|
->getQuery() |
| 456 |
|
->getOneOrNullResult(); |
| 457 |
|
if ($nextItem) { |
| 458 |
|
$nextItem->$setter($item->$getter()); |
| 459 |
|
$em->persist($nextItem); |
| 460 |
|
$item->$setter($item->$getter() + 1); |
| 461 |
|
|
| 462 |
|
$em->persist($item); |
| 463 |
|
$em->flush(); |
| 464 |
|
} |
| 465 |
|
|
| 466 |
|
$indexUrl = $configurator->getIndexUrl(); |
| 467 |
|
|
| 468 |
|
return new RedirectResponse( |
| 469 |
|
$this->generateUrl($indexUrl['path'], isset($indexUrl['params']) ? $indexUrl['params'] : array()) |
| 470 |
|
); |
| 471 |
|
} |
| 472 |
|
|
| 473 |
|
private function getMaxSortableField($repo, $sort) |
| 474 |
|
{ |