FAVRE-BONTE 4 years ago
parent
commit
89cfa1812c

+ 10 - 3
components/Layout/Header.vue

@@ -27,7 +27,7 @@ et aux préférences de l'utilisateur
 
     <v-spacer />
 
-    <LayoutHeaderUniversalCreationCreateButton />
+    <LayoutHeaderUniversalCreationCreateButton v-if="showUniversalButton" />
 
     <v-tooltip bottom>
       <template #activator="{ on, attrs }">
@@ -71,7 +71,7 @@ import { AnyJson } from '~/types/interfaces'
 
 export default defineComponent({
   setup (_props, { emit }) {
-    const { store, $config } = useContext()
+    const { store, $config,$ability } = useContext()
 
     const properties:UnwrapRef<AnyJson> = reactive({
       miniVariant: false,
@@ -95,6 +95,12 @@ export default defineComponent({
       emit('handle-open-menu-click', properties.miniVariant)
     }
 
+    const showUniversalButton =
+        $ability.can('manage', 'users')
+      || $ability.can('display', 'agenda_page')
+      || $ability.can('display', 'message_send_page')
+      || $ability.can('manage', 'equipments') ;
+
     return {
       properties,
       displayedMiniVariant,
@@ -107,7 +113,8 @@ export default defineComponent({
       myAccessesMenu,
       myFamilyMenu,
       configurationMenu,
-      accountMenu
+      accountMenu,
+      showUniversalButton
     }
   }
 })

+ 1 - 1
components/Layout/Header/UniversalCreation/CreateButton.vue

@@ -18,7 +18,7 @@ bouton Créer
       <template v-slot:dialogType>Assistant de création</template>
       <template v-slot:dialogTitle>Que souhaitez-vous créer ?</template>
       <template v-slot:dialogText>
-        <LayoutHeaderUniversalCreationGenerateCardsSteps :step="step" v-on:updateStep="step=$event" />
+        <LayoutHeaderUniversalCreationGenerateCardsSteps :step="step" @updateStep="step=$event" />
 
       </template>
       <template v-slot:dialogBtn>

+ 11 - 87
components/Layout/Header/UniversalCreation/GenerateCardsSteps.vue

@@ -8,86 +8,10 @@
     <v-stepper-items>
       <v-stepper-content step="1">
         <div class="row">
-          <v-card
-            class="col-md-6 creation-type-container"
-            color=""
-            :outlined=true
-            @click="onTypeClick(2,'access')"
-          >
-            <div class="row no-gutters" style="height: 100px">
-              <div class="flex-grow-0 flex-shrink-0 d-flex justify-center col col-3" style="">
-                <div class="icon align-self-center">
-                  <i class="fa fa-user" aria-hidden="true"></i>
-                </div>
-              </div>
-              <div class="infos-container flex-grow-1 flex-shrink-1 col col-9" style="">
-                <h4>Une Personne</h4>
-                <p>
-                  Ajoutez un nouveau membre parent, élève, professeur, personnel... à votre répertoire
-                </p>
-              </div>
-            </div>
-          </v-card>
-          <v-card
-            class="col-md-6 creation-type-container"
-            color=""
-            :outlined=true
-            @click="onTypeClick(2,'event')"
-          >
-            <div class="row no-gutters" style="height: 100px">
-              <div class="flex-grow-0 flex-shrink-0 d-flex justify-center col col-3" style="">
-                <div class="icon align-self-center">
-                  <i class="fa fa-calendar" aria-hidden="true"></i>
-                </div>
-              </div>
-              <div class="infos-container flex-grow-1 flex-shrink-1 col col-9" style="">
-                <h4>Un évènement</h4>
-                <p>
-                  Ajoutez un évenement, un cour, une prestation pédagogique, un examen... à votre planning
-                </p>
-              </div>
-            </div>
-          </v-card>
-          <v-card
-            class="col-md-6 creation-type-container"
-            color=""
-            :outlined=true
-            @click="onTypeClick(2,'message')"
-          >
-            <div class="row no-gutters" style="height: 100px">
-              <div class="flex-grow-0 flex-shrink-0 d-flex justify-center col col-3" style="">
-                <div class="icon align-self-center">
-                  <i class="fa fa-comment" aria-hidden="true"></i>
-                </div>
-              </div>
-              <div class="infos-container flex-grow-1 flex-shrink-1 col col-9" style="">
-                <h4>Une Correspondance</h4>
-                <p>
-                  Envoyez un email, un courrier, ou un SMS aux personnes de votre carnet d'adresses
-                </p>
-              </div>
-            </div>
-          </v-card>
-          <v-card
-            :outlined=true
-            class="col-md-6 creation-type-container"
-            color=""
-            :href="adminLegacy+ '/list/create/equipment'"
-          >
-            <div class="row no-gutters" style="height: 100px">
-              <div class="flex-grow-0 flex-shrink-0 d-flex justify-center col col-3" style="">
-                <div class="icon align-self-center">
-                  <i class="fa fa-cube" aria-hidden="true"></i>
-                </div>
-              </div>
-              <div class="infos-container flex-grow-1 flex-shrink-1 col col-9" style="">
-                <h4>Une matériel</h4>
-                <p>
-                  Ajoutez tout type de matériel ou de documents tels que des partitions à votre parc de matériel
-                </p>
-              </div>
-            </div>
-          </v-card>
+          <LayoutHeaderUniversalCreationTypeCard v-if="$can('manage', 'users')" title="a_person" text-content="add_new_person_student" icon="fa fa-user" type="access" @typeClick="onTypeClick"></LayoutHeaderUniversalCreationTypeCard>
+          <LayoutHeaderUniversalCreationTypeCard v-if="$can('display', 'agenda_page')" title="an_event" text-content="add_an_event_course" icon="fa fa-comment" type="event" @typeClick="onTypeClick"></LayoutHeaderUniversalCreationTypeCard>
+          <LayoutHeaderUniversalCreationTypeCard v-if="$can('display', 'message_send_page')" title="a_correspondence" text-content="sen_email_letter" icon="fa fa-comment" type="message" @typeClick="onTypeClick"></LayoutHeaderUniversalCreationTypeCard>
+          <LayoutHeaderUniversalCreationTypeCard v-if="$can('manage', 'equipments')" title="a_materiel" text-content="add_any_type_material" icon="fa fa-cube" :link="adminLegacy+ '/list/create/equipment'"></LayoutHeaderUniversalCreationTypeCard>
         </div>
       </v-stepper-content>
 
@@ -102,15 +26,15 @@
             <LayoutHeaderUniversalCreationTypeCard title="another_type_of_contact" text-content="other_contact_text_creation_card" icon="fa fa-plus" :link="adminLegacy+ '/universal_creation_person/other_contact'"></LayoutHeaderUniversalCreationTypeCard>
           </div>
           <div v-if="type === 'event'" class="row">
-            <LayoutHeaderUniversalCreationTypeCard title="course" text-content="course_text_creation_card" icon="fa fa-users" :link="adminLegacy+ '/calendar/create/courses'"></LayoutHeaderUniversalCreationTypeCard>
-            <LayoutHeaderUniversalCreationTypeCard title="exam" text-content="exam_text_creation_card" icon="fa fa-graduation-cap" :link="adminLegacy+ '/calendar/create/examens'"></LayoutHeaderUniversalCreationTypeCard>
-            <LayoutHeaderUniversalCreationTypeCard title="educational_services" text-content="educational_services_text_creation_card" icon="fa fa-suitcase" :link="adminLegacy+ '/calendar/create/educational_projects'"></LayoutHeaderUniversalCreationTypeCard>
-            <LayoutHeaderUniversalCreationTypeCard title="other_event" text-content="other_event_text_creation_card" icon="far fa-calendar" :link="adminLegacy+ '/calendar/create/events'"></LayoutHeaderUniversalCreationTypeCard>
+            <LayoutHeaderUniversalCreationTypeCard v-if="$can('manage', 'courses')" title="course" text-content="course_text_creation_card" icon="fa fa-users" :link="adminLegacy+ '/calendar/create/courses'"></LayoutHeaderUniversalCreationTypeCard>
+            <LayoutHeaderUniversalCreationTypeCard v-if="$can('manage', 'examens')" title="exam" text-content="exam_text_creation_card" icon="fa fa-graduation-cap" :link="adminLegacy+ '/calendar/create/examens'"></LayoutHeaderUniversalCreationTypeCard>
+            <LayoutHeaderUniversalCreationTypeCard v-if="$can('manage', 'educationalprojects')" title="educational_services" text-content="educational_services_text_creation_card" icon="fa fa-suitcase" :link="adminLegacy+ '/calendar/create/educational_projects'"></LayoutHeaderUniversalCreationTypeCard>
+            <LayoutHeaderUniversalCreationTypeCard v-if="$can('manage', 'events')" title="other_event" text-content="other_event_text_creation_card" icon="far fa-calendar" :link="adminLegacy+ '/calendar/create/events'"></LayoutHeaderUniversalCreationTypeCard>
           </div>
           <div v-if="type === 'message'" class="row">
-            <LayoutHeaderUniversalCreationTypeCard title="an_email" text-content="email_text_creation_card" icon="far fa-envelope" :link="adminLegacy+ '/list/create/emails'"></LayoutHeaderUniversalCreationTypeCard>
-            <LayoutHeaderUniversalCreationTypeCard title="a_letter" text-content="letter_text_creation_card" icon="far fa-file-alt" :link="adminLegacy+ '/list/create/mails'"></LayoutHeaderUniversalCreationTypeCard>
-            <LayoutHeaderUniversalCreationTypeCard title="an_sms" text-content="sms_text_creation_card" icon="fa fa-mobile-alt" :link="adminLegacy+ '/list/create/sms'"></LayoutHeaderUniversalCreationTypeCard>
+            <LayoutHeaderUniversalCreationTypeCard v-if="$can('manage', 'emails')" title="an_email" text-content="email_text_creation_card" icon="far fa-envelope" :link="adminLegacy+ '/list/create/emails'"></LayoutHeaderUniversalCreationTypeCard>
+            <LayoutHeaderUniversalCreationTypeCard v-if="$can('manage', 'mails')" title="a_letter" text-content="letter_text_creation_card" icon="far fa-file-alt" :link="adminLegacy+ '/list/create/mails'"></LayoutHeaderUniversalCreationTypeCard>
+            <LayoutHeaderUniversalCreationTypeCard v-if="$can('manage', 'texto')" title="an_sms" text-content="sms_text_creation_card" icon="fa fa-mobile-alt" :link="adminLegacy+ '/list/create/sms'"></LayoutHeaderUniversalCreationTypeCard>
           </div>
         </div>
 

+ 6 - 1
components/Layout/Header/UniversalCreation/TypeCard.vue

@@ -9,6 +9,7 @@
       color=""
       :outlined=true
       :href="link"
+      @click="$emit('typeClick',2,type)"
     >
       <div class="row no-gutters" style="height: 100px">
         <div class="flex-grow-0 flex-shrink-0 d-flex justify-center col col-3" style="">
@@ -17,7 +18,7 @@
           </div>
         </div>
         <div class="infos-container flex-grow-1 flex-shrink-1 col col-9" style="">
-          <h4>{{ $t(title) | capitalize }}</h4>
+          <h4>{{ $t(title) }}</h4>
           <p>
             {{ $t(textContent) }}
           </p>
@@ -47,6 +48,10 @@ export default defineComponent({
     link: {
       type: String,
       required: false
+    },
+    type: {
+      type: String,
+      required: false
     }
   },
   setup () {

+ 8 - 0
lang/layout/fr-FR.js

@@ -1,5 +1,13 @@
 export default (context, locale) => {
   return ({
+    add_any_type_material:'Ajoutez tout type de matériel ou de documents tels que des partitions à votre parc de matériel',
+    a_materiel:'un matériel',
+    sen_email_letter:'Envoyez un email, un courrier, ou un SMS aux personnes de votre carnet d\'adresses',
+    a_correspondence:'une Correspondance',
+    add_an_event_course:'Ajoutez un évenement, un cour, une prestation pédagogique, un examen... à votre planning',
+    an_event:'un évènement',
+    add_new_person_student:'Ajoutez un nouveau membre parent, élève, professeur, personnel... à votre répertoire',
+    a_person:'une personne',
     other_event_text_creation_card:'Comprend entre autres: auditions, concerts, répétitions, spectacles, stages...',
     educational_services_text_creation_card:'Correspond aux interventions en milieu scolaire, pénitentiaire, ou hospitalier',
     exam_text_creation_card:'Permet d\'organiser des examens avec la gestion des jurys, des convocations et des résultats',