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:
2026-08-28 16:41:18 +02:00
co-authored by Claude Opus 5
commit e6eb55bc4b
2225 changed files with 1070301 additions and 0 deletions
@@ -0,0 +1,406 @@
#LivespellDialogBody {
color: #333333;
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
font-size:11px;
background-color: #EFEFEF;
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
#ajaxLoader{
}
#multiLangForm{
display:none;
}
#multiLangForm{
display:none;
}
#fldTextInput{
width:330px;
height:45px;
position:absolute;
top:5px;
left:5px;
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
font-size:12px;
border:1px solid #ccc;
}
#TextShow{
cursor:text;
padding:2px;
width:330px;
height:45px;
position:absolute;
top:5px;
left:5px;
/*font-family:Verdana, Arial, Helvetica, sans-serif;*/
font-size:12px;
z-index:2;
overflow:auto;
background-color:#FFFFFF;
border:1px solid #ccc;
}
#lMeaning{
display:none;
position:absolute;
top:213px;
right:121px;
text-align:right;
}
#multiLangForm{
display:none;
position:absolute;
top:15px;
left:15px;
}
#fldLanguageMultiple{
width:438px;
/*font-family:Verdana, Arial, Helvetica, sans-serif;*/
font-size:11px;
}
#lMeaning a{
color:#009;
}
#lMeaning a:active{
color:#009;
}
#fldSuggestions{
width:336px;
height:92px;
position:absolute;
top:117px;
left:5px;
/*font-family:Verdana, Arial, Helvetica, sans-serif;*/
font-size:11px;
}
#fldLanguage{
width:211px;
position:absolute;
top:215px;
left:6px;
/*font-family:Verdana, Arial, Helvetica, sans-serif;*/
font-size:11px;
}
#highlight{
font-weight:bold;
color:#880000;
}
#highlightGrammar{
font-weight:bold;
color:#008800;
}
#fldTextInputLab{
position:absolute;
top:56px;
left:6px;
z-index:1;
}
#SuggestionsLab{
position:absolute;
top:97px;
left:6px;
z-index:1;
}
#fldLanguageLab{
position:absolute;
top:231px;
left:10px;
z-index:1;
display:none;
}
#CheckGrammarLab{
position:absolute;
top:257px;
left:122px;
z-index:1;
}
#optSentence{
margin-right:1px;
}
#btnIgnore{
position:absolute;
top:33px;
left:352px;
width:100px;;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#btnUndoManualEdit{
position:absolute;
top:33px;
left:352px;
width:100px;;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
z-index:2;
display:none;
}
#btnIgnoreAll{
position:absolute;
top:143px;
left:352px;
width:100px;
;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#btnAddToDict{
position:absolute;
top:168px;
left:352px;
width:100px;
;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#btnChange{
position:absolute;
top:5px;
left:352px;
width:100px;;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#btnChangeAll{
position:absolute;
top:116px;
left:352px;
width:100px;
;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#btnAutoCorrect{
position:absolute;
top:194px;
left:352px;
width:100px;
;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#btnCancel{
display:none;lMeaning
position:absolute;
top:256px;
left:352px;
width:100px;;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#btnUndo{
position:absolute;
top:220px;
left:353px;
width:100px;
;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#awayMessage
{
display:none;
color: #999999;
position:absolute;
text-align: center;
top:40%;
left:0%;
width:100%;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:12px;
font-weight:bold;
}
#btnShowOptions{
position:absolute;
top:256px;
left:9px;
width:100px;
;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#MainForm{
display:block;
}
#doneForm{
display:none;
}
#optForm{
display:none;
}
#tOpt{
position:absolute;
top:15px;
left:12px;
z-index:1;
}
#tOla{
position:absolute;
top:170px;
left:12px;
z-index:1;
}
#btnOptionsOK{
position:absolute;
top:256px;
left:352px;
width:100px;;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
z-index:2;
}
#btnOptionsCancel{
position:absolute;
top:256px;
left:242px;
width:100px;;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#btnLangOK{
position:absolute;
top:241px;
left:337px;
width:100px;;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
z-index:2;
}
#btnLangCancel{
position:absolute;
top:241px;
left:226px;
width:100px;;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}
#btnResetDict{
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
width:80px;
}
#btnResetAutoCorrect{
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
width:80px;
}
#btnResetDictLab{
position:absolute;
top:115px;
left:100px;
z-index:1;
}
#btnResetAutoCorrectLab{
position:absolute;
top:140px;
left:100px;
z-index:1;
}
#optCaseSensitiveLab{
position:absolute;
top:15px;
left:95px;
z-index:1;
}
#optAllCapsLab{
position:absolute;
top:35px;
left:95px;
z-index:1;
}
#optNumericLab{
position:absolute;
top:55px;
left:95px;
z-index:1;
}
#optSentenceLab{
position:absolute;
top:75px;
left:95px;
z-index:1;
}
#optLanguages{
width:211px;
height:82px;
position:absolute;
top:170px;
left:95px;
/*font-family:Verdana, Arial, Helvetica, sans-serif;*/
font-size:11px;
}
#tSum{
position:absolute;
top:15px;
left:15px;
}
#sdivider{
width:100%;
position:absolute;
top:35px;
}
#tWrd{
position:absolute;
top:75px;
left:15px;
}
#tDoc{
position:absolute;
top:55px;
left:15px;
}
#tEdi{
position:absolute;
top:95px;
left:15px;
}
#btnAllDone{
position:absolute;
top:256px;
left:352px;
width:100px;;
font-family:Tahoma, Arial, Helvetica, sans-serif;
font-size:11px;
height:22px;
}