From 7cb9cedfe1335b00307145312edf73852c8a6444 Mon Sep 17 00:00:00 2001 From: thatmattlove Date: Fri, 3 Dec 2021 16:20:05 -0700 Subject: [PATCH] Fixes #7823: Properly handle return_url when Save & Continue button is present --- docs/release-notes/version-3.0.md | 1 + netbox/project-static/dist/netbox.js | Bin 322575 -> 322806 bytes netbox/project-static/dist/netbox.js.map | Bin 310863 -> 311094 bytes netbox/project-static/src/forms/elements.ts | 40 +++++++++++++++++- netbox/templates/dcim/interface_edit.html | 2 +- .../virtualization/vminterface_edit.html | 2 +- 6 files changed, 42 insertions(+), 3 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index b84f2a3c0..9be270999 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -5,6 +5,7 @@ ### Enhancements * [#7751](https://github.com/netbox-community/netbox/issues/7751) - Get API user from LDAP only when `FIND_GROUP_PERMS` is enabled +* [#7823](https://github.com/netbox-community/netbox/issues/7823) - Fix issue where `return_url` is not honored when 'Save & Continue' button is present * [#7885](https://github.com/netbox-community/netbox/issues/7885) - Linkify VLAN name in VLANs table * [#7892](https://github.com/netbox-community/netbox/issues/7892) - Add L22-30 power port & outlet types * [#7932](https://github.com/netbox-community/netbox/issues/7932) - Improve performance of the "quick find" function diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index b8567f0606eb5fb62dc8f125a33623f5466bf28c..c4a8e802d42c5888f200c459000fc7cbadd2e2b8 100644 GIT binary patch delta 5490 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 delta 5384 zcmai2d3Y36w*St(m0i|sBrzcgA#_U-5SX_N z$W=G^ABSu;KVTs&RF4J}1ljGpb1aBC{)9Oa-c!03W@}nsdnFU3|iFGA@dC0&~=v z!>eJox@-7{@UXgOL@t!5S4S*@9MwK@HO$bijr0MStNmASCWIB(`K%fvj7631SgA

Rsag^UCh&4%dvchNJoBCbM>nPhldJ8^F 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 diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index c2e1c5b4f3d06367327002e48c1995cdd2b4b000..b95e6ba02e8321339453db43dad5d8056abef060 100644 GIT binary patch delta 260 zcmX^AM`+tWp@tU57N#xCtB%&^C7L?vL^?X=I_tPPI#xRAI6FEUy6Ct&I{Jc$P>`sv zj=!UGi4%zL3E~IpggQD#>I8$Nfyy(S;mU)7(#|0uH6WIwzfPi~W1>#7qqDgagbx<< zc62Uq(s2Ztrt1k(>I*UxXnL@Yr=v5_JwT>6&`z)+&M6?B-a6rq-Vxi^9c3K9sVl_gyR>lK%0RmG + * Save & Continue + * + * ``` + * + * @param event Click event. + */ +function handleSubmitWithReturnUrl(event: MouseEvent): void { + const element = event.target as HTMLElement; + if (element.tagName === 'BUTTON') { + const button = element as HTMLButtonElement; + const action = button.getAttribute('return-url'); + const form = button.form; + if (form !== null && isTruthy(action)) { + form.action = action; + form.submit(); + } + } +} function handleFormSubmit(event: Event, form: HTMLFormElement): void { // Track the names of each invalid field. @@ -38,6 +66,15 @@ function handleFormSubmit(event: Event, form: HTMLFormElement): void { } } +/** + * Attach event listeners to form buttons with the `return-url` attribute present. + */ +function initReturnUrlSubmitButtons(): void { + for (const button of getElements('button[return-url]')) { + button.addEventListener('click', handleSubmitWithReturnUrl); + } +} + /** * Attach an event listener to each form's submitter (button[type=submit]). When called, the * callback checks the validity of each form field and adds the appropriate Bootstrap CSS class @@ -54,4 +91,5 @@ export function initFormElements(): void { submitter.addEventListener('click', (event: Event) => handleFormSubmit(event, form)); } } + initReturnUrlSubmitButtons(); } diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index 38b22fe5e..317b49a79 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -51,7 +51,7 @@ {% block buttons %} Cancel {% if obj.pk %} - + {% else %} diff --git a/netbox/templates/virtualization/vminterface_edit.html b/netbox/templates/virtualization/vminterface_edit.html index b4d097513..7e5b8599c 100644 --- a/netbox/templates/virtualization/vminterface_edit.html +++ b/netbox/templates/virtualization/vminterface_edit.html @@ -46,7 +46,7 @@ {% block buttons %} Cancel {% if obj.pk %} - + {% else %}