initial
This commit is contained in:
26
templates/accounts.html
Normal file
26
templates/accounts.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<h2>Nicht bearbeitete Anfragen</h2>
|
||||
<form action="accounts.php" method="post">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Benutzername</th>
|
||||
<th>Realname</th>
|
||||
<th>Email-Adresse</th>
|
||||
<th>Aktion</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{{inactive_accounts}}
|
||||
</table>
|
||||
<h2>Aktive Zugänge</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Benutzername</th>
|
||||
<th>Realname</th>
|
||||
<th>Email-Adresse</th>
|
||||
<th>Aktion</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{{active_accounts}}
|
||||
</table>
|
||||
</form>
|
||||
11
templates/bulkmail.html
Normal file
11
templates/bulkmail.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<script src="/script/tinymce/tinymce.min.js" referrerpolicy="origin"></script>
|
||||
<h2>Versende eine Email an alle aktiven Mitglieder</h2>
|
||||
{{form}}
|
||||
<script>
|
||||
tinymce.init({
|
||||
selector: 'textarea',
|
||||
toolbar: 'undo redo | blocks fontfamily fontsize | bold italic underline strikethrough | link image media table mergetags | addcomment showcomments | spellcheckdialog a11ycheck typography | align lineheight | checklist numlist bullist indent outdent | emoticons charmap | removeformat',
|
||||
tinycomments_mode: 'embedded',
|
||||
promotion: false
|
||||
});
|
||||
</script>
|
||||
2
templates/bulkmail_success.html
Normal file
2
templates/bulkmail_success.html
Normal file
@@ -0,0 +1,2 @@
|
||||
Email erfolgreich versendet an: <br/>
|
||||
{{recipients}}
|
||||
9
templates/contact.html
Normal file
9
templates/contact.html
Normal file
@@ -0,0 +1,9 @@
|
||||
<h2>Gerne sind wir für Sie da</h2>
|
||||
<p>Sie können uns gerne eine Email senden an <a href="mailto:foerderverein-ajs@gmx.de?subject=Anfrage an den Förderverein August-Jaspert-Schule">foerderverein-ajs@gmx.de</a>.
|
||||
<form method="post" action="contact.php">
|
||||
<h2>Oder Sie senden uns hier eine Nachricht.</h2>
|
||||
Hinweis: Die Daten die Sie hier eingeben, werden nicht gespeichert, sondern direkt an den Vorstand per Email gesendet.<br/>
|
||||
Ihr Name und Ihre Email-Adresse sind keine Pflichtfelder. Aber natürlich können wir Ihnen nur Antworten, wenn Sie uns Ihre Email-Adresse mitteilen.
|
||||
{{errors}}
|
||||
{{form}}
|
||||
|
||||
50
templates/documents.html
Normal file
50
templates/documents.html
Normal file
@@ -0,0 +1,50 @@
|
||||
<script>
|
||||
let fileName = '';
|
||||
$(document).ready(function() {
|
||||
$('#toggle-collapse').click(function() {
|
||||
$('#new-document').toggle();
|
||||
console.log($(this).css('display'));
|
||||
$('#toggle-collapse').text($('#new-document').is(':hidden') ? '+' : '-');
|
||||
});
|
||||
$("[name='delete']").click(function() {
|
||||
fileName = $(this).parent().parent().children().first().text();
|
||||
$("#yesno").val = false;
|
||||
$("#yesno").text('Soll "' + fileName + '" wirklich gelöscht werden?');
|
||||
$("#yesno").dialog({
|
||||
close: function(event, ui) { console.log(event, ui); }
|
||||
});
|
||||
$("#yesno").data("callback", yesNoCallback).dialog('open');
|
||||
});
|
||||
function yesNoCallback(result) {
|
||||
if (result === true) {
|
||||
$.post('deletedocument',
|
||||
{
|
||||
'file': fileName
|
||||
}).done(function(result) {
|
||||
document.location.href = 'documents?ts=' + Date.now();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<div>
|
||||
<h2><span id="toggle-collapse" class="toggle-collapse">+</span>Neues Dokument hinzufügen</h2>
|
||||
<div id="new-document" style="display:none">
|
||||
{{form}}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Documenttitel</th>
|
||||
<th>Original-Dateiname</th>
|
||||
<th>Link</th>
|
||||
<th>Aktionen</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{documents}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
16
templates/donate.html
Normal file
16
templates/donate.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<h2>Ihre Spenden sind uns Willkommen</h2>
|
||||
<p>Damit der Verein auch Zukünftig viele Projekte unterstützen, weiter das Frühstück liefern und auch Klassenfahrten unterstützen kann, sind wir auf Ihre Hilfe angewiesen.</p>
|
||||
<p>Das Gute: Als Gemeinnützer Verein können Sie von uns eine Spendenbescheinigung erhalten, die Sie dann Steuerlich geltend machen können. Sprechen Sie uns gerne darauf an.</p>
|
||||
<h3>Spendenkonto</h3>
|
||||
<p>Frankfurter Volksbank<br/>
|
||||
IBAN: DE51 5019 0000 6000 6097 20<br/>
|
||||
BIC: FFVBDEFF</p>
|
||||
<h3>Rechtliche Hinweise</h3>
|
||||
<h4>Spenden bis 200 Euro</h4>
|
||||
Sofern die Spende maximal 200 Euro beträgt, benötigt das Finanzamt nicht zwingend eine Spendenbescheinigung zur steuerliche Absetzung der Spende. Hier genügt es der Bundesfinanzverwaltung, wenn der Spender eine Buchungsbestätigung seiner Bank als Nachweis zusammen mit seiner Steuererklärung beim Finanzamt einreicht. Es handelt sich um einen vereinfachten Spenden-Nachweis. Darauf müssen folgende Informationen enthalten sein:<br/>
|
||||
Name und Kontonummer von Empfänger & Spender<br/>
|
||||
Betrag (in Euro) & Buchungstag<br/>
|
||||
Steuerbegünstigter Zweck<br/>
|
||||
Angabe, ob es sich um eine Spende oder um einen Mitgliedsbeitrag handelt<br/>
|
||||
<h4>Spenden über 200 Euro</h4>
|
||||
Übersteigt die Spende den Grenzwert von 200 Euro, benötigt das Finanzamt vom Spender eine vom Verein ausgestellte Spendenbescheinigung, also einen Nachweis über den erhaltenen Betrag. Fragen Sie einfach nach, z.B. über unser <a href="/contact">Kontaktformular</a>.
|
||||
2
templates/editmember.html
Normal file
2
templates/editmember.html
Normal file
@@ -0,0 +1,2 @@
|
||||
{{messages}}
|
||||
{{form}}
|
||||
15
templates/emailinbox.html
Normal file
15
templates/emailinbox.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{{errors}}
|
||||
<div class="emailinbox">
|
||||
<div class="emailinbox-headers">
|
||||
<h3>Emails:</h3>
|
||||
<table>
|
||||
<tbody>
|
||||
{{mails}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="emailinbox-folders">
|
||||
<h3>Ordner:</h3>
|
||||
{{folders}}
|
||||
</div>
|
||||
</div>
|
||||
1
templates/error_smtp.html
Normal file
1
templates/error_smtp.html
Normal file
@@ -0,0 +1 @@
|
||||
Die Email konnte nicht gesendet werden.
|
||||
4
templates/footer.html
Normal file
4
templates/footer.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<footer>
|
||||
<span class="footer-copyright">(c) 2022 Förderverein <a href="https://www.august-jaspert-schule.com" target="_blank">August-Jaspert-Schule e.V.</a></span>
|
||||
<a href="imprint" class="footer-imprint">Impressum</a>
|
||||
</footer>
|
||||
3
templates/header.html
Normal file
3
templates/header.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<header>
|
||||
<h1>Förderverein August-Jaspert-Schule e.V.</h1>
|
||||
</header>
|
||||
3
templates/imaperror.html
Normal file
3
templates/imaperror.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<h2>Fehler mit dem Postfach</h2>
|
||||
<p>Die Verbindung zum Postfach konnte nicht hergestellt werden.</p>
|
||||
{{errors}}
|
||||
15
templates/imprint.html
Normal file
15
templates/imprint.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<h2>Verein der Freunde und Förderer der August-Jaspert-Schule e. V.</h2>
|
||||
Harheimer Weg 16<br/>
|
||||
60437 Frankfurt am Main (Bonames)<br/>
|
||||
Email: foerderverein-AJS@gmx.de</br>
|
||||
Tel: xxx-xxxxxxx
|
||||
<h2>Vorstand</h2>
|
||||
<ul class="nospec">
|
||||
<li>Vorsitzender: Lucas Fastabend</li>
|
||||
<li>Kassenwartin: Alexandra Grabmann</li>
|
||||
<li>Schriftführer: Torsten Schulz</li>
|
||||
</ul>
|
||||
<h2>Amtliche Informationen</h2>
|
||||
Registergericht: Amtsgericht Frankfurt a.M., Gerichtsstraße 2, 60313 Frankfurt am Main<br/>
|
||||
Vereinsregisternummer: <br/>
|
||||
Umsatzsteueridentifkationsnummer: <br/>
|
||||
5
templates/index.html
Normal file
5
templates/index.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<h2>Willkommen beim Verein der Freunde und Förderer der August-Jaspert-Schule e. V.</h2>
|
||||
<p>Der Förderverein wurde im Jahr 2005 von Eltern und Lehrern der Schule mit dem Ziel gegründet, die pädagogischen, kulturellen und sozialen Aufgaben an der August-Jaspert-Schule durch Bereitstellung zusätzlicher Mittel zu unterstützen.</p>
|
||||
<p>Der Verein hat sich zum Ziel gesetzt, die vielfältige Bildung alles Kinder an unserer Schule durch materielle und finanzielle Unterstützung zu erweitern, soweit dies nicht aus dem Schul-Etat geleistet werden kann.</p>
|
||||
<p>Wir arbeiten eng mit dem Schulelternbeirat und dem Kollegium der August-Jaspert-Schule zusammen.</p>
|
||||
<p>Über Anregungen, Wünsche und Verbesserungsvorschläge sowie über tatkräftige Hilfe freuen wir uns immer.</p>
|
||||
5
templates/login.html
Normal file
5
templates/login.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<h2>Login</h2>
|
||||
{{errors}}
|
||||
{{form}}
|
||||
<a href="register">Login beantragen</a><br/>
|
||||
<a href="newpassword">Benutzername/Paßwort vergessen</a>
|
||||
1
templates/login_error.html
Normal file
1
templates/login_error.html
Normal file
@@ -0,0 +1 @@
|
||||
<div class="error">Diese Seite ist nur mit Login zugänglich</div>
|
||||
29
templates/mail.html
Normal file
29
templates/mail.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<a href="emailinbox">Zurück zum Posteingang</a><br/>
|
||||
<a href="savemail?type=content&uid={{uid}}">Email-Text als Datei speichern</a> (Der Betreff wird als Dateiname verwendet, wenn noch nicht vorhanden. Ansonsten wird ein Ergänzung vorgesetzt.)<br/><br/>
|
||||
<table class="form">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Von</th>
|
||||
<td>{{sender}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>An</th>
|
||||
<td>{{receiver}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Datum</th>
|
||||
<td>{{senddate}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Betreff</th>
|
||||
<td>{{subject}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="emailbody">
|
||||
{{emailbody}}
|
||||
</div>
|
||||
<div class="emailattachments">
|
||||
<h2>Anhänge</h2>
|
||||
{{attachments}}
|
||||
</div>
|
||||
15
templates/members.html
Normal file
15
templates/members.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<a href="newmember">Neues Mitglied eintragen</a>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Mitglieds-Nr.</th>
|
||||
<th>Name</th>
|
||||
<th>Email-Adresse</th>
|
||||
<th>Letzte Zahlung</th>
|
||||
<th>Mitglied seit</th>
|
||||
<th>Mitgliedsstatus</th>
|
||||
<th>Aktionen</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{{memberlist}}
|
||||
</table>
|
||||
8
templates/membership.html
Normal file
8
templates/membership.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<h2>Sie möchten Mitglied werden?</h2>
|
||||
<p>Selbstverständlich freuen wir uns über jede*n der/die bei uns im Förderverein Mitglied werden möchte.</p>
|
||||
<p>Füllen Sie einfach (alle) Felder hier aus, und wir melden uns schnellstmöglich wieder bei Ihnen.</p>
|
||||
<h3>Hinweis</h3>
|
||||
Die hier eingegebenen Daten werden per Email an den Vorstand des Fördervereins gesendet.<br/>
|
||||
Das absenden dieses Formulares ist noch keine rechtlich bindende Mitgliedschaft. Wir werden Ihnen nach Absenden ein vorausgefülltes Formular zusenden, welches Sie uns dann nur noch unterschrieben zurücksenden müssen.
|
||||
<br/><br/>
|
||||
{{form}}
|
||||
3
templates/membership_success.html
Normal file
3
templates/membership_success.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<h2>Vielen Dank!</h2>
|
||||
Wir werden Ihre Daten prüfen und senden Ihnen dann umgehend den Vorausgefüllten Mitgliedsantrag zu, den Sie dann nur noch unterschrieben zurück senden müssen.
|
||||
|
||||
2
templates/message_success.html
Normal file
2
templates/message_success.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<h2>Vielen Dank für Ihre Anfrage.</h2>
|
||||
Wir werden sie schnellstmöglich bearbeiten und uns ggf. wieder bei Ihnen welden.
|
||||
2
templates/newmember.html
Normal file
2
templates/newmember.html
Normal file
@@ -0,0 +1,2 @@
|
||||
{{messages}}
|
||||
{{form}}
|
||||
6
templates/newpassword.html
Normal file
6
templates/newpassword.html
Normal file
@@ -0,0 +1,6 @@
|
||||
|
||||
<h2>Zugangsdaten anfordern</h2>
|
||||
{{errors}}
|
||||
Bitte geben Sie Ihre Email-Adresse an. Falls diese hinterlegt ist, senden wir Ihnen Ihren Benutzernamen, sowie einen Link zum zurücksetzen des Paßwortes zu.
|
||||
{{form}}
|
||||
<a href="login">Zum Login</a><br/>
|
||||
1
templates/newpassword_done.html
Normal file
1
templates/newpassword_done.html
Normal file
@@ -0,0 +1 @@
|
||||
Die Email wurde versendet. Sollten Sie keine erhalten, schauen Sie bitte in Ihren Spam-Ordner. Sollten Sie auch da keine Email finden, <a href="/register">beantragen Sie bitte einen neuen Account</a>.
|
||||
0
templates/none.html
Normal file
0
templates/none.html
Normal file
48
templates/page.html
Normal file
48
templates/page.html
Normal file
@@ -0,0 +1,48 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Förderverein August-Jaspert-Schule e.V.</title>
|
||||
<link rel="stylesheet" type="text/css" href="style/main.css" />
|
||||
<link href="style/jquery-ui.min.css" rel="stylesheet">
|
||||
<script type="text/javascript" src="script/jquery-3.6.3.min.js"></script>
|
||||
<script src="script/jquery-ui.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="head-background"></div>
|
||||
{{menu}}
|
||||
{{header}}
|
||||
<div class="header-main-space"></div>
|
||||
<main>
|
||||
<div class="content">
|
||||
{{content}}
|
||||
</div>
|
||||
</main>
|
||||
{{footer}}
|
||||
<div id="yesno" title="Sind Sie sicher?">Zum testen</div>
|
||||
</body>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("#yesno").dialog({
|
||||
resizable: false,
|
||||
height: "auto",
|
||||
width: 400,
|
||||
modal: true,
|
||||
autoOpen: false,
|
||||
buttons: {
|
||||
"Ja, wirklich löschen": function(event) {
|
||||
$(this).dialog( "close" );
|
||||
$(this).data("callback")(true);
|
||||
},
|
||||
"Nein, nicht löschen": function() {
|
||||
$("#yesno").val = 1;
|
||||
$(this).dialog( "close" );
|
||||
$(this).data("callback")(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
|
||||
1
templates/passwordresettet.html
Normal file
1
templates/passwordresettet.html
Normal file
@@ -0,0 +1 @@
|
||||
Das neue Paßwort wurde gesetzt. Bitte loggen Sie sich <a href="/login">hier</a> ein.
|
||||
14
templates/payings.html
Normal file
14
templates/payings.html
Normal file
@@ -0,0 +1,14 @@
|
||||
<h2>Zahlungen von {{member-name}}</h2>
|
||||
{{form}}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Datum</th>
|
||||
<th>Betrag</th>
|
||||
<th>Eingetragen von</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{payings}}
|
||||
</tbody>
|
||||
</table>
|
||||
188
templates/planboard.html
Normal file
188
templates/planboard.html
Normal file
@@ -0,0 +1,188 @@
|
||||
Ideenboard
|
||||
Diskussions-Topic: <select id="topic">
|
||||
<option value="new">Neu</option>
|
||||
{{topics}}
|
||||
</select>
|
||||
<input type="text" name="newtopic" id="newtopic" />
|
||||
<button type="button" id="generate">Erstellen</button><br/>
|
||||
<div class="planboard-settings">
|
||||
<div>
|
||||
Kurzbeschreibung:<br/>
|
||||
<textarea cols="50" rows="4" id="shortdescription"></textarea>
|
||||
</div>
|
||||
<div>
|
||||
Farblegende:<br/>
|
||||
{{colors}}
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<div id="textboard" class="planboard-discussion">
|
||||
</div>
|
||||
<script>
|
||||
var text;
|
||||
var activeLine = -1;
|
||||
var ownColor= "{{owncolor}}";
|
||||
$(document).ready(function() {
|
||||
text = [
|
||||
];
|
||||
$("#topic").change(function() {
|
||||
if ($(this).val() !== 'new') {
|
||||
$("#newtopic").hide();
|
||||
$("#generate").hide();
|
||||
} else {
|
||||
$("#newtopic").show();
|
||||
$("#generate").show();
|
||||
}
|
||||
$.post('planboard', {
|
||||
'action': 'fetchtopic',
|
||||
'id': $(this).val()
|
||||
},
|
||||
null,
|
||||
'json'
|
||||
).done(function(response) {
|
||||
text = JSON.parse(response.discussion);
|
||||
renderText();
|
||||
$("#shortdescription").val(response.shortdescription);
|
||||
});
|
||||
});
|
||||
$("#generate").click(function() {
|
||||
$.post("planboard", {
|
||||
"action": "generate",
|
||||
"name": $("#newtopic").val()
|
||||
},
|
||||
null,
|
||||
'json'
|
||||
).done(function(response) {
|
||||
if ("error" in response) {
|
||||
alert(response.error);
|
||||
return;
|
||||
}
|
||||
$("#topic > option").remove();
|
||||
let newItem = $('<option>Neu</option>');
|
||||
newItem.attr('id', 'new');
|
||||
$("#topic").append(newItem);
|
||||
response.topics.forEach(function(item) {
|
||||
let newItem = $('<option></option>');
|
||||
newItem.attr('id', item.id);
|
||||
newItem.text(item.title);
|
||||
if (item.id == response.id) {
|
||||
newItem.attr('selected', 'selected');
|
||||
}
|
||||
$("#topic").append(newItem);
|
||||
});
|
||||
}).fail(function(message) {
|
||||
alert(message);
|
||||
});
|
||||
});
|
||||
$("#textboard").click(function(event) {
|
||||
if (typeof $(event.target).attr("id") !== 'undefined' && $(event.target).attr("id") === 'editor') {
|
||||
return;
|
||||
}
|
||||
const eventPosition = {'x': event.pageX, 'y': event.pageY};
|
||||
const divPosition = {'x': $(this).offset().left, 'y': $(this).offset().top};
|
||||
const clickPosition = relativePosition(divPosition, eventPosition);
|
||||
if (clickPosition.x < 16) {
|
||||
return;
|
||||
}
|
||||
let line = Math.floor(clickPosition.y / 20);
|
||||
$(this).children("input").remove();
|
||||
line = Math.min(text.length - 1, line);
|
||||
if (line === -1) {
|
||||
text[0] = {'color': ownColor, 'text': ''};
|
||||
line = 0;
|
||||
}
|
||||
if (text[line].color != ownColor) {
|
||||
alert('Diese Zeile kannst Du nicht editieren, sondern nur der Ersteller.');
|
||||
return;
|
||||
}
|
||||
createTextInput(line);
|
||||
});
|
||||
$("#shortdescription").focusout(function() {
|
||||
$.post("planboard", {
|
||||
"action": "setshortdescription",
|
||||
"id": $("#topic").val(),
|
||||
"text": $(this).val(),
|
||||
},
|
||||
null,
|
||||
"json"
|
||||
);
|
||||
});
|
||||
renderText();
|
||||
});
|
||||
function createTextInput(line) {
|
||||
let textInput = $("<input>");
|
||||
textInput.css({"position": "absolute", "top": " " + (line * 22) + "px", "left": "16px", "width": "calc(100% - 24px)", "color": "#" + ownColor});
|
||||
textInput.attr('id', "editor");
|
||||
textInput.val(text[line].text);
|
||||
textInput.focusout(setNewText);
|
||||
textInput.keypress(function(event){
|
||||
var keycode = (event.keyCode ? event.keyCode : event.which);
|
||||
if(keycode == '13'){
|
||||
setNewText();
|
||||
}
|
||||
});
|
||||
$("#textboard").append(textInput);
|
||||
$("#editor").focus();
|
||||
activeLine = line;
|
||||
}
|
||||
function relativePosition(parentPosition, eventPosition) {
|
||||
return {'x': Math.round(eventPosition.x - parentPosition.x), 'y': Math.round(eventPosition.y - parentPosition.y)};
|
||||
}
|
||||
function numLines(text) {
|
||||
return text.split("<br>").length;
|
||||
}
|
||||
function renderText() {
|
||||
$("#textboard").text('');
|
||||
text.forEach(function(item) {
|
||||
let line = $("<div>");
|
||||
line.html(item.text);
|
||||
line.css({"color": "#" + item.color});
|
||||
$("#textboard").append(line);
|
||||
});
|
||||
renderAddLine();
|
||||
renderRemoveLine();
|
||||
}
|
||||
function setNewText() {
|
||||
text[activeLine].text = $("#editor").val();
|
||||
sendDiscussion();
|
||||
renderText();
|
||||
}
|
||||
function renderAddLine() {
|
||||
for (line = -1; line < text.length; ++line) {
|
||||
var addIcon = $('<div>></div>');
|
||||
addIcon.css({'position':'absolute', 'left':0, 'top': 11 + line * 22, 'cursor':'pointer'});
|
||||
addIcon.click(function(event) {
|
||||
let newLine = (($(this).position().top - 11) / 22) + 1;
|
||||
text.splice(newLine, 0, {'color': ownColor, 'text':''});
|
||||
renderText();
|
||||
createTextInput(newLine);
|
||||
sendDiscussion();
|
||||
});
|
||||
$("#textboard").append(addIcon);
|
||||
}
|
||||
}
|
||||
function renderRemoveLine() {
|
||||
for (line = 0; line < text.length; ++line) {
|
||||
var addIcon = $('<div>-</div>');
|
||||
addIcon.css({'position':'absolute', 'left':0, 'top': line * 22, 'cursor':'pointer'});
|
||||
addIcon.click(function(event) {
|
||||
let line = ($(this).position().top) / 22;
|
||||
text.splice(line, 1);
|
||||
renderText();
|
||||
sendDiscussion();
|
||||
});
|
||||
$("#textboard").append(addIcon);
|
||||
}
|
||||
}
|
||||
function sendDiscussion() {
|
||||
$.post("planboard", {
|
||||
"action": "setdiscussion",
|
||||
"id": $("#topic").val(),
|
||||
"text": JSON.stringify(text),
|
||||
},
|
||||
null,
|
||||
"json"
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
3
templates/projects.html
Normal file
3
templates/projects.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<h2>Förderübersicht</h2>
|
||||
<p>Der Verein unterstützt die Schule und ihre Schüler*innen mit verschiedenen Maßnahmen. Das können fortlaufende Projekte sein oder auch spezielle, einmalige Maßnahmen.</p>
|
||||
{{projects}}
|
||||
115
templates/projectsmanagement.html
Normal file
115
templates/projectsmanagement.html
Normal file
@@ -0,0 +1,115 @@
|
||||
{{form}}
|
||||
{{projects}}
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("form").submit(function(event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$("#addproject").click(function() {
|
||||
$.post("projectsmanagement", {
|
||||
'action': 'create',
|
||||
'newname': $("#new_title").val(),
|
||||
},
|
||||
null,
|
||||
"json"
|
||||
).done(function(response) {
|
||||
if ("error" in response) {
|
||||
alert(response.error);
|
||||
return;
|
||||
}
|
||||
$("#shorttitle > option:not(:first-child)").remove();
|
||||
response.list.forEach(function(item) {
|
||||
let newItem = $("<option></option>");
|
||||
newItem.attr("id", item.id);
|
||||
newItem.text(item.title);
|
||||
if (item.id == response.id) {
|
||||
newItem.attr("selected", "selected");
|
||||
}
|
||||
$("#shorttitle").append(newItem);
|
||||
});
|
||||
}).fail(function(response) {
|
||||
alert(response);
|
||||
});
|
||||
});
|
||||
$("#shorttitle").change(function() {
|
||||
if ($(this).val() !== 'NULL') {
|
||||
$("#new_title").hide();
|
||||
$("#addproject").hide();
|
||||
} else {
|
||||
$("#new_title").show();
|
||||
$("#addproject").show();
|
||||
}
|
||||
$.post("projectsmanagement", {
|
||||
"action": "getdetails",
|
||||
"id": $("#shorttitle").val()
|
||||
},
|
||||
null,
|
||||
"json"
|
||||
).done(function(response) {
|
||||
if ("error" in response) {
|
||||
$("#description").val("");
|
||||
$("#projecttype option:first").attr('selected','selected');
|
||||
alert(response.error);
|
||||
return;
|
||||
}
|
||||
$("#description").val(response.description);
|
||||
$("#projecttype").val(response.projecttype);
|
||||
}).fail(function() {
|
||||
$("#shorttitle").val("NULL");
|
||||
$("#description").val("");
|
||||
$("#projecttype option:first").attr('selected','selected');
|
||||
});
|
||||
});
|
||||
$("#description").focusout(function() {
|
||||
if ($("#shorttitle").val() === "NULL") {
|
||||
return;
|
||||
}
|
||||
console.log($("#shorttitle").val());
|
||||
$.post("projectsmanagement", {
|
||||
"action": "setdescription",
|
||||
"id": $("#shorttitle").val(),
|
||||
"description": $("#description").val()
|
||||
},
|
||||
null,
|
||||
"json"
|
||||
).done(function(response) {
|
||||
if ("error" in response) {
|
||||
alert(response.error);
|
||||
}
|
||||
});
|
||||
});
|
||||
$("#projecttype").change(function() {
|
||||
$.post("projectsmanagement", {
|
||||
"action": "setprojecttype",
|
||||
"id": $("#shorttitle").val(),
|
||||
"newtype": $("#projecttype").val()
|
||||
},
|
||||
null,
|
||||
"json"
|
||||
).done(function(response) {
|
||||
if ("error" in response) {
|
||||
alert(response.error);
|
||||
}
|
||||
});
|
||||
});
|
||||
$("select").change(function() {
|
||||
if ($(this).attr('name') === 'project_type') {
|
||||
$.post(
|
||||
'/projectsmanagement',
|
||||
{
|
||||
'action': 'setprojecttype',
|
||||
'id': $(this).attr('data'),
|
||||
'newtype': $(this).val()
|
||||
},
|
||||
null,
|
||||
'json'
|
||||
).done(function(response) {
|
||||
if ("error" in response) {
|
||||
alert(response.error);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
7
templates/register.html
Normal file
7
templates/register.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<h2>Zugang beantragen</h2>
|
||||
<div>
|
||||
<h3>Hinweis</h3>
|
||||
Alle Angaben außer dem Benutzernamen werden verschlüsselt gespeichert.
|
||||
</div>
|
||||
{{form}}
|
||||
<div>Sie können der Speicherung Ihrer Daten jederzeit Widersprechen. Eine einfache Email an <hier email> genügt.</div>
|
||||
1
templates/register_successful.html
Normal file
1
templates/register_successful.html
Normal file
@@ -0,0 +1 @@
|
||||
Der Zugang zum internen Bereich wurde beantragt. Wir bearbeiten den Antrag schnellstmöglich und melden uns dann.
|
||||
5
templates/resetaccountmailbody.html
Normal file
5
templates/resetaccountmailbody.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<p>Sehr geehrte/r {{name}},</p>
|
||||
<p>Vielen Dank für Ihre Anfrage. Ihr Benutzername lautet: <b>{{username}}</b>
|
||||
<p>Wenn Sie Ihr Paßwort zurücksetzen möchten, klicken hier: <a href="http{{protocol}}://{{server}}/setpassword?code={{code}}">http{{protocol}}://{{server}}/setpassword?code={{code}}</a>
|
||||
<p>Wenn Sie die Daten nicht angefordert haben, können Sie die Email ignorieren, es wird keine Änderungen an Ihrem Account geben.</p>
|
||||
<p>Vielen Dank<br/>
|
||||
4
templates/savemail.html
Normal file
4
templates/savemail.html
Normal file
@@ -0,0 +1,4 @@
|
||||
Datei unter dem Titel <b>{{saved-title}}</b> abgelegt.<br/>
|
||||
<a href="documents">Zur Dokumente-Übersicht</a><br/>
|
||||
<a href="emailinbox">Zur Email-Übersicht</a><br/>
|
||||
<a href="mail?uid={{uid}}">Zurück zur Email "{{subject}}"</a><br/>
|
||||
2
templates/setpassword.html
Normal file
2
templates/setpassword.html
Normal file
@@ -0,0 +1,2 @@
|
||||
{{errors}}
|
||||
{{form}}
|
||||
Reference in New Issue
Block a user