From 5ae7bb9a2c570e81beb92c44f1215f648af23a5b Mon Sep 17 00:00:00 2001
From: Ninassi Benjamin <benjamin.ninassi@inria.fr>
Date: Tue, 2 Oct 2018 15:43:43 +0200
Subject: [PATCH] Structure creation and modification allowed to user adding
 json export of meetings

---
 app/Resources/views/base.html.twig            |  1 -
 .../Controller/MeetingController.php          | 56 +++++++++++--
 .../Controller/StructureController.php        | 83 +++++++++++--------
 src/ClassCodeBundle/Entity/Meeting.php        |  2 +-
 .../Resources/translations/messages.fr.yml    |  2 +
 .../views/Coordination/list.html.twig         |  4 +-
 .../Resources/views/Group/list.html.twig      |  2 +-
 .../views/Meeting/ajax_list.html.twig         |  2 +-
 .../Resources/views/Meeting/list.html.twig    |  2 +-
 .../Resources/views/Partner/list.html.twig    |  2 +-
 .../Resources/views/People/list.html.twig     |  2 +-
 .../views/Structure/ajax_list.html.twig       | 14 ++--
 .../Resources/views/Structure/list.html.twig  | 10 ++-
 .../Resources/views/error_auth.html.twig      |  2 +-
 web/css/classcodeadmin.css                    |  9 +-
 15 files changed, 131 insertions(+), 62 deletions(-)

diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig
index c49bc6d..48f29ed 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 427db29..4bc9584 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 27402c0..192a0fb 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 6b63572..65d1bef 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 ba428b1..82ed5cd 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 00dea4d..7dca66f 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 7903191..b25220d 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 0885108..bd09a4b 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 74e213b..21ba6d2 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 5ab0fba..1d4647f 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 f116f7a..de3d095 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 f90abde..38b21fa 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 60a3bfd..160474e 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 15394ce..c1bf2cc 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 b4c8f0c..ca45a33 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
-- 
GitLab