Compare commits

..

1 Commits

Author SHA1 Message Date
Tobias Herre 4a87ecf539 Display currency in table rows 2020-09-22 14:01:41 +00:00
14 changed files with 380 additions and 779 deletions

View File

@ -317,7 +317,7 @@
<input class="screen" type="radio" id="noneu" name="bank" value="Non-EU"><label class="screen radio" for="noneu" lang="de">Non-EU-Banküberweisung</label><label class="screen radio" for="noneu" lang="en">Non EU bank transfer</label>
<input class="screen" type="radio" id="paypal" name="bank" value="PayPal"><label class="screen radio" for="paypal">PayPal</label>
<input class="screen" type="radio" id="bar" name="bank" value="Bar"><label class="screen radio" for="bar" lang="de">Bargeld</label><label class="screen radio" for="bar" lang="en">Cash</label>
<label class="EU nonEU" for="owner" lang="de">Kontoinhabende Person</label><label class="EU nonEU" for="owner" lang="en">Bank account owner</label><input class="EU nonEU" type="input" size="32" id="ownerDe" name="Owner" placeholder="wenn abweichend vom Realnamen" lang="de" /><input class="EU nonEU" type="input" size="32" id="ownerEn" name="Owner" placeholder="if different from full legal name" lang="en" />
<label class="EU nonEU" for="owner" lang="de">Kontoinhaber</label><label class="EU nonEU" for="owner" lang="en">Bank account owner</label><input class="EU nonEU" type="input" size="32" id="ownerDe" name="Owner" placeholder="wenn abweichend vom Realnamen" lang="de" /><input class="EU nonEU" type="input" size="32" id="ownerEn" name="Owner" placeholder="if different from full legal name" lang="en" />
<label class="EU nonEU" for="iban" lang="de">IBAN</label><label class="EU nonEU" for="iban" lang="en">Bank account number</label><input class="EU nonEU" type="input" size="32" id="iban" name="IBAN" placeholder="DE0123…" />
<label class="EU nonEU" for="bic">BIC / SWIFT</label><input class="EU nonEU" type="input" size="32" id="bic" name="BIC" placeholder="LBMU…" />
<label class="EU nonEU" for="bank" lang="de">Name der Bank</label><label class="EU nonEU" for="bank" lang="en">Name of bank</label><input class="EU nonEU" type="input" size="32" id="bank" name="Bankname" placeholder="Banky McBankface" />
@ -336,7 +336,8 @@ Land"></textarea>
<label class="nonEU" for="address" lang="de">Deine Anschrift</label><textarea lang="de" class="nonEU" id="address" style="resize:both;" cols="32" rows="4" placeholder="Straße und Hausnummer
Postleitzahl und Ort
Land"></textarea>
<label class="EU nonEU" for="comments" lang="de">Weitere Anmerkungen</label><textarea lang="de" class="EU nonEU" id="comments" style="resize:both;" cols="32" rows="4" placeholder="z. B. intermdiäre Bank, Grund für abweichende kontoinhabende Person, Routing-Nummer (für Nicht-EU-Überweisungen)"></textarea>
<label class="EU nonEU" for="comments" lang="de">Weitere Anmerkungen</label><textarea lang="de" class="EU nonEU" id="comments" style="resize:both;" cols="32" rows="4" placeholder="z.B. intermdiäre Bank,
Grund für abweichende Kontoinhaberin"></textarea>
<label class="paypal" for="accountnumber">PayPal account</label><input class="paypal" type="input" size="32" id="paypal" placeholder="paypal@example.com" />
</fieldset>

View File

@ -10,7 +10,6 @@ Install the following programs and PHP modules:
* php-openssl
* php-ctype
* php-filter
* php-fileinfo
Copy **config.sample.php** to **config.php**, and edit **config.php** to your needs.

View File

@ -6,6 +6,6 @@ if (!isset($_POST['id']))
unset( $_SESSION['files'][$_POST['id']] );
#error_log("Delete Document $_POST[id]");
error_log("Delete Document $_POST[id]");

15
h1.php
View File

@ -1,14 +1,17 @@
1. Bitte gib zunächst bei <b>Projekt/Zweck der Reise</b> den Namen des von
Wikimedia Deutschland geförderten Projektes/Veranstaltung an, in dessen Rahmen
die Kosten entstanden sind. Bitte rechne die Kosten für jede Förderung einzeln ab!
die Kosten entstanden sind. Bitte rechne die Kosten für jedes geförderte
Projekt/jede Veranstaltung einzeln ab!
<br><br>
2. Befülle das Feld <strong>Deine Ansprechperson bei Wikimedia</strong> mit deiner Kontaktperson
(Beispiel: „Sandro Halank/Ideenförderung“). Damit erleichterst du uns die Zuordnung.
<br><br>
3. Bitte gib stets vollständig deine für die Kostenerstattung relevanten Daten in den entsprechendenan.
Die Kontaktdaten benötigen wir für eventuelle Rückfragen. Die Auszahlungsdaten helfen uns,
die Erstattung korrekt durchzuführen. Sollte das Geld auf ein Konto erstattet werden,
welches nicht dir gehört, so gib hierfür eine Begründung an; diese ist für unsere Buchhaltung essentiell.
3. Bitte gib jedes mal vollständig deine für die Kostenerstattung relevanten Daten in den
Abschnitten Deine Kontaktdaten sowie Auszahlungsweg an. Die Kontaktdaten benötigen wir für
eventuelle Rückfragen. Die Auszahlungsdaten helfen uns, die Erstattung korrekt durchzuführen.
Sollte das Geld auf ein Konto erstattet werden, welches nicht dir gehört, so gib hierfür eine Begründung an;
diese ist für unsere Buchhaltung essentiell.
<br><br>
4. Die E-Mail-Adresse und die IBAN werden automatisch auf ein korrektes Format geprüft.
Gegebenenfalls wird eine Fehlermeldung angezeigt, wenn diese unvollständig oder fehlerhaft sind.
Gegebenenfalls wird eine Fehlermeldung angezeigt, wenn diese unvollständig oder fehlerhaft sind.

