aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Hackl <hackl@data-quest.de>2025-11-12 16:15:28 +0100
committerThomas Hackl <hackl@data-quest.de>2025-11-12 16:15:28 +0100
commite87a936b75f42c319431a781d7eaa42a6f85d066 (patch)
tree8185a14e0d63a1900a7915a7f97301d8c4e845d3
parent34648ed554dd7c21a198fd2675ef4d8e037a93f1 (diff)
working solution for Vue in production mode
-rw-r--r--resources/assets/javascripts/bootstrap/forms.js10
-rw-r--r--resources/assets/javascripts/lib/massmail.js12
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);
});
}