Files
Kundenverwaltung/pics/uniform/inputbg.svg
T
adminandClaude Opus 5 e2124220e5 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>
2026-08-28 16:41:18 +02:00

68 lines
4.1 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="500px" height="25px" viewBox="0 0 500 25" enable-background="new 0 0 500 25" xml:space="preserve">
<g opacity="0.5">
<defs>
<filter id="Adobe_OpacityMaskFilter" filterUnits="userSpaceOnUse" x="-0.131" y="-0.166" width="500.11" height="25.042">
<feFlood style="flood-color:white;flood-opacity:1" result="back"/>
<feBlend in="SourceGraphic" in2="back" mode="normal"/>
</filter>
</defs>
<mask maskUnits="userSpaceOnUse" x="-0.131" y="-0.166" width="500.11" height="25.042" id="SVGID_1_">
<g filter="url(#Adobe_OpacityMaskFilter)">
<image overflow="visible" width="505" height="30" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
EAMCAwYAAAJMAAAEEgAABl7/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIAB4B+QMBIgACEQEDEQH/
xACHAAEBAAMBAQAAAAAAAAAAAAAHAAIFBgEEAQEAAAAAAAAAAAAAAAAAAAAAEAABBQEBAQEAAwEA
AAAAAAAAAgMTFAYXAQUEYBEHUBEAAgEFAQABAgMJAQAAAAAAAAECMZEy0pM0ERAhUbEiUEESUnID
EwQUJBIBAAAAAAAAAAAAAAAAAAAAYP/aAAwDAQACEQMRAAAA5jo/EQP5Bg+kGD6QYPpBg+kGD6QY
PpBg+kGD6QYPpBg+kGD6QYPpBg+kGD6QYPpBg+kGD6QYPpBg+kGD6QYPpBg+kGD6QYPpBg+kGD6Q
YPpBg+kGD7BE8B7Qo5wdwiDO/EmOYRo5hGjmEaOYRo5hGjmEaOYRo5hGjmEaOYRo5hGjmEaOYRo5
hGjmEaOYRo5hGjmEaOYRo5hGjmEaOYRo5hGjmEaOYRo5hGjmEaOYRo5hGxO8T7jvd6Q//9oACAEC
AAEFAP4B/9oACAEDAAEFAP4B/9oACAEBAAEFAPifE8+n4j/P21ec8bOeNnPGznjZzxs542c8bOeN
nPGznjZzxs542c8bOeNnPGznjZzxs542c8bOeNnPGznjZzxs542c8bOeNnPGznjZzxs542c8bOeN
nPGznjZzxs542c8bOeNnPGznjZzxs542c8bOeNnPGznjZzxs542c8bOeNnPGznjZzxs542c8bOeN
nPGznjZzxsX/AJ82nz7Oe8+c2f5+jxSPPPPPP+37556bttKfymCfS2hDzavJEEiCRBIgkQSIJEEi
CRBIgkQSIJEEiCRBIgkQSIJEEiCRBIgkQSIJEEiCRBIgkQSIJEEiCRBIgkQSIJEEiCRBIgkQSIJE
EiCRBIgkQSIJEEiCRBIgkQSIJEEiCRBIgkQKebT5uP0Ic/MfHc+qjxH6dj/VraFraFraFraFraFr
aFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFra
FraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraFraF
raFraFraC/07L+vrufZUg//aAAgBAgIGPwAB/9oACAEDAgY/AAH/2gAIAQEBBj8A+X81+PsfLcrs
rK7KyuysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK7Kyu
ysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK
7KyuysrsrK7KyuysrsrK7KyuysrsrK7KyuysrsrK7Kyuz5+ZXZKa+ft+P0fz/M/zPhftz7k2vw+n
xJ/H6n+YmpIyRkjJGSMkZIyRkjJGSMkZIyRkjJGSMkZIyRkjJGSMkZIyRkjJGSMkZIyRkjJGSMkZ
IyRkjJGSMkZIyRkjJGSMkZIyRkjJGSMkZIyRkjJGSMkfLkiai/n7fT/w/wBr/Ivn8UvzZ+n/AE21
/XDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+
kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q
2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY
8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjxPpDY8T6Q2PE+kNjx
PpDY8T6Q2PE+kNj9X+m0v64bD/7f7P8Ajj+9/wASf5P6f//Z" transform="matrix(1 0 0 1 -3 -3)">
</image>
</g>
</mask>
<g mask="url(#SVGID_1_)">
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="249.9233" y1="0.4937" x2="249.9233" y2="24.884" gradientTransform="matrix(1 0 0 -1 0 25.085)">
<stop offset="0" style="stop-color:#E5E1DF"/>
<stop offset="0" style="stop-color:#EEEDEE"/>
<stop offset="0" style="stop-color:#F1F1F2"/>
<stop offset="0" style="stop-color:#FFFFFF"/>
<stop offset="0.0333" style="stop-color:#F9F9FA"/>
<stop offset="0.0778" style="stop-color:#E8EAEA"/>
<stop offset="0.1284" style="stop-color:#CCD0D1"/>
<stop offset="0.1742" style="stop-color:#ADB3B5"/>
<stop offset="0.3315" style="stop-color:#E2E4E5"/>
<stop offset="0.4944" style="stop-color:#F1F1F2"/>
<stop offset="0.8319" style="stop-color:#ACB1B5"/>
<stop offset="0.9157" style="stop-color:#9AA0A5"/>
</linearGradient>
<rect x="-0.131" y="-0.166" fill="url(#SVGID_2_)" width="500.11" height="25.042"/>
</g>
</g>
</svg>