View | Details | Raw Unified | Return to bug 41178
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/SIP2/SIP2InstitutionResource.vue (+20 lines)
Lines 44-49 export default { Link Here
44
                resourceTableUrl:
44
                resourceTableUrl:
45
                    APIClient.sip2.httpClient._baseURL + "institutions",
45
                    APIClient.sip2.httpClient._baseURL + "institutions",
46
            },
46
            },
47
            beforeDoResourceDelete: resource =>
48
                beforeDoResourceDelete(resource),
47
            resourceAttrs: [
49
            resourceAttrs: [
48
                {
50
                {
49
                    name: "name",
51
                    name: "name",
Lines 154-159 export default { Link Here
154
            props: props,
156
            props: props,
155
        });
157
        });
156
158
159
        const beforeDoResourceDelete = async resource => {
160
            const accounts = await APIClient.sip2.accounts.getAll({
161
                sip_institution_id: resource.sip_institution_id,
162
            });
163
164
            if (accounts.length > 0) {
165
                baseResource.i18n.deleteConfirmationMessage = $__(
166
                    "You're removing institution %s. <br> It has %s associated accounts (%s), which will also be removed. Are you sure?"
167
                ).format(
168
                    resource.name,
169
                    accounts.length,
170
                    accounts.map(a => a.login_id).join(", ")
171
                );
172
            } else {
173
                baseResource.i18n.deleteConfirmationBody = null;
174
            }
175
        };
176
157
        const tableOptions = {
177
        const tableOptions = {
158
            url: () => baseResource.getResourceTableUrl(),
178
            url: () => baseResource.getResourceTableUrl(),
159
            table_settings: institutions_table_settings,
179
            table_settings: institutions_table_settings,
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/composables/base-resource.js (-34 / +51 lines)
Lines 238-278 export function useBaseResource(resourceConfig) { Link Here
238
     * @return {void}
238
     * @return {void}
239
     */
239
     */
240
    const doResourceDelete = (resource, callback) => {
240
    const doResourceDelete = (resource, callback) => {
241
        let resourceId = resource
241
        const runBeforeDelete = () => {
242
            ? resource[resourceConfig.idAttr]
242
            if (
243
            : resourceConfig.newResource[resourceConfig.idAttr];
243
                resourceConfig &&
244
        let resourceName = resource
244
                typeof resourceConfig.beforeDoResourceDelete === "function"
245
            ? resource[resourceConfig.nameAttr]
245
            ) {
246
            : resourceConfig.newResource[resourceConfig.nameAttr];
246
                const result = resourceConfig.beforeDoResourceDelete(resource);
247
247
                if (result && typeof result.then === "function") {
248
        setConfirmationDialog(
248
                    return result;
249
            {
249
                }
250
                title: i18n.deleteConfirmationMessage,
250
            }
251
                message: resourceName,
251
            return Promise.resolve();
252
                accept_label: $__("Yes, delete"),
252
        };
253
                cancel_label: $__("No, do not delete"),
253
254
            },
254
        runBeforeDelete().then(() => {
255
            () => {
255
            let resourceId = resource
256
                resourceConfig.apiClient.delete(resourceId).then(
256
                ? resource[resourceConfig.idAttr]
257
                    success => {
257
                : resourceConfig.newResource[resourceConfig.idAttr];
258
                        setMessage(
258
            let resourceName = resource
259
                            i18n.deleteSuccessMessage.format(resourceName),
259
                ? resource[resourceConfig.nameAttr]
260
                            true
260
                : resourceConfig.newResource[resourceConfig.nameAttr];
261
                        );
261
262
                        if (typeof callback === "function") {
262
            setConfirmationDialog(
263
                            callback();
263
                {
264
                        } else {
264
                    title: i18n.deleteConfirmationMessage,
265
                            if (resourceConfig.props.routeAction === "list") {
265
                    message: resourceName,
266
                                callback.ajax.reload();
266
                    accept_label: $__("Yes, delete"),
267
                    cancel_label: $__("No, do not delete"),
268
                },
269
                () => {
270
                    resourceConfig.apiClient.delete(resourceId).then(
271
                        success => {
272
                            setMessage(
273
                                i18n.deleteSuccessMessage.format(resourceName),
274
                                true
275
                            );
276
277
                            if (typeof after_delete_callback === "function") {
278
                                after_delete_callback();
267
                            } else {
279
                            } else {
268
                                goToResourceList();
280
                                if (
281
                                    resourceConfig.props.routeAction === "list"
282
                                ) {
283
                                    callback.ajax.reload();
284
                                } else {
285
                                    goToResourceList();
286
                                }
269
                            }
287
                            }
270
                        }
288
                        },
271
                    },
289
                        error => {}
272
                    error => {}
290
                    );
273
                );
291
                }
274
            }
292
            );
275
        );
293
        });
276
    };
294
    };
277
295
278
    /**
296
    /**
279
- 

Return to bug 41178