Fix Basket/Story sorting

This commit is contained in:
Romain Neutron
2012-02-23 14:47:56 +01:00
parent 1f578810f8
commit 906a26d11d
7 changed files with 1055 additions and 656 deletions

View File

@@ -46,76 +46,76 @@ class Basket implements ControllerProviderInterface
*
*/
$controllers->post('/', function(Application $app)
{
$request = $app['request'];
{
$request = $app['request'];
/* @var $request \Symfony\Component\HttpFoundation\Request */
/* @var $request \Symfony\Component\HttpFoundation\Request */
$em = $app['Core']->getEntityManager();
$em = $app['Core']->getEntityManager();
$user = $app['Core']->getAuthenticatedUser();
$user = $app['Core']->getAuthenticatedUser();
$Basket = new \Entities\Basket();
$Basket = new \Entities\Basket();
$Basket->setName($request->get('name', ''));
$Basket->setOwner($app['Core']->getAuthenticatedUser());
$Basket->setDescription($request->get('desc'));
$Basket->setName($request->get('name', ''));
$Basket->setOwner($app['Core']->getAuthenticatedUser());
$Basket->setDescription($request->get('desc'));
$em->persist($Basket);
$em->persist($Basket);
$n = 0;
$n = 0;
foreach (explode(';', $request->get('lst')) as $sbas_rec)
{
$sbas_rec = explode('_', $sbas_rec);
foreach (explode(';', $request->get('lst')) as $sbas_rec)
{
$sbas_rec = explode('_', $sbas_rec);
if (count($sbas_rec) !== 2)
continue;
if (count($sbas_rec) !== 2)
continue;
$record = new \record_adapter($sbas_rec[0], $sbas_rec[1]);
$record = new \record_adapter($sbas_rec[0], $sbas_rec[1]);
if (!$user->ACL()->has_access_to_base($record->get_base_id())
&& !$user->ACL()->has_hd_grant($record)
&& !$user->ACL()->has_preview_grant($record))
{
continue;
}
if (!$user->ACL()->has_access_to_base($record->get_base_id())
&& !$user->ACL()->has_hd_grant($record)
&& !$user->ACL()->has_preview_grant($record))
{
continue;
}
if ($Basket->hasRecord($record))
continue;
if ($Basket->hasRecord($record))
continue;
$basket_element = new \Entities\BasketElement();
$basket_element->setRecord($record);
$basket_element->setBasket($Basket);
$basket_element = new \Entities\BasketElement();
$basket_element->setRecord($record);
$basket_element->setBasket($Basket);
$em->persist($basket_element);
$em->persist($basket_element);
$Basket->addBasketElement($basket_element);
$Basket->addBasketElement($basket_element);
$n++;
}
$n++;
}
$em->flush();
$em->flush();
if ($request->getRequestFormat() == 'json')
{
$data = array(
'success' => true
, 'message' => _('Basket created')
, 'basket' => array(
'id' => $Basket->getId()
)
);
if ($request->getRequestFormat() == 'json')
{
$data = array(
'success' => true
, 'message' => _('Basket created')
, 'basket' => array(
'id' => $Basket->getId()
)
);
$datas = $app['Core']['Serializer']->serialize($data, 'json');
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse(sprintf('/%d/', $Basket->getId()));
}
});
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse(sprintf('/%d/', $Basket->getId()));
}
});
/**
* This route is used to delete a basket
@@ -124,73 +124,73 @@ class Basket implements ControllerProviderInterface
*
*/
$controllers->post('/{basket_id}/delete/', function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
{
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$em->remove($basket);
$em->flush();
$em->remove($basket);
$em->flush();
$data = array(
'success' => true
, 'message' => _('Basket has been deleted')
);
$data = array(
'success' => true
, 'message' => _('Basket has been deleted')
);
if ($request->getRequestFormat() == 'json')
{
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
/**
* Removes a BasketElement
*/
$controllers->post(
'/{basket_id}/delete/{basket_element_id}/'
, function(Application $app, Request $request, $basket_id, $basket_element_id)
{
/* @var $em \Doctrine\ORM\EntityManager */
$em = $app['Core']->getEntityManager();
'/{basket_id}/delete/{basket_element_id}/'
, function(Application $app, Request $request, $basket_id, $basket_element_id)
{
/* @var $em \Doctrine\ORM\EntityManager */
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
foreach ($basket->getElements() as $basket_element)
{
/* @var $basket_element \Entities\BasketElement */
if ($basket_element->getId() == $basket_element_id)
{
$em->remove($basket_element);
}
}
foreach ($basket->getElements() as $basket_element)
{
/* @var $basket_element \Entities\BasketElement */
if ($basket_element->getId() == $basket_element_id)
{
$em->remove($basket_element);
}
}
$em->flush();
$em->flush();
$data = array(
'success' => true
, 'message' => _('Record removed from basket')
);
$data = array(
'success' => true
, 'message' => _('Record removed from basket')
);
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+')->assert('basket_element_id', '\d+');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+')->assert('basket_element_id', '\d+');
/**
* Update name and description of a basket
@@ -200,83 +200,125 @@ class Basket implements ControllerProviderInterface
*
*/
$controllers->post('/{basket_id}/update/', function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
{
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$basket->setName($request->get('name', ''));
$basket->setDescription($request->get('description'));
$basket->setName($request->get('name', ''));
$basket->setDescription($request->get('description'));
$em->merge($basket);
$em->flush();
$em->merge($basket);
$em->flush();
$data = array(
'success' => true
, 'message' => _('Basket has been updated')
, 'basket' => array('id' => $basket->getId())
);
$data = array(
'success' => true
, 'message' => _('Basket has been updated')
, 'basket' => array('id' => $basket->getId())
);
if ($request->getRequestFormat() == 'json')
{
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
/**
* Get the form to update the Basket attributes (name and description)
*/
$controllers->get('/{basket_id}/update/', function(Application $app, $basket_id)
{
/* @var $em \Doctrine\ORM\EntityManager */
$em = $app['Core']->getEntityManager();
{
/* @var $em \Doctrine\ORM\EntityManager */
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
return new Response(
$twig->render(
'prod/Baskets/Update.html.twig'
, array('basket' => $basket)
)
);
})->assert('basket_id', '\d+');
return new Response(
$twig->render(
'prod/Baskets/Update.html.twig'
, array('basket' => $basket)
)
);
})->assert('basket_id', '\d+');
/**
* Get the Basket reorder form
*/
$controllers->get(
'/{basket_id}/reorder/'
, function(Application $app, $basket_id)
'/{basket_id}/reorder/'
, function(Application $app, $basket_id)
{
/* @var $em \Doctrine\ORM\EntityManager */
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
return new Response(
$twig->render(
'prod/Baskets/Reorder.html.twig'
, array('basket' => $basket)
)
);
})->assert('basket_id', '\d+');
$controllers->post(
'/{basket_id}/reorder/'
, function(Application $app, $basket_id)
{
$ret = array('success' => false, 'message' => _('An error occured'));
try
{
/* @var $em \Doctrine\ORM\EntityManager */
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$order = $app['request']->get('element');
/* @var $basket \Entities\Basket */
foreach ($basket->getElements() as $basketElement)
{
if (isset($order[$basketElement->getId()]))
{
/* @var $em \Doctrine\ORM\EntityManager */
$em = $app['Core']->getEntityManager();
$basketElement->setOrd($order[$basketElement->getId()]);
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$em->merge($basketElement);
}
}
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
$em->flush();
$ret = array('success' => true, 'message' => _('Basket updated'));
}
catch (\Exception $e)
{
}
$Serializer = $app['Core']['Serializer'];
return new Response($Serializer->serialize($ret, 'json'), 200, array('Content-type' => 'application/json'));
})->assert('basket_id', '\d+');
return new Response(
$twig->render(
'prod/Baskets/Reorder.html.twig'
, array('basket' => $basket)
)
);
})->assert('basket_id', '\d+');
/**
* Toggle the status of a Basket
@@ -286,114 +328,114 @@ class Basket implements ControllerProviderInterface
* @returns JSON / HTML
*/
$controllers->post('/{basket_id}/archive/', function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
{
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$archive_status = !!$request->get('archive');
$archive_status = !!$request->get('archive');
$basket->setArchived($archive_status);
$basket->setArchived($archive_status);
$em->merge($basket);
$em->flush();
$em->merge($basket);
$em->flush();
if ($archive_status)
{
$message = _('Basket has been archived');
}
else
{
$message = _('Basket has been unarchived');
}
if ($archive_status)
{
$message = _('Basket has been archived');
}
else
{
$message = _('Basket has been unarchived');
}
$data = array(
'success' => true
, 'archive' => $archive_status
, 'message' => $message
);
$data = array(
'success' => true
, 'archive' => $archive_status
, 'message' => $message
);
if ($request->getRequestFormat() == 'json')
{
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
/**
* Add a BasketElement to a basket
*/
$controllers->post(
'/{basket_id}/addElements/'
, function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
'/{basket_id}/addElements/'
, function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$user = $app['Core']->getAuthenticatedUser();
/* @var $user \User_Adapter */
$user = $app['Core']->getAuthenticatedUser();
/* @var $user \User_Adapter */
$n = 0;
$n = 0;
foreach (explode(';', $request->get('lst')) as $sbas_rec)
{
$sbas_rec = explode('_', $sbas_rec);
foreach (explode(';', $request->get('lst')) as $sbas_rec)
{
$sbas_rec = explode('_', $sbas_rec);
if (count($sbas_rec) !== 2)
continue;
if (count($sbas_rec) !== 2)
continue;
$record = new \record_adapter($sbas_rec[0], $sbas_rec[1]);
$record = new \record_adapter($sbas_rec[0], $sbas_rec[1]);
if (!$user->ACL()->has_access_to_base($record->get_base_id())
&& !$user->ACL()->has_hd_grant($record)
&& !$user->ACL()->has_preview_grant($record))
{
continue;
}
if (!$user->ACL()->has_access_to_base($record->get_base_id())
&& !$user->ACL()->has_hd_grant($record)
&& !$user->ACL()->has_preview_grant($record))
{
continue;
}
if ($basket->hasRecord($record))
continue;
if ($basket->hasRecord($record))
continue;
$basket_element = new \Entities\BasketElement();
$basket_element->setRecord($record);
$basket_element->setBasket($basket);
$basket_element = new \Entities\BasketElement();
$basket_element->setRecord($record);
$basket_element->setBasket($basket);
$em->persist($basket_element);
$em->persist($basket_element);
$basket->addBasketElement($basket_element);
$basket->addBasketElement($basket_element);
$n++;
}
$n++;
}
$em->merge($basket);
$em->flush();
$em->merge($basket);
$em->flush();
$data = array(
'success' => true
, 'message' => sprintf(_('%d records added'), $n)
);
$data = array(
'success' => true
, 'message' => sprintf(_('%d records added'), $n)
);
if ($request->getRequestFormat() == 'json')
{
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
@@ -406,107 +448,107 @@ class Basket implements ControllerProviderInterface
*
*/
$controllers->post(
'/{basket_id}/stealElements/'
, function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
'/{basket_id}/stealElements/'
, function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
/* @var $em \Doctrine\ORM\EntityManager */
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$user = $app['Core']->getAuthenticatedUser();
/* @var $user \User_Adapter */
/* @var $em \Doctrine\ORM\EntityManager */
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), true);
$n = 0;
$user = $app['Core']->getAuthenticatedUser();
/* @var $user \User_Adapter */
foreach ($request->get('elements') as $bask_element_id)
{
try
{
$basket_element = $em->getRepository('\Entities\BasketElement')
->findUserElement($bask_element_id, $user);
}
catch(\Exception $e)
{
continue;
}
$basket_element->setBasket($basket);
$basket->addBasketElement($basket_element);
$n++;
}
$n = 0;
$em->flush();
$data = array(
'success' => true
, 'message' => sprintf(_('%d records moved'), $n)
);
foreach ($request->get('elements') as $bask_element_id)
{
try
{
$basket_element = $em->getRepository('\Entities\BasketElement')
->findUserElement($bask_element_id, $user);
}
catch (\Exception $e)
{
continue;
}
if ($request->getRequestFormat() == 'json')
{
$basket_element->setBasket($basket);
$basket->addBasketElement($basket_element);
$n++;
}
$datas = $app['Core']['Serializer']->serialize($data, 'json');
$em->flush();
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
$data = array(
'success' => true
, 'message' => sprintf(_('%d records moved'), $n)
);
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('basket_id', '\d+');
/**
* Get basket creation form
*/
$controllers->get('/create/', function(Application $app)
{
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
{
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
return new Response($twig->render('prod/Baskets/Create.html.twig', array()));
});
return new Response($twig->render('prod/Baskets/Create.html.twig', array()));
});
/**
* Get a basket
*/
$controllers->get('/{basket_id}/', function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
{
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), false);
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser(), false);
if ($basket->getIsRead() === false)
{
$basket = $em->merge($basket);
$basket->setIsRead(true);
$em->flush();
}
if ($basket->getIsRead() === false)
{
$basket = $em->merge($basket);
$basket->setIsRead(true);
$em->flush();
}
if ($basket->getValidation())
{
$basket = $em->merge($basket);
if($basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->getIsAware() === false)
{
$basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->setIsAware(true);
$em->flush();
}
}
if ($basket->getValidation())
{
$basket = $em->merge($basket);
if ($basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->getIsAware() === false)
{
$basket->getValidation()->getParticipant($app['Core']->getAuthenticatedUser())->setIsAware(true);
$em->flush();
}
}
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
$params = array(
'basket' => $basket,
'ordre' => $request->get('ordre')
);
$params = array(
'basket' => $basket,
'ordre' => $request->get('ordre')
);
$html = $twig->render('prod/WorkZone/Basket.html.twig', $params);
$html = $twig->render('prod/WorkZone/Basket.html.twig', $params);
return new Response($html);
})->assert('basket_id', '\d+');
return new Response($html);
})->assert('basket_id', '\d+');
return $controllers;
}

View File

@@ -20,7 +20,8 @@ use Symfony\Component\HttpFoundation\Request,
Symfony\Component\HttpKernel\Exception\HttpException,
Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Alchemy\Phrasea\RouteProcessor\Basket as BasketRoute,
Alchemy\Phrasea\Helper;
Alchemy\Phrasea\Helper,
Alchemy\Phrasea\Controller\Exception as ControllerException;
/**
*
@@ -37,297 +38,283 @@ class Story implements ControllerProviderInterface
$controllers->get('/create/', function(Application $app)
{
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
{
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
return new Response($twig->render('prod/Story/Create.html.twig', array()));
});
return new Response($twig->render('prod/Story/Create.html.twig', array()));
});
$controllers->post('/', function(Application $app, Request $request)
{
/* @var $request \Symfony\Component\HttpFoundation\Request */
$em = $app['Core']->getEntityManager();
{
/* @var $request \Symfony\Component\HttpFoundation\Request */
$em = $app['Core']->getEntityManager();
$user = $app['Core']->getAuthenticatedUser();
$user = $app['Core']->getAuthenticatedUser();
$collection = \collection::get_from_base_id($request->get('base_id'));
$collection = \collection::get_from_base_id($request->get('base_id'));
if (!$user->ACL()->has_right_on_base($collection->get_base_id(), 'canaddrecord'))
throw new \Exception_Forbidden('You can not create a story on this collection');
if (!$user->ACL()->has_right_on_base($collection->get_base_id(), 'canaddrecord'))
throw new \Exception_Forbidden('You can not create a story on this collection');
$system_file = new \system_file(
$app['Core']->getRegistry()
->get('GV_RootPath') . 'www/skins/icons/substitution/regroup_doc.png'
);
$system_file = new \system_file(
$app['Core']->getRegistry()
->get('GV_RootPath') . 'www/skins/icons/substitution/regroup_doc.png'
);
$Story = \record_adapter::create($collection, $system_file, false, true);
$Story = \record_adapter::create($collection, $system_file, false, true);
$metadatas = array();
$metadatas = array();
foreach ($collection->get_databox()->get_meta_structure() as $meta)
{
if ($meta->is_regname())
$value = $request->get('name');
elseif ($meta->is_regdesc())
$value = $request->get('description');
else
continue;
foreach ($collection->get_databox()->get_meta_structure() as $meta)
{
if ($meta->is_regname())
$value = $request->get('name');
elseif ($meta->is_regdesc())
$value = $request->get('description');
else
continue;
$metadatas[] = array(
'meta_struct_id' => $meta->get_id()
, 'meta_id' => null
, 'value' => $value
);
}
$metadatas[] = array(
'meta_struct_id' => $meta->get_id()
, 'meta_id' => null
, 'value' => $value
);
}
$Story->set_metadatas($metadatas)
->rebuild_subdefs();
$Story->set_metadatas($metadatas)
->rebuild_subdefs();
$StoryWZ = new \Entities\StoryWZ();
$StoryWZ->setUser($user);
$StoryWZ->setRecord($Story);
$StoryWZ = new \Entities\StoryWZ();
$StoryWZ->setUser($user);
$StoryWZ->setRecord($Story);
$em->persist($StoryWZ);
$em->persist($StoryWZ);
$em->flush();
$em->flush();
if ($request->getRequestFormat() == 'json')
{
$data = array(
'success' => true
, 'message' => _('Story created')
, 'WorkZone' => $StoryWZ->getId()
, 'story' => array(
'sbas_id' => $Story->get_sbas_id(),
'record_id' => $Story->get_record_id(),
)
);
if ($request->getRequestFormat() == 'json')
{
$data = array(
'success' => true
, 'message' => _('Story created')
, 'WorkZone' => $StoryWZ->getId()
, 'story' => array(
'sbas_id' => $Story->get_sbas_id(),
'record_id' => $Story->get_record_id(),
)
);
$datas = $app['Core']['Serializer']->serialize($data, 'json');
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse(sprintf('/%d/', $StoryWZ->getId()));
}
});
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse(sprintf('/%d/', $StoryWZ->getId()));
}
});
$controllers->get('/{sbas_id}/{record_id}/', function(Application $app, $sbas_id, $record_id)
{
$Story = new \record_adapter($sbas_id, $record_id);
{
$Story = new \record_adapter($sbas_id, $record_id);
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
$html = $twig->render('prod/WorkZone/Story.html.twig', array('Story' => $Story));
$html = $twig->render('prod/WorkZone/Story.html.twig', array('Story' => $Story));
return new Response($html);
})->assert('sbas_id', '\d+')->assert('record_id', '\d+');
return new Response($html);
})->assert('sbas_id', '\d+')->assert('record_id', '\d+');
$controllers->post(
'/{sbas_id}/{record_id}/addElements/'
, function(Application $app, Request $request, $sbas_id, $record_id)
'/{sbas_id}/{record_id}/addElements/'
, function(Application $app, Request $request, $sbas_id, $record_id)
{
$Story = new \record_adapter($sbas_id, $record_id);
$user = $app['Core']->getAuthenticatedUser();
if (!$user->ACL()->has_right_on_base($Story->get_base_id(), 'canmodifrecord'))
throw new \Exception_Forbidden('You can not add document to this Story');
/* @var $user \User_Adapter */
$n = 0;
foreach (explode(';', $request->get('lst')) as $sbas_rec)
{
$sbas_rec = explode('_', $sbas_rec);
if (count($sbas_rec) !== 2)
continue;
$record = new \record_adapter($sbas_rec[0], $sbas_rec[1]);
if (!$user->ACL()->has_access_to_base($record->get_base_id())
&& !$user->ACL()->has_hd_grant($record)
&& !$user->ACL()->has_preview_grant($record))
{
continue;
}
if ($Story->hasChild($record))
continue;
$Story->appendChild($record);
$n++;
}
$data = array(
'success' => true
, 'message' => sprintf(_('%d records added'), $n)
);
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('sbas_id', '\d+')->assert('record_id', '\d+');
$controllers->post(
'/{sbas_id}/{record_id}/delete/{child_sbas_id}/{child_record_id}/'
, function(Application $app, Request $request, $sbas_id, $record_id, $child_sbas_id, $child_record_id)
{
$Story = new \record_adapter($sbas_id, $record_id);
$record = new \record_adapter($child_sbas_id, $child_record_id);
$user = $app['Core']->getAuthenticatedUser();
if (!$user->ACL()->has_right_on_base($Story->get_base_id(), 'canmodifrecord'))
throw new \Exception_Forbidden('You can not add document to this Story');
/* @var $user \User_Adapter */
$Story->removeChild($record);
$data = array(
'success' => true
, 'message' => _('Record removed from story')
);
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})
->assert('sbas_id', '\d+')
->assert('record_id', '\d+')
->assert('child_sbas_id', '\d+')
->assert('child_record_id', '\d+');
/**
* Get the Basket reorder form
*/
$controllers->get(
'/{sbas_id}/{record_id}/reorder/'
, function(Application $app, $sbas_id, $record_id)
{
/* @var $em \Doctrine\ORM\EntityManager */
$em = $app['Core']->getEntityManager();
$story = new \record_adapter($sbas_id, $record_id);
if (!$story->is_grouping())
{
throw new \Exception('This is not a story');
}
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
return new Response(
$twig->render(
'prod/Story/Reorder.html.twig'
, array('story' => $story)
)
);
})
->assert('sbas_id', '\d+')
->assert('record_id', '\d+');
$controllers->post(
'/{sbas_id}/{record_id}/reorder/'
, function(Application $app, $sbas_id, $record_id)
{
$ret = array('success' => false, 'message' => _('An error occured'));
try
{
$user = $app['Core']->getAuthenticatedUser();
/* @var $user \User_Adapter */
$story = new \record_adapter($sbas_id, $record_id);
if (!$story->is_grouping())
{
$Story = new \record_adapter($sbas_id, $record_id);
throw new \Exception('This is not a story');
}
$user = $app['Core']->getAuthenticatedUser();
if (!$user->ACL()->has_right_on_base($story->get_base_id(), 'canmodifrecord'))
{
throw new ControllerException(_('You can not edit this story'));
}
if (!$user->ACL()->has_right_on_base($Story->get_base_id(), 'canmodifrecord'))
throw new \Exception_Forbidden('You can not add document to this Story');
$sql = 'UPDATE regroup SET ord = :ord
WHERE rid_parent = :parent_id AND rid_child = :children_id';
$stmt = $story->get_databox()->get_connection()->prepare($sql);
/* @var $user \User_Adapter */
$n = 0;
foreach (explode(';', $request->get('lst')) as $sbas_rec)
{
$sbas_rec = explode('_', $sbas_rec);
if (count($sbas_rec) !== 2)
continue;
$record = new \record_adapter($sbas_rec[0], $sbas_rec[1]);
if (!$user->ACL()->has_access_to_base($record->get_base_id())
&& !$user->ACL()->has_hd_grant($record)
&& !$user->ACL()->has_preview_grant($record))
{
continue;
}
if ($Story->hasChild($record))
continue;
$Story->appendChild($record);
$n++;
}
$data = array(
'success' => true
, 'message' => sprintf(_('%d records added'), $n)
foreach ($app['request']->get('element') as $record_id => $ord)
{
$params = array(
':ord' => $ord,
':parent_id' => $story->get_record_id(),
':children_id' => $record_id
);
$stmt->execute($params);
}
if ($request->getRequestFormat() == 'json')
{
$stmt->closeCursor();
$datas = $app['Core']['Serializer']->serialize($data, 'json');
$ret = array('success' => true, 'message' => _('Story updated'));
}
catch (ControllerException $e)
{
$ret = array('success' => false, 'message' => $e->getMessage());
}
catch (\Exception $e)
{
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})->assert('sbas_id', '\d+')->assert('record_id', '\d+');
}
$controllers->post(
'/{sbas_id}/{record_id}/delete/{child_sbas_id}/{child_record_id}/'
, function(Application $app, Request $request, $sbas_id, $record_id, $child_sbas_id, $child_record_id)
{
$Story = new \record_adapter($sbas_id, $record_id);
$Serializer = $app['Core']['Serializer'];
$record = new \record_adapter($child_sbas_id, $child_record_id);
return new Response($Serializer->serialize($ret, 'json'), 200, array('Content-type' => 'application/json'));
})
->assert('sbas_id', '\d+')
->assert('record_id', '\d+');
$user = $app['Core']->getAuthenticatedUser();
if (!$user->ACL()->has_right_on_base($Story->get_base_id(), 'canmodifrecord'))
throw new \Exception_Forbidden('You can not add document to this Story');
/* @var $user \User_Adapter */
$Story->removeChild($record);
$data = array(
'success' => true
, 'message' => _('Record removed from story')
);
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
})
->assert('sbas_id', '\d+')
->assert('record_id', '\d+')
->assert('child_sbas_id', '\d+')
->assert('child_record_id', '\d+');
// $controllers->post('/{basket_id}/delete/', function(Application $app, Request $request, $basket_id)
// {
// $em = $app['Core']->getEntityManager();
//
// $basket = $em->getRepository('\Entities\Basket')
// ->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
//
// $em->remove($basket);
// $em->flush();
//
// $data = array(
// 'success' => true
// , 'message' => _('Basket has been deleted')
// );
//
// if ($request->getRequestFormat() == 'json')
// {
//
// $datas = $app['Core']['Serializer']->serialize($data, 'json');
//
// return new Response($datas, 200, array('Content-type' => 'application/json'));
// }
// else
// {
// return new RedirectResponse('/');
// }
// });
//
//
//
//
// $controllers->post('/{basket_id}/update/', function(Application $app, Request $request, $basket_id)
// {
// $em = $app['Core']->getEntityManager();
//
// $basket = $em->getRepository('\Entities\Basket')
// ->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
//
// $basket->setName($request->get('name'));
// $basket->setDescription($request->get('description'));
//
// $em->merge($basket);
// $em->flush();
//
// $data = array(
// 'success' => true
// , 'message' => _('Basket has been updated')
// , 'basket' => array('id' => $basket->getId())
// );
//
// if ($request->getRequestFormat() == 'json')
// {
//
// $datas = $app['Core']['Serializer']->serialize($data, 'json');
//
// return new Response($datas, 200, array('Content-type' => 'application/json'));
// }
// else
// {
// return new RedirectResponse('/');
// }
// });
//
//
// $controllers->get('/{basket_id}/update/', function(Application $app, $basket_id)
// {
// /* @var $em \Doctrine\ORM\EntityManager */
// $em = $app['Core']->getEntityManager();
//
// $basket = $em->getRepository('\Entities\Basket')
// ->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
//
// $twig = new \supertwig();
//
// return new Response(
// $twig->render(
// 'prod/Baskets/Update.html.twig'
// , array('basket' => $basket)
// )
// );
// });
//
//
// $controllers->get(
// '/{basket_id}/reorder/'
// , function(Application $app, $basket_id)
// {
// /* @var $em \Doctrine\ORM\EntityManager */
// $em = $app['Core']->getEntityManager();
//
// $basket = $em->getRepository('\Entities\Basket')
// ->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
//
// $twig = new \supertwig();
//
// return new Response(
// $twig->render(
// 'prod/Baskets/Reorder.html.twig'
// , array('basket' => $basket)
// )
// );
// });
return $controllers;
}

View File

@@ -47,11 +47,11 @@ class BasketRepository extends EntityRepository
if ($sort == 'date')
{
$dql .= ' ORDER BY b.created DESC';
$dql .= ' ORDER BY b.created DESC, e.ord ASC';
}
elseif ($sort == 'name')
{
$dql .= ' ORDER BY b.name ASC';
$dql .= ' ORDER BY b.name ASC, e.ord ASC';
}
$query = $this->_em->createQuery($dql);
@@ -81,7 +81,8 @@ class BasketRepository extends EntityRepository
(b.usr_id = :usr_id_owner AND b.is_read = false)
OR (b.usr_id != :usr_id_ownertwo AND p.usr_id = :usr_id_participant
AND p.is_aware = false)
)';
)
ORDER BY e.ord ASC';
$params = array(
'usr_id_owner' => $user->get_id(),
@@ -119,11 +120,11 @@ class BasketRepository extends EntityRepository
if ($sort == 'date')
{
$dql .= ' ORDER BY b.created DESC';
$dql .= ' ORDER BY b.created DESC, e.ord ASC';
}
elseif ($sort == 'name')
{
$dql .= ' ORDER BY b.name ASC';
$dql .= ' ORDER BY b.name ASC, e.ord ASC';
}
$query = $this->_em->createQuery($dql);
@@ -151,7 +152,8 @@ class BasketRepository extends EntityRepository
LEFT JOIN e.validation_datas v
LEFT JOIN b.validation s
LEFT JOIN s.participants p
WHERE b.id = :basket_id';
WHERE b.id = :basket_id
ORDER BY e.ord ASC';
$query = $this->_em->createQuery($dql);
$query->setParameters(array('basket_id' => $basket_id));
@@ -199,7 +201,8 @@ class BasketRepository extends EntityRepository
FROM Entities\Basket b
JOIN b.elements e
WHERE e.record_id = :record_id AND e.sbas_id = e.sbas_id
AND b.usr_id = :usr_id';
AND b.usr_id = :usr_id
ORDER BY e.ord ASC';
$params = array(
'record_id' => $record->get_record_id(),
@@ -282,6 +285,8 @@ class BasketRepository extends EntityRepository
$params['description'] = '%' . $query . '%';
}
$dql .= ' ORDER BY e.ord ASC';
$query = $this->_em->createQuery($dql);
$query->setParameters($params);

View File

@@ -1,33 +1,159 @@
{% import 'common/thumbnail.html' as thumbnail %}
<div class="elements">
{% for element in basket.getElements() %}
<div id="ORDER_{{ element.getId() }}" class="CHIM diapo" style="height:130px;overflow:hidden;">
<div class="title" title="{{ element.getRecord().get_title() }}" style="position:relative;z-index:1200;height:30px;overflow:visible;text-align:center;">
<span>{{ element.getRecord().get_title() }}</span>
{{ thumbnail.format(element.getRecord().get_thumbnail(), 80, 80, '', session) }}
<form style="display:none;">
<input type="hidden" name="id" value="{{ element.getId() }}"/>
<input type="hidden" name="title" value="{{ element.getRecord().get_title() }}"/>
<input type="hidden" name="default" value="{{ element.getOrd() }}"/>
</form>
</div>
</div>
{% endfor %}
<div id="reorder_options" class="PNB" style="height:30px;bottom:auto;">
<span>{% trans 'Reordonner automatiquement' %}</span>
<select id="auto_order">
<option value="">{% trans 'Choisir' %}</option>
<option value="default">{% trans 'Re-initialiser' %}</option>
<option value="title">{% trans 'Titre' %}</option>
</select>
<button type="button" class="autoorder">{% trans 'Re-ordonner' %}</button>
<button type="button" class="reverseorder">{% trans 'Inverser' %}</button>
</div>
<div style="top:30px;overflow:auto;" id="reorder_box" class="PNB">
<div class="elements">
{% for element in basket.getElements() %}
<div id="ORDER_{{ element.getId() }}" class="CHIM diapo" style="height:130px;overflow:hidden;">
<div class="title" title="{{ element.getRecord().get_title() }}" style="position:relative;z-index:1200;height:30px;overflow:visible;text-align:center;">
<span>{{ element.getRecord().get_title() }}</span>
{{ thumbnail.format(element.getRecord().get_thumbnail(), 80, 80, '', session) }}
<form style="display:none;">
<input type="hidden" name="id" value="{{ element.getId() }}"/>
<input type="hidden" name="title" value="{{ element.getRecord().get_title() }}"/>
<input type="hidden" name="default" value="{{ element.getOrd() }}"/>
</form>
</div>
</div>
{% endfor %}
</div>
<form name="reorder" method="POST" action="/prod/baskets/{{ basket.getId() }}/reorder/">
{% for element in basket.getElements() %}
<input type="hidden" name="element[{{ element.getId() }}]" value="{{ element.getOrd() }}"/>
{% endfor %}
<button>{% trans 'boutton::valider' %}</button>
</form>
</div>
<form name="reorder" method="POST" action="/prod/baskets/{{ basket.getId() }}/reorder/">
{% for element in basket.getElements() %}
<input type="hidden" name="element[{{ element.getId() }}]" value="{{ element.getOrd() }}"/>
{% endfor %}
<button>{% trans 'boutton::valider' %}</button>
</form>
<script type="text/javascript">
$(document).ready(function(){
var container = $('#DIALOG');
var container = p4.Dialog.get(1).getDomElement();
$('button.autoorder', container).bind('click', function(){
autoorder();
return false;
});
$('button.reverseorder', container).bind('click', function(){
reverse_order();
return false;
});
function autoorder()
{
var val = $.trim($('#auto_order').val());
if(val == '')
return;
var sorter = {};
$('#reorder_box .diapo form').each(function(i,n){
var id = $('input[name=id]',n).val();
switch(val)
{
case 'title':
default:
var data = $('input[name=title]',n).val();
break;
case 'default':
var data = $('input[name=default]',n).val();
break;
}
sorter[id] = data;
});
var data_type = 'string';
switch(val)
{
case 'default':
var data_type = 'integer';
break;
}
sorter = arraySortByValue(sorter, data_type);
var last_moved = false;
for(i in sorter)
{
var elem = $('#ORDER_'+i);
if(last_moved)
{
elem.insertAfter(last_moved);
}
else
{
$('#reorder_box .elements').prepend(elem);
}
last_moved = elem;
}
}
function arraySortByValue(datas, data_type) {
var tmp = new Array();
for (i in datas) {
tmp.push({
v: i,
c: datas[i].toUpperCase(),
o: datas[i]
});
}
switch(data_type)
{
case 'string':
tmp.sort(function (x, y) {
return y.c < x.c;
});
break;
case 'integer':
tmp.sort(function (x, y) {
return parseInt(y.c) < parseInt(x.c);
});
break;
}
var out = {};
for (i in tmp) {
out[tmp[i].v] = tmp[i].o;
}
return out;
}
function reverse_order()
{
var elems = $('#reorder_box .diapo');
var last_moved = false;
elems.each(function(i,n){
var elem = $(n);
if(last_moved)
{
elem.insertBefore(last_moved);
}
else
{
$('#reorder_box .elements').append(elem);
}
last_moved = elem;
});
}
$('.elements', container).sortable({
appendTo : container,
@@ -118,17 +244,24 @@
}).disableSelection();
var OrderSelection = new Selectable($('#DIALOG .elements'), {
var OrderSelection = new Selectable($('.elements', container), {
selector : '.CHIM'
});
$('#DIALOG form[name="reorder"]').bind('submit', function(event){
$('form[name="reorder"]', container).bind('submit', function(event){
//$this.SetLoader(true);
var $form = $(this);
$('.elements form', container).each(function(i, el){
var id = $('input[name="id"]', $(el)).val();
$('input[name="element[' + id + ']"]', $form).val(i+1);
});
$.ajax({
type: $form.attr('method'),
url: $form.attr('action'),
@@ -138,9 +271,12 @@
},
success: function(data){
if(!data.success)
{
alert(data.message);
}
p4.WorkZone.refresh('current');
$('#DIALOG').dialog('close').empty();
p4.Dialog.get(1).Close();
return;
},

View File

@@ -0,0 +1,294 @@
{% import 'common/thumbnail.html' as thumbnail %}
<div id="reorder_options" class="PNB" style="height:30px;bottom:auto;">
<span>{% trans 'Reordonner automatiquement' %}</span>
<select id="auto_order">
<option value="">{% trans 'Choisir' %}</option>
<option value="default">{% trans 'Re-initialiser' %}</option>
<option value="title">{% trans 'Titre' %}</option>
</select>
<button type="button" class="autoorder">{% trans 'Re-ordonner' %}</button>
<button type="button" class="reverseorder">{% trans 'Inverser' %}</button>
</div>
<div style="top:30px;overflow:auto;" id="reorder_box" class="PNB">
<div class="elements">
{% for element in story.get_children() %}
<div id="ORDER_{{ element.get_record_id() }}" class="CHIM diapo" style="height:130px;overflow:hidden;">
<div class="title" title="{{ element.get_title() }}" style="position:relative;z-index:1200;height:30px;overflow:visible;text-align:center;">
<span>{{ element.get_title() }}</span>
{{ thumbnail.format(element.get_thumbnail(), 80, 80, '', session) }}
<form style="display:none;">
<input type="hidden" name="id" value="{{ element.get_record_id() }}"/>
<input type="hidden" name="title" value="{{ element.get_title() }}"/>
<input type="hidden" name="default" value="{{ element.get_number() }}"/>
</form>
</div>
</div>
{% endfor %}
</div>
<form name="reorder" method="POST" action="/prod/story/{{story.get_sbas_id() }}/{{story.get_record_id() }}/reorder/">
{% for element in story.get_children() %}
<input type="hidden" name="element[{{ element.get_record_id() }}]" value="{{ element.get_number() }}"/>
{% endfor %}
<button>{% trans 'boutton::valider' %}</button>
</form>
</div>
<script type="text/javascript">
$(document).ready(function(){
var container = p4.Dialog.get(1).getDomElement();
$('button.autoorder', container).bind('click', function(){
autoorder();
return false;
});
$('button.reverseorder', container).bind('click', function(){
reverse_order();
return false;
});
function autoorder()
{
var val = $.trim($('#auto_order').val());
if(val == '')
return;
var sorter = {};
$('#reorder_box .diapo form').each(function(i,n){
var id = $('input[name=id]',n).val();
switch(val)
{
case 'title':
default:
var data = $('input[name=title]',n).val();
break;
case 'default':
var data = $('input[name=default]',n).val();
break;
}
sorter[id] = data;
});
var data_type = 'string';
switch(val)
{
case 'default':
var data_type = 'integer';
break;
}
sorter = arraySortByValue(sorter, data_type);
var last_moved = false;
for(i in sorter)
{
var elem = $('#ORDER_'+i);
if(last_moved)
{
elem.insertAfter(last_moved);
}
else
{
$('#reorder_box .elements').prepend(elem);
}
last_moved = elem;
}
}
function arraySortByValue(datas, data_type) {
var tmp = new Array();
for (i in datas) {
tmp.push({
v: i,
c: datas[i].toUpperCase(),
o: datas[i]
});
}
switch(data_type)
{
case 'string':
tmp.sort(function (x, y) {
return y.c < x.c;
});
break;
case 'integer':
tmp.sort(function (x, y) {
return parseInt(y.c) < parseInt(x.c);
});
break;
}
var out = {};
for (i in tmp) {
out[tmp[i].v] = tmp[i].o;
}
return out;
}
function reverse_order()
{
var elems = $('#reorder_box .diapo');
var last_moved = false;
elems.each(function(i,n){
var elem = $(n);
if(last_moved)
{
elem.insertBefore(last_moved);
}
else
{
$('#reorder_box .elements').append(elem);
}
last_moved = elem;
});
}
$('.elements', container).sortable({
appendTo : container,
placeholder: 'diapo ui-sortable-placeholder',
distance:20,
cursorAt: {
top:10,
left:-20
},
items:'div.diapo',
scroll:true,
scrollSensitivity:40,
scrollSpeed:30,
start:function(event, ui){
var selected = $('.selected',container);
selected.each(function(i,n){
$(n).attr('position',i);
});
var n = selected.length - 1;
$('.selected:visible', container).hide();
while(n > 0)
{
$('<div style="height:130px;" class="diapo ui-sortable-placeholderfollow"></div>').insertAfter($('.diapo.ui-sortable-placeholder', cont));
n--;
}
},
stop:function(event, ui){
$('.diapo.ui-sortable-placeholderfollow', container).remove();
var main_id = $(ui.item[0]).attr('id');
var selected = $('.selected',container);
var sorter = new Array();
selected.each(function(i,n){
var position = parseInt($(n).attr('position'));
if(position !== '')
{
sorter[position] = $(n);
}
var id = $(n).attr('id');
if(id == main_id)
{
return;
}
});
var before = true;
var last_moved = $(ui.item[0]);
$(sorter).each(function(i,n){
$(n).show().removeAttr('position');
if($(n).attr('id') == main_id)
{
before = false;
}
else
{
if(before)
$(n).insertBefore($(ui.item[0]));
else
$(n).insertAfter($(last_moved));
}
last_moved = sorter[i];
});
},
change:function(){
$('.diapo.ui-sortable-placeholderfollow', container).remove();
var n = OrderSelection.length() - 1 ;
while(n > 0)
{
$('<div style="height:130px;" class="diapo ui-sortable-placeholderfollow"></div>').insertAfter($('.diapo.ui-sortable-placeholder', container));
n--;
}
}
}).disableSelection();
var OrderSelection = new Selectable($('.elements', container), {
selector : '.CHIM'
});
$('form[name="reorder"]', container).bind('submit', function(event){
//$this.SetLoader(true);
var $form = $(this);
$('.elements form', container).each(function(i, el){
var id = $('input[name="id"]', $(el)).val();
$('input[name="element[' + id + ']"]', $form).val(i+1);
});
$.ajax({
type: $form.attr('method'),
url: $form.attr('action'),
data: $form.serializeArray(),
dataType: 'json',
beforeSend:function(){
},
success: function(data){
if(!data.success)
{
alert(data.message);
}
p4.WorkZone.refresh('current', null, false, 'story');
p4.Dialog.get(1).Close();
return;
},
error: function(){
},
timeout: function(){
}
});
return false;
});
});
</script>

View File

@@ -1091,18 +1091,6 @@
</form>
<div id="dialog_dwnl" title="{% trans 'action : exporter' %}" style="display:none;"></div>
<div title="{% trans 'Re-ordonner' %}" id="reorder_dialog" style="position:relative;overflow:hidden;">
<div id="reorder_options" class="PNB" style="height:30px;bottom:auto;">
<span>{% trans 'Reordonner automatiquement' %}</span>
<select id="auto_order">
<option value="">{% trans 'Choisir' %}</option>
<option value="default">{% trans 'Re-initialiser' %}</option>
<option value="title">{% trans 'Titre' %}</option>
</select>
<input type="button" onclick="autoorder();return false;" value="{% trans 'Re-ordonner' %}"/>
<input type="button" onclick="reverse_order();return false;" value="{% trans 'Inverser' %}" style="float:right;"/></div>
<div style="top:30px;overflow:auto;" id="reorder_box" class="PNB loading"></div>
</div>
<script type="text/javascript">
{% include "prod/thesaurus.js" %}
</script>

View File

@@ -3083,59 +3083,6 @@ function autoorder()
}
function arraySortByValue(datas, data_type) {
var tmp = new Array();
for (i in datas) {
tmp.push({
v: i,
c: datas[i].toUpperCase(),
o: datas[i]
});
}
switch(data_type)
{
case 'string':
tmp.sort(function (x, y) {
return y.c < x.c;
});
break;
case 'integer':
tmp.sort(function (x, y) {
return parseInt(y.c) < parseInt(x.c);
});
break;
}
var out = new Array();
for (i in tmp) {
out[tmp[i].v] = tmp[i].o;
}
return out;
}
function reverse_order()
{
var elems = $('#reorder_box .diapo');
var last_moved = false;
elems.each(function(i,n){
var elem = $(n);
if(last_moved)
{
elem.insertBefore(last_moved);
}
else
{
$('#reorder_box').append(elem);
}
last_moved = elem;
});
}
function set_up_feed_box(data)
{
var $feed_box = $('#modal_feed');