diff --git a/src/components/Feature/Detail/FeatureHeader.vue b/src/components/Feature/Detail/FeatureHeader.vue index 0da226c012194aebc3d6842deefa00fbac1f6f43..c4472199f25175a9ac4a1a647d7c44b2f6af1d02 100644 --- a/src/components/Feature/Detail/FeatureHeader.vue +++ b/src/components/Feature/Detail/FeatureHeader.vue @@ -56,7 +56,7 @@ </button> <button - v-if="fastEditionMode" + v-if="fastEditionMode && userCanFastEdit" id="previous-feature" :class="['ui button button-hover-orange tiny-margin', { disabled: false }]" data-tooltip="Enregistrer les modifications" @@ -192,6 +192,13 @@ export default { return this.USER_LEVEL_PROJECTS && this.USER_LEVEL_PROJECTS[this.$route.params.slug] === 'Modérateur'; }, + userCanFastEdit() { + const superiorRoles = ['contributor', 'super_contributor', 'moderator', 'admin']; + return this.USER_LEVEL_PROJECTS && + superiorRoles.includes(this.USER_LEVEL_PROJECTS[this.$route.params.slug]) || + this.user.is_superuser; + }, + queryparams() { return this.$route.query.offset >= 0 ? { previous: parseInt(this.$route.query.offset) - 1, @@ -214,7 +221,7 @@ export default { }); }, saveFastEdition() { - this.$store.dispatch('feature/SEND_FEATURE', this.currentRouteName) + this.$store.dispatch('feature/SEND_FEATURE', this.$route.name) .then(() => console.log('sent')); } } diff --git a/src/store/modules/feature.store.js b/src/store/modules/feature.store.js index ec5b373b1069b0ef5d927329d82e0d528f2aeb4d..743d9e8c7741fc42127da7165aa2c86484283690 100644 --- a/src/store/modules/feature.store.js +++ b/src/store/modules/feature.store.js @@ -209,14 +209,15 @@ const feature = { for (const field of state.extra_forms) { extraFormObject[field.name] = field.value; } + const feature = state.form || state.currentFeature; return { - id: state.form.feature_id, + id: feature.feature_id, type: 'Feature', - geometry: state.form.geometry, + geometry: feature.geometry || feature.geom, properties: { - title: state.form.title, - description: state.form.description.value, - status: state.form.status.value, + title: feature.title, + description: feature.description.value, + status: feature.status.value, project: rootState.projects.project.slug, feature_type: rootState['feature-type'].current_feature_type_slug, ...extraFormObject @@ -227,7 +228,7 @@ const feature = { const geojson = createGeojson(); let url = `${rootState.configuration.VUE_APP_DJANGO_API_BASE}features/`; if (routeName !== 'ajouter-signalement') { - url += `${state.form.feature_id}/? + url += `${geojson.id}/? feature_type__slug=${rootState['feature-type'].current_feature_type_slug} &project__slug=${rootState.projects.project.slug}`; } @@ -260,7 +261,7 @@ const feature = { const updateMsg = { project: rootState.projects.project.slug, type: routeName === 'ajouter-signalement' ? 'post' : 'put', - featureId: state.form.feature_id, + featureId: geojson.id, geojson: geojson }; arraysOffline.push(updateMsg); diff --git a/src/store/modules/projects.store.js b/src/store/modules/projects.store.js index 969f79b2cb8c7cb0930dc5abf814379aca2f58e7..14266f6d615d49831ad0c04a2b9337575ec8587f 100644 --- a/src/store/modules/projects.store.js +++ b/src/store/modules/projects.store.js @@ -67,6 +67,7 @@ const projectsStore = { actions: { async GET_ALL_PROJECTS({ rootState, commit }) { + console.trace('GET_ALL_PROJECTS'); try { const response = await axios .get(`${rootState.configuration.VUE_APP_DJANGO_API_BASE}projects/`);