diff --git a/lib/Alchemy/Phrasea/Controller/Prod/Basket.php b/lib/Alchemy/Phrasea/Controller/Prod/Basket.php index d7aba893be..fd676b9ab6 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/Basket.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/Basket.php @@ -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; } diff --git a/lib/Alchemy/Phrasea/Controller/Prod/Language.php b/lib/Alchemy/Phrasea/Controller/Prod/Language.php index ea16ad8f7c..0453ff4eb9 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/Language.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/Language.php @@ -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( diff --git a/lib/Alchemy/Phrasea/Controller/Prod/Push.php b/lib/Alchemy/Phrasea/Controller/Prod/Push.php index 16b8fd2909..29730851db 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/Push.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/Push.php @@ -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; } diff --git a/lib/Alchemy/Phrasea/Controller/Prod/UsrLists.php b/lib/Alchemy/Phrasea/Controller/Prod/UsrLists.php index 2b3c30fc57..69ddf048fd 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/UsrLists.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/UsrLists.php @@ -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+'); /** diff --git a/lib/Alchemy/Phrasea/Controller/Prod/WorkZone.php b/lib/Alchemy/Phrasea/Controller/Prod/WorkZone.php index 8659624f2e..fa5328531e 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/WorkZone.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/WorkZone.php @@ -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;