This commit is contained in:
Matthieu Bessat 2020-07-17 11:25:50 +02:00
parent b8d7b53308
commit 4a94799602
11 changed files with 71 additions and 53 deletions

1
index.html Normal file
View file

@ -0,0 +1 @@
2cf5ddea54d

View file

@ -1,6 +1,8 @@
<template> <template>
<v-app> <v-app>
<v-main>
<router-view/> <router-view/>
</v-main>
<GlobalSnackbar /> <GlobalSnackbar />
</v-app> </v-app>
</template> </template>

View file

@ -1,11 +1,12 @@
<template> <template>
<div> <div>
<v-snackbar <v-snackbar
right :right="!$vuetify.breakpoint.mobile"
bottom
:color="$store.state.alert.color" :color="$store.state.alert.color"
multi-line :vertical="$vuetify.breakpoint.mobile"
:multi-line="$vuetify.breakpoint.mobile"
v-model="$store.state.alert.enabled" v-model="$store.state.alert.enabled"
:timeout="500000"
> >
{{ $store.state.alert.text }} {{ $store.state.alert.text }}

View file

@ -1,5 +1,5 @@
<template> <template>
<v-main> <div>
<div v-if="enabled"> <div v-if="enabled">
<v-app-bar <v-app-bar
app app
@ -51,11 +51,11 @@
</v-card-title> </v-card-title>
<v-card-text> <v-card-text>
<p> <p>
Vous n'êtes pas encore connecté à l'interface d'administration veuillez copier-coller la clée administrateur dans la boîte ci-dessous. Vous n'êtes pas encore connecté à l'interface d'administration veuillez copier-coller la clé administrateur dans la boîte ci-dessous.
</p> </p>
<v-text-field <v-text-field
autofocus autofocus
label="Clée" label="Clé"
v-model="token" v-model="token"
:type="showPassword ? 'text' : 'password'" :type="showPassword ? 'text' : 'password'"
:append-icon="showPassword ? 'mdi-eye' : 'mdi-eye-off'" :append-icon="showPassword ? 'mdi-eye' : 'mdi-eye-off'"
@ -73,7 +73,7 @@
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</div> </div>
</v-main> </div>
</template> </template>
<script> <script>
@ -120,7 +120,7 @@ export default {
if (this.token !== '') { if (this.token !== '') {
this.$store.commit('ADD_ALERT', { this.$store.commit('ADD_ALERT', {
color: 'error', color: 'error',
text: 'Clée administrateur invalide !' text: 'Clé administrateur invalide !'
}) })
} }
}) })

View file

