Upload via GUI (30 Dateien)
This commit is contained in:
@@ -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(); }
|
||||
})();
|
||||
Reference in New Issue
Block a user