c3d2-web/content/static/script/membership.js
2020-09-27 15:31:43 +02:00

88 lines
4.0 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function escape(s) {
return s.toString()
.replace(/&/g, "&")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;");
}
$('.membership-form').each(function() {
var container = $(this);
container.html('<h3>Mitgliedschaftsformular</h3>' +
'<p><input type="checkbox" id="neumitglied"><label for="neumitglied"> Ich möchte Mitglied im Netzbiotop Dresden e.V. werden und habe die Satzung gelesen.</label></p>' +
'<p class="neumitglied indented"><input type="radio" id="ordentlich" name="art" value="ordentlich"><label for="ordentlich"> Ordentliche Mitgliedschaft</label></input></p>' +
'<p class="neumitglied indented"><input type="radio" id="foerder" name="art" value="foerder"><label for="foerder"> Fördermitgliedschaft</label></input></p>' +
'<p class="neumitglied indented"><input type="radio" id="reduziert" name="art" value="reduziert"><label for="reduziert"> Ermäßigte Mitgliedschaft</label></input></p>' +
'<p><input type="checkbox" id="update"><label for="update"> Ich möchte meine Mitgliedsdaten aktualisieren.</label></p>' +
'<p><input type="text" id="name"></p>' +
'<p class="desc"><label for="name">Name</label></p>' +
'<p><input type="text" id="email"></p>' +
'<p class="desc"><label for="email">E-Mail</label></p>' +
'<p><input type="text" id="pgp"></p>' +
'<p class="desc"><label for="pgp">PGP-Fingerprint (optional, erforderlich für verschlüsselte Komunikation)</label></p>' +
'<p><textarea rows="3" cols="40" id="note"></textarea>' +
'<p class="desc"><label for="note">Bemerkungen</label></p>' +
'<p><input type="text" id="date"></p>' +
'<p class="desc"><label for="date">Beitrittsdatum</label></p>' +
'<p style="margin: 2rem 0.5rem 1rem"><a href="#" download="antrag-netzbiotop.xml" id="ok">Antrag generieren</a> und dann an <a href="mailto:vorstand@c3d2.de?subject=Mitgliedschaftsantrag">vorstand@c3d2.de</a> senden, am besten signiert!</p>'
);
function getText(id) {
return container.find('#' + id).val();
}
function isChecked(id) {
return container.find('#' + id).prop('checked');
}
function generateXml() {
var xml =
'<member';
if (isChecked('neumitglied') && isChecked('foerder')) xml += ' type="Fördermitglied"';
xml += '>\n <name>' +
escape(getText('name')) +
'</name>\n <email>' +
escape(getText('email')) +
'</email>\n';
var pgp = getText('pgp');
if (pgp) xml += ' <pgp-fpr>' + escape(getText('pgp')) + '</pgp-fpr>\n';
if (isChecked('neumitglied')) {
var rate = isChecked('ordentlich') ? 42 :
isChecked('reduziert') ? 13.37 : 0;
xml += ' <term rate="' + rate + '" start="' + getText('date') + '"/>\n';
}
var note = getText('note');
if (note) xml += ' <note>' + escape(note) + '</note>\n';
var dtg = getText('date');
if (dtg) xml += ' <date>' + escape(date) + '</date>\n';
xml +=
'</member>';
// console.log('xml: ' + xml);
return xml;
}
function update() {
if (isChecked('neumitglied')) {
container.find('.neumitglied').show();
} else {
container.find('.neumitglied').hide();
}
if (!getText('date')) {
var d = new Date();
d.setHours(23);
d.setDate(1);
var s = d.toISOString().replace(/T.+/, "");
container.find('#date').val(s);
}
var xmlUri = 'data:application/xml;charset=utf-8,' + encodeURIComponent(generateXml());
container.find('#ok').attr('href', xmlUri);
}
container.find('input').on('change', update);
container.find('textarea').on('change', update);
update();
});