@ -1,158 +0,0 @@ | |||||
<!doctype html> | |||||
<html> | |||||
<head> | |||||
<title>Kostenerstattungsforumlar</title> | |||||
<meta charset="utf-8"> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||||
<!-- Kube CSS --> | |||||
<link rel="stylesheet" href="kube/dist/css/kube.min.css"> | |||||
<link rel="stylesheet" href="kube/dist/addons/kube-addons.min.css" /> | |||||
</head> | |||||
<body> | |||||
<h1>Antrag auf Kostenerstattung</h1> | |||||
<p>Bitte beachte beim Ausfüllen die | |||||
<a href="https://www.wikimedia.de/wiki/ | |||||
Gesch%C3%A4ftsordnung#Reisekostenordnung"> | |||||
Reisekostenordnung</a>. | |||||
</p> | |||||
<h2>Bitte fülle die allgemeinen Daten für die Erstattung aus.</h2> | |||||
<form method="POST"> | |||||
<label>Dein Projekt / Zweck der Reise</label> | |||||
<input type="text" name="projekt"/> | |||||
</form> | |||||
<h2>Bitte trage deine einzelnen Kostenpositionen ein.</h2> | |||||
<span data-kube="datepicker" data-format="%F %d, %Y">July 10, 2018</span> | |||||
<p> | |||||
Bitte trage nur eine Ausgabe pro Zeile ein, lege den | |||||
Originalbeleg dem Antrag bei und kennzeichne den Beleg | |||||
mit der entsprechenden Zeilennummer. Aus der Beschreibung | |||||
soll zu ersehen sein, ob es sich um Transport, Dienstleistung, | |||||
Materialien, Verpflegung oder ähnliches handelt. | |||||
</p> | |||||
<input type="date"/> | |||||
<br><br> | |||||
<span data-kube="datepicker" data-format="%F %d, %Y">July 10, 2018</span> | |||||
<br><br> | |||||
<table class="is-bordered"> | |||||
<thead> | |||||
<tr> | |||||
<th>Pos.</th> | |||||
<th>Beschreibung</th> | |||||
<th>Belegdatum</th> | |||||
<th>Betrag</th> | |||||
<th>Beleg</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
<tr id="row0"> | |||||
<td>1</td> | |||||
<td> | |||||
<textarea rows="2"> </textarea> | |||||
<td style="overflow:visible;" > | |||||
<input type="date"/> | |||||
</td> | |||||
<td style="overflow:visible;" > | |||||
<input type="num"/> | |||||
</td> | |||||
<td style="overflow:visible;" > | |||||
<div class="form-item"> | |||||
<div class="upload" data-kube="upload" data-type="file" | |||||
data-target="#my-upload-target" | |||||
data-url="/upload/" data-url-remove="/upload-remove/"> | |||||
</div> | |||||
<div id="my-upload-target" class="upload-target"> | |||||
<div class="upload-item" data-id="3746"> | |||||
<span class="close"></span> | |||||
<span>My file.txt <em>10 Kb</em></span> | |||||
<input type="hidden" name="file-uploaded[]" value="3746"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
<h3 data-kube="editable" placeholder="Enter text here...">hello world</h3> | |||||
<div class="alert">Heho!</div> | |||||
<div data-kube="tube"> | |||||
Kube Data | |||||
</div> | |||||
<input type="text" data-kube="tube"/> | |||||
<!-- Kube JS (optional if you are using Kube CSS only) --> | |||||
<script src="kube/dist/js/kube.min.js"></script> | |||||
<script src="kube/dist/addons/kube-addons.min.js"></script> | |||||
<script> | |||||
$K.add('module','tube', { | |||||
init: function(app,context){ | |||||
this.app = app; | |||||
// getting context and the module element | |||||
this.context = context; | |||||
this.$element = context.getElement(); | |||||
}, | |||||
start: function() | |||||
{ | |||||
/* this.$element.on('keydown.kube.editable', this._hui.bind(this)); | |||||
this.$element.on('paste.kube.editable', this._hui.bind(this)); | |||||
this.$element.on('blur.kube.editable', this._hui.bind(this)); | |||||
*/ | |||||
this.$element.on('click', this._hui.bind(this)); | |||||
this._build(); | |||||
}, | |||||
// public | |||||
myMethod: function() | |||||
{ | |||||
}, | |||||
_hui: function(e) | |||||
{ | |||||
alert(e); | |||||
}, | |||||
// private | |||||
_build: function() | |||||
{ | |||||
}, | |||||
onmessage: { | |||||
alert: { | |||||
closed: function(sender) | |||||
{ | |||||
alert(sender); | |||||
// caught | |||||
} | |||||
} | |||||
} | |||||
}); | |||||
$K.init(); | |||||
</script> | |||||
</body> | |||||
</html> |
@ -1,4 +0,0 @@ | |||||
<?php | |||||
session_start(); | |||||
$_SESSION['files']=array(); | |||||
error_log("clear called\n"); |
@ -1,141 +0,0 @@ | |||||
<!doctype html> | |||||
<html lang="de"> | |||||
<head> | |||||
<title>Kostenerstattungsforumlar</title> | |||||
<meta charset="utf-8"> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||||
<!-- Kube CSS --> | |||||
<link rel="stylesheet" href="css/kube.min.css"> | |||||
<link rel="stylesheet" href="addons/kube-addons.min.css" /> | |||||
<link rel="stylesheet" href="master.css" /> | |||||
</head> | |||||
<body> | |||||
<div class="page is-container"> | |||||
<div class="main-sidebar">Sidebar</div> | |||||
<div class="main-content"> | |||||
<h1>Antrag auf Kostenerstattung</h1> | |||||
<p>Bitte beachte beim Ausfüllen die | |||||
<a href="https://www.wikimedia.de/wiki/ | |||||
Gesch%C3%A4ftsordnung#Reisekostenordnung"> | |||||
Reisekostenordnung</a>. | |||||
</p> | |||||
<h3>Bitte fülle die allgemeinen Daten für die Erstattung aus.</h3> | |||||
<form action="submit.php" method="POST"> | |||||
<fieldset> | |||||
<legend>Dein Projekt / Zweck der Reise</legend> | |||||
<input required type="input" | |||||
size="32" id="projekt" name="project" | |||||
placeholder="Projekt xy" /> | |||||
</fieldset> | |||||
<fieldset> | |||||
<legend>Deine Ansprechperson bei Wikimedia</legend> | |||||
<input required type="input" size="32" id="wmdecontact" | |||||
name="wmdecontact" placeholder="John Doe" /> | |||||
</fieldset> | |||||
<fieldset> | |||||
<legend>Deine Kontaktdaten</legend> | |||||
<label for="realname" >Dein Realname</label> | |||||
<input required type="input" size="32" | |||||
name="realname" placeholder="Corinna Commonsuser" /> | |||||
<label for="email">E-Mail-Adresse</label> | |||||
<input required type="email" size="32" id="email" | |||||
name="email" placeholder="name@example.org" /> | |||||
<label for="phone" >Telefonnummer</label> | |||||
<input required type="tel" size="32" "phone" name="phone" | |||||
placeholder="0123-456789" /> | |||||
</fieldset> | |||||
<fieldset class="iblock" id="bankdetails"> | |||||
<legend lang="de">Auszahlungsweg</legend> | |||||
<legend lang="en">Payout method</legend> | |||||
<input class="screen" type="radio" id="eu" name="bank" value="EU" checked> | |||||
<label class="screen radio" for="eu" | |||||
lang="de">EU-Banküberweisung</label> | |||||
<label class="screen radio" for="eu" | |||||
lang="en">EU bank transfer</label> | |||||
<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">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" /> | |||||
<label class="nonEU" for="bankaddress" lang="en">Bank address</label><textarea lang="en" class="nonEU" id="bankaddress" style="resize:both;" cols="32" rows="4" placeholder="Street and house number | |||||
Postal code and city | |||||
Country"></textarea> | |||||
<label class="nonEU" for="address" lang="en">Your address</label><textarea lang="en" class="nonEU" id="address" style="resize:both;" cols="32" rows="4" placeholder="Street and house number | |||||
Postal code and city | |||||
Country"></textarea> | |||||
<label class="EU nonEU" for="comments" lang="en">Further comments</label><textarea lang="en" class="EU nonEU" id="comments" style="resize:both;" cols="32" rows="4" placeholder="e.g. intermediary bank, | |||||
reasons for differing account owner"></textarea> | |||||
<label class="nonEU" for="bankaddress" lang="de">Bankanschrift</label><textarea lang="de" class="nonEU" id="bankaddress" style="resize:both;" cols="32" rows="4" placeholder="Straße und Hausnummer | |||||
Postleitzahl und Ort | |||||
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 Kontoinhaberin"></textarea> | |||||
<label class="paypal" for="accountnumber">PayPal account</label><input class="paypal" type="input" size="32" id="paypal" placeholder="paypal@example.com" /> | |||||
</fieldset> | |||||
<label>Dein Projekt / Zweck der Reise</label> | |||||
<input type="text" name="projekt"/> | |||||
<h2>Bitte trage deine einzelnen Kostenpositionen ein.</h2> | |||||
<p> | |||||
Bitte trage nur eine Ausgabe pro Zeile ein, lege den | |||||
Originalbeleg dem Antrag bei und kennzeichne den Beleg | |||||
mit der entsprechenden Zeilennummer. Aus der Beschreibung | |||||
soll zu ersehen sein, ob es sich um Transport, Dienstleistung, | |||||
Materialien, Verpflegung oder ähnliches handelt. | |||||
</p> | |||||
<table id="tabtab" class="is-bordered"> | |||||
<thead> | |||||
<tr> | |||||
<th>Pos.</th> | |||||
<th>Beschreibung</th> | |||||
<th>Belegdatum</th> | |||||
<th>Betrag</th> | |||||
<th>Beleg</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody id="tabbody"> | |||||
</tbody> | |||||
</table> | |||||
<input type="submit"/> | |||||
</form> | |||||
<button onclick="addTableRow();" | |||||
class="button">Position hinzufügen</button> | |||||
<button onclick="submitTable();" | |||||
class="button">Absenden</button> | |||||
<!-- Kube JS (optional if you are using Kube CSS only) --> | |||||
<script src="js/kube.min.js"></script> | |||||
<script src="addons/upload/kube.upload.min.js"></script> | |||||
<script src="addons/kube-addons.min.js"></script> | |||||
<script src="kaform.js"></script> | |||||
</div> | |||||
</div> | |||||
</body> | |||||
</html> |
@ -1,225 +0,0 @@ | |||||
var nextRowId=1; | |||||
function renumberTableRows(){ | |||||
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++; | |||||
} | |||||
} | |||||
function deleteTableRow(rowId){ | |||||
var target = document.getElementById("upload-target"+rowId); | |||||
var children = target.children; | |||||
// delete all uploaded elements | |||||
for (var i = 0; i < children.length; i++) { | |||||
var tmp = children[i].getAttribute("data-id"); | |||||
$K.ajax.post({ | |||||
url: 'delete.php', | |||||
data: 'id='+tmp, | |||||
before: function(xhr) {}, | |||||
success: function(response) {}, | |||||
error: function(response) {} | |||||
}); | |||||
} | |||||
// delete the row from table | |||||
var element = document.getElementById("trow"+rowId); | |||||
element.parentNode.removeChild(element); | |||||
renumberTableRows(); | |||||
// alert(rowId); | |||||
} | |||||
function addTableRow(){ | |||||
var $node = $K.dom('#tabbody'); | |||||
// create a new table row with id | |||||
var element = document.createElement('tr'); | |||||
element.setAttribute("id", "trow"+nextRowId); | |||||
var e=""; | |||||
// add column for position no | |||||
e += '<td></td>'; | |||||
// add coluemn for description | |||||
e += `<td><textarea name="desc[${nextRowId}]" rows="2"></textarea> </td>`; | |||||
// add column for date | |||||
e += `<td><input name="date[${nextRowId}]" type="date"/></td>`; | |||||
// add column for num | |||||
e += `<td><input name="amount[${nextRowId}]" type="num"/></td>`; | |||||
// add column for file upload | |||||
e+= ` | |||||
<td data-kube=""> | |||||
<form action=""> | |||||
<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" data-url-remove="delete.php" | |||||
data-progress="true"> | |||||
</div> | |||||
<div id="upload-target${nextRowId}" class="upload-target"></div> | |||||
</div> | |||||
</form> | |||||
</td> | |||||
`; | |||||
// add delete bnutton | |||||
e += | |||||
`<td><span | |||||
onclick="deleteTableRow(${nextRowId})" | |||||
class="close is-large"> | |||||
</span></td>`; | |||||
$node.append(element); | |||||
element.innerHTML=(e); | |||||
renumberTableRows(); | |||||
nextRowId++; | |||||
} | |||||
function submitTable(){ | |||||
alert("submit"); | |||||
var obj; | |||||
var table = document.getElementById("tabbody"); | |||||
for (var i = 0, row; row = table.rows[i]; i++) { | |||||
console.log(row.cells[1]); | |||||
// var n = row.cells[1].value; | |||||
// alert(n); | |||||
} | |||||
} | |||||
$K.add('module','kaform', { | |||||
init: function(app,context){ | |||||
this.app = app; | |||||
// getting context and the module element | |||||
this.context = context; | |||||
this.$element = context.getElement(); | |||||
}, | |||||
hello: function(){ | |||||
alert ("hello function of kaform"); | |||||
}, | |||||
start: function() | |||||
{ | |||||
/*this.$element.on('keydown.kube.editable', this._hui.bind(this)); | |||||
this.$element.on('paste.kube.editable', this._hui.bind(this)); | |||||
this.$element.on('blur.kube.editable', this._hui.bind(this)); | |||||
*/ | |||||
// alert(this.$element); | |||||
// this.$element.on('click', this.addRow.bind(this)); | |||||
this._build(); | |||||
}, | |||||
addRow: function() | |||||
{ | |||||
var $node = $K.dom('#tabbody'); | |||||
// create a new table row with id | |||||
var element = document.createElement('tr'); | |||||
element.setAttribute("id", "trow"+nextRowId); | |||||
var e=""; | |||||
// add column for position no | |||||
e += '<td></td>'; | |||||
// add coluemn for description | |||||
e += '<td><textarea rows="2"></textarea> </td>'; | |||||
// add column for date | |||||
e += '<td style="overflow:visible;"><input type="date"/></td>'; | |||||
// add column for num | |||||
e += '<td style="overflow:visible;"><input type="num"/></td>'; | |||||
// add column for file upload | |||||
e+= ` | |||||
<td data-kube=""> | |||||
<form action=""> | |||||
<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" data-url-remove="delete.php" | |||||
data-progress="true"> | |||||
</div> | |||||
<div id="upload-target${nextRowId}" class="upload-target"></div> | |||||
</div> | |||||
</form> | |||||
</td> | |||||
`; | |||||
// add delete bnutton | |||||
e += | |||||
`<td><span | |||||
onclick="deleteTableRow('trow${nextTableRow}'" | |||||
class="close is-large"> | |||||
</span></td>`; | |||||
$node.append(element); | |||||
element.innerHTML=(e); | |||||
renumberTableRows(); | |||||
nextRowId++; | |||||
}, | |||||
// private | |||||
_build: function() | |||||
{ | |||||
}, | |||||
onmessage: { | |||||
alert: { | |||||
closed: function(sender) | |||||
{ | |||||
alert(sender); | |||||
// caught | |||||
} | |||||
} | |||||
} | |||||
}); | |||||
// startup is here | |||||
$K.init({ | |||||
observer: true | |||||
}); | |||||
// on startup clear session on server | |||||
$K.ajax.get({ | |||||
url: 'clear.php', | |||||
data: '', // or key=value object | |||||
before: function(xhr) {}, | |||||
success: function(response) {}, | |||||
error: function(response) {} | |||||
}); | |||||
// add on table row | |||||
addTableRow(); |
@ -1,41 +0,0 @@ | |||||
/*body { | |||||
margin: 2em; | |||||
max-width: 80em; | |||||
} | |||||
*/ | |||||
.main-sidebar { | |||||
@include make-sidebar(440px); | |||||
/* margin-right: 61px;*/ | |||||
width:20em; | |||||
@include for-mobile { | |||||
margin-right: 0; | |||||
} | |||||
} | |||||
.main-sidebar-secondary { | |||||
@include make-sidebar(240px); | |||||
margin-left: 16px; | |||||
@include for-mobile { | |||||
margin-left: 0; | |||||
} | |||||
} | |||||
.main-content { | |||||
/* @include make-content;*/ | |||||
/* width: 100em;*/ | |||||
max-width:100em; | |||||
} | |||||
/* | |||||
#de:checked~header :lang(en) { display: none; } | |||||
#en:checked~header :lang(de) { display: none; } | |||||
#de:checked~div :lang(en) { display: none; } | |||||
#en:checked~div :lang(de) { display: none; } | |||||
#de:checked~main :lang(en) { display: none; } | |||||
#en:checked~main :lang(de) { display: none; } | |||||
*/ | |||||
/*lang(en) {display: none;}*/ |
@ -1,12 +0,0 @@ | |||||
<?php | |||||
var_dump($_POST); | |||||
convert_file | |||||
echo "<br>"; | |||||
foreach ($_POST['desc'] as $key => $val) { | |||||
echo "$key -> $val<br>"; | |||||
} |
@ -1,2 +0,0 @@ | |||||
<?php | |||||
phpinfo(); |