From 66d663e14bd9d02339343fde5788524d8ddb6069 Mon Sep 17 00:00:00 2001 From: Pedro Amorim <pedro.amorim@ptfs-europe.com> Date: Mon, 27 Feb 2023 11:08:35 +0000 Subject: [PATCH] Bug 32991: Local titles: Add delete dialog to list and show. Removed FormConfirmDelete component and routes. --- .../EHoldingsLocalTitlesFormConfirmDelete.vue | 76 ------------------- .../ERM/EHoldingsLocalTitlesList.vue | 42 +++++++++- .../ERM/EHoldingsLocalTitlesShow.vue | 41 +++++++++- .../intranet-tmpl/prog/js/vue/routes/erm.js | 17 ----- 4 files changed, 75 insertions(+), 101 deletions(-) delete mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormConfirmDelete.vue diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormConfirmDelete.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormConfirmDelete.vue deleted file mode 100644 index 0e10e8eead..0000000000 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormConfirmDelete.vue +++ /dev/null @@ -1,76 +0,0 @@ -<template> - <div v-if="!initialized">{{ $__("Loading") }}</div> - <div v-else id="eholdings_confirm_delete"> - <h2>{{ $__("Delete title") }}</h2> - <div> - <form @submit="onSubmit($event)"> - <fieldset class="rows"> - <ol> - <li> - {{ $__("Title") }}: - {{ title.publication_title }} - </li> - </ol> - </fieldset> - <fieldset class="action"> - <input - type="submit" - variant="primary" - :value="$__('Yes, delete')" - /> - <router-link - to="/cgi-bin/koha/erm/eholdings/local/titles" - role="button" - class="cancel" - >{{ $__("No, do not delete") }}</router-link - > - </fieldset> - </form> - </div> - </div> -</template> - -<script> -import { APIClient } from "../../fetch/api-client.js" -import { setMessage } from "../../messages" - -export default { - data() { - return { - title: {}, - initialized: false, - } - }, - beforeRouteEnter(to, from, next) { - next(vm => { - vm.getTitle(to.params.title_id) - }) - }, - methods: { - getTitle(title_id) { - const client = APIClient.erm - client.localTitles.get(title_id).then( - title => { - this.title = title - this.initialized = true - }, - error => {} - ) - }, - onSubmit(e) { - e.preventDefault() - const client = APIClient.erm - client.localTitles.delete(this.title.title_id).then( - success => { - setMessage(this.$__("Title deleted")) - this.$router.push( - "/cgi-bin/koha/erm/eholdings/local/titles" - ) - }, - error => {} - ) - }, - }, - name: "EHoldingsLocalTitlesFormConfirmDelete", -} -</script> diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesList.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesList.vue index 90ab757f38..8dbd5a296e 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesList.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesList.vue @@ -30,6 +30,8 @@ export default { const { av_title_publication_types } = storeToRefs(AVStore) const { get_lib_from_av, map_av_dt_filter } = AVStore + const { setConfirmationDialog, setMessage } = inject("mainStore") + const table_id = "title_list" useDataTable(table_id) @@ -38,6 +40,8 @@ export default { get_lib_from_av, map_av_dt_filter, table_id, + setConfirmationDialog, + setMessage, } }, data: function () { @@ -77,9 +81,33 @@ export default { "/cgi-bin/koha/erm/eholdings/local/titles/edit/" + title_id ) }, - delete_title: function (title_id) { - this.$router.push( - "/cgi-bin/koha/erm/eholdings/local/titles/delete/" + title_id + delete_title: function (title_id, title_publication_title) { + this.setConfirmationDialog( + { + title: this.$__( + "Are you sure you want to remove this title?" + ), + message: title_publication_title, + accept_label: this.$__("Yes, delete"), + cancel_label: this.$__("No, do not delete"), + }, + () => { + const client = APIClient.erm + client.localTitles.delete(title_id).then( + success => { + this.setMessage( + this.$__("Local title %s deleted").format( + title_publication_title + ) + ) + $("#" + this.table_id) + .DataTable() + .ajax.url("/api/v1/erm/eholdings/local/titles") + .draw() + }, + error => {} + ) + } ) }, build_datatable: function () { @@ -193,6 +221,9 @@ export default { function (index, e) { let tr = $(this).parent().parent() let title_id = api.row(tr).data().title_id + let title_publication_title = api + .row(tr) + .data().publication_title let editButton = createVNode( "a", { @@ -217,7 +248,10 @@ export default { class: "btn btn-default btn-xs", role: "button", onClick: () => { - delete_title(title_id) + delete_title( + title_id, + title_publication_title + ) }, }, [ diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesShow.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesShow.vue index 59f0bf5104..7c55c24e5d 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesShow.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesShow.vue @@ -10,11 +10,12 @@ ><i class="fa fa-pencil"></i ></router-link> - <router-link - :to="`/cgi-bin/koha/erm/eholdings/local/titles/delete/${title.title_id}`" - :title="$__('Delete')" + <a + @click=" + delete_title(title.title_id, title.publication_title) + " ><i class="fa fa-trash"></i - ></router-link> + ></a> </span> </h2> <div> @@ -264,9 +265,12 @@ export default { setup() { const AVStore = inject("AVStore") const { get_lib_from_av } = AVStore + const { setConfirmationDialog, setMessage } = inject("mainStore") return { get_lib_from_av, + setConfirmationDialog, + setMessage, } }, data() { @@ -322,6 +326,34 @@ export default { error => {} ) }, + delete_title: function (title_id, title_publication_title) { + this.setConfirmationDialog( + { + title: this.$__( + "Are you sure you want to remove this title?" + ), + message: title_publication_title, + accept_label: this.$__("Yes, delete"), + cancel_label: this.$__("No, do not delete"), + }, + () => { + const client = APIClient.erm + client.localTitles.delete(title_id).then( + success => { + this.setMessage( + this.$__("Local title %s deleted").format( + title_publication_title + ) + ) + this.$router.push( + "/cgi-bin/koha/erm/eholdings/local/titles" + ) + }, + error => {} + ) + } + ) + }, }, components: { EHoldingsTitlePackagesList, @@ -333,6 +365,7 @@ export default { .action_links a { padding-left: 0.2em; font-size: 11px; + cursor: pointer; } fieldset.rows label { width: 25rem; diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/routes/erm.js b/koha-tmpl/intranet-tmpl/prog/js/vue/routes/erm.js index 1f3576db91..dd84078ea5 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/routes/erm.js +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/routes/erm.js @@ -4,7 +4,6 @@ import AgreementsShow from "../components/ERM/AgreementsShow.vue"; import AgreementsFormAdd from "../components/ERM/AgreementsFormAdd.vue"; import AgreementsFormConfirmDelete from "../components/ERM/AgreementsFormConfirmDelete.vue"; import EHoldingsLocalPackagesFormAdd from "../components/ERM/EHoldingsLocalPackagesFormAdd.vue"; -import EHoldingsLocalTitlesFormConfirmDelete from "../components/ERM/EHoldingsLocalTitlesFormConfirmDelete.vue"; import EHoldingsLocalTitlesFormAdd from "../components/ERM/EHoldingsLocalTitlesFormAdd.vue"; import EHoldingsLocalTitlesFormImport from "../components/ERM/EHoldingsLocalTitlesFormImport.vue"; import EHoldingsLocalPackagesList from "../components/ERM/EHoldingsLocalPackagesList.vue"; @@ -314,22 +313,6 @@ export const routes = [ ), }, }, - { - path: "delete/:title_id", - component: - EHoldingsLocalTitlesFormConfirmDelete, - meta: { - breadcrumb: () => - build_breadcrumb( - [ - breadcrumb_paths.eholdings_local, - breadcrumbs.eholdings.local - .titles, - ], - "Delete title" // $t("Delete title") - ), - }, - }, { path: "add", component: EHoldingsLocalTitlesFormAdd, -- 2.30.2