Commit 65198158 authored by Jérémie Passerat's avatar Jérémie Passerat

Ajout d'un editeur markdown pour la creation de contenu

parent 4ce8a456
This diff is collapsed.
<template> <template>
<div id="app"> <div id="app">
<Volet_Base @choix_variante="choixVariante" v-bind:auteur="auteur" /> <Volet_Base @choix_variante="choixVariante" @newContenu="newContenu" v-bind:auteur="auteur" />
</div> </div>
</template> </template>
...@@ -17,6 +17,10 @@ export default { ...@@ -17,6 +17,10 @@ export default {
this.$emit("choix_variante", {variante: event.variante}) this.$emit("choix_variante", {variante: event.variante})
},
newContenu: function () {
this.$emit("newContenu")
} }
}, },
props: ['auteur'] props: ['auteur']
......
...@@ -3,12 +3,13 @@ ...@@ -3,12 +3,13 @@
<Login v-show="etat === 'unlogged'" @user_logged="setLogged"></Login> <Login v-show="etat === 'unlogged'" @user_logged="setLogged"></Login>
<Menu v-show="etat !== 'unlogged'" v-bind:auteur="auteur" v-bind:etat="etat" v-bind:variante="variante" @menu_choisi="changerPage"></Menu> <Menu v-show="etat !== 'unlogged'" v-bind:auteur="auteur" v-bind:etat="etat" v-bind:variante="variante" @menu_choisi="changerPage"></Menu>
<Contenu v-show="etat === 'Contenu'" v-bind:auteur="auteur" @choix_variante="choixVariante"></Contenu> <Contenu v-show="etat === 'Contenu'" v-bind:auteur="auteur" @choix_variante="choixVariante" @newContenu="newContenu"></Contenu>
<Maj v-show="etat === 'Mises à jour'" v-bind:auteur="auteur" v-bind:isRecu="isRecu" v-bind:isPropose="isPropose" <Maj v-show="etat === 'Mises à jour'" v-bind:auteur="auteur" v-bind:isRecu="isRecu" v-bind:isPropose="isPropose"
v-bind:contenuEnPublication="contenuEnPublication" ></Maj> v-bind:contenuEnPublication="contenuEnPublication" ></Maj>
<Profil v-show="etat === 'Profil'" ></Profil> <Profil v-show="etat === 'Profil'" ></Profil>
<Tags v-show="etat === 'Tags'" ></Tags> <Tags v-show="etat === 'Tags'" ></Tags>
<p style="text-align: center" v-show="errorLogin">Login ou mot de passe erroné</p> <p style="text-align: center" v-show="errorLogin">Login ou mot de passe erroné</p>
<NewContenu v-show="etat === 'newContenu'"></NewContenu>
</div> </div>
</template> </template>
...@@ -20,6 +21,7 @@ import Menu from "@/Menu"; ...@@ -20,6 +21,7 @@ import Menu from "@/Menu";
import Maj from "@/Maj"; import Maj from "@/Maj";
import Profil from "@/Profil"; import Profil from "@/Profil";
import Tags from "@/Tags"; import Tags from "@/Tags";
import NewContenu from "@/NewContenu";
export default { export default {
name: "Index.vue", name: "Index.vue",
...@@ -60,9 +62,13 @@ export default { ...@@ -60,9 +62,13 @@ export default {
choixVariante: function (event) { choixVariante: function (event) {
this.variante = event.variante this.variante = event.variante
},
newContenu: function () {
this.etat = "newContenu"
} }
}, },
components:{ components:{
NewContenu,
Login, Login,
Contenu, Contenu,
Menu, Menu,
......
<template> <template>
<div id="loginForm" v-on:keyup="keymonitor"> <div id="loginForm" v-on:keyup="keymonitor">
<p>Deux comptes temporaires : Charles, Jacques</p> <p>Trois comptes temporaires : Charles, Jacques, Valery</p>
<label for="identifiant">Identifiant</label> <label for="identifiant">Identifiant</label>
<br> <br>
<input type="text" id="identifiant" placeholder="identifiant" v-model="login" > <input type="text" id="identifiant" placeholder="identifiant" v-model="login" >
......
...@@ -89,9 +89,7 @@ export default { ...@@ -89,9 +89,7 @@ export default {
props: ['contenuEnPublication', 'auteur', 'isRecu', 'isPropose'], props: ['contenuEnPublication', 'auteur', 'isRecu', 'isPropose'],
methods: { methods: {
naviguer: function (e) { naviguer: function (e) {
alert("recu " + this.isRecu)
e.target.classList.toggle("niveau-down") e.target.classList.toggle("niveau-down")
//alert(e.target.id)
document.getElementById("detail" + e.target.id[0].toUpperCase() + e.target.id.substring(1)).classList.toggle('affiche') document.getElementById("detail" + e.target.id[0].toUpperCase() + e.target.id.substring(1)).classList.toggle('affiche')
}, },
conserver: function (item) { conserver: function (item) {
...@@ -120,12 +118,21 @@ export default { ...@@ -120,12 +118,21 @@ export default {
}, },
gererPublication: function (item, reponse) { gererPublication: function (item, reponse) {
let that = this let that = this
let data = ""
if (item.auteurContenu === undefined) {
const data = {id_publication: JSON.stringify(item._id), reponse: reponse, auteur: item.auteurDemande} data = {id_tiers: JSON.stringify(item[0]._id), reponse: reponse, auteur: this.auteur}
Service.gererMajTiers(data).then(function () {
that.publicationsRecues()
})
}else {
data = {id_publication: JSON.stringify(item._id), reponse: reponse, auteur: item.auteurDemande}
this.contenusRecu = [] this.contenusRecu = []
Service.gererDemandePublication(data).then(function () { Service.gererDemandePublication(data).then(function () {
that.publicationsRecues() that.publicationsRecues()
}) })
}
}, },
publicationsRecues: function () { publicationsRecues: function () {
let that = this let that = this
...@@ -139,6 +146,12 @@ export default { ...@@ -139,6 +146,12 @@ export default {
} }
} }
}) })
Service.listeMajTiers(this.auteur).then(function (response){
that.contenusRecu.push(response.data)
})
}, },
publicationsProposees: function () { publicationsProposees: function () {
let that = this let that = this
......
...@@ -69,8 +69,12 @@ export default { ...@@ -69,8 +69,12 @@ export default {
}) })
}, },
majTiers: function () { majTiers: function () {
let that = this
Service.isMajTiersDisponible(this.auteur).then(function (response) { Service.isMajTiersDisponible(this.auteur).then(function (response) {
alert("Tiens, j'ai envie d'aller jorder un bon coup moua (aaaaaaaaaaaaaaaahhhhhhh) : " + response.data) if (response.data === "True") {
that.isNotif = true
that.isRecu = that.isNotif
}
}) })
} }
}, },
......
<template>
<div>
<p>Création de contenu</p>
<p>Dans cette zone vous pouvez renseigner (en langage markdown) le contenu que vous désirez</p>
<!-- <div class="markdown">
<textarea rows="50" cols="150"/>
</div>-->
<!-- <vue-simplemde id="markdownEditor" v-model="contenuSaisi"/>-->
<div class="mavonEditor">
<mavon-editor :language="'fr'" style="min-height: 700px" v-model="contenuSaisi"/>
</div>
<div class="markdown">
<br>
<button v-on:click="ajouterContenu">créer</button><br><br>
<button>revenir en arrière</button>
</div>
</div>
</template>
<script>
// import VueSimplemde from 'vue-simplemde'
export default {
name: "NewContenu",
data() {
return {
contenuSaisi: '',
markdownOption: {
bold: true,
language: 'fr'
}
}
},
methods: {
ajouterContenu: function () {
alert("contenu : " + this.contenuSaisi )
}
}
}
</script>
<style scoped>
/*@import '~simplemde/dist/simplemde.min.css';*/
.markdown, p{
text-align: center;
}
input {
width: 1500px;
height: 500px
}
button {
align-items: center;
width: auto;
}
#markdownEditor{
height: 1500px
}
.mavonEditor {
width: 100%;
height: 250%;
}
</style>
\ No newline at end of file
...@@ -7,14 +7,13 @@ ...@@ -7,14 +7,13 @@
<div id="actionsContenu"> <div id="actionsContenu">
<button v-show="contenuCliqueProvenance !== 'banque' && contenuClique.etat !== 'refuse'" v-on:click="actionContenu('modifier')">modifier le contenu</button> <button v-show="contenuCliqueProvenance !== 'banque' && contenuClique.etat !== 'refuse'" v-on:click="actionContenu('modifier')">modifier le contenu</button>
<button v-show="contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('supprimer')">supprimer le contenu</button> <button v-show="contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('supprimer')">supprimer le contenu</button>
<button v-show="contenuCliqueProvenance === 'en-cours' && contenuClique.etat !== 'refuse'" v-on:click="actionContenu('publier')">publier le contenu</button> <button v-if="auteur !== contenuClique.auteur" v-show="contenuCliqueProvenance === 'en-cours' && contenuClique.etat !== 'refuse'" v-on:click="actionContenu('publier')">publier le contenu</button>
<button v-else v-show="contenuCliqueProvenance === 'en-cours' && contenuClique.etat !== 'refuse'" v-on:click="actionContenu('validerModification')">valider la modification</button>
<button v-show="contenuCliqueProvenance === 'banque' && contenuClique.etat !== 'refuse'" v-on:click="actionContenu('mettreFavori')">mettre le contenu en tiers</button> <button v-show="contenuCliqueProvenance === 'banque' && contenuClique.etat !== 'refuse'" v-on:click="actionContenu('mettreFavori')">mettre le contenu en tiers</button>
<br> <br>
</div> </div>
<p v-if="contenuClique.etat === 'refuse'">Je suis un contenu en cours {{contenuClique.etat}}</p>
<button id="ren" v-on:click="revenirArriere">Retour en arrière</button> <button id="ren" v-on:click="revenirArriere">Retour en arrière</button>
</div> </div>
...@@ -23,7 +22,7 @@ ...@@ -23,7 +22,7 @@
<script> <script>
export default { export default {
name: "Consulter_Contenu", name: "Consulter_Contenu",
props: ['contenuClique', 'contenuCliqueProvenance'], props: ['contenuClique', 'contenuCliqueProvenance', 'auteur'],
methods: { methods: {
actionContenu: function (action) { actionContenu: function (action) {
this.$emit("actionContenu", {action: action, contenu: this.contenuClique}) this.$emit("actionContenu", {action: action, contenu: this.contenuClique})
......
...@@ -48,12 +48,14 @@ ...@@ -48,12 +48,14 @@
v-bind:style="{ v-bind:style="{
'background-color': item.provenance === 'perso' ? 'white' : item.provenance === 'tiers' ? 'red' : 'blue' 'background-color': item.provenance === 'perso' ? 'white' : item.provenance === 'tiers' ? 'red' : 'blue'
}" > }" >
<td class="modal titreContenu" v-on:click="chargerContenu(item, item.provenance)" v-popover:tooltip="'prévisualisation'">{{ item._id }}</td> <td class="modal titreContenu" v-on:click="chargerContenu(item, item.provenance)" v-popover:tooltip="'Open The Eyes\n'+
'\n'+
'Le **pipi** du *caca* est sur ton toit'">{{ item._id }}</td>
<td>{{item.auteur}}</td> <td>{{item.auteur}}</td>
<td v-if="item.provenance === 'en-cours'">{{ item.version }}</td> <td v-if="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> <td>The table body</td>
<td>with two columns</td> <td class="prout">with two columns</td>
<td>with two columns</td> <td>with two columns</td>
<td class="modal tagContenu" v-popover:tooltip="'tags'">with two columns</td> <td class="modal tagContenu" v-popover:tooltip="'tags'">with two columns</td>
...@@ -67,7 +69,7 @@ ...@@ -67,7 +69,7 @@
<td>{{ item.auteur }}</td> <td>{{ item.auteur }}</td>
<td>{{item.versionEnCours}}</td> <td>{{item.versionEnCours}}</td>
<td>with two columns</td> <td>with two columns</td>
<td>with two columns</td> <td class="prout">with two columns</td>
<td>with two columns</td> <td>with two columns</td>
<td class="modal tagContenu" v-popover:tooltip="'tags'">with two columns</td> <td class="modal tagContenu" v-popover:tooltip="'tags'">with two columns</td>
...@@ -84,7 +86,7 @@ ...@@ -84,7 +86,7 @@
</div> </div>
</div> </div>
<Consulter_Contenu @actionContenu="actionContenu" @retour_arriere="retourArriere" v-bind:contenuClique = "contenuClique" v-bind:contenuCliqueProvenance = "contenuCliqueProvenance" v-show="modeConsultation"/> <Consulter_Contenu v-bind:auteur="auteur" @actionContenu="actionContenu" @retour_arriere="retourArriere" v-bind:contenuClique = "contenuClique" v-bind:contenuCliqueProvenance = "contenuCliqueProvenance" v-show="modeConsultation"/>
<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>
...@@ -220,18 +222,16 @@ export default { ...@@ -220,18 +222,16 @@ export default {
} }
this.checkes = [] this.checkes = []
$(".horns").prop( "checked", false ); $(".horns").prop( "checked", false );
},
majContenu: function () {
}, },
ajouterContenu: function () { ajouterContenu: function () {
let data = {auteur: this.auteur, nom_fichier: "Contenu1", commit: ""} this.$emit("newContenu")
/* let data = {auteur: this.auteur, nom_fichier: "Contenu1", commit: ""}
let that = this let that = this
Service.creerContenuPerso(data).then( Service.creerContenuPerso(data).then(
function () { function () {
that.contenusDuPanier() that.contenusDuPanier()
} }
) )*/
}, },
chargerContenu: function (item, provenance){ chargerContenu: function (item, provenance){
this.modeConsultation = true; this.modeConsultation = true;
...@@ -306,6 +306,15 @@ export default { ...@@ -306,6 +306,15 @@ export default {
} }
) )
break break
case "validerModification":
data = {id_contenu: JSON.stringify(event.contenu.reference), auteur: ""}
Service.majContenu(data).then(function () {
Service.supprimerEnCours( JSON.stringify(event.contenu.reference)).then(function () {
that.contenusDuPanier()
})
})
break
} }
}, },
ajouterCoche: function (idContenu, provenance) { ajouterCoche: function (idContenu, provenance) {
......
import Vue from 'vue' import Vue from 'vue'
import Index from '@/Index' import Index from '@/Index'
import VPopover from 'vue-js-popover' import VPopover from 'vue-js-popover'
import mavonEditor from 'mavon-editor';
import 'mavon-editor/dist/css/index.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 })
Vue.use(mavonEditor)
new Vue({ new Vue({
render: h => h(Index), render: h => h(Index),
......
...@@ -92,5 +92,8 @@ export default { ...@@ -92,5 +92,8 @@ export default {
}, },
listeMajTiers(auteur){ listeMajTiers(auteur){
return axios.get(urlBase + "listeMajTiers/" + auteur ) return axios.get(urlBase + "listeMajTiers/" + auteur )
},
gererMajTiers(data) {
return axios.patch(urlBase + "gererMajTiers", data)
} }
} }
\ 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