53
h2.php
View File

@ -1,43 +1,12 @@
<b>Bitte rechne jedes geförderte Projekt bzw. Veranstaltung einzeln ab!</b><br />
Wichtige Hinweise:
- Bitte verwende im Betragsfeld lediglich das Komma zur Trennung zwischen Währung und Dezimalstellen (Beispiel: 1200,00) ohne Währungssymbol.<br>
- Das Formular berechnet selbstständig die Gesamtsumme (nach einem weiteren Klick auf „Ausgabe hinzufügen“).
Die Abrechnung von <a href="https://de.wikipedia.org/wiki/Wikipedia:Wikimedia_Deutschland/FAQ_und_Hilfe_zur_Förderung#Verpflegung">Verpflegungsmehraufwand</a> erfolgt mittels Beleg, den du über dieses
<a href="https://www.wikimedia.de/extern/verpflegungsmehraufwand.html">Formular</a> erzeugen kannst. Bitte gib ihn in der entsprechenden eigenen Zeile (Pos.) als Ausgabenbeleg dazu an.<br>
- Durch die Software wird ein zusammengefügtes PDF aus Antrag und Anhängen erzeugt.<br>
- Nur wenn du für jede Position einen Beleg/Dokument angegeben hast, kannst du den Antrag auf Kostenerstattung direkt an das Team Ideenförderung senden. Andernfalls steht dir die Möglichkeit zur Verfügung, den Antrag herunterzuladen, später selbst weiter zu bearbeiten und an das Team Ideenförderung zu senden.<br>
<br>
Sollten Fehler oder Fragen auftreten, wende dich gern an community@wikimedia.de.
1.Bitte gib zunächst im Feld <b>Währung</b> die Währung an, in der die Erstattung stattfinden soll.
Die ausgewählte Währung gilt für den gesamten Antrag auf Kostenerstattung.
Wir bitten dich, vorzugsweise Euro zu verwenden.
<br />
2. Bitte trage pro Zeile (Pos.) eine Ausgabe mit entsprechender Beschreibung ein und
füge einen Beleg als .pdf, .jpg, .png durch Klick auf das entsprechende Feld hinzu.
Fehlerhaft hochgeladene Dateien können mittels Klick auf das <b>x</b> entfernt werden.
Aus der Beschreibung sollte klar werden, ob es sich um Reise-/Transportkosten, Dienstleistung, Materialien,
Verpflegung usw. handelt. Bitte gib jeweils ein Belegdatum an.
<br />
3. Solltest du eine Ausgabe in einer Fremdwährung getätigt haben, so füge für die jeweilige Umrechnung
einen entsprechenden Umrechnungsbeleg zusätzlich an. Dieser ist für jede Position notwendig. Akzeptiert
werden folgende Umrechnungsbelege: Kartenabrechnungen (Kreditkarte oder EC-Karte), Bargeldtausch-Quittung,
<a href="https://sdw.ecb.europa.eu/curConverter.do">Währungsumrechner der Europäischen Zentralbank</a>.
Sollte die Währung nicht im Währungsumrechner der Europäischen Zentralbank vorhanden sein und auch kein
anderweitiger Umrechnungsbeleg vorliegen, so ist
<a href="https://www1.oanda.com/lang/de/currency/converter/">Oanda</a> verwendbar.
<br />
4. Solltest du einen Vorschuss von Wikimedia Deutschland für dieses Projekt/die Veranstaltung erhalten
haben, gib die Höhe dieses unter „3. Vorschuss und Sonstiges“ an.
<br />
5. Bitte bestätige die <b>Vollständig- und Richtigkeit</b> der Angaben mit einem Klick auf das Kästchen.
<br />
6. Klicke abschließend auf „Antrag elektronisch direkt an WMDE schicken“ zur direkten Weiterleitung an
Wikimedia Deutschland oder „Antrag herunterladen und später einreichen”, wenn du noch Änderungen vornehmen
möchtest.
<br /><br />
Wichtige Hinweise:<br />
Das Formular berechnet selbstständig die Gesamtsumme.
<br />
Die Abrechnung von <a href="https://de.wikipedia.org/wiki/Wikipedia:Wikimedia_Deutschland/FAQ_und_Hilfe_zur_Förderung#Verpflegung">Verpflegungsmehraufwand</a>
erfolgt mittels Beleg, den du über dieses <a href="https://www.wikimedia.de/extern/verpflegungsmehraufwand.html">Formular</a>
erzeugen kannst. Bitte gib ihn in der entsprechenden eigenen Zeile (Pos.) als Ausgabenbeleg dazu an.
<br />
Durch die Software wird ein zusammengefügtes PDF aus Antrag und Anhängen erzeugt.
<br />
Nur wenn du für jede Position einen Beleg/Dokument angegeben hast, kannst du den Antrag auf Kostenerstattung
direkt an Wikimedia Deutschland (WMDE) senden. Andernfalls steht dir die Möglichkeit zur Verfügung, den Antrag herunterzuladen,
später selbst weiter zu bearbeiten und an das Team Ideenförderung zu senden.<br>
<br />
Sollten Fehler oder Fragen auftreten, wende dich gern an <a href="mailto:community@wikimedia.de">community@wikimedia.de</a>.

220
ka.php
View File

