amdin front can create paragraphe source on entite via REST

This commit is contained in:
Bachir Soussi Chiadmi 2024-04-03 21:23:24 +02:00
parent 24b41ed00d
commit 5521fe9998
4 changed files with 109 additions and 3 deletions

View File

@ -453,11 +453,46 @@ body{
} }
} }
section.liens{ section.liens{
padding:1em 0;
a{ a{
text-decoration: underline; text-decoration: underline;
@include font_reponses(); @include font_reponses();
} }
} }
section.documents{
padding:1em 0;
a{
text-decoration: underline;
@include font_reponses();
}
}
}
&.add{
div.add-source-btn{
border: #eee 2px solid;
background-color: #eee;
border-radius: 5px;
margin: 1em 0 0;
font-size: 1em;
width: 100%;
height: 100px;
line-height:100px;
text-align: center;
transition: all 0.2s ease-in-out;
position: relative;
>svg{
display: inline-block;
vertical-align: middle;
width:50px; height:50px;
color: #333;
}
cursor: pointer;
box-sizing: border-box;
&:hover{
border: #01ffe2 2px solid;
}
}
} }
} }
} }
@ -1072,7 +1107,9 @@ div.editable-image,
div.editable-video, div.editable-video,
div.editable-audios, div.editable-audios,
ul.editable-files{ ul.editable-files{
background: #eee; &.can_update{
background: #eee;
}
max-width: 100%; max-width: 100%;
div.file-btn{ div.file-btn{
border: #eee 2px solid; border: #eee 2px solid;

View File

@ -12,17 +12,22 @@ import ContentEditable from '@components/editable/ContentEditable.vue';
import CheckboxEditable from '@components/editable/CheckboxEditable.vue'; import CheckboxEditable from '@components/editable/CheckboxEditable.vue';
import ImageEditable from '@components/editable/ImageEditable.vue'; import ImageEditable from '@components/editable/ImageEditable.vue';
import SvgIcon from '@jamescoyle/vue-icon';
import { mdiTextBoxPlusOutline } from '@mdi/js';
export default { export default {
props: ['concernement', 'entite', 'eid'], props: ['concernement', 'entite', 'eid'],
emits: ['reloadEntite'], emits: ['reloadEntite'],
data() { data() {
return { return {
mdiTextBoxPlusOutline_path: mdiTextBoxPlusOutline,
} }
}, },
computed: { computed: {
...mapState(ConcernementsStore,['opened_concernement', ...mapState(ConcernementsStore,['opened_concernement',
'ct_concernement', 'ct_concernement',
'ct_entite']), 'ct_entite']),
...mapState(UserStore,['csrf_token']),
field_menace_maintien_label (){ field_menace_maintien_label (){
let str; let str;
if (this.concernement.entites_byid[this.eid].menacemaintien < 0) { if (this.concernement.entites_byid[this.eid].menacemaintien < 0) {
@ -36,6 +41,55 @@ export default {
methods: { methods: {
reloadEntite(){ reloadEntite(){
this.$emit('reloadEntite'); this.$emit('reloadEntite');
},
addSource(){
console.log('add source');
const params_parag = {
type: [{target_id: 'source'}],
parent_type:{value: 'node'},
parent_id:{value: this.entite.id},
parent_field_name:{value: 'field_sources'}
};
const configs = {
headers: {'X-CSRF-Token': this.csrf_token}
};
// call the api
// https://www.drupal.org/project/paragraphs/issues/3012600
REST.post(`/entity/paragraph?_format=json`, params_parag, configs)
.then(({ data }) => {
console.log('REST post new source parag', data);
const params_node = {
type: 'entite',
nid: [{value: this.entite.id}],
'field_sources': [{
target_id: data.id[0].value,
target_revision_id: data.revision_id[0].value
}]
};
// call the api
REST.patch(`/node/${this.entite.id}?_format=json`, params_node, configs)
.then(({ data }) => {
console.log('REST patch entite new field_sources', data)
this.reloadEntite();
})
.catch(error => {
console.warn(`Issue with patch node entite field_sources`, error)
Promise.reject(error)
})
})
.catch(error => {
console.warn(`Issue with post new paragraph source`, error)
Promise.reject(error)
})
} }
}, },
components: { components: {
@ -43,6 +97,7 @@ export default {
ContentEditable, ContentEditable,
CheckboxEditable, CheckboxEditable,
ImageEditable, ImageEditable,
SvgIcon
} }
} }
</script> </script>
@ -109,6 +164,14 @@ export default {
:source="source" :source="source"
v-on:reloadEntite="reloadEntite" /> v-on:reloadEntite="reloadEntite" />
</section> </section>
<section
v-else-if="entite.can_update"
class="sources add">
<div @click="addSource" class="add-source-btn">
<span>Ajouter une experience vécue</span>
<svg-icon type="mdi" :path="mdiTextBoxPlusOutline_path"/>
</div>
</section>
</section> </section>
</template> </template>

View File

@ -55,7 +55,7 @@ export default {
<template> <template>
<section class="source"> <section class="source">
<!-- <div class="date">{{ source.date.start }}</div> --> <!-- <div class="date">{{ source.date.start }}</div> -->
<section v-if="source.description" class="description"> <section v-if="source.description || entite.can_update" class="description">
<label v-if="ct_entite"> {{ field_sources_label }}</label> <label v-if="ct_entite"> {{ field_sources_label }}</label>
<!-- <div v-html="source.description"/> --> <!-- <div v-html="source.description"/> -->
<ContentEditable <ContentEditable

View File

@ -44,7 +44,13 @@ export default {
toolbar: { toolbar: {
allowMultiParagraphSelection: false, allowMultiParagraphSelection: false,
buttons: ['anchor'], buttons: ['anchor'],
} },
placeholder: {
/* This example includes the default options for placeholder,
if nothing is passed this is what it used */
text: 'Ajouter du text',
hideOnClick: true
}
}); });
} }
}, },