Commit 2d7c7320 authored by Jérémie Passerat's avatar Jérémie Passerat

Ajout titres contenus & améliorations ihm

parent e839bbfc
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
"jquery": "^3.6.0", "jquery": "^3.6.0",
"jquery-ui-bundle": "^1.12.1-migrate", "jquery-ui-bundle": "^1.12.1-migrate",
"markdown-it-vue": "^1.1.6", "markdown-it-vue": "^1.1.6",
"material-kit": "^2.0.4",
"mavon-editor": "^2.9.1", "mavon-editor": "^2.9.1",
"popper.js": "^1.16.1", "popper.js": "^1.16.1",
"showdown": "^1.9.1", "showdown": "^1.9.1",
...@@ -14024,6 +14025,11 @@ ...@@ -14024,6 +14025,11 @@
"resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz", "resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz",
"integrity": "sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q==" "integrity": "sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q=="
}, },
"node_modules/material-kit": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/material-kit/-/material-kit-2.0.4.tgz",
"integrity": "sha512-YtcRcqV0s7iByigCfcoHqtrUgXaicyYyZYikn6cdUuKdPdYvQplOUvUgvzmNTvDPcZXzLt8MUk9YfpWWOGISOQ=="
},
"node_modules/mavon-editor": { "node_modules/mavon-editor": {
"version": "2.9.1", "version": "2.9.1",
"resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-2.9.1.tgz", "resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-2.9.1.tgz",
...@@ -32038,6 +32044,11 @@ ...@@ -32038,6 +32044,11 @@
"resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz", "resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz",
"integrity": "sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q==" "integrity": "sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q=="
}, },
"material-kit": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/material-kit/-/material-kit-2.0.4.tgz",
"integrity": "sha512-YtcRcqV0s7iByigCfcoHqtrUgXaicyYyZYikn6cdUuKdPdYvQplOUvUgvzmNTvDPcZXzLt8MUk9YfpWWOGISOQ=="
},
"mavon-editor": { "mavon-editor": {
"version": "2.9.1", "version": "2.9.1",
"resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-2.9.1.tgz", "resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-2.9.1.tgz",
...@@ -27,6 +27,7 @@ import Maj from "./Maj"; ...@@ -27,6 +27,7 @@ import Maj from "./Maj";
import Profil from "./Profil"; import Profil from "./Profil";
import Tags from "./Tags"; import Tags from "./Tags";
import NewContenu from "./NewContenu"; import NewContenu from "./NewContenu";
// import Service from "./service/Service";
// import showdown from "showdown" // import showdown from "showdown"
export default { export default {
...@@ -71,8 +72,7 @@ export default { ...@@ -71,8 +72,7 @@ export default {
changerPage: function (event) { changerPage: function (event) {
if (event.choix === "Deconnexion"){ if (event.choix === "Deconnexion"){
this.etat = "unlogged" this.etat = "unlogged"
localStorage.removeItem('token') localStorage.clear()
localStorage.auteur = ""
} }
else else
this.etat = event.choix this.etat = event.choix
......
...@@ -222,7 +222,6 @@ export default { ...@@ -222,7 +222,6 @@ export default {
let reception = response.data let reception = response.data
if(reception.length > 0) if(reception.length > 0)
for (let i = 0; i < reception.length; i++) { for (let i = 0; i < reception.length; i++) {
console.log(reception[i])
that.contenusRecu.push(reception[i]) that.contenusRecu.push(reception[i])
} }
}) })
......
...@@ -128,6 +128,7 @@ export default { ...@@ -128,6 +128,7 @@ export default {
}, },
changerStyle: function () { changerStyle: function () {
if (this.isNotif){ if (this.isNotif){
this.styleCircle["margin-left"] = "3%" this.styleCircle["margin-left"] = "3%"
} }
...@@ -160,9 +161,9 @@ export default { ...@@ -160,9 +161,9 @@ export default {
* Recalcul des opportunités de maj et on configure la notification en fonction après action dans le menu maj (fonctionne actuellement pas) * Recalcul des opportunités de maj et on configure la notification en fonction après action dans le menu maj (fonctionne actuellement pas)
*/ */
recalculerNotif: function () { recalculerNotif: function () {
// alert(this.isNotif)
this.isNotif = false this.isNotif = false
this.publicationsRecues() this.publicationsRecues()
this.changerStyle()
}, },
variante: function () { variante: function () {
this.changerStyle() this.changerStyle()
...@@ -190,7 +191,6 @@ export default { ...@@ -190,7 +191,6 @@ export default {
.menuVariante{ .menuVariante{
margin-top: 1%; margin-top: 1%;
margin-left: 45%;
z-index: 1; z-index: 1;
} }
...@@ -218,7 +218,7 @@ export default { ...@@ -218,7 +218,7 @@ export default {
width: 30px; width: 30px;
margin-top: 1.5%; margin-top: 1.5%;
z-index: 1; z-index: 1;
margin-left: 90%; margin-left: 90%;
background-image: url(assets/img/cloche.png); background-image: url(assets/img/cloche.png);
background-size: cover; background-size: cover;
......
<template> <template>
<div> <div>
<p></p> <p style="text-decoration: underline; margin-top: -2%">Création de contenu</p>
<p>Création de contenu</p> <div id="titreContenu">
<label>Titre du contenu : </label><br>
<input type="text" placeholder="titre du contenu" v-model="titreContenu">
</div>
<br>
<p>Dans cette zone vous pouvez renseigner (en langage markdown) le contenu que vous désirez</p> <p>Dans cette zone vous pouvez renseigner (en langage markdown) le contenu que vous désirez</p>
<!-- <div class="markdown"> <!-- <div class="markdown">
<textarea rows="50" cols="150"/> <textarea rows="50" cols="150"/>
...@@ -39,15 +43,14 @@ export default { ...@@ -39,15 +43,14 @@ export default {
bold: true, bold: true,
language: 'fr' language: 'fr'
}, },
test: "" titreContenu: ""
} }
}, },
methods: { methods: {
ajouterContenu: function () { ajouterContenu: function () {
let data = {auteur: this.auteur, contenu_a_ecrire: this.contenuSaisi} let data = {auteur: this.auteur, contenu_a_ecrire: this.contenuSaisi, titre: this.titreContenu}
let that = this let that = this
this.test = "test"
Service.creerContenuPerso(data).then( Service.creerContenuPerso(data).then(
function (reponse) { function (reponse) {
let nouveauContenu = reponse.data let nouveauContenu = reponse.data
...@@ -80,19 +83,27 @@ export default { ...@@ -80,19 +83,27 @@ export default {
} }
input { input {
width: 1500px; width: 150px;
height: 500px height: 20px
} }
button { button {
align-items: center; align-items: center;
width: auto; width: auto;
text-align: center;
line-height: 1em;
} }
#markdownEditor{ #markdownEditor{
height: 1500px height: 1500px
} }
#titreContenu {
text-align: center;
align-content: center;
margin: 0 auto 0;
}
.mavonEditor { .mavonEditor {
width: 100%; width: 100%;
height: 250%; height: 250%;
......
...@@ -56,8 +56,10 @@ export default { ...@@ -56,8 +56,10 @@ export default {
text-decoration: underline; text-decoration: underline;
} }
.changermdp{ button{
width: auto; width: auto;
text-align: center;
line-height: 1em;
} }
#editMode{ #editMode{
......
...@@ -15,5 +15,6 @@ export default { ...@@ -15,5 +15,6 @@ export default {
width: 250px; width: 250px;
margin-top: 2px; margin-top: 2px;
flex-basis: 80%; flex-basis: 80%;
height: 22px;
} }
</style> </style>
\ No newline at end of file
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
<p>Banque</p> <p>Banque</p>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
...@@ -21,6 +23,11 @@ export default { ...@@ -21,6 +23,11 @@ export default {
contenuPanier: true, contenuPanier: true,
} }
}, },
props: {
// Signal pour remise à zéro de l'affichage du menu Panier / banque
razModeVariante: {}
},
methods: { methods: {
/** /**
* @vuese * @vuese
...@@ -28,10 +35,21 @@ export default { ...@@ -28,10 +35,21 @@ export default {
*/ */
changerChoix: function () { changerChoix: function () {
this.contenuPanier = !this.contenuPanier this.contenuPanier = !this.contenuPanier
// dès qu'un filtre est choisi // dès qu'un filtre est choisi
// @arg True si le mode panier est actif, False sinon // @arg True si le mode panier est actif, False sinon
this.$emit("mode_choisi", {mode: this.contenuPanier}) this.$emit("mode_choisi", {mode: this.contenuPanier})
}, },
},
watch: {
/**
* @vuese
* Déconnexion de l'auteur -> on reset l'affichage du menu
*/
razModeVariante: function () {
this.contenuPanier = true
}
} }
} }
</script> </script>
...@@ -47,6 +65,7 @@ export default { ...@@ -47,6 +65,7 @@ export default {
width: 49%; width: 49%;
flex-grow: 1; flex-grow: 1;
text-align: center; text-align: center;
vertical-align: center;
} }
.nonClicked { .nonClicked {
......
...@@ -43,6 +43,7 @@ export default { ...@@ -43,6 +43,7 @@ export default {
border: 1px solid black; border: 1px solid black;
width: 250px; width: 250px;
display: flex; display: flex;
margin-left: 864px;
} }
#contenusPanier, #contenusBanque { #contenusPanier, #contenusBanque {
......
<template> <template>
<div> <div>
<p>(Dans le futur, ces actions varieront en fonction du type de contenu cliqué dans la 'fenetre principale')</p> <p>{{titreContenu}} </p>
<div id="actionsContenu" v-show="!isContenuRefuse"> <div id="actionsContenu" v-show="!isContenuRefuse">
<button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('modifier')">modifier le contenu</button> <button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('modifier')">modifier le contenu</button>
<br v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'">
<button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('supprimer')">supprimer le contenu</button> <button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('supprimer')">supprimer le contenu</button>
<br v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'">
<button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'en-cours' && contenuClique.origine === 'tiers' && contenuClique.anonyme !== 'oui'" v-on:click="actionContenu('publier')">publier le contenu</button> <button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'en-cours' && contenuClique.origine === 'tiers' && contenuClique.anonyme !== 'oui'" v-on:click="actionContenu('publier')">publier le contenu</button>
<br v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'en-cours' && contenuClique.origine === 'tiers' && contenuClique.anonyme !== 'oui'">
<button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'en-cours' && (contenuClique.origine === 'perso' || contenuClique.anonyme === 'oui')" v-on:click="actionContenu('validerModification')">valider la modification</button> <button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'en-cours' && (contenuClique.origine === 'perso' || contenuClique.anonyme === 'oui')" v-on:click="actionContenu('validerModification')">valider la modification</button>
<br v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'en-cours' && (contenuClique.origine === 'perso' || contenuClique.anonyme === 'oui')">
<button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'banque'" v-on:click="actionContenu('mettreFavori')">mettre le contenu en tiers</button> <button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'banque'" v-on:click="actionContenu('mettreFavori')">mettre le contenu en tiers</button>
<br> <br v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'banque'">
<p>{{contenuCliqueProvenance}}</p>
<p>{{versionMax}}</p>
<p v-show="(contenuCliqueProvenance === 'banque'
|| contenuCliqueProvenance === 'perso')
&& versionMax > 1">Choisir le numéro de version que vous souhaitez consulter : </p>
<select v-show="(contenuCliqueProvenance === 'banque' <select v-show="(contenuCliqueProvenance === 'banque'
|| contenuCliqueProvenance === 'perso') || contenuCliqueProvenance === 'perso')
&& versionMax > 1" v-model="versionChoisie" v-on:change="changerVersion" > && versionMax > 1" v-model="versionChoisie" v-on:change="changerVersion" >
<option v-for="i in versionMax" v-bind:key="i"> {{i}}</option> <option v-for="i in versionMax" v-bind:key="i"> {{i}}</option>
</select> </select>
<br v-show="(contenuCliqueProvenance === 'banque'
|| contenuCliqueProvenance === 'perso')
&& versionMax > 1">
<p> Voici l'intérieur de votre contenu dans sa version {{versionChoisie}} : </p>
<span contenteditable="false" v-html="formatterMarkdown()"> <span contenteditable="false" v-html="formatterMarkdown()">
</span> </span>
<br> <br>
...@@ -101,7 +109,8 @@ export default { ...@@ -101,7 +109,8 @@ export default {
contenu: '', contenu: '',
versionMax: 1, versionMax: 1,
versionChoisie: 1, versionChoisie: 1,
isContenuRefuse :false isContenuRefuse :false,
titreContenu: ''
} }
}, },
watch: { watch: {
...@@ -112,6 +121,8 @@ export default { ...@@ -112,6 +121,8 @@ export default {
contenuClique: function () { contenuClique: function () {
let that = this let that = this
this.titreContenu = this.contenuClique.titre
this.isContenuRefuse = false this.isContenuRefuse = false
if (Object.prototype.hasOwnProperty.call(this.contenuClique, 'refuse')){ if (Object.prototype.hasOwnProperty.call(this.contenuClique, 'refuse')){
......
<template> <template>
<div> <div>
<p v-show="filtre_choisi.length === 0">Ajoutez des filtres pour restreindre la recherche, ou effectuez une recherche libre (bouton en haut à droite)</p> <p v-show="filtre_choisi.length === 0">{{ texte }}</p>
<Filtre_Tag v-show="filtre_choisi === 'tags officiels' || filtre_choisi === 'tags libres' " v-bind:filtreChoisi="filtre_choisi" @creer_filtre="creer_filtre"/> <Filtre_Tag v-show="filtre_choisi === 'tags officiels' || filtre_choisi === 'tags libres' " v-bind:filtreChoisi="filtre_choisi" @creer_filtre="creer_filtre"/>
<Filtre_Auteur v-bind:panierChoisi="panierChoisi" v-show="filtre_choisi === 'auteur'" v-bind:auteur="auteur" @creer_filtre="creer_filtre"/> <Filtre_Auteur v-bind:panierChoisi="panierChoisi" v-show="filtre_choisi === 'auteur'" v-bind:auteur="auteur" @creer_filtre="creer_filtre"/>
<Filtre_Date v-show="filtre_choisi === 'date' " @creer_filtre="creer_filtre"/> <Filtre_Date v-show="filtre_choisi === 'date' " @creer_filtre="creer_filtre"/>
<Filtre_Note_Popularite v-show="filtre_choisi === 'note / popularité' " @creer_filtre="creer_filtre"/> <Filtre_Note_Popularite v-show="filtre_choisi === 'note / popularité' " @creer_filtre="creer_filtre"/>
<Filtre_Type_Source v-show="filtre_choisi === 'type / source'" @creer_filtre="creer_filtre"/> <Filtre_Type_Source v-show="filtre_choisi === 'type / source'" @creer_filtre="creer_filtre"/>
</div> </div>
</template> </template>
<script> <script>
...@@ -30,7 +30,16 @@ export default { ...@@ -30,7 +30,16 @@ export default {
Filtre_Note_Popularite, Filtre_Note_Popularite,
Filtre_Type_Source Filtre_Type_Source
}, },
props: ['filtre_choisi', 'auteur', 'panierChoisi'], props: {
// mode filtre enclenché ou non
modeFiltre: {},
// information concernant l'ajout d'un filtre
filtre_choisi: {},
// auteur
auteur: {},
// mode panier enclenché ou non
panierChoisi: {}
},
methods: { methods: {
/** /**
* @vuese * @vuese
...@@ -42,6 +51,14 @@ export default { ...@@ -42,6 +51,14 @@ export default {
this.$emit("creer_filtre", {filtre: event}) this.$emit("creer_filtre", {filtre: event})
} }
},
computed: {
texte: function () {
if (this.modeFiltre)
return "Ajoutez des filtres pour restreindre la recherche, ou effectuez une recherche libre (bouton en haut à droite)"
else
return "Entrez un terme a rechercher dans le texte ou à l'intérieur d'un contenu, ou effectuez une recherche via filtres (bouton en haut à droite) "
}
} }
} }
</script> </script>
......
<template> <template>
<div > <div >
<p id="modifTitre"> Modification du contenu </p> <p id="modifTitre"> Modification du contenu </p>
<div id="titreContenu">
<label>Titre du contenu : </label><br>
<input type="text" placeholder="titre du contenu" v-model="titreContenu">
</div>
<br>
<div class="mavonEditor"> <div class="mavonEditor">
<mavon-editor :language="'fr'" style="min-height: 700px" v-model="contenu"/> <mavon-editor :language="'fr'" style="min-height: 700px" v-model="texteDuContenu"/>
</div> </div>
<div class="markdown"> <div class="markdown">
<br> <br>
...@@ -25,7 +30,9 @@ export default { ...@@ -25,7 +30,9 @@ export default {
// l'auteur qui effectue la modification (l'auteur du contenu en cours) // l'auteur qui effectue la modification (l'auteur du contenu en cours)
auteur: {}, auteur: {},
// la provenance (perso, tiers, en-cours) // la provenance (perso, tiers, en-cours)
contenuCliqueProvenance: {} contenuCliqueProvenance: {},
// le titre du contenu cliqué
titreContenu: {}
}, },
data: function () { data: function () {
return { return {
...@@ -43,7 +50,7 @@ export default { ...@@ -43,7 +50,7 @@ export default {
// evenement de modification du texte d'un contenu // evenement de modification du texte d'un contenu
// @arg l'action choisie, ici 'valider' // @arg l'action choisie, ici 'valider'
// @arg le texte modifié // @arg le texte modifié
this.$emit("choixModif", {action: actionChoisie, nouveauTexte: this.contenu}) this.$emit("choixModif", {action: actionChoisie, nouveauTexte: this.texteDuContenu, titre: this.titreContenu})
} else { } else {
// evenement de retour en arrière vers Consulter_COntenu // evenement de retour en arrière vers Consulter_COntenu
// @arg l'action choisie, ici 'arriere' // @arg l'action choisie, ici 'arriere'
...@@ -51,16 +58,16 @@ export default { ...@@ -51,16 +58,16 @@ export default {
} }
} }
}, }/*,
watch: { watch: {
/** /!**
* @vuese * @vuese
* Permet de changer le texte du contenu à chaque fois qu'un contenu est cliqué en 'mode modification' * Permet de changer le texte du contenu à chaque fois qu'un contenu est cliqué en 'mode modification'
*/ *!/
texteDuContenu: function () { texteDuContenu: function () {
this.contenu = this.texteDuContenu // this.titreContenu
} }
}, }*/
} }
</script> </script>
...@@ -79,6 +86,12 @@ button { ...@@ -79,6 +86,12 @@ button {
margin-bottom: 5px; margin-bottom: 5px;
} }
#titreContenu {
text-align: center;
align-content: center;
margin: 0 auto 0;
}
#modifTitre{ #modifTitre{
margin-top: -35px; margin-top: -35px;
} }
......
...@@ -3,26 +3,27 @@ ...@@ -3,26 +3,27 @@
<div> <div>
<button id="changerVariante" v-show="!modeConsultation && !modeModification" v-on:click="changerVariante">changer</button> <button id="changerVariante" v-show="!modeConsultation && !modeModification" v-on:click="changerVariante">changer</button>
<div class="choixPanier" v-show="panierChoisi && !modeConsultation && !modeModification"> <div class="choixPanier" v-show="panierChoisi && !modeConsultation && !modeModification">
<label>Perso</label> <label id="labelPerso">Perso </label>
<input type="checkbox" class="filtreTableau" id="filtrePerso" v-model="persoChecked" v-on:click="persoChecked = !persoChecked" name="perso" value="tiers"/> <input type="checkbox" class="filtreTableau" id="filtrePerso" v-model="persoChecked" v-on:click="persoChecked = !persoChecked" name="perso" value="tiers"/>
<label>Tiers</label> <label> Tiers </label>
<input type="checkbox" class="filtreTableau" id="filtreTiers" v-model="tiersChecked" v-on:click="tiersChecked = !tiersChecked" name="tiers" value="tiers"/> <input type="checkbox" class="filtreTableau" id="filtreTiers" v-model="tiersChecked" v-on:click="tiersChecked = !tiersChecked" name="tiers" value="tiers"/>
<label>En Cours</label> <label> En Cours</label>
<input type="checkbox" class="filtreTableau" id="filtreEnCours" v-model="enCoursChecked" v-on:click="enCoursChecked = !enCoursChecked" name="en-cours" value="en-cours"/> <input type="checkbox" class="filtreTableau" id="filtreEnCours" v-model="enCoursChecked" v-on:click="enCoursChecked = !enCoursChecked" name="en-cours" value="en-cours"/>
</div> </div>
<div id="principal" v-show="!modeConsultation && !modeModification"> <div id="principal" v-show="!modeConsultation && !modeModification">
<div id="ensemble"> <div id="ensemble">
<button id="boutonVolet" v-on:click="desactiverVolet" v-bind:style="panierChoisi ? {'margin-top': '0%'} : {'margin-top': '20px'}"></button> <button id="boutonVolet" v-on:click="desactiverVolet" v-bind:style="panierChoisi ? {'margin-top': '0%'} : {'margin-top': '24px'}"></button>
<div class="full" id="volet" v-show="isActif"> <div class="full" id="volet" v-show="isActif">
<Volet_Menu v-bind:panierChoisi = "panierChoisi" @filtre_choisi="passerFiltre"/> <Volet_Menu v-bind:panierChoisi = "panierChoisi" @filtre_choisi="passerFiltre" @basculeRechercheFiltre="basculeRechercheFiltre"/>
<Volet_Contenu @mode_choisi="ajusterMode" v-bind:filtre_choisi="filtre_choisi" v-bind:variante="variante" v-bind:auteur="auteur" @filtresChoisis="filtresChoisis"/> <Volet_Contenu @mode_choisi="ajusterMode" v-bind:filtre_choisi="filtre_choisi" v-bind:variante="variante" v-bind:auteur="auteur"
@filtresChoisis="filtresChoisis" v-bind:razModeVariante="razModeVariante" v-bind:modeFiltre="modeFiltre" />
</div> </div>
</div> </div>
<div id="tableau"> <div id="tableau">
<table v-bind:style="panierChoisi ? {'margin-top': '0%'} : {'margin-top': '20px'}"> <table v-bind:style="panierChoisi ? {'margin-top': '0%'} : {'margin-top': '24px'}">
<thead> <thead>
<tr> <tr>
<th colspan="8 ">Contenus</th> <th colspan="8 ">Contenus</th>
...@@ -53,34 +54,42 @@ ...@@ -53,34 +54,42 @@
<template #title>Popover Title</template> <template #title>Popover Title</template>
<h1>I am</h1> popover <b>component</b> content! <h1>I am</h1> popover <b>component</b> content!
</b-popover>--> </b-popover>-->
<td :id="JSON.stringify(item._id)" v-on:click="chargerContenu(item, item.provenance)">{{item._id}}</td> <td :id="JSON.stringify(item._id)" v-on:click="chargerContenu(item, item.provenance)">{{item.titre}}</td>
<b-popover class="non" v-on:show="rechercherTexte(item._id, item.provenance)" :target="JSON.stringify(item._id)" triggers="hover" placement="bottom"> <b-popover class="non" v-on:show="rechercherTexte(item._id, item.provenance)" :target="JSON.stringify(item._id)" triggers="hover" placement="bottom">
<p id="beautiful" v-html="texteDuContenu"></p> <p id="beautiful" v-html="texteDuContenu"></p>
</b-popover> </b-popover>
<!-- auteur -->
<td>{{item.auteur}}</td> <td>{{item.auteur}}</td>
<!-- version -->
<td v-if="item.provenance === 'en-cours' || item.provenance === 'tiers' ">{{ item.version }}</td> <td v-if="item.provenance === 'en-cours' || item.provenance === 'tiers' ">{{ item.version }}</td>
<td v-else>{{ item.versionEnCours.numero }}</td> <td v-else>{{ item.versionEnCours.numero }}</td>
<td>The table body</td> <!-- date -->
<td class="prout">with two columns</td> <td v-if="item.provenance === 'en-cours'">{{ item.date }}</td>
<td>with two columns</td> <td v-else>{{ item.versionEnCours.date }}</td>
<td v-if="item.provenance !== 'en-cours'" v-b-popover.hover.bottom="item.tags_banque_libres.toString()">with two columns</td> <!-- popularité -->
<td v-else v-b-popover.hover.bottom="'tags non disponibles'">with two columns</td> <td v-if="item.provenance === 'en-cours'"> - </td>
<td v-else>{{ item.versionEnCours.popularite }}</td>
<!-- note -->
<td v-if="item.provenance === 'en-cours'"> - </td>
<td v-else>{{ item.note }}</td>
<td v-if="item.provenance !== 'en-cours'" v-b-popover.hover.bottom="item.tags_banque_libres.toString()">{{item.tags_banque_libres.toString()}}</td>
<td v-else v-b-popover.hover.bottom="'tags non disponibles'">tags non disponibles</td>
<td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche(item._id, item.provenance)" class="horns" name="horns"/></td> <td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche(item._id, item.provenance)" class="horns" name="horns"/></td>
</tr> </tr>
<tr v-show="!panierChoisi" v-for="item in contenusbanque" :key="item.titre"> <tr v-show="!panierChoisi" v-for="item in contenusbanque" :key="item.titre">
<td :id="'a' + JSON.stringify(item._id)" v-on:click="chargerContenu(item, 'banque')">{{ item._id }}</td> <td :id="'a' + JSON.stringify(item._id)" v-on:click="chargerContenu(item, 'banque')">{{ item.titre }}</td>
<b-popover :target="'a' + JSON.stringify(item._id)" v-on:show="rechercherTexte(item._id, 'banque')" triggers="hover" placement="bottom"> <b-popover :target="'a' + JSON.stringify(item._id)" v-on:show="rechercherTexte(item._id, 'banque')" triggers="hover" placement="bottom">
<p id="beautiful" v-html="texteDuContenu"></p> <p id="beautiful" v-html="texteDuContenu"></p>
</b-popover> </b-popover>
<td>{{ item.auteur }}</td> <td>{{ item.auteur }}</td>
<td>{{item.versionEnCours.numero}}</td>
<td>{{item.versionEnCours}}</td> <td>{{item.versionEnCours}}</td>
<td>with two columns</td> <td class="prout">{{item.versionEnCours}}</td>
<td class="prout">with two columns</td> <td>{{item.note}}</td>
<td>with two columns</td> <td v-b-popover.hover.bottom="item.tags_banque_fixes.toString()">{{item.tags_banque_fixes.toString()}}</td>
<td v-b-popover.hover.bottom="item.tags_banque_libres.toString()">with two columns</td>
<td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche(item._id, item.versionEnCours)" class="horns" name="horns"/></td> <td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche(item._id, item.versionEnCours)" class="horns" name="horns"/></td>
</tr> </tr>
...@@ -95,7 +104,8 @@ ...@@ -95,7 +104,8 @@
</div> </div>
</div> </div>
<Consulter_Contenu v-bind:auteur="auteur" @actionContenu="actionContenu" @retour_arriere="retourArriere" v-bind:contenuClique = "contenuClique" v-bind:contenuCliqueProvenance = "contenuCliqueProvenance" v-show="modeConsultation && !modeModification"/> <Consulter_Contenu v-bind:auteur="auteur" @actionContenu="actionContenu" @retour_arriere="retourArriere" v-bind:contenuClique = "contenuClique" v-bind:contenuCliqueProvenance = "contenuCliqueProvenance" v-show="modeConsultation && !modeModification"/>
<Modifier_Contenu v-bind:auteur="auteur" v-bind:texteDuContenu = "texteDuContenu" v-bind:contenuCliqueProvenance = "contenuCliqueProvenance" v-show="!modeConsultation && modeModification" @choixModif="choixModif"/> <Modifier_Contenu v-bind:auteur="auteur" v-bind:texteDuContenu = "texteDuContenu" v-bind:contenuCliqueProvenance = "contenuCliqueProvenance"
v-show="!modeConsultation && modeModification" @choixModif="choixModif" v-bind:titreContenu="titreContenu"/>
<div v-show="panierChoisi && !modeConsultation" class="circle" v-on:click="ajouterContenu" v-bind:style="{'margin-left': '95%'}"> <div v-show="panierChoisi && !modeConsultation" class="circle" v-on:click="ajouterContenu" v-bind:style="{'margin-left': '95%'}">
</div> </div>
...@@ -151,7 +161,10 @@ export default { ...@@ -151,7 +161,10 @@ export default {
checkes: [], checkes: [],
nouveauContenu: false, nouveauContenu: false,
texteDuContenu: '', texteDuContenu: '',
titreContenu: '',
token: '', token: '',
razModeVariante: false,
modeFiltre: false,
chocolat: '<h1 id="hellomarkdown">hello, markdown!</h1>', chocolat: '<h1 id="hellomarkdown">hello, markdown!</h1>',
imgEtoile: "https://previews.123rf.com/images/ylivdesign/ylivdesign1612/ylivdesign161208906/67933171-ic%C3%B4ne-%C3%A9toile-%C3%A0-cinq-branches-jaunes-illustration-de-dessin-anim%C3%A9-d-ic%C3%B4ne-de-vecteur-%C3%A9toile-jaune-%C3%A0-cinq-branches-.jpg", imgEtoile: "https://previews.123rf.com/images/ylivdesign/ylivdesign1612/ylivdesign161208906/67933171-ic%C3%B4ne-%C3%A9toile-%C3%A0-cinq-branches-jaunes-illustration-de-dessin-anim%C3%A9-d-ic%C3%B4ne-de-vecteur-%C3%A9toile-jaune-%C3%A0-cinq-branches-.jpg",
imgPoubelle: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAflBMVEX///8AAACampq4uLh5eXlcXFxlZWXr6+vFxcVFRUWurq6ioqL39/doaGju7u7Z2dmIiIjX19eoqKicnJxZWVlvb28qKirDw8Pl5eU6Ojq5ublAQEDOzs7f398dHR1OTk4xMTGRkZERERGLi4sbGxt+fn4kJCQLCwt0dHRSUlJ5VCwrAAAIRUlEQVR4nO2d6VYbSwyEHbyBMWbHEBKwCev7v+C9jruOMyqpx2YZKTn6fiLj6WJ60TZDr5ckSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkyd9PfzjajWHfe8g7svdtV/a8h7wjqTAVxicVpsL4QGF/Nq4z6//lCvdbP7mfCoOSCjekwqikwg2pMCqpcEMqjMq/r/CwjPtH6yd/lE8edjCq7RlcDFu4KeM+aPvg8KB88qbtgxeDDhXefvPgtkOFB+3D+QIOUmEqTIWpMBWmwlSYCj+Vm/bhfAE3HSqc9z2Yd6gwSZIkSbbm+HLQBZfHbgp/tPshn0J7SvKr+NmRwp9uCqcdKZy6Kew9dCLwwU9gb9GJwoWjwjcezu1osDeZzPe123s0OVsxOVJsD/vzyWRvMFLS6ReOCp94ONgVtNt7XmznlRul7F5PnevacMjDQTntXlGBAprW9HZfbPts8qxKTXg4CFNHOyocFdt3Nk0clAHlD46G9MGOClE667Opvcr6dSiLBlNKWaJVhSfFpkx8vwNfPfIx0uWOCpfFdsImxwO/1+PhXBaLci+qCnHvL9nkoGvDHQ0Hh5eynqoKsX4vyHLnoGsDnwlI22pxR00h4gdONt8r1+0O3jGRttXijppCbCecbO6yQYFZ0niuiuV6R4XXxXZFlqVy3e7g/eSx7HzvVDh7JItvo43igYzLUBXXu6LwYbY2jdn03UUZOOUBlQU15elWU3hVbr2yfP2yNCtmPKDTYlLCoIpCdAMpf7KZg64NFYVK7FhR+FZM4RQqcxF+Mh/dNYVwFOZkuXJ12rQjH7GOEshXFB4VE8djvge+pgMylOCiovDJNB0pV+0SdmoqwUVFoR1a+Lo0mo7XYjnbSeFZMb2a2r3gEAKziveMmkIkP3jWez/FziHE0LTUFCK0GJoWL45pRJXwaQuFHDz5ujSag70o5xdrryksOqacZr1Wr9sd02c5IvjQSnBRUYjQgvz1Z+cDX4tYi0IlS1VRWHSwF9hlI5QOOzUlfFIKU7ZClJc4ePJ2abTtHQuH5m9F4XOx8NT2dmk0JwTbIs9fWyHmIm/Avxw0NWFXGTE5z19bIeYi5ww8ixZr2HWBA2Y75bZ7za6ef0Mizyvo4PlrKzwxLd4ujbY3YOVwHdRWiNrpL7J4H/g9pXSB+8Er1FaI1cZBpYMiCY0Ja4rDDlshAgheuw6KJJSpwb7Ie5CtEPsJ7b9XyhW7hjJOi2Kw9yB7PyHH27MPA5hLh/cgWyH2EzJ49mEALl0UA7vetkIEEGSI8HQwb5mw7KDQ/BV/l0brx0BwsbtCDi08+zAA11KQd6BCmanwsRg4L+DZhwF4ueHvTsGFqRB1GZ4PDoIYGhWCCzpHTIXIz3Fo4aCHoSMfuwNld02FyGvTrhXhwFduFcKn5dYKkdem4CnCga8c+RgvCTEVwkB/kwgHvhLxoHJBvoCpEOc6zWv/HMYKEoKpRavKVIiVSxM+gkujbIDm3m8qxPlCtX/fPgxARz5Sg3R+mwrhI1ACMsKBr7haL5bBVAg/78Uy+MKZeMtgKkS7BX2Tbx8G4HqRVbkwFVpVi4V7WWYNpR7QFiW7Ty2Fd1ZD1Jt6ve6htnw0DUnX21KInD61C42Uq3lA/RjY/GVblKUQt4qOF+8+DEDLymo7sBSazQ1R3uFGiVFkP6UTZil8bfsibyhtiBy99MkthfCvqQ7gX7RYQxuE1RZlKTQborz7MAAlRq1nLiyF5rMWAcoyv5nKlBOSEnJdWQrhX8t2occgBz7nMVC5kAvUUojlJl2HGDmMFbKRCW1RMriwFB63fI8/8txbGF6YpRBennRw/fswgMxj3BltUZZCNERJPzZGDmMFpSuMZy4MheazFhGKFmsoj2E8c2EoNJ+1iJHDWEFOjfGYlqHQfBgsikujTC+ET2JzNBRiyyTfKEYO4zdyaAguRPhkKETwRKGFgxILOTSjLcpQaDZEOSixkE6N8cyFodB61iKOS8MOpRFcGAqt0GKoXMkLOTajWmYoxLEnsyEnypW8kKErwiexdxgKsS/J4OlcuZIX0qlBbUaklgyF1tNucVwaTpKhNiNcAUMhDnZZl4nQhwGki/2s+2GGQvh4si4TJcJfQfn7olA4O4bCcf1LQmAObiuFbV8SApm/14tJdYWyLuP/LMmfyCMfwUUzQNQV4mkSGVpEOvA5u633i+oKF+WnMgZ7pat4Ip0apOOb2TNdIUILmXuM5NJw7hfBRdNN0RXCAZKhRYw+DCBDOzhczXurK8S9kq6f/7MkfyIzowgXmvdWV4h7tRTfEaVosUY6NQj5mjNPV4gZLStVkVya/50XkTfUKxe6QuxK4sR5CJSl6XG6Gq53c33qCrHehOMdpQ8DiKIK3s/VTJ/pCpGYExlv/4dHm0inpvy4uT51hcazFrFcGs5AlB83vWldofGsRZQ+DCDzZPj5FgrVj8bpwwCydKE+c1FVKBPncYoWa2QeA9tHI5OqKkRWVOb0I+UwVljja1QuVIWoWlh/oyhYc6zR86YqtF4+G+vA79E+AUel4YqpCuHgyeDJQUMdcV7DnW4EF6pC4+Wzvu/01BA+F0rwy1aFCENEM0CX/7ByO0QhTQ1r1fd568FyoD4MsGwO8KI3m41P5/3GuJez8YpZ47OX/fnpeDaTOX3vF2AxonTxwm82qfMs+vQjFS3WKO/5/BDRXJrP/38lcfowgPIWzA8R40mLBp+s0FuOwr+v8HP/J2Kssswa7R+PvJ94B776yv8PEKtosUZ7Sff7iZbDWKH8v5IPEM+l+ewjP96Br79m/v3EKlokSZIkSZIkX81/MjFrMKxwu60AAAAASUVORK5CYII=" imgPoubelle: "data:image/png;base64,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"
...@@ -173,11 +186,11 @@ export default { ...@@ -173,11 +186,11 @@ export default {
* Dès que l'auteur est connu, on charge tous les contenus auxquels il pourrait s'intéresser * Dès que l'auteur est connu, on charge tous les contenus auxquels il pourrait s'intéresser
*/ */
auteur: function () { auteur: function () {
this.razModeVariante = ! this.razModeVariante
this.contenusDuPanier() this.contenusDuPanier()
this.contenusDeLaBanque() this.contenusDeLaBanque()
this.token = localStorage.token this.token = localStorage.token
this.panierChoisi = true this.panierChoisi = true
}, },
/** /**
* @vuese * @vuese
...@@ -385,6 +398,8 @@ export default { ...@@ -385,6 +398,8 @@ export default {
case "modifier": case "modifier":
this.modeModification = true this.modeModification = true
this.texteDuContenu = event.texte this.texteDuContenu = event.texte
this.titreContenu = event.contenu.titre
break break
case "supprimer": case "supprimer":
this.panierChoisi = true this.panierChoisi = true
...@@ -508,85 +523,97 @@ export default { ...@@ -508,85 +523,97 @@ export default {
choixModif: function (event) { choixModif: function (event) {
this.modeModification = false this.modeModification = false
this.panierChoisi = true this.panierChoisi = true
let data = {nouveau_texte: event.nouveauTexte} if(event.action === "valider") {
let nouveau_titre = event.titre
if(event.action === "valider"){ let data = {nouveau_texte: event.nouveauTexte, nouveau_titre: nouveau_titre}
if (this.contenuCliqueProvenance !== 'en-cours'){ if (this.contenuCliqueProvenance !== 'en-cours') {
let dataDeux = {auteur: this.auteur, id_contenu: JSON.stringify(this.contenuClique._id), version: this.contenuClique.versionEnCours["numero"], provenance: this.contenuCliqueProvenance} let dataDeux = {
auteur: this.auteur, id_contenu: JSON.stringify(this.contenuClique._id),
version: this.contenuClique.versionEnCours["numero"], provenance: this.contenuCliqueProvenance
}
let that = this let that = this
Service.creerEnCours(dataDeux).then(function (reponse) { Service.creerEnCours(dataDeux).then(function (reponse) {
//console.log(reponse.data) //console.log(reponse.data)
let contenuEC = reponse.data let contenuEC = reponse.data
contenuEC.provenance = "en-cours" contenuEC.provenance = "en-cours"
contenuEC.titre = event.titre
that.contenus.push(contenuEC) that.contenus.push(contenuEC)
Service.changerTexte(data, JSON.stringify(reponse.data._id)) Service.changerTexte(data, JSON.stringify(reponse.data._id))
}) })
} } else {
else {
Service.changerTexte(data, JSON.stringify(this.contenuClique._id)) Service.changerTexte(data, JSON.stringify(this.contenuClique._id))
}
}
}, for (let i = 0; i < this.contenus.length; i++) {
/** alert("prout " + i)
* @vuese if (this.contenus[i]._id === this.contenuClique._id) {
* Application des filtres choisis au contenu affiché (mode Banque et Panier) this.contenus[i].titre = event.titre
*/ }
filtresChoisis(event) { }
let contenusFiltres = [] }
// on récupère les contenus à filtrer
if (this.panierChoisi){
contenusFiltres = this.contenusTotal
}
else {
contenusFiltres = this.contenusTotalBanque
} }
// on les filtre },
/**
* @vuese
* Application des filtres choisis au contenu affiché (mode Banque et Panier)
*/
filtresChoisis(event) {
let contenusFiltres = []
// on récupère les contenus à filtrer
if (this.panierChoisi){
contenusFiltres = this.contenusTotal
}
else {
contenusFiltres = this.contenusTotalBanque
}
// on les filtre
if (event.filtres.filter(contenu => contenu.type === 'auteur').length > 0){ if (event.filtres.filter(contenu => contenu.type === 'auteur').length > 0){
// auteur // auteur
let filtre_auteur = (event.filtres.filter(contenu => contenu.type === 'auteur').map(contenu => contenu.filtre)) let filtre_auteur = (event.filtres.filter(contenu => contenu.type === 'auteur').map(contenu => contenu.filtre))
contenusFiltres = contenusFiltres.filter(contenu => filtre_auteur.includes(contenu.auteur)) contenusFiltres = contenusFiltres.filter(contenu => filtre_auteur.includes(contenu.auteur))
} }
// date // date
if (event.filtres.filter(contenu => contenu.type === 'tags libres').length > 0) { if (event.filtres.filter(contenu => contenu.type === 'tags libres').length > 0) {
// tags libres // tags libres
let filtre_tags_libres = (event.filtres.filter(contenu => contenu.type === 'tags libres').map(contenu => contenu.filtre)) let filtre_tags_libres = (event.filtres.filter(contenu => contenu.type === 'tags libres').map(contenu => contenu.filtre))
for (let i = 0; i < filtre_tags_libres.length; i++) { for (let i = 0; i < filtre_tags_libres.length; i++) {
contenusFiltres = contenusFiltres.filter(contenu => contenu.tags_banque_libres.includes(filtre_tags_libres[i])) contenusFiltres = contenusFiltres.filter(contenu => contenu.tags_banque_libres.includes(filtre_tags_libres[i]))
}
}
if (event.filtres.filter(contenu => contenu.type === 'tags officiels').length > 0) {
// tags officiels
let filtre_tags_fixes = (event.filtres.filter(contenu => contenu.type === 'tags officiels').map(contenu => contenu.filtre))
for (let i = 0; i < filtre_tags_fixes.length; i++) {
contenusFiltres = contenusFiltres.filter(contenu => contenu.tags_banque_fixes.includes(filtre_tags_fixes[i]))
}
}
if (event.filtres.filter(contenu => contenu.type === 'type').length > 0) {
// type
let filtre_type = (event.filtres.filter(contenu => contenu.type === 'type').map(contenu => contenu.filtre))
contenusFiltres = contenusFiltres.filter(contenu => filtre_type.includes(contenu.type))
} }
if (event.filtres.filter(contenu => contenu.type === 'source').length > 0) { }
// source if (event.filtres.filter(contenu => contenu.type === 'tags officiels').length > 0) {
let filtre_source = (event.filtres.filter(contenu => contenu.type === 'source').map(contenu => contenu.filtre)) // tags officiels
contenusFiltres = contenusFiltres.filter(contenu => filtre_source.includes(contenu.source)) let filtre_tags_fixes = (event.filtres.filter(contenu => contenu.type === 'tags officiels').map(contenu => contenu.filtre))
// manque note, popularite for (let i = 0; i < filtre_tags_fixes.length; i++) {
} contenusFiltres = contenusFiltres.filter(contenu => contenu.tags_banque_fixes.includes(filtre_tags_fixes[i]))
// et on les réinjecte dans la "source"
if (this.panierChoisi){
this.contenus = contenusFiltres
}
else {
this.contenusbanque = contenusFiltres
} }
} }
if (event.filtres.filter(contenu => contenu.type === 'type').length > 0) {
// type
let filtre_type = (event.filtres.filter(contenu => contenu.type === 'type').map(contenu => contenu.filtre))
contenusFiltres = contenusFiltres.filter(contenu => filtre_type.includes(contenu.type))
}
if (event.filtres.filter(contenu => contenu.type === 'source').length > 0) {
// source
let filtre_source = (event.filtres.filter(contenu => contenu.type === 'source').map(contenu => contenu.filtre))
contenusFiltres = contenusFiltres.filter(contenu => filtre_source.includes(contenu.source))
// manque note, popularite
}
// et on les réinjecte dans la "source"
if (this.panierChoisi){
this.contenus = contenusFiltres
}
else {
this.contenusbanque = contenusFiltres
}
},
basculeRechercheFiltre: function (event) {
this.modeFiltre = event.choix
} }
} }
}
</script> </script>
...@@ -638,6 +665,10 @@ tfoot { ...@@ -638,6 +665,10 @@ tfoot {
#changerVariante { #changerVariante {
width: auto; width: auto;
text-align: center;
line-height: 1em;
margin-left: 10px;
} }
.circle { .circle {
...@@ -653,15 +684,33 @@ tfoot { ...@@ -653,15 +684,33 @@ tfoot {
background-size: cover; background-size: cover;
} }
/*[data-popover]{*/ .filtreTableau{
/* display: inline-block;*/ margin: 0 5px 0 5px;
/*}*/ }
#labelPerso {
margin-left: -5px ;
}
.supprimerContenu { th{
text-align: center;
}
th image
{
background-color: yellow;
}
.supprimerContenus{
width: 27px;
}
.supprimerContenus > img {
height: 20px; height: 20px;
width: 20px; width: 20px;
background: url(../assets/img/balai.png); padding-bottom: 4px;
padding-top: -3px;
} }
.ajouterTiers { .ajouterTiers {
......
...@@ -5,9 +5,10 @@ ...@@ -5,9 +5,10 @@
<Detail_Filtre v-bind:nouveau_filtre="nouveau_filtre" @filtresChoisis="filtresChoisis"/> <Detail_Filtre v-bind:nouveau_filtre="nouveau_filtre" @filtresChoisis="filtresChoisis"/>
</div> </div>
<div id = "detailContenu"> <div id = "detailContenu">
<Detail_Contenu v-bind:panierChoisi="panierChoisi" v-bind:filtre_choisi="filtre_choisi" v-bind:auteur="auteur" @creer_filtre="creer_filtre"/> <Detail_Contenu v-bind:modeFiltre="modeFiltre" v-bind:panierChoisi="panierChoisi" v-bind:filtre_choisi="filtre_choisi"
v-bind:auteur="auteur" @creer_filtre="creer_filtre"/>
</div> </div>
<Choix_Mode v-show="!variante" @mode_choisi="ajusterMode" /> <Choix_Mode v-show="!variante" @mode_choisi="ajusterMode" v-bind:razModeVariante="razModeVariante" />
</div> </div>
</template> </template>
...@@ -29,7 +30,11 @@ export default { ...@@ -29,7 +30,11 @@ export default {
// Variable de stocka de l'affichage ou non de la variante du menu Banque / Panier // Variable de stocka de l'affichage ou non de la variante du menu Banque / Panier
variante: {}, variante: {},
// Stockage de l'auteur connecté // Stockage de l'auteur connecté
auteur:{} auteur:{},
// Signal pour remise à zéro de l'affichage du menu Panier / banque
razModeVariante: {},
// mode filtre enclenché ou non
modeFiltre: {}
}, },
methods: { methods: {
......
...@@ -34,6 +34,7 @@ export default { ...@@ -34,6 +34,7 @@ export default {
*/ */
changerModeMenu: function (){ changerModeMenu: function (){
this.modeFiltre = !this.modeFiltre this.modeFiltre = !this.modeFiltre
this.$emit("basculeRechercheFiltre", {choix: this.modeFiltre})
}, },
/** /**
* @vuese * @vuese
......
...@@ -8,6 +8,7 @@ import BootstrapVue from "bootstrap-vue" ...@@ -8,6 +8,7 @@ import BootstrapVue from "bootstrap-vue"
import 'bootstrap/dist/css/bootstrap.css' import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css' import 'bootstrap-vue/dist/bootstrap-vue.css'
//import Index from '@/Index' //import Index from '@/Index'
Vue.config.productionTip = false Vue.config.productionTip = false
Vue.use(VPopover, { tooltip: true }) Vue.use(VPopover, { tooltip: true })
......
...@@ -8,14 +8,19 @@ const en_cours = "en_cours/" ...@@ -8,14 +8,19 @@ const en_cours = "en_cours/"
const demande_pub = "demande_pub/" const demande_pub = "demande_pub/"
//const evaluation = "evaluation/ //const evaluation = "evaluation/
const header = {headers:
{
Authorization: "Bearer " + localStorage.token,
}
}
export default { export default {
getHeader(token){
return {headers:
{
Authorization: "Bearer " + token,
}
}
},
// gestion des utilisateurs // gestion des utilisateurs
login(data) { login(data) {
let login = data[0] let login = data[0]
...@@ -24,98 +29,102 @@ export default { ...@@ -24,98 +29,102 @@ export default {
axios.get(urlBase + "checkUser?login=" + login + "&password=" + motDePasse).then(function (response) { axios.get(urlBase + "checkUser?login=" + login + "&password=" + motDePasse).then(function (response) {
reponse = response.data reponse = response.data
})*/ })*/
return axios.get(urlBase + users + "checkUser?login=" + login + "&password=" + motDePasse, header) return axios.get(urlBase + users + "checkUser?login=" + login + "&password=" + motDePasse, this.getHeader(localStorage.token))
}, },
// gestion des utilisateurs
/* logout() {
return axios.get(urlBase + users + "logout", this.getHeader(localStorage.token))
},*/
recupererAuteursExistants(){ recupererAuteursExistants(){
return axios.get(urlBase + users + "auteursExistants", header) return axios.get(urlBase + users + "auteursExistants", this.getHeader(localStorage.token))
}, },
// gestion des contenus // gestion des contenus
creerContenuPerso(data) { creerContenuPerso(data) {
return axios.post(urlBase + contenus + "addContenu", data, header) return axios.post(urlBase + contenus + "addContenu", data, this.getHeader(localStorage.token))
}, },
creerContenuTiers(data) { creerContenuTiers(data) {
return axios.patch(urlBase + contenus + "ajouterTiers", data, header) return axios.patch(urlBase + contenus + "ajouterTiers", data, this.getHeader(localStorage.token))
}, },
/* getContenuById(idContenu) { /* getContenuById(idContenu) {
return axios.get(urlBase + contenus + "getContenu/" + idContenu) return axios.get(urlBase + contenus + "getContenu/" + idContenu)
},*/ },*/
getPanierAuteur(auteur) { getPanierAuteur(auteur) {
return axios.get(urlBase + contenus + "getContenuPanier/" + auteur + "?perso=True&tiers=True&enCours=true", header) return axios.get(urlBase + contenus + "getContenuPanier/" + auteur + "?perso=True&tiers=True&enCours=true", this.getHeader(localStorage.token))
}, },
getBanqueAuteur(auteur) { getBanqueAuteur(auteur) {
return axios.get(urlBase + contenus + "getContenuBanque/" + auteur, header) return axios.get(urlBase + contenus + "getContenuBanque/" + auteur, this.getHeader(localStorage.token))
}, },
supprimerContenu(idContenu) { supprimerContenu(idContenu) {
return axios.delete(urlBase + contenus + "deletePerso/" + idContenu, header) return axios.delete(urlBase + contenus + "deletePerso/" + idContenu, this.getHeader(localStorage.token))
}, },
supprimerTiers(auteur, id_tiers) { supprimerTiers(auteur, id_tiers) {
return axios.delete(urlBase + contenus + "deleteTiers?auteur=" + auteur + "&id_tiers=" + id_tiers, header) return axios.delete(urlBase + contenus + "deleteTiers?auteur=" + auteur + "&id_tiers=" + id_tiers, this.getHeader(localStorage.token))
}, },
creerNouveauContenu(data) { creerNouveauContenu(data) {
return axios.post(urlBase + contenus + "newContenu", data, header) return axios.post(urlBase + contenus + "newContenu", data, this.getHeader(localStorage.token))
}, },
majContenu(data) { majContenu(data) {
return axios.patch(urlBase + contenus + "majContenu", data, header) return axios.patch(urlBase + contenus + "majContenu", data, this.getHeader(localStorage.token))
}, gererDemandePublication(data) { }, gererDemandePublication(data) {
return axios.patch(urlBase + contenus + "gererDemandePub", data, header) return axios.patch(urlBase + contenus + "gererDemandePub", data, this.getHeader(localStorage.token))
}, },
isMajTiersDisponible(auteur) { isMajTiersDisponible(auteur) {
return axios.get(urlBase + contenus + "isMajTiersDisponible/" + auteur, header) return axios.get(urlBase + contenus + "isMajTiersDisponible/" + auteur, this.getHeader(localStorage.token))
}, },
listeMajTiers(auteur) { listeMajTiers(auteur) {
return axios.get(urlBase + contenus + "listeMajTiers/" + auteur, header) return axios.get(urlBase + contenus + "listeMajTiers/" + auteur, this.getHeader(localStorage.token))
}, },
gererMajTiers(data) { gererMajTiers(data) {
return axios.patch(urlBase + contenus + "gererMajTiers", data, header) return axios.patch(urlBase + contenus + "gererMajTiers", data, this.getHeader(localStorage.token))
}, },
changerTexte(data, id) { changerTexte(data, id) {
return axios.patch(urlBase + contenus + "changerTexte/" + id, data, header) return axios.patch(urlBase + contenus + "changerTexte/" + id, data, this.getHeader(localStorage.token))
}, },
recupererTexteContenu(idContenu){ recupererTexteContenu(idContenu){
return axios.get(urlBase + contenus + "getTexteContenu/" + idContenu, header) return axios.get(urlBase + contenus + "getTexteContenu/" + idContenu, this.getHeader(localStorage.token))
}, },
recupererTexteVersionContenu(idContenu, version){ recupererTexteVersionContenu(idContenu, version){
return axios.get(urlBase + contenus + "getTexteVersionContenu/" + idContenu + "/" + version, header) return axios.get(urlBase + contenus + "getTexteVersionContenu/" + idContenu + "/" + version, this.getHeader(localStorage.token))
}, },
// gestion des en-cours // gestion des en-cours
creerEnCours(data) { creerEnCours(data) {
return axios.post(urlBase + en_cours + "newEnCours", data, header) return axios.post(urlBase + en_cours + "newEnCours", data, this.getHeader(localStorage.token))
}, },
creerEnCoursRefuse(data) { creerEnCoursRefuse(data) {
return axios.patch(urlBase + en_cours + "newEnCoursRefuse", data, header) return axios.patch(urlBase + en_cours + "newEnCoursRefuse", data, this.getHeader(localStorage.token))
}, },
supprimerEnCoursParLid(idEnCours) { supprimerEnCoursParLid(idEnCours) {
return axios.delete(urlBase + en_cours + "supprimerEnCoursParId/" + idEnCours, header) return axios.delete(urlBase + en_cours + "supprimerEnCoursParId/" + idEnCours, this.getHeader(localStorage.token))
}, },
recupererTexteContenuEnCours(idContenu){ recupererTexteContenuEnCours(idContenu){
return axios.get(urlBase + en_cours + "getTexteContenuEnCours/" + idContenu, header) return axios.get(urlBase + en_cours + "getTexteContenuEnCours/" + idContenu, this.getHeader(localStorage.token))
}, },
// gestion des demandes de publication // gestion des demandes de publication
getPublicationsRecues(auteur) { getPublicationsRecues(auteur) {
return axios.get(urlBase + demande_pub + "demandePublication/" + auteur + "/False", header) return axios.get(urlBase + demande_pub + "demandePublication/" + auteur + "/False", this.getHeader(localStorage.token))
}, },
getPublicationsProposees(auteur) { getPublicationsProposees(auteur) {
return axios.get(urlBase + demande_pub + "demandePublication/" + auteur + "/True", header) return axios.get(urlBase + demande_pub + "demandePublication/" + auteur + "/True", this.getHeader(localStorage.token))
}, },
creerDemandePublication(data) { creerDemandePublication(data) {
return axios.post(urlBase + demande_pub + "demandePublication", data, header) return axios.post(urlBase + demande_pub + "demandePublication", data, this.getHeader(localStorage.token))
}, },
supprimerDemandePublication(idDemandePublication) { supprimerDemandePublication(idDemandePublication) {
return axios.delete(urlBase + demande_pub + "demandePublication/" + idDemandePublication, header) return axios.delete(urlBase + demande_pub + "demandePublication/" + idDemandePublication, this.getHeader(localStorage.token))
}, },
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment