Upload via GUI (30 Dateien)

This commit is contained in:
2026-11-01 11:17:41 +00:00
parent 53f8bf0577
commit c3b9948fa2
30 changed files with 5237 additions and 0 deletions
@@ -0,0 +1,62 @@
/* DeskHub Tickets: schaltet bei einer Themenauswahl die passenden Felder und Texte des Kundenformulars ein.
* Ohne JavaScript bleibt alles sichtbar; der Server prüft beim Absenden ohnehin nur die Felder des gewählten Themas. */
(function () {
'use strict';
function setText(form, selector, text) {
form.querySelectorAll(selector).forEach(function (el) { el.textContent = text; });
}
function init(form) {
var forms;
try { forms = JSON.parse(form.getAttribute('data-dht-forms') || '{}'); } catch (e) { return; }
var select = form.querySelector('select[name="dht_topic"]');
form.classList.add('dht-js');
function apply() {
var id = select ? select.value : Object.keys(forms)[0];
var f = forms[id];
// Felder: nur die des gewählten Themas sind sichtbar und werden abgeschickt
form.querySelectorAll('.dht-topic-fields').forEach(function (box) {
var on = box.getAttribute('data-topic') === String(id);
box.classList.toggle('dht-topic-active', on);
box.querySelectorAll('input, select, textarea').forEach(function (el) { el.disabled = !on; });
});
if (!f) { return; }
// Texte des gewählten Formulars
var title = form.parentNode.querySelector('.dht-form-title');
if (title && !title.hasAttribute('data-fixed')) { title.textContent = f.title; title.hidden = !f.title; }
var intro = form.parentNode.querySelector('.dht-form-intro');
if (intro) { intro.textContent = f.intro; intro.hidden = !f.intro; }
setText(form, '.dht-subject-label', f.subjectLabel);
setText(form, '.dht-message-label', f.messageLabel);
var subject = form.querySelector('.dht-subject-wrap');
if (subject) {
subject.hidden = !f.subjectShow;
var si = subject.querySelector('input'); if (si) { si.disabled = !f.subjectShow; si.required = !!f.subjectShow; }
}
var message = form.querySelector('.dht-message-wrap');
if (message) {
message.hidden = !f.messageShow;
var mi = message.querySelector('textarea');
if (mi) { mi.disabled = !f.messageShow; mi.required = !!f.messageShow; mi.placeholder = f.messageHint || ''; }
}
var submit = form.querySelector('.dht-submit');
if (submit && f.submitLabel) { submit.textContent = f.submitLabel; }
}
if (select) { select.addEventListener('change', apply); }
apply();
// Doppeltes Absenden verhindern
form.addEventListener('submit', function () {
var btn = form.querySelector('.dht-submit');
if (btn) { btn.disabled = true; }
});
}
function ready() { document.querySelectorAll('form.dht-form[data-dht-forms]').forEach(init); }
if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', ready); } else { ready(); }
})();