@ -1,5 +1,5 @@
<template> <template>
<v-main> <div>
<div v-if="enabled"> <div v-if="enabled">
<v-toolbar <v-toolbar
color="orange darken-3" color="orange darken-3"
@ -53,13 +53,13 @@
ref="tabs" ref="tabs"
> >
<v-tab @click="navigate('DelegateMain')"> <v-tab @click="navigate('DelegateMain')">
Résumé Présentation
</v-tab> </v-tab>
<v-tab @click="navigate('DelegateGallery')"> <v-tab @click="navigate('DelegateGallery')">
Images/vidéos Images/vidéos
</v-tab> </v-tab>
<v-tab @click="navigate('DelegatePresentation')"> <v-tab @click="navigate('DelegatePresentation')">
Présentation Description
</v-tab> </v-tab>
<v-tab @click="navigate('DelegateSchedule')"> <v-tab @click="navigate('DelegateSchedule')">
Horaires Horaires
@ -125,10 +125,10 @@
</v-card-title> </v-card-title>
<v-card-text> <v-card-text>
<p> <p>
Vous n'êtes pas encore connecté à l'interface de modification de votre association, veuillez copier-coller la clée qui vous a été envoyé par e-mail dans la boîte ci-dessous. Vous n'êtes pas encore connecté à l'interface de modification de votre association, veuillez copier-coller la clé qui vous a été envoyé par e-mail dans la boîte ci-dessous.
</p> </p>
<v-text-field <v-text-field
label="Clée" label="Clé"
autofocus autofocus
v-model="token" v-model="token"
:type="showPassword ? 'text' : 'password'" :type="showPassword ? 'text' : 'password'"
@ -205,7 +205,7 @@
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-dialog> </v-dialog>
</v-main> </div>
</template> </template>
<script> <script>
@ -322,7 +322,7 @@ export default {
if (this.token !== '' || inUrl) { if (this.token !== '' || inUrl) {
this.$store.commit('ADD_ALERT', { this.$store.commit('ADD_ALERT', {
color: 'error', color: 'error',
text: 'Clée invalide !' text: 'Clé invalide !'
}) })
} }
}) })
@ -382,7 +382,7 @@ export default {
const data = this.$store.state.data const data = this.$store.state.data
this.canPublish = this.canPublish =
data.name.length > 0 && data.name.length > 0 &&
data.descriptionShort.length > 15 data.descriptionShort.length > 10
}, },
askApproval () { askApproval () {
this.askingApprovalLoading = true this.askingApprovalLoading = true

View file

@ -42,17 +42,17 @@
<v-text-field <v-text-field
v-model="editedItem.adminName" v-model="editedItem.adminName"
required required
label="Nom (interne) de l'associatiton"> label="Nom de l'associatiton">
</v-text-field> </v-text-field>
<v-text-field <v-text-field
v-model="editedItem.email" v-model="editedItem.email"
label="E-mail utilisé pour recevoir le lien/la clé d'identification"> label="E-mail utilisé pour recevoir le lien/la clé d'identification">
</v-text-field> </v-text-field>
<v-select <!-- <v-select
:items="validationState" :items="validationState"
v-model="editedItem.validationState" v-model="editedItem.validationState"
label="DEBUG: status de la validation" label="DEBUG: status de la validation"
></v-select> ></v-select> -->
<v-textarea <v-textarea
rows="2" rows="2"
row-height="15" row-height="15"
@ -94,7 +94,7 @@
</v-chip> </v-chip>
</template> </template>
<template v-slot:item.actions="{ item }"> <template v-slot:item.actions="{ item }">
<v-tooltip top> <v-tooltip top v-if="item.validationState === 'published' || item.validationState === 'rejected'">
<template v-slot:activator="{ on, attrs }"> <template v-slot:activator="{ on, attrs }">
<v-btn icon small color="success"> <v-btn icon small color="success">
<v-icon <v-icon
@ -107,7 +107,7 @@
</v-icon> </v-icon>
</v-btn> </v-btn>
</template> </template>
<span>Ouvrir la page publique (version non publié)</span> <span>Ouvrir la page publique (version publié)</span>
</v-tooltip> </v-tooltip>
<v-tooltip top> <v-tooltip top>
<template v-slot:activator="{ on, attrs }"> <template v-slot:activator="{ on, attrs }">
@ -163,11 +163,11 @@
v-bind="attrs" v-bind="attrs"
v-on="on" v-on="on"
> >
done grading
</v-icon> </v-icon>
</v-btn> </v-btn>
</template> </template>
<span>Valider les changements</span> <span>Vérifier les changements</span>
</v-tooltip> </v-tooltip>
</template> </template>
<template v-slot:no-data> <template v-slot:no-data>
@ -207,7 +207,7 @@
</v-list-item-icon> </v-list-item-icon>
<v-list-item-content> <v-list-item-content>
<v-list-item-title>{{ toSeeItem.token }}</v-list-item-title> <v-list-item-title>{{ toSeeItem.token }}</v-list-item-title>
<v-list-item-subtitle>Token/clée</v-list-item-subtitle> <v-list-item-subtitle>Token/clé</v-list-item-subtitle>
</v-list-item-content> </v-list-item-content>
</v-list-item> </v-list-item>
@ -285,11 +285,13 @@
:dialogTitle="approveModalTitle" :dialogTitle="approveModalTitle"
@close="approveModal = false" @close="approveModal = false"
> >
<v-btn outlined dark text @click="rejectionModal = true"> <v-btn outlined text dark class="error" @click="rejectionModal = true">
<v-icon>clear</v-icon> <v-icon :left="!$vuetify.breakpoint.mobile">rate_review</v-icon>
<span v-if="!$vuetify.breakpoint.mobile">Refuser</span>
</v-btn> </v-btn>
<v-btn outlined dark text @click="approve()"> <v-btn outlined text dark class="success" @click="approve()">
<v-icon>done</v-icon> <v-icon :left="!$vuetify.breakpoint.mobile">check_circle</v-icon>
<span v-if="!$vuetify.breakpoint.mobile">Publier</span>
</v-btn> </v-btn>
</Preview> </Preview>
<v-dialog max-width="500px" v-model="rejectionModal"> <v-dialog max-width="500px" v-model="rejectionModal">
@ -325,7 +327,7 @@ export default {
const item = { const item = {
adminName: '', adminName: '',
email: '', email: '',
validationState: 'none', validationState: 'unaware',
rejectionDescription: '', rejectionDescription: '',
slug: '' slug: ''
} }
@ -483,19 +485,19 @@ export default {
}, },
generateToken (item) { generateToken (item) {
if (!confirm('Êtes vous sur de reinitialiser la clée de cette association ? Les liens de connexions existants seront inutilisables.')) { if (!confirm('Êtes vous sur de reinitialiser la clé de cette association ? Les liens de connexions existants seront inutilisables.')) {
return return
} }
this.$apitator.post('/admin/organizations/' + item._id + '/reset-token', {}, { withAuth: true }).then(() => { this.$apitator.post('/admin/organizations/' + item._id + '/reset-token', {}, { withAuth: true }).then(() => {
this.detailsModal = false this.detailsModal = false
this.$store.commit('ADD_ALERT', { this.$store.commit('ADD_ALERT', {
color: 'success', color: 'success',
text: 'La clée de cette association a été reinitialisé' text: 'La clé de cette association a été reinitialisé'
}) })
}).catch(() => { }).catch(() => {
this.$store.commit('ADD_ALERT', { this.$store.commit('ADD_ALERT', {
color: 'error', color: 'error',
text: 'Impossible de reinitialiser la clée de cette association' text: 'Impossible de reinitialiser la clé de cette association'
}) })
}) })
}, },
@ -505,7 +507,7 @@ export default {
this.detailsModal = false this.detailsModal = false
this.$store.commit('ADD_ALERT', { this.$store.commit('ADD_ALERT', {
color: 'success', color: 'success',
text: 'Un email va être envoyé à cette association contenant la clée' text: 'Un email va être envoyé à cette association contenant la clé'
}) })
}).catch(() => { }).catch(() => {
this.$store.commit('ADD_ALERT', { this.$store.commit('ADD_ALERT', {

View file

@ -39,6 +39,7 @@
<span class="headline">{{ formTitle }}</span> <span class="headline">{{ formTitle }}</span>
</v-card-title> </v-card-title>
<v-card-text> <v-card-text>
<a href="https://fontawesome.com/icons?d=gallery&m=free">https://fontawesome.com/icons?d=gallery&m=free</a>
<v-text-field <v-text-field
v-model="editedItem.name" v-model="editedItem.name"
required required

View file

@ -15,7 +15,6 @@
label="Personne responsable" label="Personne responsable"
outlined outlined
v-model="$store.state.data.contacts.person" /> v-model="$store.state.data.contacts.person" />
<v-text-field <v-text-field
prepend-icon="alternate_email" prepend-icon="alternate_email"
label="Email" label="Email"
@ -36,22 +35,26 @@
prepend-icon="room" prepend-icon="room"
label="Adresse" label="Adresse"
outlined outlined
v-model="$store.state.data.contacts.address" /> v-model="$store.state.data.contacts.address"
:rules="rules.address" />
<v-text-field <v-text-field
prepend-icon="$vuetify.icons.facebook" prepend-icon="$vuetify.icons.facebook"
label="Compte facebook" label="Compte facebook"
outlined outlined
v-model="$store.state.data.contacts.facebook" /> v-model="$store.state.data.contacts.facebook"
:rules="rules.facebook" />
<v-text-field <v-text-field
prepend-icon="$vuetify.icons.twitter" prepend-icon="$vuetify.icons.twitter"
label="Compte twitter" label="Compte twitter"
outlined outlined
v-model="$store.state.data.contacts.twitter" /> v-model="$store.state.data.contacts.twitter"
:rules="rules.twitter" />
<v-text-field <v-text-field
prepend-icon="$vuetify.icons.instagram" prepend-icon="$vuetify.icons.instagram"
label="Compte instagram" label="Compte instagram"
outlined outlined
v-model="$store.state.data.contacts.instagram" /> v-model="$store.state.data.contacts.instagram"
:rules="rules.instagram" />
</div> </div>
</template> </template>
@ -59,17 +62,23 @@
export default { export default {
data: () => ({ data: () => ({
rules: { rules: {
website: [
v => v === '' || /.+@.+\..+/.test(v) || "L'email doit être valide"
],
email: [ email: [
v => /.+@.+\..+/.test(v) || "L'email doit être valide" v => v === '' || /.+@.+\..+/.test(v) || "L'email doit être valide"
],
address: [
v => v.length < 200 || 'Maximum 200 caractères'
], ],
facebook: [ facebook: [
v => /(http(s)?:\/\/)?(www\.)?facebook\.com\/(\S+){3,}/.test(v) || 'Ce champs doit être une url facebook valide' v => v === '' || /(http(s)?:\/\/)?(www\.)?facebook\.com\/(\S+){3,}/g.test(v) || 'Ce champs doit être une url facebook valide'
], ],
twitter: [ twitter: [
v => /(http(s)?:\/\/)?(www\.)?twitter\.com\/(\S+){3,}/.test(v) || 'Ce champs doit être une url twitter valide' v => v === '' || /(http(s)?:\/\/)?(www\.)?twitter\.com\/(\S+){3,}/g.test(v) || 'Ce champs doit être une url twitter valide'
], ],
instagram: [ instagram: [
v => /(http(s)?:\/\/)?(www\.)?instagram\.com\/(\S+){3,}/.test(v) || 'Ce champs doit être une url instagram valide' v => v === '' || /(http(s)?:\/\/)?(www\.)?instagram\.com\/(\S+){3,}/g.test(v) || 'Ce champs doit être une url instagram valide'
] ]
} }
}), }),

View file

@ -63,6 +63,13 @@ export default {
} }
}), }),
// mounted () {
// this.$store.commit('ADD_ALERT', {
// color: 'error',
// text: 'Dolor sadipscing tempor consetetur et tempor accusam nonumy. Ut sit nonumy magna ea aliquyam no. Elitr et elitr est ut,.'
// })
// },
methods: { methods: {
handleAvatarEditorSubmitted: function (blob) { handleAvatarEditorSubmitted: function (blob) {
const form = new FormData() const form = new FormData()

View file

@ -15,7 +15,7 @@
outlined outlined
type="info" type="info"
> >
Aucune catégorie horaires ajoutées pour le moment Aucun tarifs ajoutée pour le moment
</v-alert> </v-alert>
</div> </div>
<v-row v-else class="justify-content: center"> <v-row v-else class="justify-content: center">

View file

@ -15,7 +15,7 @@
outlined outlined
type="info" type="info"
> >
Aucune catégorie horaires ajoutées pour le moment Aucune catégorie horaire ajoutée pour le moment
</v-alert> </v-alert>
</div> </div>
<div v-else> <div v-else>
@ -89,7 +89,7 @@
</div> </div>
</v-list> </v-list>
<div v-else class="grey--text text--darken-1"> <div v-else class="grey--text text--darken-1">
Pas d'interval horaires pour cette catégorie pour l'instant Pas d'intervalles horaires pour cette catégorie pour l'instant
</div> </div>
</div> </div>
</div> </div>
@ -151,7 +151,7 @@
max-width="500px" max-width="500px"
v-model="whenModal"> v-model="whenModal">
<v-card> <v-card>
<v-card-title v-text="modalTitle + ' un interval horaire'" /> <v-card-title v-text="modalTitle + ' un intervalle horaire'" />
<v-card-text> <v-card-text>
<v-select <v-select
prepend-icon="event" prepend-icon="event"
@ -233,7 +233,7 @@
v-model="deleteWhenModal"> v-model="deleteWhenModal">
<v-card> <v-card>
<v-card-title> <v-card-title>
Voulez vous vraiment supprimer cette interval horaire ? Voulez vous vraiment supprimer cette intervalle horaire ?
</v-card-title> </v-card-title>
<v-card-actions> <v-card-actions>
<v-btn @click="deleteWhenModal = false" text color="primary"> <v-btn @click="deleteWhenModal = false" text color="primary">
@ -425,11 +425,6 @@ export default {
return i return i
}) })
} }
this.when = {
day: '',
from: '10:00',
to: '11:00'
}
this.$store.commit('SET_DATA', { schedule }) this.$store.commit('SET_DATA', { schedule })
this.whenModal = false this.whenModal = false
}, },