@ -1,32 +1,7 @@
<!doctype html>
<?php
$lang=$_GET['lang'];
if ( in_array ($lang, array('en_US'))){
$loc = "$lang".".utf8";
$loc1 = $lang;
}
else
$loc = "de_DE";
$domain = "messages";
setlocale(LC_MESSAGES, $loc);
setlocale(LC_ALL, $loc);
$results = putenv("LC_ALL=$loc");
$results = putenv("LC_MESSAGES=$loc");
$results = bindtextdomain($domain,"./locale");
?>
<html >
<head>
<title>Kostenerstattungsformular</title>
<title>Kostenerstattungsforumlar</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
@ -44,12 +19,12 @@
<img alt="wikimedia logo" src="Wikimedia_Deutschland-Logo.svg"/>
</div>
<div class="main-content">
<h1>
<?php echo _( "Antrag auf Kostenerstattung")?>
</h1>
<p>
<?php echo _("Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines Projektes entstanden sind?")?><BR>
<?php echo _("Bitte fülle dieses Formular aus. Pflichtfelder sind mit einem * gekennzeichnet.")?>
<h1>Antrag auf Kostenerstattung</h1>
<p>Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines
Projektes entstanden sind?<BR>
Bitte fülle dieses Formular aus.
Pflichtfelder sind mit einem * gekennzeichnet.
</p>
<form data-kube="kaform" name="theform" id="theform" action="submit.php" method="POST">
@ -57,24 +32,35 @@
<div class="is-row">
<div class="is-col is-70">
<fieldset>
<legend><?php echo _("1. Erfasse deine Stammdaten")?></legend>
<legend>1. Erfasse deine Stammdaten</legend>
<div class="is-row">
<div class="is-col">
<input required type="input"
size="32" id="projectid" name="project"
placeholder="<?php echo _("Projekt/Zweck der Reise*")?>" />
placeholder="Projekt/Zweck der Reise*" />
</div>
</div>
<br>
<!-- <div class="is-row">
<div class="is-col">
<input required type="input"
size="32" id="nickname" name="nickname"
placeholder="Nickname*" />
</div>
<div class="is-col">
<input required type="input"
size="32" id="projectid" name="project"
placeholder="Projekt-ID*" />
</div>
</div>
--> <br>
<div class="is-row">
<div class="is-col">
<input required type="input" size="32"
` id="realname" name="realname" placeholder="<?php echo _("Dein Realname (Vorname Nachname)*")?>" />
` id="realname" name="realname" placeholder="Dein Realname (Vorname Nachname)*" />
</div>
<div class="is-col">
<input type="input" size="32"
` id="wmdecontact" name="wmdecontact"
placeholder="<?= _("Deine Ansprechperson bei Wikimedia")?>" />
` id="wmdecontact" name="wmdecontact" placeholder="Deine Ansprechperson bei Wikimedia" />
</div>
</div>
<br>
@ -84,7 +70,7 @@
<div class="is-col">
<input type="tel" size="32"
id="phone" name="phone"
placeholder="<?= _("Deine Telefonnummer")?>" />
placeholder="Deine Telefonnummer" />
</div>
<div class="is-col">
</div>
@ -95,7 +81,7 @@
<div class="is-row">
<div class="is-col">
<input required type="email" size="32" id="email"
name="email" placeholder="<?= _("Deine E-Mail-Adresse*")?>" />
name="email" placeholder="Deine E-Mail-Adresse*" />
</div>
<div class="is-col">
</div>
@ -106,8 +92,8 @@
<div class="is-col">
<nav class="tabs" data-kube="tabs" data-equal="false">
<a href="#bank-eu" class="is-active"><?=_("Banküberweisung")?></a>
<a href="#bank-noneu"><?=_("Banküberweisung (Non-EU)")?></a>
<a href="#bank-eu" class="is-active">Banküberweisung</a>
<a href="#bank-noneu">Banküberweisung (Non-EU)</a>
<!-- <a href="#bank-paypal">PayPal</a>
<a href="#bank-bar">Barauszahlung</a>
--> </nav>
@ -115,7 +101,7 @@
<section id="bank-eu">
<div class="is-row">
<div class="is-col">
<input type="input" size="32" name="Owner" placeholder="<?=_("Kontoinhabende Person")?>" />
<input type="input" size="32" name="Owner" placeholder="Kontoinhabende Person" />
</div>
<div class="is-col">
</div>
@ -124,20 +110,20 @@
<div class="is-row">
<div class="is-col">
<input type="input" size="32" id="iban" name="iban" placeholder="<?=_("IBAN*")?>" />
<input type="input" size="32" id="iban" name="iban" placeholder="IBAN*" />
</div>
<div class="is-col">
<input type="input" size="32" id="bic" name="bic" placeholder="<?=_("BIC (wenn ausländische Bank)")?>" />
<input type="input" size="32" id="bic" name="bic" placeholder="BIC (wenn ausländische Bank)" />
</div>
</div>
<br>
<!-- <input type="input" size="32" id="purpose" name="purpose" placeholder="Verwendungszweck" /> -->
<textarea id="comments" name="comments"
style="resize:both;" cols="32" rows="4"
placeholder="<?=_("Weitere Anmerkungen z.B. intermediäre Bank, Grund für abweichende Kontoinhbende Person")?>">
</textarea >
style="resize:both;" cols="32" rows="4" placeholder="Weitere Anmerkungen
z.B. intermediäre Bank,
Grund für abweichende Kontoinhbende Person"></textarea>
@ -148,7 +134,7 @@
<section id="bank-noneu">
<div class="is-row">
<div class="is-col">
<input type="input" size="32" name="Owner" placeholder="<?=_("Kontoinhabende Person")?>" />
<input type="input" size="32" name="Owner" placeholder="Kontoinhabende Person" />
</div>
<div class="is-col">
</div>
@ -157,33 +143,31 @@
<div class="is-row">
<div class="is-col">
<input type="input" size="32" id="n_iban" name="n_iban" placeholder="<?=_("Kontonummer*")?>" />
<input type="input" size="32" id="n_iban" name="n_iban" placeholder="Kontonummer*" />
</div>
<div class="is-col">
<input type="input" size="32" id="n_bic" name="n_bic" placeholder="<?=_("BIC/SWIFT*")?>" />
<input type="input" size="32" id="n_bic" name="n_bic" placeholder="BIC/SWIFT*" />
</div>
</div>
<br>
<input class="EU nonEU" type="input" size="32" id="n_bank" name="n_bankname" placeholder="<?="Name der Bank*"?>" />
<input class="EU nonEU" type="input" size="32" id="n_bank" name="n_bankname" placeholder="Name der Bank*" />
<br>
<textarea class="nonEU" name="n_bankaddress" id="n_bankaddress" style="resize:both;" cols="32" rows="4"
placeholder="<?=_("Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)")?>"></textarea>
<textarea class="nonEU" name="n_bankaddress" id="n_bankaddress" style="resize:both;" cols="32" rows="4" placeholder="Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)"></textarea>
<br>
<textarea name="n_address" lang="de" class="nonEU" id="n_address" style="resize:both;" cols="32" rows="4"
placeholder="<?=_("Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)")?>">
</textarea>
<textarea name="n_address" lang="de" class="nonEU" id="n_address" style="resize:both;" cols="32" rows="4" placeholder="Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)
"></textarea>
<br>
<!-- <input type="input" size="32" id="n_purpose" name="n_purpose" placeholder="Verwendungszweck" /> -->
<textarea id="n_comments" name="n_comments"
style="resize:both;" cols="32" rows="4"
placeholder="<?=_("Weitere Anmerkungen z.B. intermediäre Bank,Grund für abweichende kontoinhabende Person")?>">
</textarea>
style="resize:both;" cols="32" rows="4" placeholder="Weitere Anmerkungen
z.B. intermediäre Bank,
Grund für abweichende kontoinhabende Person"></textarea>
@ -205,14 +189,8 @@
</fieldset>
</div>
<div class="is-col ">
<?php
$ct = @file_get_contents( "./locale/$loc1/h1.php");
if ($ct==false)
$ct = file_get_contents( "h1.php");
echo $ct;
?>
<div class="is-col ">
<?php include "h1.php"; ?>
</div>
</div> <!-- is row -->
@ -221,46 +199,74 @@
<div class="is-row">
<div class="is-col is-70">
<fieldset id="fieldset2">
<legend><?=_("2. Erfasse deine Ausgaben")?></legend>
<div class="is-col is-70">
<?=_("Währung:")?>
</div>
<div class="is-col is-20">
<select onchange="renumberTableRows()" id="currency" >
<option value="EUR">EUR</option>
<option value="USD">USD</option>
<option value="CHF">CHF</option>
<option value="XBT">XBT</option>
</select>`
</div>
<legend>2. Erfasse deine Ausgaben</legend>
<div class="is-row">
<div class="is-col is-70">
<div class="is-row">
<div class="is-col is-60">
<input id="a_date" type="date" name="a_date" placeholder="Datum*"/>
<!-- <input id="a_type" type="text" name="type" placeholder="Auslagenart*"/> -->
</div>
<div class="is-col is-40">
</div>
</div>
<br>
<input id="a_description" type="text" name="description" placeholder="Beschreibung*"/>
<br>
<div class="is-row">
<div class="is-col">
<input id="a_amount" type="text" name="amount" placeholder="Betrag*"/>
</div>
<div class="is-col">
<select id="a_currency" name="currency" >
<option value="EUR">EUR</option>
<option value="USD">USD</option>
<option value="CHF">CHF</option>
<option value="XBT">XBT</option>
</select>
<!-- <input id="a_currency" type="text" name="curreny" placeholder="Waehrung*"/> -->
</div>
<div class="is-col">
<button type="button" onclick="addTableRow();"
class="button is-green">Ausgabe hinzuf&uuml;gen</button>
</div>
</div>
</div>
<div class="is-col is-30">
<div id="uploadfield" class="form-item">
</div>
</div>
</div>
<br>
<table id="tabtab" class="is-bordered is-striped">
<thead>
<tr>
<th><?=_("Pos.")?></th>
<th><?=_("Datum")?></th>
<th><?=_("Beschreibung")?></th>
<th><?=_("Betrag")?></th>
<th><?=_("Währung")?></th>
<th><?=_("Belege")?></th>
<th><?=_("L&ouml;schen")?></th>
<!-- <th>Auslagenart</th>-->
<th>Pos.</th>
<th>Datum</th>
<th>Beschreibung</th>
<th>Betrag</th>
<th>Belege</th>
<th>L&ouml;schen</th>
</tr>
</thead>
<tbody id="tabbody">
</tbody>
</table>
<div class="is-col">
<button id="add_issue" type="button" onclick="addRow();"
class="button is-green"><?=_("Ausgabe hinzuf&uuml;gen")?></button>
</div>
</fieldset>
<br>
<fieldset>
<legend><?=_("3. Vorschuss und Sonstiges")?></legend>
<legend>3. Vorschuss und Sonstiges</legend>
<div class="is-row">
<div class="is-col valign="center"">
<?=_("Ich habe bereits einen Vorschuss erhalten in H&ouml;he von:")?>
Ich habe bereits einen Vorschuss erhalten in
H&ouml;he von:
</div>
<div class="is-col">
<input input name="advance" id="advance" type="text" placeholder="0,00 EUR"/>
@ -270,31 +276,29 @@
<div class="is-row">
<div class="is-col valign="center"">
<?=_("Hiermit bestätige ich die Vollständig- und Richtigkeit meiner Angaben:")?>*
Ich versichere, dass ich alle Angaben
nach bestem Wissen und Gewissen gemacht habe:
</div>
<div class="is-col">
<input id="agree" type="checkbox" />
</div>
</div>
</fieldset>
<button type="button" onclick="downloadDocument(true);"
class="button is-green"><?=_("Antrag elektronisch direkt an WMDE schicken")?></button>
<button type="button" onclick="downloadDocument(false);"
class="button is-orange"><?=_("Antrag herunterladen und später einreichen")?></button>
</div>
</div>
<div class="is-col">
<?php
$ct = @file_get_contents( "./locale/$loc1/h2.php");
if ($ct==false)
$ct = file_get_contents( "h2.php");
echo $ct;
?>
<?php include "h2.php"; ?>
</div>
</div>
<button type="button" onclick="downloadDocument(true);"
class="button is-green">Antrag elektronisch direkt an WMDE schicken</button>
<button type="button" onclick="downloadDocument(false);"
class="button is-orange">Antrag herunterladen und später einreichen</button>
</div>
</div>
<input type="hidden" id="banktype" name="banktype"/>

305
kaform.js
View File

@ -3,60 +3,19 @@ var currentRowId=1;
var banktype = "bank-eu";
function renumberTableRows(){
var cur = document.getElementById("currency").value;
var row_no=1;
var table = document.getElementById("tabbody");
for (var i = 0, row; row = table.rows[i]; i++) {
row.cells[0].innerHTML=row_no++;
row.cells[4].innerHTML=cur;
}
return i;
}
function checkAllRows(){
var row_no=1;
var table = document.getElementById("tabbody");
for (var i = 0, row; row = table.rows[i]; i++) {
// row.cells[0].innerHTML=row_no++;
//
var f=1
var v =row.cells[f].firstElementChild.value;
if ( !v ){ // Datum
row.cells[f].firstElementChild.focus();
showAlert("Bitte gib ein g&uuml;ltiges Datum an!");
return false;
}
f=2;
v =row.cells[f].firstElementChild.value;
if ( !v ){ // Datum
row.cells[f].firstElementChild.focus();
showAlert("Bitte gib ein Beschreibung ein!");
return false;
}
f=3;
v =row.cells[f].firstElementChild.value;
if ( !isFloat(v) ){ // Amount
row.cells[f].firstElementChild.focus();
showAlert("Bitte gib einen g&uuml;ltigen Betrag ein!");
return false;
}
}
return true;
}
function isMailable(){
var row_no=1;
var table = document.getElementById("tabbody");
for (var i = 0, row; row = table.rows[i]; i++) {
pdfs = row.cells[5].querySelector('input[name="file-count"]').value;
var pdfs = row.cells[4].innerHTML;
if (pdfs==0)
return false;
}
@ -64,7 +23,6 @@ function isMailable(){
}
function isFloat(val) {
var floatRegex = /^-?\d+(?:[.,]\d*?)?$/;
if (!floatRegex.test(val))
@ -77,9 +35,23 @@ function isFloat(val) {
}
/**
* grey-out currency iselection if there is at least one document is atatched.
*/
function disableCurrency()
{
if (countRows()>0){
document.getElementById("a_currency").disabled=true;
}
else {
document.getElementById("a_currency").disabled=false;
}
}
function deleteTableRow(rowId){
var target = document.getElementById("upload-target"+rowId);
// this.message = app.message;
// var children = target.children;
@ -103,116 +75,182 @@ function deleteTableRow(rowId){
var element = document.getElementById("trow"+rowId);
element.parentNode.removeChild(element);
disableCurrency();
renumberTableRows();
// alert(rowId);
}
function countRows(){
return renumberTableRows();
var ctr=0;
for (i=0; i<currentRowId; i++){
var element = document.getElementById("trow"+i);
if (element)
ctr++
}
return ctr;
}
function showAlert(text) {
$K.app.message.show( { message: `${text}`, position: 'centered', type: 'is-error' });
return;
}
function setTableRow(id)
function reset2()
{
var $node = $K.dom('#tabbody');
var element = document.createElement('tr');
element.setAttribute("id", "trow"+id);
// document.getElementById("a_type").value="";
document.getElementById("a_description").value="";
document.getElementById("a_amount").value="";
setUploadField();
var e
e = `<td>${a_date}
}
function addTableRow(){
var $node = $K.dom('#tabbody');
// create a new table row with id
var element = document.createElement('tr');
element.setAttribute("id", "trow"+currentRowId);
/* var a_type = document.getElementById("a_type").value;
if (!a_type.trim().length ) {
document.getElementById("a_type").focus();
showAlert("Bitte gib eine Auslagenart an!");
return;
}
*/
var a_date = document.getElementById("a_date").value;
if (!a_date.trim().length){
document.getElementById("a_date").focus();
showAlert("Bitte gib ein g&uuml;ltiges Datum an!");
return;
}
var a_description = document.getElementById("a_description").value;
if (!a_description.trim().length){
document.getElementById("a_description").focus();
showAlert("Bitte gib eine Beschreibung ein!");
return;
}
var a_amount = document.getElementById("a_amount").value;
if (!isFloat(a_amount)){
document.getElementById("a_amount").focus();
showAlert("Bitte gib einen g&uuml;ltigen Betrag ein!");
return;
}
a_amount = parseFloat(a_amount).toFixed(2);
var a_currency = document.getElementById("a_currency").value;
/* if (!a_currency.trim().length){
document.getElementById("a_currency").focus();
showAlert("Bitte gib eine W&auml;hrung an!");
return;
}
*/
var target = document.getElementById("upload-target"+currentRowId);
var children = target.children;
if (!children.length){
// showAlert("Bitte lade mindestens einen Beleg hoch!");
// return;
}
/* a_type = "Hello";*/
var e="<td></td>";
// add column for position no
// e += `<td>${a_type}
// <input type="hidden" name="type[${currentRowId}]" value="${a_type}" /></td>`;
// add coluemn for a_type (Auslagenart)
// e += `<td><textarea name="desc[${nextRowId}]" rows="2"></textarea> </td>`;
e += `<td>${a_date}
<input type="hidden" name="date[${currentRowId}]" value="${a_date}" /></td>`;
// add column for date
// e += `<td><input name="date[${nextRowId}]" type="date"/></td>`;
e += `<td>${a_description}
<input type="hidden" name="description[${currentRowId}]" value="${a_description}" /></td>`;
// add column for num
e += `<td>${a_amount} ${a_currency}
<input type="hidden" name="amount[${currentRowId}]" value="${a_amount}" /></td>`;
// add column for file upload
/* e+= `
<td data-kube="">
<div class="form-item">
<div class="upload"
data-kube="upload"
data-type="file" data-multiple="true"
data-target="#upload-target${nextRowId}"
data-url="upload.php?row=${nextRowId}" data-url-remove="delete.php"
data-progress="true">
</div>
<div id="upload-target${nextRowId}" class="upload-target"></div>
</div>
</td>
*/
var ulfiles = children.length;
e += `<td>${ulfiles}</td>`;
// `;
// add delete bnutton
e +=
`<td><span
onclick="deleteTableRow(${currentRowId})"
class="close is-large">
</span></td>`;
$node.append(element);
element.innerHTML=(e);
renumberTableRows();
currentRowId++;
reset2();
disableCurrency();
}
function getUploadField(rid)
function setUploadField()
{
var e = $K.dom('#uploadfield');
var uf =`<div class="upload"
data-kube="upload"
data-type="file"
data-multiple="true"
data-target="#upload-target${rid}"
data-url="upload.php?row=${rid}" data-url-remove="delete.php"
data-progress="true"
data-size="40"
data-placeholder="drag!">
data-type="file" data-multiple="true"
data-target="#upload-target${currentRowId}"
data-url="upload.php?row=${currentRowId}" data-url-remove="delete.php"
data-progress="true">Beleg(e) hochladen
</div>
<div id="upload-target${rid}" class="upload-target small"></div>
<div id="upload-target${currentRowId}" class="upload-target small"></div>
</div>
`;
return uf;
document.getElementById("uploadfield").innerHTML=uf;
}
function getRow(rid,num) {
var cur = document.getElementById("currency").value;
return ""
+ "<td>"
+ `${num}`
+"</td>"
+ "<td>"
+ `<input name="date[${rid}]" value="" type="date" placeholder="Datum*"/>`
+ "</td>"
+ "<td>"
+ `<input name="desc[${rid}]" type="text" placeholder="Beschreibung"/>`
+ "</td>"
+ "<td>"
+ `<input name="amount[${rid}] type="text" placeholder="0.00"/>`
+ "</td>"
+ "<td style=\"vertical-align: middle\">"
+ cur
// +
// `<select name="currency[${rid}]" >
// <option value="EUR">EUR</option>
// <option value="USD">USD</option>
// <option value="CHF">CHF</option>
// <option value="XBT">XBT</option>
// </select>`
+ "</td>"
+ "<td>"
+ getUploadField(rid)
+ "</td>"
+
`<td><span
onclick="deleteTableRow(${rid})"
class="close is-large">
</span></td>`;
}
var nextRid = 1
function addRow() {
var $node = $K.dom('#tabbody');
var e = getRow(nextRid,1);
var element = document.createElement('tr');
element.setAttribute("id", "trow"+nextRid);
$node.append(element);
element.innerHTML=(e);
renumberTableRows();
nextRid++;
}
$K.add('module', 'kaform', {
init: function(app, context)
{
@ -230,6 +268,8 @@ $K.add('module', 'kaform', {
console.log(banktype);
// console.log(sender);
// this.message.show({ message: 'My message' });
}
@ -257,6 +297,8 @@ $K.ajax.get({
error: function(response) {}
});
setUploadField();
function check_field(fieldid,message){
var f = document.getElementById(fieldid).value;
@ -285,12 +327,6 @@ function downloadDocument1(){
function downloadDocument(mail)
{
if (!checkAllRows())
return;
if (!check_field("projectid", "Bitte gib einen Projektnamen/Zweck der Reise an!"))
return;
@ -327,17 +363,11 @@ function downloadDocument(mail)
if (countRows()==0){
document.getElementById("add_issue").focus();
document.getElementById("a_description").focus();
showAlert("Bitte f&uuml;ge mind. eine Auslage hinzu!");
return;
}
if (!document.getElementById("agree").checked){
document.getElementById("agree").focus();
showAlert("Bitte best&auml;tige, dass du alle Angaben nach bestem Wissen und Gewissen gemacht hast!");
return;
};
if (mail){
if (!isMailable()){
@ -355,8 +385,15 @@ function downloadDocument(mail)
document.getElementById('banktype').value=banktype;
document.getElementById("theform").submit();
if (!document.getElementById("agree").checked){
document.getElementById("agree").focus();
showAlert("Bitte best&auml;tige, dass du alle Angaben nach bestem Wissen und Gewissen gemacht hast!");
return;
};
document.getElementById("theform").submit();
}

View File

@ -1,179 +0,0 @@
# German translations for apache package.
# Copyright (C) 2021 THE apache'S COPYRIGHT HOLDER
# This file is distributed under the same license as the apache package.
# Charlie & <root@bsd>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: apache 24\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-07-07 20:39+0200\n"
"PO-Revision-Date: 2021-07-06 18:21+0200\n"
"Last-Translator: Charlie & <root@bsd>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ka.php:29
msgid "Kostenerstattungsforumlar"
msgstr "Reimbursement Claim Formular"
#: ka.php:48
msgid "Antrag auf Kostenerstattung"
msgstr "Reimbursement Claim"
#: ka.php:51
msgid ""
"Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines Projektes "
"entstanden sind?"
msgstr ""
"You would like to be reimbursed for costs incurred in the course of your "
"project?"
#: ka.php:52
msgid ""
"Bitte fülle dieses Formular aus. Pflichtfelder sind mit einem * "
"gekennzeichnet."
msgstr "Please fill out this form. Mandatory fields are marked with *."
#: ka.php:60
msgid "1. Erfasse deine Stammdaten"
msgstr "1. Enter your master data"
#: ka.php:65
msgid "Projekt/Zweck der Reise*"
msgstr "Project/Purpose of travel*"
#: ka.php:72
msgid "Dein Realname (Vorname Nachname)*"
msgstr "Full legal name*"
#: ka.php:77
msgid "Deine Ansprechperson bei Wikimedia"
msgstr "Your contact person at Wikimedia"
#: ka.php:87
msgid "Deine Telefonnummer"
msgstr "Your phone number"
#: ka.php:98
msgid "Deine E-Mail-Adresse*"
msgstr "Your email address*"
#: ka.php:109
msgid "Banküberweisung"
msgstr "Bank transfer"
#: ka.php:110
msgid "Banküberweisung (Non-EU)"
msgstr "Bank transfer (Non-EU)"
#: ka.php:118 ka.php:151
msgid "Kontoinhabende Person"
msgstr "Account holder"
#: ka.php:127
msgid "IBAN*"
msgstr "IBAN*"
#: ka.php:132
msgid "BIC (wenn ausländische Bank)"
msgstr "BIC (if foreign bank)"
#: ka.php:139
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank, Grund für abweichende "
"Kontoinhbende Person"
msgstr ""
"Other comments e.g. intermediary bank, reason for different account login "
"person"
#: ka.php:160
msgid "Kontonummer*"
msgstr "Account number*"
#: ka.php:165
msgid "BIC/SWIFT*"
msgstr "BIC/SWIFT*"
#: ka.php:173
msgid "Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr "Address of the bank (street and house number/postcode/country)"
#: ka.php:176
#, fuzzy
msgid "Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr "Your address (street and house number/postcode/country)"
#: ka.php:185
#, fuzzy
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank,Grund für abweichende "
"kontoinhabende Person"
msgstr ""
"Other comments e.g. intermediary bank, reason for different account login "
"person"
#: ka.php:224
#, fuzzy
msgid "2. Erfasse deine Ausgaben"
msgstr "2. Enter your expenses"
#: ka.php:226
msgid "Währung:"
msgstr "Currency:"
#: ka.php:240
msgid "Pos."
msgstr "Pos."
#: ka.php:241
msgid "Datum"
msgstr "Date"
#: ka.php:242
msgid "Beschreibung"
msgstr "Description"
#: ka.php:243
msgid "Betrag"
msgstr "Amount"
#: ka.php:244
msgid "Währung"
msgstr "Currency"
#: ka.php:245
msgid "Belege"
msgstr "Receipts"
#: ka.php:246
msgid "L&ouml;schen"
msgstr "Delete"
#: ka.php:254
msgid "Ausgabe hinzuf&uuml;gen"
msgstr "Add expense"
#: ka.php:260
msgid "3. Vorschuss und Sonstiges"
msgstr "3. Advance payment and other"
#: ka.php:263
msgid "Ich habe bereits einen Vorschuss erhalten in H&ouml;he von:"
msgstr "I have already received an advance in the amount of:"
#: ka.php:273
msgid "Hiermit bestätige ich die Vollständig- und Richtigkeit meiner Angaben:"
msgstr "Herewith I confirm the completeness and correctness of my data:"
#: ka.php:281
msgid "Antrag elektronisch direkt an WMDE schicken"
msgstr "Send reimbursement claim electronically directly to WMDE"
#: ka.php:284
msgid "Antrag herunterladen und später einreichen"
msgstr "Download reimbursement claim and submit later"

View File

@ -1,14 +0,0 @@
1. Please first state the name of your <b>Project/Purpose of travel</b> supported by
Wikimedia Deutschland, in the context of which the costs were incurred.
Please calculate the costs for each funding individually!
<br><br>
2. Fill in Your <b>contact person at Wikimedia</b>
(example: “Sandro Halank/Volunteer Support”). This makes it easier for us to match you.
<br><br>
3. Each time, please enter your complete data relevant for the reimbursement of costs. We need these details for
any queries you could have. The payout details help us to carry out the refund correctly.
If the money is refunded to an account that does not belong to you, please give a reason;
this is essential for our accounting.
<br><br>
4. The email address and IBAN are automatically checked for correct format. If necessary,
an error message will be displayed if these are incomplete or incorrect.

View File

@ -1,46 +0,0 @@
<b>
Please calculate the costs for each funding individually!
</b
><br />
1. Please first state in the field <b>Currency</b> the currency in which the reimbursement
should be proceeded. The selected currency applies to the entire reimbursement claim.
We kindly you to use Euro preferably.
<br />
2. Please state <b>one</b> expense, receipt, document as explanation per line (Pos.) with corresponding description and
attach a receipt as .pdf, .jpg, .png by clicking on the corresponding field.
Files uploaded incorrectly can be removed by clicking on the <b>x</b>.
The explanation should clarify the type of expenses,
e.g. transportation, service, catering. Please always state the date of the receipt.
<br />
3. In the case expenses in foreign currencies have occurred in your project, please attach
for each conversion an additional file where the conversion rate is indicated. These proofs for
conversion rates are accepted: Card billing (credit or debit card), Cash currency exchange receipt,
<a href="https://sdw.ecb.europa.eu/curConverter.do">Currency converter of the European Central Bank.</a>
If there is no exchange course in the currency converter of the European Central Bank and no other proof available,
please use <a href="https://www1.oanda.com/lang/de/currency/converter/">Oanda</a>.
<br />
4. In the case an advance payment had been granted by Wikimedia Deutschland for the project/event,
please state the amount in the “advance payment and other” field.
<br />
5. Please confirm the <b>completeness and correctness</b> of your data by clicking the box.
<br />
6. Finally, click on “Send reimbursement claim electronically directly to WMDE” for direct forwarding
the reimbursement claim to Wikimedia Deutschland or “Download reimbursement claim and submit later” if you still want
to make changes.
<br /><br />
Important instructions:<br />
The form will calculate the total amount on its own.
<br />
The settlement of <a href="https://de.wikipedia.org/wiki/Wikipedia:Wikimedia_Deutschland/FAQ_und_Hilfe_zur_Förderung#Verpflegung">“per diem”</a>
is done by a receipt, which you can generate by using the <a href="https://www.wikimedia.de/extern/verpflegungsmehraufwand.html">form</a>.
Please enter it in a appropriate separate line (Pos.) as an expense.
<br />
A merged PDF of the reimbursement claim and the attachments will be generated by the software.
<br />
Only if you uploaded a receipt/document for each item, you can send the reimbursement claim
directly to Wikimedia Deutschland (WMDE). Otherwise, you have the option of downloading the reimbursement claim,
edit it yourself later and send it to Wikimedia Deutschland.<br>
<br />
If there are any errors or questions, feel free to contact <a href="mailto:community@wikimedia.de">community@wikimedia.de</a>.

View File

@ -1,166 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-07-07 20:39+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ka.php:48
msgid "Antrag auf Kostenerstattung"
msgstr ""
#: ka.php:51
msgid ""
"Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines Projektes "
"entstanden sind?"
msgstr ""
#: ka.php:52
msgid ""
"Bitte fülle dieses Formular aus. Pflichtfelder sind mit einem * "
"gekennzeichnet."
msgstr ""
#: ka.php:60
msgid "1. Erfasse deine Stammdaten"
msgstr ""
#: ka.php:65
msgid "Projekt/Zweck der Reise*"
msgstr ""
#: ka.php:72
msgid "Dein Realname (Vorname Nachname)*"
msgstr ""
#: ka.php:77
msgid "Deine Ansprechperson bei Wikimedia"
msgstr ""
#: ka.php:87
msgid "Deine Telefonnummer"
msgstr ""
#: ka.php:98
msgid "Deine E-Mail-Adresse*"
msgstr ""
#: ka.php:109
msgid "Banküberweisung"
msgstr ""
#: ka.php:110
msgid "Banküberweisung (Non-EU)"
msgstr ""
#: ka.php:118 ka.php:151
msgid "Kontoinhabende Person"
msgstr ""
#: ka.php:127
msgid "IBAN*"
msgstr ""
#: ka.php:132
msgid "BIC (wenn ausländische Bank)"
msgstr ""
#: ka.php:139
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank, Grund für abweichende "
"Kontoinhbende Person"
msgstr ""
#: ka.php:160
msgid "Kontonummer*"
msgstr ""
#: ka.php:165
msgid "BIC/SWIFT*"
msgstr ""
#: ka.php:173
msgid "Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr ""
#: ka.php:176
msgid "Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr ""
#: ka.php:185
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank,Grund für abweichende "
"kontoinhabende Person"
msgstr ""
#: ka.php:224
msgid "2. Erfasse deine Ausgaben"
msgstr ""
#: ka.php:226
msgid "Währung:"
msgstr ""
#: ka.php:240
msgid "Pos."
msgstr ""
#: ka.php:241
msgid "Datum"
msgstr ""
#: ka.php:242
msgid "Beschreibung"
msgstr ""
#: ka.php:243
msgid "Betrag"
msgstr ""
#: ka.php:244
msgid "Währung"
msgstr ""
#: ka.php:245
msgid "Belege"
msgstr ""
#: ka.php:246
msgid "L&ouml;schen"
msgstr ""
#: ka.php:254
msgid "Ausgabe hinzuf&uuml;gen"
msgstr ""
#: ka.php:260
msgid "3. Vorschuss und Sonstiges"
msgstr ""
#: ka.php:263
msgid "Ich habe bereits einen Vorschuss erhalten in H&ouml;he von:"
msgstr ""
#: ka.php:273
msgid "Hiermit bestätige ich die Vollständig- und Richtigkeit meiner Angaben:"
msgstr ""
#: ka.php:281
msgid "Antrag elektronisch direkt an WMDE schicken"
msgstr ""
#: ka.php:284
msgid "Antrag herunterladen und später einreichen"
msgstr ""

10
mkm.sh
View File

@ -1,10 +0,0 @@
#!/bin/sh
touch messages.po
xgettext --add-comments --from-code=utf-8 ka.php
msgmerge locale/en_US/LC_MESSAGES/messages.po messages.po > new.po
cp locale/en_US/LC_MESSAGES/messages.po locale/en_US/LC_MESSAGES/messages.po.bak
mv new.po locale/en_US/LC_MESSAGES/messages.po
rm locale/en_US/LC_MESSAGES/messages.mo
msgfmt locale/en_US/LC_MESSAGES/messages.po -o locale/en_US/LC_MESSAGES/messages.mo

View File

@ -6,38 +6,36 @@ require "PHPMailer/PHPMailer.php";
require "PHPMailer/SMTP.php";
require "PHPMailer/Exception.php";
#$CONVERT_CMD = "/usr/bin/pdftk";
require_once('TCPDF/tcpdf.php');
class kaformPDF extends TCPDF {
//Page header
//Page header
public function Header() {
}
// Logo
// $image_file = K_PATH_IMAGES.'logo_example.jpg';
// $this->Image($image_file, 10, 10, 15, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
// // Set font
// $this->SetFont('helvetica', 'B', 20);
// // Title
// $this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
// }
// Page footer
// // Logo
// $image_file = K_PATH_IMAGES.'logo_example.jpg';
// $this->Image($image_file, 10, 10, 15, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
// // Set font
// $this->SetFont('helvetica', 'B', 20);
// // Title
// $this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
// }
//
// // Page footer
public function Footer() {
}
// Position at 15 mm from bottom
// $this->SetY(-15);
// Set font
// $this->SetFont('helvetica', 'I', 8);
// Page number
// $this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
// }
// }
//
// // Position at 15 mm from bottom
// $this->SetY(-15);
// // Set font
// $this->SetFont('helvetica', 'I', 8);
// // Page number
// $this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
// }
// }
//