Push & Feedback templates

This commit is contained in:
Romain Neutron
2012-02-02 15:21:51 +01:00
parent 5439b3450c
commit 9135de65cf
5 changed files with 647 additions and 602 deletions

View File

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

View File

@@ -89,9 +89,10 @@ class Language implements ControllerProviderInterface
$out['sureToRemoveList'] = _('Are you sure you want to delete this list ?'); $out['sureToRemoveList'] = _('Are you sure you want to delete this list ?');
$out['newListName'] = _('New list name ?'); $out['newListName'] = _('New list name ?');
$out['listNameCannotBeEmpty'] = _('List name can not be empty'); $out['listNameCannotBeEmpty'] = _('List name can not be empty');
$out['FeedBackName'] = _('Name');
$out['FeedBackMessage'] = _('Message');
$out['FeedBackNoUsersSelected'] = _('No users selected');
$Serializer = $app['Core']['Serializer']; $Serializer = $app['Core']['Serializer'];
return new Response( return new Response(

View File

@@ -64,6 +64,7 @@ class Push implements ControllerProviderInterface
'type' => 'LIST' 'type' => 'LIST'
, 'list_id' => $List->getId() , 'list_id' => $List->getId()
, 'name' => $List->getName() , 'name' => $List->getName()
, 'length' => count($entries)
, 'entries' => $entries , 'entries' => $entries
); );
}; };
@@ -90,7 +91,7 @@ class Push implements ControllerProviderInterface
'lists' => $repository->findUserLists($app['Core']->getAuthenticatedUser()) 'lists' => $repository->findUserLists($app['Core']->getAuthenticatedUser())
); );
$template = 'prod/actions/Feedback.html.twig'; $template = 'prod/actions/Push.html.twig';
/* @var $twig \Twig_Environment */ /* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig(); $twig = $app['Core']->getTwig();
@@ -145,7 +146,7 @@ class Push implements ControllerProviderInterface
$push_description = $request->get('push_description'); $push_description = $request->get('push_description');
$receivers = $request->get('receivers'); $receivers = $request->get('participants');
if (!is_array($receivers) || count($receivers) === 0) if (!is_array($receivers) || count($receivers) === 0)
{ {
@@ -209,7 +210,7 @@ class Push implements ControllerProviderInterface
$message = sprintf( $message = sprintf(
_('%1$d records have been sent to %2$d users') _('%1$d records have been sent to %2$d users')
, count($pusher->get_elements()) , count($pusher->get_elements())
, count($request->get('receivers')) , count($receivers)
); );
$ret = array( $ret = array(
@@ -286,11 +287,11 @@ class Push implements ControllerProviderInterface
$em->persist($BasketElement); $em->persist($BasketElement);
} }
//
$em->flush(); // $em->flush();
} }
$em->refresh($Basket); // $em->refresh($Basket);
if (!$Basket->getValidation()) if (!$Basket->getValidation())
{ {
@@ -309,7 +310,7 @@ class Push implements ControllerProviderInterface
$appbox = \appbox::get_instance(); $appbox = \appbox::get_instance();
foreach ($participants as $participant) foreach ($participants as $key=>$participant)
{ {
foreach (array('see_others', 'usr_id', 'agree', 'HD') as $mandatoryparam) foreach (array('see_others', 'usr_id', 'agree', 'HD') as $mandatoryparam)
{ {
@@ -386,7 +387,7 @@ class Push implements ControllerProviderInterface
$message = sprintf( $message = sprintf(
_('%1$d records have been sent for validation to %2$d users') _('%1$d records have been sent for validation to %2$d users')
, count($pusher->get_elements()) , count($pusher->get_elements())
, count($request->get('$participants')) , count($request->get('participants'))
); );
$ret = array( $ret = array(
@@ -597,6 +598,79 @@ class Push implements ControllerProviderInterface
$controllers->match('/edit-list/{list_id}/', function(Application $app, Request $request, $list_id)
{
$user = $app['Core']->getAuthenticatedUser();
$em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\UsrList');
$list = $repository->findUserListByUserAndId($user, $list_id);
$query = new \User_Query(\appbox::get_instance());
$query->on_bases_where_i_am($user->ACL(), array('canpush'));
if ($request->get('query'))
{
$query->like($request->get('like_field'), $request->get('query'))
->like_match(\User_Query::LIKE_MATCH_OR);
}
if (is_array($request->get('Activity')))
{
$query->haveActivities($request->get('Activity'));
}
if (is_array($request->get('Template')))
{
$query->haveTemplate($request->get('Template'));
}
if (is_array($request->get('Company')))
{
$query->inCompanies($request->get('Company'));
}
if (is_array($request->get('Country')))
{
$query->inCountries($request->get('Country'));
}
if (is_array($request->get('Position')))
{
$query->havePositions($request->get('Position'));
}
$sort = $request->get('srt', 'usr_creationdate');
$ord = $request->get('ord', 'desc');
$query->sort_by($sort, $ord);
$results = $query->include_phantoms()
->limit(0, 10)
->execute()->get_results();
$params = array(
'query' => $query
, 'results' => $results
, 'list' => $list
, 'sort' => $sort
, 'ord' => $ord
);
if($request->get('type') === 'fragment')
{
return new Response(
$app['Core']->getTwig()->render('prod/actions/Feedback/ResultTable.html.twig', $params)
);
}
else
{
return new Response(
$app['Core']->getTwig()->render('prod/actions/Feedback/list.html.twig', $params)
);
}
}
)->assert('list_id', '\d+');
return $controllers; return $controllers;
} }

View File

@@ -183,7 +183,7 @@ class UsrLists implements ControllerProviderInterface
} }
catch (\Exception $e) catch (\Exception $e)
{ {
} }
$Json = $app['Core']['Serializer']->serialize($datas, 'json'); $Json = $app['Core']['Serializer']->serialize($datas, 'json');
@@ -198,91 +198,56 @@ class UsrLists implements ControllerProviderInterface
$controllers->get('/list/{list_id}/', function(Application $app, Request $request, $list_id) $controllers->get('/list/{list_id}/', function(Application $app, Request $request, $list_id)
{ {
$datas = array(
'success' => false
, 'message' => ''
, 'result' => null
);
$result = array(); $result = array();
try $user = $app['Core']->getAuthenticatedUser();
$em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\UsrList');
$list = $repository->findUserListByUserAndId($user, $list_id);
$entries = new \Doctrine\Common\Collections\ArrayCollection();
$owners = new \Doctrine\Common\Collections\ArrayCollection();
foreach ($list->getOwners() as $owner)
{ {
$user = $app['Core']->getAuthenticatedUser(); $owners[] = array(
$em = $app['Core']->getEntityManager(); 'usr_id' => $owner->getUser()->get_id(),
'display_name' => $owner->getUser()->get_display_name(),
$repository = $em->getRepository('\Entities\UsrList'); 'position' => $owner->getUser()->get_position(),
'job' => $owner->getUser()->get_job(),
$list = $repository->findUserListByUserAndId($user, $list_id); 'company' => $owner->getUser()->get_company(),
'email' => $owner->getUser()->get_email(),
$entries = new \Doctrine\Common\Collections\ArrayCollection(); 'role' => $owner->getRole()
$owners = new \Doctrine\Common\Collections\ArrayCollection();
foreach ($list->getOwners() as $owner)
{
$owners[] = array(
'usr_id' => $owner->getUser()->get_id(),
'display_name' => $owner->getUser()->get_display_name(),
'position' => $owner->getUser()->get_position(),
'job' => $owner->getUser()->get_job(),
'company' => $owner->getUser()->get_company(),
'email' => $owner->getUser()->get_email(),
'role' => $owner->getRole()
);
}
foreach ($list->getEntries() as $entry)
{
$entries[] = array(
'usr_id' => $entry->getUser()->get_id(),
'display_name' => $entry->getUser()->get_display_name(),
'position' => $entry->getUser()->get_position(),
'job' => $entry->getUser()->get_job(),
'company' => $entry->getUser()->get_company(),
'email' => $entry->getUser()->get_email(),
);
}
/* @var $list \Entities\UsrList */
$result = array(
'id' => $list->getId(),
'name' => $list->getName(),
'created' => $list->getCreated()->format(DATE_ATOM),
'updated' => $list->getUpdated()->format(DATE_ATOM),
'owners' => $owners,
'users' => $entries
);
$datas = array(
'success' => true
, 'message' => ''
, 'result' => $result
); );
} }
catch (ControllerException $e)
foreach ($list->getEntries() as $entry)
{ {
$datas = array( $entries[] = array(
'success' => false 'usr_id' => $entry->getUser()->get_id(),
, 'message' => $e->getMessage() 'display_name' => $entry->getUser()->get_display_name(),
'position' => $entry->getUser()->get_position(),
'job' => $entry->getUser()->get_job(),
'company' => $entry->getUser()->get_company(),
'email' => $entry->getUser()->get_email(),
); );
} }
catch (\Exception $e)
{
}
if ($request->getRequestFormat() == 'json') /* @var $list \Entities\UsrList */
{ $result = array(
$Json = $app['Core']['Serializer']->serialize($datas, 'json'); 'id' => $list->getId(),
'name' => $list->getName(),
'created' => $list->getCreated()->format(DATE_ATOM),
'updated' => $list->getUpdated()->format(DATE_ATOM),
'owners' => $owners,
'users' => $entries
);
return new Response($Json, 200, array('Content-Type' => 'application/json'));
}
else
{
return new Response($app['Core']->getTwig()->render('prod/actions/Feedback/list.html.twig', $result)); return new Response($app['Core']->getTwig()->render('prod/actions/Feedback/list.html.twig', $result));
}
} }
); );
@@ -290,34 +255,34 @@ class UsrLists implements ControllerProviderInterface
* Update a list * Update a list
*/ */
$controllers->post('/list/{list_id}/update/', function(Application $app, $list_id) $controllers->post('/list/{list_id}/update/', function(Application $app, $list_id)
{ {
$request = $app['request']; $request = $app['request'];
$datas = array( $datas = array(
'success' => false 'success' => false
, 'message' => _('Unable to update list') , 'message' => _('Unable to update list')
); );
try try
{ {
$list_name = $request->get('name'); $list_name = $request->get('name');
if (!$list_name) if (!$list_name)
{ {
throw new ControllerException(_('List name is required')); throw new ControllerException(_('List name is required'));
} }
$user = $app['Core']->getAuthenticatedUser(); $user = $app['Core']->getAuthenticatedUser();
$em = $app['Core']->getEntityManager(); $em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\UsrList'); $repository = $em->getRepository('\Entities\UsrList');
$list = $repository->findUserListByUserAndId($user, $list_id); $list = $repository->findUserListByUserAndId($user, $list_id);
$list->setName($list_name); $list->setName($list_name);
$em->merge($list); $em->merge($list);
$em->flush(); $em->flush();
$datas = array( $datas = array(
'success' => true 'success' => true
@@ -333,32 +298,32 @@ class UsrLists implements ControllerProviderInterface
} }
catch (\Exception $e) catch (\Exception $e)
{ {
} }
$Json = $app['Core']['Serializer']->serialize($datas, 'json'); $Json = $app['Core']['Serializer']->serialize($datas, 'json');
return new Response($Json, 200, array('Content-Type' => 'application/json')); return new Response($Json, 200, array('Content-Type' => 'application/json'));
} }
)->assert('list_id', '\d+'); )->assert('list_id', '\d+');
/** /**
* Delete a list * Delete a list
*/ */
$controllers->post('/list/{list_id}/delete/', function(Application $app, $list_id) $controllers->post('/list/{list_id}/delete/', function(Application $app, $list_id)
{ {
$em = $app['Core']->getEntityManager(); $em = $app['Core']->getEntityManager();
try try
{ {
$repository = $em->getRepository('\Entities\UsrList'); $repository = $em->getRepository('\Entities\UsrList');
$user = $app['Core']->getAuthenticatedUser(); $user = $app['Core']->getAuthenticatedUser();
$list = $repository->findUserListByUserAndId($user, $list_id); $list = $repository->findUserListByUserAndId($user, $list_id);
$em->remove($list); $em->remove($list);
$em->flush(); $em->flush();
$datas = array( $datas = array(
'success' => true 'success' => true
@@ -375,16 +340,16 @@ class UsrLists implements ControllerProviderInterface
catch (\Exception $e) catch (\Exception $e)
{ {
$datas = array( $datas = array(
'success' => false 'success' => false
, 'message' => sprintf(_('Unable to delete list')) , 'message' => sprintf(_('Unable to delete list'))
); );
} }
$Json = $app['Core']['Serializer']->serialize($datas, 'json'); $Json = $app['Core']['Serializer']->serialize($datas, 'json');
return new Response($Json, 200, array('Content-Type' => 'application/json')); return new Response($Json, 200, array('Content-Type' => 'application/json'));
} }
)->assert('list_id', '\d+'); )->assert('list_id', '\d+');
@@ -395,21 +360,21 @@ class UsrLists implements ControllerProviderInterface
{ {
$em = $app['Core']->getEntityManager(); $em = $app['Core']->getEntityManager();
try try
{ {
$repository = $em->getRepository('\Entities\UsrList'); $repository = $em->getRepository('\Entities\UsrList');
$user = $app['Core']->getAuthenticatedUser(); $user = $app['Core']->getAuthenticatedUser();
$list = $repository->findUserListByUserAndId($user, $list_id); $list = $repository->findUserListByUserAndId($user, $list_id);
/* @var $list \Entities\UsrList */ /* @var $list \Entities\UsrList */
$entry_repository = $em->getRepository('\Entities\UsrListEntry'); $entry_repository = $em->getRepository('\Entities\UsrListEntry');
$user_entry = $entry_repository->findEntryByListAndUsrId($list, $usr_id); $user_entry = $entry_repository->findEntryByListAndUsrId($list, $usr_id);
$em->remove($user_entry); $em->remove($user_entry);
$em->flush(); $em->flush();
$datas = array( $datas = array(
'success' => true 'success' => true
@@ -432,10 +397,10 @@ class UsrLists implements ControllerProviderInterface
); );
} }
$Json = $app['Core']['Serializer']->serialize($datas, 'json'); $Json = $app['Core']['Serializer']->serialize($datas, 'json');
return new Response($Json, 200, array('Content-Type' => 'application/json')); return new Response($Json, 200, array('Content-Type' => 'application/json'));
} }
)->assert('list_id', '\d+')->assert('entry_id', '\d+'); )->assert('list_id', '\d+')->assert('entry_id', '\d+');
/** /**
@@ -479,7 +444,7 @@ class UsrLists implements ControllerProviderInterface
$inserted_usr_ids[] = $user_entry->get_id(); $inserted_usr_ids[] = $user_entry->get_id();
} }
$em->flush(); $em->flush();
if (count($inserted_usr_ids) > 1) if (count($inserted_usr_ids) > 1)
{ {
@@ -508,16 +473,16 @@ class UsrLists implements ControllerProviderInterface
catch (\Exception $e) catch (\Exception $e)
{ {
$datas = array( $datas = array(
'success' => false 'success' => false
, 'message' => _('Unable to add usr to list') , 'message' => _('Unable to add usr to list')
); );
} }
$Json = $app['Core']['Serializer']->serialize($datas, 'json'); $Json = $app['Core']['Serializer']->serialize($datas, 'json');
return new Response($Json, 200, array('Content-Type' => 'application/json')); return new Response($Json, 200, array('Content-Type' => 'application/json'));
} }
)->assert('list_id', '\d+')->assert('usr_id', '\d+'); )->assert('list_id', '\d+')->assert('usr_id', '\d+');
/** /**

View File

@@ -36,232 +36,232 @@ class WorkZone implements ControllerProviderInterface
$controllers = new ControllerCollection(); $controllers = new ControllerCollection();
$controllers->get('/', function(Application $app) $controllers->get('/', function(Application $app)
{ {
$params = array( $params = array(
'WorkZone' => new Helper\WorkZone($app['Core'], $app['request']) 'WorkZone' => new Helper\WorkZone($app['Core'], $app['request'])
, 'selected_type' => $app['request']->get('type') , 'selected_type' => $app['request']->get('type')
, 'selected_id' => $app['request']->get('id') , 'selected_id' => $app['request']->get('id')
, 'srt' => $app['request']->get('sort') , 'srt' => $app['request']->get('sort')
); );
return new Response($app['Core']->getTwig()->render('prod/WorkZone/WorkZone.html.twig', $params)); return new Response($app['Core']->getTwig()->render('prod/WorkZone/WorkZone.html.twig', $params));
}); });
$controllers->get('/Browse/', function(Application $app) $controllers->get('/Browse/', function(Application $app)
{ {
$date_obj = new \DateTime(); $date_obj = new \DateTime();
$params = array( $params = array(
'CurrentYear' => $date_obj->format('Y') 'CurrentYear' => $date_obj->format('Y')
); );
return new Response( return new Response(
$app['Core']->getTwig()->render('prod/WorkZone/Browser/Browser.html.twig' $app['Core']->getTwig()->render('prod/WorkZone/Browser/Browser.html.twig'
, $params , $params
) )
); );
}); });
$controllers->get('/Browse/Search/', function(Application $app) $controllers->get('/Browse/Search/', function(Application $app)
{ {
$user = $app['Core']->getAuthenticatedUser(); $user = $app['Core']->getAuthenticatedUser();
$request = $app['request']; $request = $app['request'];
$em = $app['Core']->getEntityManager(); $em = $app['Core']->getEntityManager();
/* @var $em \Doctrine\ORM\EntityManager */ /* @var $em \Doctrine\ORM\EntityManager */
$BasketRepo = $em->getRepository('\Entities\Basket'); $BasketRepo = $em->getRepository('\Entities\Basket');
$Page = (int) $request->get('Page', 0); $Page = (int) $request->get('Page', 0);
$PerPage = 10; $PerPage = 10;
$offsetStart = max(($Page - 1) * $PerPage, 0); $offsetStart = max(($Page - 1) * $PerPage, 0);
$Baskets = $BasketRepo->findWorkzoneBasket( $Baskets = $BasketRepo->findWorkzoneBasket(
$user $user
, $request->get('Query') , $request->get('Query')
, $request->get('Year') , $request->get('Year')
, $request->get('Type') , $request->get('Type')
, $offsetStart , $offsetStart
, $PerPage , $PerPage
); );
$page = floor($offsetStart / $PerPage) + 1; $page = floor($offsetStart / $PerPage) + 1;
$maxPage = floor($Baskets['count'] / $PerPage) + 1; $maxPage = floor($Baskets['count'] / $PerPage) + 1;
$params = array( $params = array(
'Baskets' => $Baskets['result'] 'Baskets' => $Baskets['result']
, 'Page' => $page , 'Page' => $page
, 'MaxPage' => $maxPage , 'MaxPage' => $maxPage
, 'Total' => $Baskets['count'] , 'Total' => $Baskets['count']
, 'Query' => $request->get('Query') , 'Query' => $request->get('Query')
, 'Year' => $request->get('Year') , 'Year' => $request->get('Year')
, 'Type' => $request->get('Type') , 'Type' => $request->get('Type')
); );
return new Response($app['Core']->getTwig()->render('prod/WorkZone/Browser/Results.html.twig', $params)); return new Response($app['Core']->getTwig()->render('prod/WorkZone/Browser/Results.html.twig', $params));
}); });
$controllers->get('/Browse/Basket/{basket_id}/', function(Application $app, $basket_id) $controllers->get('/Browse/Basket/{basket_id}/', function(Application $app, Request $request, $basket_id)
{ {
$em = $app['Core']->getEntityManager(); $em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket') $basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser()); ->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
$params = array( $params = array(
'Basket' => $basket 'Basket' => $basket
); );
return new Response($app['Core']->getTwig()->render('prod/WorkZone/Browser/Basket.html.twig', $params)); return new Response($app['Core']->getTwig()->render('prod/WorkZone/Browser/Basket.html.twig', $params));
})->assert('basket_id', '\d+'); })->assert('basket_id', '\d+');
$controllers->post( $controllers->post(
'/attachStories/' '/attachStories/'
, function(Application $app, Request $request) , function(Application $app, Request $request)
{ {
if (!$request->get('stories')) if (!$request->get('stories'))
throw new \Exception_BadRequest(); throw new \Exception_BadRequest();
$user = $app['Core']->getAuthenticatedUser(); $user = $app['Core']->getAuthenticatedUser();
$em = $app['Core']->getEntityManager(); $em = $app['Core']->getEntityManager();
/* @var $em \Doctrine\ORM\EntityManager */ /* @var $em \Doctrine\ORM\EntityManager */
$StoryWZRepo = $em->getRepository('\Entities\StoryWZ'); $StoryWZRepo = $em->getRepository('\Entities\StoryWZ');
$alreadyFixed = $done = 0; $alreadyFixed = $done = 0;
foreach (explode(';', $request->get('stories')) as $element) foreach (explode(';', $request->get('stories')) as $element)
{ {
$element = explode('_', $element); $element = explode('_', $element);
$Story = new \record_adapter($element[0], $element[1]); $Story = new \record_adapter($element[0], $element[1]);
if (!$Story->is_grouping()) if (!$Story->is_grouping())
throw new \Exception('You can only attach stories'); throw new \Exception('You can only attach stories');
if (!$user->ACL()->has_access_to_base($Story->get_base_id())) if (!$user->ACL()->has_access_to_base($Story->get_base_id()))
throw new \Exception_Forbidden('You do not have access to this Story'); throw new \Exception_Forbidden('You do not have access to this Story');
if ($StoryWZRepo->findUserStory($user, $Story)) if ($StoryWZRepo->findUserStory($user, $Story))
{ {
$alreadyFixed++; $alreadyFixed++;
continue; continue;
} }
$StoryWZ = new \Entities\StoryWZ(); $StoryWZ = new \Entities\StoryWZ();
$StoryWZ->setUser($user); $StoryWZ->setUser($user);
$StoryWZ->setRecord($Story); $StoryWZ->setRecord($Story);
$em->persist($StoryWZ); $em->persist($StoryWZ);
$done++; $done++;
} }
$em->flush(); $em->flush();
if ($alreadyFixed === 0) if ($alreadyFixed === 0)
{ {
if ($done <= 1) if ($done <= 1)
{ {
$message = sprintf( $message = sprintf(
_('%d Story attached to the WorkZone') _('%d Story attached to the WorkZone')
, $done , $done
); );
} }
else else
{ {
$message = sprintf( $message = sprintf(
_('%d Stories attached to the WorkZone') _('%d Stories attached to the WorkZone')
, $done , $done
); );
} }
} }
else else
{ {
if ($done <= 1) if ($done <= 1)
{ {
$message = sprintf( $message = sprintf(
_('%1$d Story attached to the WorkZone, %2$d already attached') _('%1$d Story attached to the WorkZone, %2$d already attached')
, $done , $done
, $alreadyFixed , $alreadyFixed
); );
} }
else else
{ {
$message = sprintf( $message = sprintf(
_('%1$d Stories attached to the WorkZone, %2$d already attached') _('%1$d Stories attached to the WorkZone, %2$d already attached')
, $done , $done
, $alreadyFixed , $alreadyFixed
); );
} }
} }
$data = array( $data = array(
'success' => true 'success' => true
, 'message' => $message , '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')); return new Response($datas, 200, array('Content-type' => 'application/json'));
} }
else else
{ {
return new RedirectResponse('/{sbas_id}/{record_id}/'); return new RedirectResponse('/{sbas_id}/{record_id}/');
} }
}); });
$controllers->post( $controllers->post(
'/detachStory/{sbas_id}/{record_id}/' '/detachStory/{sbas_id}/{record_id}/'
, function(Application $app, Request $request, $sbas_id, $record_id) , function(Application $app, Request $request, $sbas_id, $record_id)
{ {
$Story = new \record_adapter($sbas_id, $record_id); $Story = new \record_adapter($sbas_id, $record_id);
$user = $app['Core']->getAuthenticatedUser(); $user = $app['Core']->getAuthenticatedUser();
$em = $app['Core']->getEntityManager(); $em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\StoryWZ'); $repository = $em->getRepository('\Entities\StoryWZ');
/* @var $repository \Repositories\StoryWZRepository */ /* @var $repository \Repositories\StoryWZRepository */
$StoryWZ = $repository->findUserStory($user, $Story); $StoryWZ = $repository->findUserStory($user, $Story);
if (!$StoryWZ) if (!$StoryWZ)
{ {
throw new \Exception_NotFound('Story not found'); throw new \Exception_NotFound('Story not found');
} }
$em->remove($StoryWZ); $em->remove($StoryWZ);
$em->flush(); $em->flush();
$data = array( $data = array(
'success' => true 'success' => true
, 'message' => _('Story detached from the WorkZone') , 'message' => _('Story detached from the WorkZone')
); );
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')); return new Response($datas, 200, array('Content-type' => 'application/json'));
} }
else else
{ {
return new RedirectResponse('/'); return new RedirectResponse('/');
} }
})->assert('sbas_id', '\d+')->assert('record_id', '\d+'); })->assert('sbas_id', '\d+')->assert('record_id', '\d+');
return $controllers; return $controllers;