diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig index c49bc6d9a0ee72b3049de7af4197df6015019bd3..48f29eded499065d8d89782dfb47e4d868b82465 100644 --- a/app/Resources/views/base.html.twig +++ b/app/Resources/views/base.html.twig @@ -261,7 +261,6 @@ Inserer ici le contenu de l'application {% endblock %} </h2> - <br/> {% block body_inner %} {% endblock %} </div> diff --git a/src/ClassCodeBundle/Controller/MeetingController.php b/src/ClassCodeBundle/Controller/MeetingController.php index 427db294a455691d43dbac73a483302ba629f238..4bc95848cc53e28f8e0f6265510dd9ebb2a31474 100644 --- a/src/ClassCodeBundle/Controller/MeetingController.php +++ b/src/ClassCodeBundle/Controller/MeetingController.php @@ -20,14 +20,60 @@ class MeetingController extends Controller if($this->get('security.authorization_checker')->isGranted('ROLE_USER')){ $em = $this->getDoctrine()->getManager(); - $meeting = $em->getRepository('ClassCodeBundle:Meeting')->findAll(); - $meetingWithGeoloc = $em->getRepository('ClassCodeBundle:Meeting')->findAllWithGeoLoc(); + $meetings = $em->getRepository('ClassCodeBundle:Meeting')->findAll(); + $meetingsWithGeoloc = $em->getRepository('ClassCodeBundle:Meeting')->findAllWithGeoLoc(); return $this->render('@ClassCode/Meeting/list.html.twig', array( - 'meeting' => $meeting, - 'meetingWithGeoloc' => $meetingWithGeoloc, + 'meetings' => $meetings, + 'meetingWithGeolocs' => $meetingsWithGeoloc, )); }else{ return $this->render('@ClassCode/error_auth.html.twig'); } - } + } + + /** + * @Route("/querymeetings.{_format}", name="meetingspage",defaults={"_format"="json"},requirements={"_format"="json"})) + */ + public function queryMeetingsAction(Request $request) + { + $em = $this->getDoctrine()->getManager(); + $meetings = $em->getRepository('ClassCodeBundle:Meeting')->findAll(); + $meetingWithGeoloc = $em->getRepository('ClassCodeBundle:Meeting')->findAllWithGeoLoc(); + $meetings_array = array(); + $today = new \DateTime('NOW'); + foreach ($meetings as $m) { + $tmp_array = array(); + $tmp_location_array = array(); + $tmp_array['id'] = $m->getId(); + $tmp_array['ownerId'] = $m->getOwner()->getUserId(); + $date = \DateTime::createFromFormat('d/m/Y', $m->getDate()); + $tmp_array['date'] = $m->getDate(); + $tmp_array["past"] = !($date != '' && $date > $today); + $tmp_array["future"] = !($date != '' && $date < $today); + + $tmp_array['time'] = $m->getTime(); + $tmp_array['structure'] = $m->getStructure(); + $tmp_array['hangoutLink'] = $m->getHangoutLink(); + $tmp_array['capacity'] = $m->getCapacity(); + $tmp_array['more'] = $m->getMore(); + $tmp_array['subject'] = $m->getSubject(); + $tmp_array['precisions'] = $m->getPrecisions(); + $tmp_location_array['street'] = $m->getStreet(); + $tmp_location_array['city'] = $m->getCity(); + $tmp_location_array['zipcode'] = $m->getZipcode(); + $tmp_location_array['state'] = $m->getState(); + $tmp_location_array['country'] = $m->getCountry(); + $tmp_location_array['formattedAddress'] = $m->getFormattedAddress(); + $tmp_location_array['lat'] = $m->getLatitude(); + $tmp_location_array['lng'] = $m->getLongitude(); + $tmp_array['location'] = $tmp_location_array; + + $meetings_array[]=$tmp_array; + + } + return $this->render('@ClassCode/Meeting/queryMeetings.json.twig', array( + 'meetings' => $meetings_array, + 'meetingsWithGeoloc' => $meetingsWithGeoloc, + )); + } } diff --git a/src/ClassCodeBundle/Controller/StructureController.php b/src/ClassCodeBundle/Controller/StructureController.php index 27402c0cce7f86ac97f619e705ff766f622fd94e..192a0fb37373e6f55733fd061b3fe045f2cae28f 100644 --- a/src/ClassCodeBundle/Controller/StructureController.php +++ b/src/ClassCodeBundle/Controller/StructureController.php @@ -19,7 +19,7 @@ class StructureController extends Controller $em = $this->getDoctrine()->getManager(); $structures = $em->getRepository('ClassCodeBundle:Structure')->findAll(); $format = $request->getRequestFormat(); - + return $this->render('@ClassCode/Structure/list.'.$format.'.twig', array( 'structures' => $structures, )); @@ -30,7 +30,7 @@ class StructureController extends Controller */ public function createAction(Request $request) { - if($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')&&($request->getMethod() == 'POST')){ + if($this->get('security.authorization_checker')->isGranted('ROLE_USER')&&($request->getMethod() == 'POST')){ $em = $this->getDoctrine()->getManager(); $token = $this->get('security.token_storage')->getToken() ; $user = $token->getUser(); @@ -87,7 +87,7 @@ class StructureController extends Controller */ public function editAction(Request $request) { - if($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')&&($request->getMethod() == 'POST')){ + if($this->get('security.authorization_checker')->isGranted('ROLE_USER')&&($request->getMethod() == 'POST')){ $em = $this->getDoctrine()->getManager(); $token = $this->get('security.token_storage')->getToken() ; $user = $token->getUser(); @@ -104,43 +104,49 @@ class StructureController extends Controller $StructureLongitude = floatval(str_replace(',','.', ltrim(rtrim($request->request->get("StructureEditLong"))))); $structure = $em->getRepository('ClassCodeBundle:Structure')->findOneBy(array('id' => $StructureId)); + + if($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')|| + ($this->get('security.authorization_checker')->isGranted('ROLE_USER')&&($userName=$structure->getUpdatedBy()))){ - if(($structure)&&($StructureName!='')&&($StructureLogo!='')&&($StructureUrl!='')&& - ($StructureAddress !='')){ - - $entity_structure = $em->getRepository('ClassCodeBundle:Structure') - ->createQueryBuilder('structure') - ->select('structure') - ->where('structure.name = :StructureName') - ->andwhere('structure.id != :StructureId') - ->setParameter('StructureName',$StructureName) - ->setParameter('StructureId',$StructureId) - ->getQuery() - ->getResult(); - - if(!$entity_structure){ - $structure->setName($StructureName); - $structure->setLogo($StructureLogo); - $structure->setUrl($StructureUrl); - $structure->setWho($StructureWho); - $structure->setEmail($StructureEmail); - $structure->setAddress($StructureAddress); - $structure->setLatitude($StructureLatitude); - $structure->setLongitude($StructureLongitude); - - $structure->setUpdatedAt(new \DateTime()); - $structure->setUpdatedBy($userName); - $em->persist($structure); - $em->flush(); - $this ->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('structure.edited')); + if(($structure)&&($StructureName!='')&&($StructureLogo!='')&&($StructureUrl!='')&& + ($StructureAddress !='')){ + + $entity_structure = $em->getRepository('ClassCodeBundle:Structure') + ->createQueryBuilder('structure') + ->select('structure') + ->where('structure.name = :StructureName') + ->andwhere('structure.id != :StructureId') + ->setParameter('StructureName',$StructureName) + ->setParameter('StructureId',$StructureId) + ->getQuery() + ->getResult(); + + if(!$entity_structure){ + $structure->setName($StructureName); + $structure->setLogo($StructureLogo); + $structure->setUrl($StructureUrl); + $structure->setWho($StructureWho); + $structure->setEmail($StructureEmail); + $structure->setAddress($StructureAddress); + $structure->setLatitude($StructureLatitude); + $structure->setLongitude($StructureLongitude); + + $structure->setUpdatedAt(new \DateTime()); + $structure->setUpdatedBy($userName); + $em->persist($structure); + $em->flush(); + $this ->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('structure.edited')); + }else{ + $this ->get('session')->getFlashBag()->add('error', $this->get('translator')->trans('structure.exist')); + } + return $this->redirect($this->generateUrl('structurespage')); }else{ - $this ->get('session')->getFlashBag()->add('error', $this->get('translator')->trans('structure.exist')); + $this ->get('session')->getFlashBag()->add('error', $this->get('translator')->trans('form.errors')); } - return $this->redirect($this->generateUrl('structurespage')); }else{ - $this ->get('session')->getFlashBag()->add('error', $this->get('translator')->trans('form.errors')); - return $this->redirect($this->generateUrl('structurespage')); + $this ->get('session')->getFlashBag()->add('error', $this->get('translator')->trans('access_error')); } + return $this->redirect($this->generateUrl('structurespage')); }else{ return $this->render('@ClassCode/error_auth.html.twig'); } @@ -153,16 +159,21 @@ class StructureController extends Controller public function deleteAction(Request $request,$id) { $em = $this->getDoctrine()->getManager(); + $token = $this->get('security.token_storage')->getToken() ; + $user = $token->getUser(); + $userName = $user->getUserName(); $structure = $em->getRepository('ClassCodeBundle:Structure')->find($id); if(!$structure){ throw new NotFoundHttpException(); }else{ - if($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')){ + if($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')|| + ($this->get('security.authorization_checker')->isGranted('ROLE_USER')&&($userName=$structure->getUpdatedBy()))){ $em->remove($structure); $em->flush(); $this ->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('structure.deleted')); return $this->redirect($this->generateUrl('structurespage')); }else{ + $this ->get('session')->getFlashBag()->add('error', $this->get('translator')->trans('access_error')); return $this->render('@ClassCode/error_auth.html.twig'); } } diff --git a/src/ClassCodeBundle/Entity/Meeting.php b/src/ClassCodeBundle/Entity/Meeting.php index 6b63572eacb2561ef63ecc717d78561aee38f27f..65d1befae80fed89892978547eb59d80482569db 100644 --- a/src/ClassCodeBundle/Entity/Meeting.php +++ b/src/ClassCodeBundle/Entity/Meeting.php @@ -420,7 +420,7 @@ class Meeting * * @return string */ - public function getFormattedAddres() + public function getFormattedAddress() { return $this->formattedAddress; } diff --git a/src/ClassCodeBundle/Resources/translations/messages.fr.yml b/src/ClassCodeBundle/Resources/translations/messages.fr.yml index ba428b1adca28216bd594085c717cac54266a103..82ed5cdcee2b64094803639a8eaca05c1b61ef34 100644 --- a/src/ClassCodeBundle/Resources/translations/messages.fr.yml +++ b/src/ClassCodeBundle/Resources/translations/messages.fr.yml @@ -1,4 +1,5 @@ "Retour à l'accueil" : "Retour à l'accueil" +"access_error" : "Vous n'êtes pas autorisé à effectuer cette action !" "Se connecter" : "Se connecter" "Se déconnecter": "Se déconnecter" "required": "obligatoire" @@ -37,6 +38,7 @@ 'structure.delete' : "Supprimer cette Structure" 'structure.deleted' : "Structure Supprimée !" 'structure.edited' : "Structure Editée !" +'structure.login' : "Vous devez être connecté pour pouvoir ajouter ou modifier une Structure" "coordinations.list" : "Liste des Coordinations" "coordination.add" : "Ajouter une Coordination" 'coordination.edit' : "Modifier une Coordination" diff --git a/src/ClassCodeBundle/Resources/views/Coordination/list.html.twig b/src/ClassCodeBundle/Resources/views/Coordination/list.html.twig index 00dea4d658548446f8d2ecfaa49211fceb3161f5..7dca66f7ae53875789c9ad0531f9c81416abe079 100644 --- a/src/ClassCodeBundle/Resources/views/Coordination/list.html.twig +++ b/src/ClassCodeBundle/Resources/views/Coordination/list.html.twig @@ -21,7 +21,7 @@ {% block body_inner %} <div id="classcodeadmin_content" class="col-md-12" style="display:none;"> {% if is_granted('ROLE_ADMIN') %} - <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#AddCoordination" style="margin-bottom: 15px;"> + <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#AddCoordination" style="margin-bottom: 5px;margin-top:5px;"> {{ 'coordination.add'|trans }} </button> @@ -33,7 +33,7 @@ </div> {% endif %} <div class="col-sm-12"> - <div id="coordinationsMap" style="height:400px;"> + <div id="coordinationsMap" class="osMap" style="height:400px;"> </div> <div id='coordination_list_div'> {% include '@ClassCode/Coordination/ajax_list.html.twig' %} diff --git a/src/ClassCodeBundle/Resources/views/Group/list.html.twig b/src/ClassCodeBundle/Resources/views/Group/list.html.twig index 79031913dcb52edc2e768ddced9e51274d03b954..b25220dc6ebc8b05c60e05ba6224cb099c7b2f6f 100644 --- a/src/ClassCodeBundle/Resources/views/Group/list.html.twig +++ b/src/ClassCodeBundle/Resources/views/Group/list.html.twig @@ -16,7 +16,7 @@ {% block body_inner %} <div id="classcodeadmin_content" class="col-md-12" style="display:none;"> {% if is_granted('ROLE_ADMIN') %} - <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#AddGroup" style="margin-bottom: 15px;"> + <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#AddGroup" style="margin-bottom: 5px;margin-top:5px;"> {{ 'group.add'|trans }} </button> diff --git a/src/ClassCodeBundle/Resources/views/Meeting/ajax_list.html.twig b/src/ClassCodeBundle/Resources/views/Meeting/ajax_list.html.twig index 08851084ecc65a02c6812cba83d32171702b1a41..bd09a4b5ffc4ceda06b263a380d1619a46cad4c3 100644 --- a/src/ClassCodeBundle/Resources/views/Meeting/ajax_list.html.twig +++ b/src/ClassCodeBundle/Resources/views/Meeting/ajax_list.html.twig @@ -8,7 +8,7 @@ </tr> </thead> <tbody> - {% for m in meeting %} + {% for m in meetings %} <tr> <td> {{ m.getSubject }} diff --git a/src/ClassCodeBundle/Resources/views/Meeting/list.html.twig b/src/ClassCodeBundle/Resources/views/Meeting/list.html.twig index 74e213bac5ba87138740ac08e45bc30d4b1e3390..21ba6d2794c8daf138299a8d21ee0850e44786f4 100644 --- a/src/ClassCodeBundle/Resources/views/Meeting/list.html.twig +++ b/src/ClassCodeBundle/Resources/views/Meeting/list.html.twig @@ -22,7 +22,7 @@ <div id="classcodeadmin_content" class="col-md-12" style="display:none;"> <div class="col-sm-12"> - <div id="meetingsMap" style="height:400px;"> + <div id="meetingsMap" class="osMap" style="height:400px;"> </div> <div id='meetings_list_div'> diff --git a/src/ClassCodeBundle/Resources/views/Partner/list.html.twig b/src/ClassCodeBundle/Resources/views/Partner/list.html.twig index 5ab0fbac132abbd686aab5e0caa0d25303f323c2..1d4647f78c6a1a42104862593bdf3c289e8ce4e6 100644 --- a/src/ClassCodeBundle/Resources/views/Partner/list.html.twig +++ b/src/ClassCodeBundle/Resources/views/Partner/list.html.twig @@ -16,7 +16,7 @@ {% block body_inner %} <div id="classcodeadmin_content" class="col-md-12" style="display:none;"> {% if is_granted('ROLE_ADMIN') %} - <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#AddPartner" style="margin-bottom: 15px;"> + <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#AddPartner" style="margin-bottom: 5px;margin-top:5px;"> {{ 'partner.add'|trans }} </button> diff --git a/src/ClassCodeBundle/Resources/views/People/list.html.twig b/src/ClassCodeBundle/Resources/views/People/list.html.twig index f116f7acaa948edacd764265f2c11ebb71fc475a..de3d095e1c4e3a9518ee7843fa1a09dea13e8866 100644 --- a/src/ClassCodeBundle/Resources/views/People/list.html.twig +++ b/src/ClassCodeBundle/Resources/views/People/list.html.twig @@ -22,7 +22,7 @@ <div id="classcodeadmin_content" class="col-md-12" style="display:none;"> <div class="col-sm-12"> - <div id="peopleMap" style="height:400px;"> + <div id="peopleMap" class="osMap" style="height:400px;"> </div> <div id='people_list_div'> diff --git a/src/ClassCodeBundle/Resources/views/Structure/ajax_list.html.twig b/src/ClassCodeBundle/Resources/views/Structure/ajax_list.html.twig index f90abde8400b06001135304a7dcb90232f610271..38b21fa2976b99df4d17e216fe26ab1b5e0c633d 100644 --- a/src/ClassCodeBundle/Resources/views/Structure/ajax_list.html.twig +++ b/src/ClassCodeBundle/Resources/views/Structure/ajax_list.html.twig @@ -1,4 +1,4 @@ -<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" id='partner_list'> +<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" id='structure_list'> <thead> <tr> <th>{{ 'structure.name'|trans }} </th> @@ -7,7 +7,7 @@ <th>{{ 'structure.who'|trans }} </th> <th>{{ 'structure.email'|trans }} </th> <th>{{ 'structure.address'|trans }} </th> - {% if is_granted('ROLE_ADMIN') %} + {% if is_granted('ROLE_USER') %} <th>{{ 'Action'|trans }} </th> {% endif %} </tr> @@ -16,7 +16,7 @@ {% for structure in structures %} <tr> <td> - {% if is_granted('ROLE_ADMIN') %} + {% if is_granted('ROLE_ADMIN') or (is_granted('ROLE_USER') and ((app.user.userName == structure.getUpdatedBy))) %} <a href="#EditStructure" class="EditStructure" data-structureid="{{ structure.getId }}" data-structurename="{{ structure.getName }}" data-structurelogo="{{ structure.getLogo }}" data-structurewho="{{ structure.getWho }}" data-structureemail="{{ structure.getEmail}}" data-structureurl="{{ structure.getUrl }}" data-structureaddress="{{ structure.getAddress }}" data-structurelat="{{ structure.getLatitude }}" data-structurelong="{{ structure.getLongitude }}" data-toggle="modal" data-target="#EditStructure" >{{ structure.getName }}</a> {% else %} {{ structure.getName }} @@ -37,10 +37,12 @@ <td> {{ structure.getAddress }} </td> - {% if is_granted('ROLE_ADMIN') %} + {% if is_granted('ROLE_USER') %} <td> - <a href="#EditStructure" class="EditStructure" data-structureid="{{ structure.getId }}" data-structurename="{{ structure.getName }}" data-structurelogo="{{ structure.getLogo }}" data-structurewho="{{ structure.getWho }}" data-structureemail="{{ structure.getEmail}}" data-structureurl="{{ structure.getUrl }}" data-structureaddress="{{ structure.getAddress }}" data-structurelat="{{ structure.getLatitude }}" data-structurelong="{{ structure.getLongitude }}" data-toggle="modal" data-target="#EditStructure" ><img src="{{ asset('images/edit.png')}}" alt="{{ 'structure.edit'|trans }}" title="{{ 'structure.edit'|trans }}"></a> - <a href="{{ path('structure_delete', { 'id' : structure.getId } ) }}" ><img src="{{ asset('images/delete.png')}}" alt="{{ 'structure.delete'|trans }}" title="{{ 'structure.delete'|trans }}"></a> + {% if is_granted('ROLE_ADMIN') or (app.user.userName == structure.getUpdatedBy) %} + <a href="#EditStructure" class="EditStructure" data-structureid="{{ structure.getId }}" data-structurename="{{ structure.getName }}" data-structurelogo="{{ structure.getLogo }}" data-structurewho="{{ structure.getWho }}" data-structureemail="{{ structure.getEmail}}" data-structureurl="{{ structure.getUrl }}" data-structureaddress="{{ structure.getAddress }}" data-structurelat="{{ structure.getLatitude }}" data-structurelong="{{ structure.getLongitude }}" data-toggle="modal" data-target="#EditStructure" ><img src="{{ asset('images/edit.png')}}" alt="{{ 'structure.edit'|trans }}" title="{{ 'structure.edit'|trans }}"></a> + <a href="{{ path('structure_delete', { 'id' : structure.getId } ) }}" ><img src="{{ asset('images/delete.png')}}" alt="{{ 'structure.delete'|trans }}" title="{{ 'structure.delete'|trans }}"></a> + {% endif %} </td> {% endif %} </tr> diff --git a/src/ClassCodeBundle/Resources/views/Structure/list.html.twig b/src/ClassCodeBundle/Resources/views/Structure/list.html.twig index 60a3bfd28c4f965cc328e942d98a3f76d25bdcd0..160474ebec5d0d6fed5fcd4ed0b2e96fb21c2a45 100644 --- a/src/ClassCodeBundle/Resources/views/Structure/list.html.twig +++ b/src/ClassCodeBundle/Resources/views/Structure/list.html.twig @@ -20,8 +20,8 @@ {% endblock %} {% block body_inner %} <div id="classcodeadmin_content" class="col-md-12" style="display:none;"> - {% if is_granted('ROLE_ADMIN') %} - <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#AddStructure" style="margin-bottom: 15px;"> + {% if is_granted('ROLE_USER') %} + <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#AddStructure" style="margin-bottom: 5px;margin-top:5px;"> {{ 'structure.add'|trans }} </button> @@ -31,9 +31,11 @@ <div id="EditStructure" class="modal fade" role="dialog" aria-labelledby="DataSourceModalHelp" aria-hidden="true"> {% include '@ClassCode/Structure/editStructureFormModal.html.twig' %} </div> + {% else %} + <p class="alert alert-warning">{{ 'structure.login'|trans }}</p> {% endif %} <div class="col-sm-12"> - <div id="structuresMap" style="height:400px;"> + <div id="structuresMap" class="osMap" style="height:400px;"> </div> </div> <div id='structure_list_div'> @@ -106,7 +108,7 @@ function loadDataTable(){ - $('#partner_list').dataTable({ + $('#structure_list').dataTable({ "sDom": "<'row'<'col-md-6'li><'col-md-6'f>r>t<'row'<'col-md-6'><'col-md-6'p>>", "oLanguage": { "oPaginate": { diff --git a/src/ClassCodeBundle/Resources/views/error_auth.html.twig b/src/ClassCodeBundle/Resources/views/error_auth.html.twig index 15394cea8fc4f1aa32b418447c9e5303ce48096a..c1bf2ccf9ae215eff387b7bc433780fb8f4071ef 100644 --- a/src/ClassCodeBundle/Resources/views/error_auth.html.twig +++ b/src/ClassCodeBundle/Resources/views/error_auth.html.twig @@ -7,7 +7,7 @@ {% block body_inner %} {{ parent() }} <div style="text-align:center"> - <h4> {{ "Vous n'êtes pas autorisé à effectuer cette action !"|trans }} </h4> + <h4> {{ "access_error"|trans }} </h4> </div> {% endblock body_inner %} diff --git a/web/css/classcodeadmin.css b/web/css/classcodeadmin.css index b4c8f0ce2119d70d9f79eaa9f00bdbedaee47ef0..ca45a33c98c745647ad9e2fdfcdcc1408ad7cba2 100644 --- a/web/css/classcodeadmin.css +++ b/web/css/classcodeadmin.css @@ -634,4 +634,11 @@ li.inline { .btn-link, .btn-link:hover, .btn-link:focus { color: #E33729; padding: 0px; -} \ No newline at end of file +} + +/* Map OSM */ +.osMap{ + margin-top:10px; + margin-bottom:10px; +} + */ \ No newline at end of file