diff options
| author | Thomas Hackl <hackl@data-quest.de> | 2025-11-12 16:15:28 +0100 |
|---|---|---|
| committer | Thomas Hackl <hackl@data-quest.de> | 2025-11-12 16:15:28 +0100 |
| commit | e87a936b75f42c319431a781d7eaa42a6f85d066 (patch) | |
| tree | 8185a14e0d63a1900a7915a7f97301d8c4e845d3 | |
| parent | 34648ed554dd7c21a198fd2675ef4d8e037a93f1 (diff) | |
working solution for Vue in production mode
| -rw-r--r-- | resources/assets/javascripts/bootstrap/forms.js | 10 | ||||
| -rw-r--r-- | resources/assets/javascripts/lib/massmail.js | 12 |
2 files changed, 20 insertions, 2 deletions
diff --git a/resources/assets/javascripts/bootstrap/forms.js b/resources/assets/javascripts/bootstrap/forms.js index d22b15a..361bb38 100644 --- a/resources/assets/javascripts/bootstrap/forms.js +++ b/resources/assets/javascripts/bootstrap/forms.js @@ -245,6 +245,9 @@ function createSelect2(element) { .on('click', (e) => e.preventDefault()); } +export const FormBridge = []; +window.STUDIP.FormAPI = FormBridge; + STUDIP.ready(function () { let forms = window.document.querySelectorAll('.studipform:not(.vueified)'); if (forms.length > 0) { @@ -430,7 +433,12 @@ STUDIP.ready(function () { } } }); - app.mount(f); + const vm = app.mount(f); + FormBridge.push( + { + getValues: () => vm.getFormValues() + } + ); }); }); } diff --git a/resources/assets/javascripts/lib/massmail.js b/resources/assets/javascripts/lib/massmail.js index 2c6799a..2243043 100644 --- a/resources/assets/javascripts/lib/massmail.js +++ b/resources/assets/javascripts/lib/massmail.js @@ -1,10 +1,16 @@ import axios from 'axios'; +import {$gettext} from './gettext'; const MassMail = { exportRecipients: (evt) => { evt.preventDefault(); - const values = evt.target.closest('div.studipform.vueified').__vue_app__._instance.proxy.getFormValues(); + const button = evt.target; + button.disabled = true; + const text = button.innerText; + button.innerText = $gettext('Exportiere...'); + + const values = window.STUDIP.FormAPI[0].getValues(); const formData = new FormData(); Object.keys(values).forEach(i => { @@ -17,8 +23,12 @@ const MassMail = { STUDIP.URLHelper.getURL('dispatch.php/massmail/message/export'), formData ).then(response => { + button.disabled = false; + button.innerText = text; window.location.href = response.data; }).catch(error => { + button.disabled = false; + button.innerText = text; STUDIP.Report.error(error.message); }); } |
