Initialer Commit: Kundenverwaltung (PHP/Smarty)
Bestehende Codebasis als Ausgangsstand aufgenommen. - .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen; Verzeichnisstruktur ueber .gitkeep erhalten - .gitattributes: Zeilenenden normalisiert (LF im Repo), Binaerformate markiert - db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der Anwendung aus der externen Konfiguration statt hartkodiert aus der Datei; Passwort wird ueber eine temporaere Optionsdatei statt per Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet, Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
<div class='widthlimiter'>
|
||||
{if {$user.id}}
|
||||
<h2>Arbeitszeit für {$user.vname} {$user.nname}:</h2>
|
||||
{/if}
|
||||
<br />
|
||||
<form action="?action=zeitenadd&formsent=1&userid={$user.id}&id={$zeit.id}" name="mainform" method='POST'>
|
||||
<fieldset>
|
||||
<legend>Arbeitszeit Informationen:</legend>
|
||||
<label>Mitarbeiter:</label>
|
||||
<select name='user'>
|
||||
{html_options values=$optuserids output=$optusers selected="{$user.id|default:{$smarty.session.user}}"}
|
||||
</select><br />
|
||||
|
||||
<legend>Zeitraum:</legend>
|
||||
<br />
|
||||
<label>Von:</label><input name='datetime_kommen' id='datetime_kommen' pattern='\d{ldelim}2{rdelim}.\d{ldelim}2{rdelim}.\d{ldelim}4{rdelim}\s\um\s\d{ldelim}2{rdelim}\:\d{ldelim}2{rdelim}' value='{$zeit.kommen|mysql_date_to_dispdate}' /><br />
|
||||
<label>Bis:</label><input name='datetime_gehen' id='datetime_gehen' pattern='\d{ldelim}2{rdelim}.\d{ldelim}2{rdelim}.\d{ldelim}4{rdelim}\s\um\s\d{ldelim}2{rdelim}\:\d{ldelim}2{rdelim}' value='{$zeit.gehen|mysql_date_to_dispdate}' /><br />
|
||||
<label>Pause:</label><input name='pause' id='pause' pattern='\d{ldelim}2{rdelim}:\d{ldelim}2{rdelim}' value='{$zeit.pause_mins|mins_to_disppause}' /><br />
|
||||
|
||||
</fieldset>
|
||||
<input type='submit' value='Speichern' />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$('#datetime_kommen').datetimepicker({
|
||||
minuteGrid: 15,
|
||||
hourGrid: 5,
|
||||
stepMinute: 1,
|
||||
dateFormat: 'dd.mm.yy',
|
||||
timeFormat: 'hh:mm',
|
||||
separator: ' um ',
|
||||
onClose: function(dateText, inst) {
|
||||
var endDateTextBox = $('#datetime_end');
|
||||
if (endDateTextBox.val() != '') {
|
||||
var testStartDate = new Date(dateText);
|
||||
var testEndDate = new Date(endDateTextBox.val());
|
||||
if (testStartDate > testEndDate)
|
||||
endDateTextBox.val(dateText);
|
||||
}
|
||||
else {
|
||||
endDateTextBox.val(dateText);
|
||||
}
|
||||
},
|
||||
onSelect: function (selectedDateTime){
|
||||
var start = $(this).datetimepicker('getDate');
|
||||
$('#datetime_end').datetimepicker('option', 'minDate', new Date(start.getTime()));
|
||||
}
|
||||
});
|
||||
$('#datetime_gehen').datetimepicker({
|
||||
minuteGrid: 15,
|
||||
hourGrid: 5,
|
||||
stepMinute: 1,
|
||||
dateFormat: 'dd.mm.yy',
|
||||
timeFormat: 'hh:mm',
|
||||
separator: ' um ',
|
||||
onClose: function(dateText, inst) {
|
||||
var startDateTextBox = $('#datetime_start');
|
||||
if (startDateTextBox.val() != '') {
|
||||
var testStartDate = new Date(startDateTextBox.val());
|
||||
var testEndDate = new Date(dateText);
|
||||
if (testStartDate > testEndDate)
|
||||
startDateTextBox.val(dateText);
|
||||
}
|
||||
else {
|
||||
startDateTextBox.val(dateText);
|
||||
}
|
||||
},
|
||||
onSelect: function (selectedDateTime){
|
||||
var end = $(this).datetimepicker('getDate');
|
||||
$('#datetime_start').datetimepicker('option', 'maxDate', new Date(end.getTime()) );
|
||||
}
|
||||
});
|
||||
|
||||
$('#pause').timepicker({
|
||||
minuteGrid: 15,
|
||||
hourGrid: 5,
|
||||
stepMinute: 1,
|
||||
timeFormat: 'hh:mm',
|
||||
timeOnlyTitle: "Dauer:",
|
||||
timeText: "Pause:"
|
||||
});
|
||||
|
||||
</script>
|
||||
Reference in New Issue
Block a user