From 29c696ba146ca44a6cb3d262633753d464a5151b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr> Date: Tue, 16 Nov 2021 17:31:27 +0100 Subject: [PATCH] allow moderator to edit features & update feature data after edition --- src/store/modules/feature.js | 1 + src/views/feature/Feature_detail.vue | 29 +++++++++++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/store/modules/feature.js b/src/store/modules/feature.js index ecf1c647..bdcd6dab 100644 --- a/src/store/modules/feature.js +++ b/src/store/modules/feature.js @@ -120,6 +120,7 @@ const feature = { const message = routeName === "editer-signalement" ? "Le signalement a été mis à jour" : "Le signalement a été crée"; function redirect(featureId) { + dispatch("GET_PROJECT_FEATURES", rootState.project_slug) commit("DISCARD_LOADER", null, { root: true }) router.push({ name: "details-signalement", diff --git a/src/views/feature/Feature_detail.vue b/src/views/feature/Feature_detail.vue index b31ae747..45d445be 100644 --- a/src/views/feature/Feature_detail.vue +++ b/src/views/feature/Feature_detail.vue @@ -24,7 +24,8 @@ <router-link v-if=" (permissions && permissions.can_update_feature) || - isFeatureCreator + isFeatureCreator || + isModerator " :to="{ name: 'editer-signalement', @@ -39,7 +40,9 @@ </router-link> <!-- (permissions && permissions.can_delete_feature) || --> <a - v-if="isFeatureCreator || permissions.is_project_super_contributor" + v-if=" + isFeatureCreator || permissions.is_project_super_contributor + " @click="isCanceling = true" id="feature-delete" class="ui button button-hover-red" @@ -386,14 +389,14 @@ export default { }, computed: { - ...mapState(["user"]), - ...mapGetters(["permissions"]), + ...mapState(["user", "USER_LEVEL_PROJECTS"]), + ...mapGetters(["permissions", "project"]), ...mapState("feature", ["linked_features", "statusChoices"]), - DJANGO_BASE_URL: function () { + DJANGO_BASE_URL() { return this.$store.state.configuration.VUE_APP_DJANGO_BASE; }, - feature: function () { + feature() { const result = this.$store.state.feature.features.find( (el) => el.feature_id === this.$route.params.slug_signal ); @@ -407,6 +410,13 @@ export default { return false; }, + isModerator() { + return this.USER_LEVEL_PROJECTS && + this.USER_LEVEL_PROJECTS[this.project.slug] === "Modérateur" + ? true + : false; + }, + statusIcon() { switch (this.feature.status) { case "archived": @@ -617,7 +627,12 @@ export default { const feature = response.data; if (feature) { const currentFeature = [feature]; - const featureGroup = mapUtil.addFeatures(currentFeature,{},true,this.$store.state.feature_type.feature_types); + const featureGroup = mapUtil.addFeatures( + currentFeature, + {}, + true, + this.$store.state.feature_type.feature_types + ); mapUtil .getMap() .fitBounds(featureGroup.getBounds(), { padding: [25, 25] }); -- GitLab