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)
{
$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());
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
$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());
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
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,83 @@ 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());
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
$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());
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
/* @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)
{
/* @var $em \Doctrine\ORM\EntityManager */
$em = $app['Core']->getEntityManager();
'/{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());
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
/* @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+');
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 +286,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());
$basket = $em->getRepository('\Entities\Basket')
->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->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());
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
$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,91 +406,96 @@ 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());
/* @var $em \Doctrine\ORM\EntityManager */
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
$user = $app['Core']->getAuthenticatedUser();
/* @var $user \User_Adapter */
$user = $app['Core']->getAuthenticatedUser();
/* @var $user \User_Adapter */
$n = 0;
$n = 0;
foreach ($request->get('elements') as $bask_element_id)
{
$basket_element = $em->getRepository('\Entities\BasketElement')
->findUserElement($bask_element_id, $user);
foreach ($request->get('elements') as $bask_element_id)
{
$basket_element = $em->getRepository('\Entities\BasketElement')
->findUserElement($bask_element_id, $user);
if (!$basket_element)
{
continue;
}
if (!$basket_element)
{
continue;
}
$basket_element->setBasket($basket);
$basket_element->setBasket($basket);
$em->merge($basket_element);
$em->merge($basket_element);
$n++;
}
$n++;
}
$em->merge($basket);
$em->flush();
$em->merge($basket);
$em->flush();
$data = array(
'success' => true
, 'message' => sprintf(_('%d records moved'), $n)
);
$data = array(
'success' => true
, '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'));
}
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 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, $basket_id)
{
$em = $app['Core']->getEntityManager();
$controllers->get('/{basket_id}/', function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
$basket->setIsRead(true);
$basket->setIsRead(true);
$em->merge($basket);
$em->flush();
$em->merge($basket);
$em->flush();
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
/* @var $twig \Twig_Environment */
$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);
})->assert('basket_id', '\d+');
$html = $twig->render('prod/WorkZone/Basket.html.twig', $params);
return new Response($html);
})->assert('basket_id', '\d+');
return $controllers;
}

View File

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

View File

@@ -64,6 +64,7 @@ class Push implements ControllerProviderInterface
'type' => 'LIST'
, 'list_id' => $List->getId()
, 'name' => $List->getName()
, 'length' => count($entries)
, 'entries' => $entries
);
};
@@ -90,7 +91,7 @@ class Push implements ControllerProviderInterface
'lists' => $repository->findUserLists($app['Core']->getAuthenticatedUser())
);
$template = 'prod/actions/Feedback.html.twig';
$template = 'prod/actions/Push.html.twig';
/* @var $twig \Twig_Environment */
$twig = $app['Core']->getTwig();
@@ -145,7 +146,7 @@ class Push implements ControllerProviderInterface
$push_description = $request->get('push_description');
$receivers = $request->get('receivers');
$receivers = $request->get('participants');
if (!is_array($receivers) || count($receivers) === 0)
{
@@ -209,7 +210,7 @@ class Push implements ControllerProviderInterface
$message = sprintf(
_('%1$d records have been sent to %2$d users')
, count($pusher->get_elements())
, count($request->get('receivers'))
, count($receivers)
);
$ret = array(
@@ -286,11 +287,11 @@ class Push implements ControllerProviderInterface
$em->persist($BasketElement);
}
$em->flush();
//
// $em->flush();
}
$em->refresh($Basket);
// $em->refresh($Basket);
if (!$Basket->getValidation())
{
@@ -309,7 +310,7 @@ class Push implements ControllerProviderInterface
$appbox = \appbox::get_instance();
foreach ($participants as $participant)
foreach ($participants as $key=>$participant)
{
foreach (array('see_others', 'usr_id', 'agree', 'HD') as $mandatoryparam)
{
@@ -386,7 +387,7 @@ class Push implements ControllerProviderInterface
$message = sprintf(
_('%1$d records have been sent for validation to %2$d users')
, count($pusher->get_elements())
, count($request->get('$participants'))
, count($request->get('participants'))
);
$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;
}

View File

@@ -183,7 +183,7 @@ class UsrLists implements ControllerProviderInterface
}
catch (\Exception $e)
{
}
$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)
{
$datas = array(
'success' => false
, 'message' => ''
, 'result' => null
);
$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();
$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)
{
$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
$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()
);
}
catch (ControllerException $e)
foreach ($list->getEntries() as $entry)
{
$datas = array(
'success' => false
, 'message' => $e->getMessage()
$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(),
);
}
catch (\Exception $e)
{
}
if ($request->getRequestFormat() == 'json')
{
$Json = $app['Core']['Serializer']->serialize($datas, 'json');
/* @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
);
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
*/
$controllers->post('/list/{list_id}/update/', function(Application $app, $list_id)
{
$request = $app['request'];
{
$request = $app['request'];
$datas = array(
'success' => false
, 'message' => _('Unable to update list')
);
$datas = array(
'success' => false
, 'message' => _('Unable to update list')
);
try
{
$list_name = $request->get('name');
try
{
$list_name = $request->get('name');
if (!$list_name)
{
throw new ControllerException(_('List name is required'));
}
if (!$list_name)
{
throw new ControllerException(_('List name is required'));
}
$user = $app['Core']->getAuthenticatedUser();
$em = $app['Core']->getEntityManager();
$user = $app['Core']->getAuthenticatedUser();
$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->flush();
$em->merge($list);
$em->flush();
$datas = array(
'success' => true
@@ -333,32 +298,32 @@ class UsrLists implements ControllerProviderInterface
}
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+');
/**
* Delete a list
*/
$controllers->post('/list/{list_id}/delete/', function(Application $app, $list_id)
{
$em = $app['Core']->getEntityManager();
{
$em = $app['Core']->getEntityManager();
try
{
$repository = $em->getRepository('\Entities\UsrList');
try
{
$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->flush();
$em->remove($list);
$em->flush();
$datas = array(
'success' => true
@@ -375,16 +340,16 @@ class UsrLists implements ControllerProviderInterface
catch (\Exception $e)
{
$datas = array(
'success' => false
, 'message' => sprintf(_('Unable to delete list'))
);
}
$datas = array(
'success' => false
, '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+');
@@ -395,21 +360,21 @@ class UsrLists implements ControllerProviderInterface
{
$em = $app['Core']->getEntityManager();
try
{
$repository = $em->getRepository('\Entities\UsrList');
try
{
$repository = $em->getRepository('\Entities\UsrList');
$user = $app['Core']->getAuthenticatedUser();
$user = $app['Core']->getAuthenticatedUser();
$list = $repository->findUserListByUserAndId($user, $list_id);
/* @var $list \Entities\UsrList */
$list = $repository->findUserListByUserAndId($user, $list_id);
/* @var $list \Entities\UsrList */
$entry_repository = $em->getRepository('\Entities\UsrListEntry');
$entry_repository = $em->getRepository('\Entities\UsrListEntry');
$user_entry = $entry_repository->findEntryByListAndUsrId($list, $usr_id);
$em->remove($user_entry);
$em->flush();
$em->remove($user_entry);
$em->flush();
$datas = array(
'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+');
/**
@@ -479,7 +444,7 @@ class UsrLists implements ControllerProviderInterface
$inserted_usr_ids[] = $user_entry->get_id();
}
$em->flush();
$em->flush();
if (count($inserted_usr_ids) > 1)
{
@@ -508,16 +473,16 @@ class UsrLists implements ControllerProviderInterface
catch (\Exception $e)
{
$datas = array(
'success' => false
, 'message' => _('Unable to add usr to list')
);
}
$datas = array(
'success' => false
, '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+');
/**

View File

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