feat: Implement admin-only specialties management interface
Playwright Tests / test (push) Canceled after 0s

- Added MailerAttachmentPolicy for validating email attachments against server rules.
- Introduced fis.specialties.js for managing hidden maintenance actions via an admin interface.
- Created fis.specialties.scss for styling the specialties management UI.
- Added German localization for specialties management in fis.specialties_txt_de.js.
- Developed CSS for specialties management in fis.specialties.css.
- Implemented server-side stored procedure fds__admin_backupAndClearInvoiceFile for backing up and clearing invoice files.
- Created fds__invoice_file_backups table to store backup records of invoice files.
This commit is contained in:
Stefan
2026-09-17 21:17:23 +02:00
parent 86f6a60860
commit 249a945f5e
59 changed files with 2720 additions and 457 deletions
@@ -0,0 +1,99 @@
.spcfrm {
padding: 1.5rem;
.spc_intro {
margin-bottom: 1rem;
padding: 0.5rem 0.6rem;
background: #f3f6fb;
border-left: 3px solid $fuchs_blau;
font-size: 0.9rem;
color: #444;
}
.spc_grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(24rem, 1fr));
gap: 1rem;
align-items: start;
}
.spc_card {
border: 1px solid #d5d5d5;
border-radius: 0.4rem;
background: #fff;
box-shadow: 0 1px 3px rgba(50, 50, 50, 0.12);
overflow: hidden;
}
.spc_card_hd {
padding: 0.6rem 0.85rem;
background: $fuchs_blau;
color: #fff;
font-weight: bold;
}
.spc_card_bd {
padding: 0.75rem 0.85rem;
}
.spc_card_desc {
font-size: 0.88rem;
color: #555;
margin-bottom: 0.75rem;
}
.spc_form {
.spc_field {
display: flex;
flex-direction: column;
gap: 0.2rem;
margin-bottom: 0.6rem;
label { font-size: 0.85rem; color: #333; font-weight: 600; }
input {
padding: 0.3rem 0.45rem;
border: 1px solid #bbb;
border-radius: 0.25rem;
font-size: 0.95rem;
&:invalid { border-color: #c0341d; }
}
.spc_field_note { font-size: 0.78rem; color: #777; }
}
.spc_actions { text-align: right; margin-top: 0.25rem; }
}
.spc_btn {
cursor: pointer;
border-radius: 0.28rem;
padding: 0.3rem 0.8rem;
font-size: 0.9rem;
border: 1px solid #ababab;
background-color: #fff;
color: #333;
&.spc_btn_primary {
background-color: $fuchs_akzent;
border-color: darken($fuchs_akzent, 8%);
color: #fff;
}
&:disabled { opacity: 0.6; cursor: default; }
}
.spc_result {
margin-top: 0.75rem;
padding: 0.5rem 0.6rem;
border-radius: 0.25rem;
font-size: 0.88rem;
word-break: break-word;
.spc_result_line + .spc_result_line { margin-top: 0.25rem; }
&.spc_result_ok { background: #e2f3da; color: #2f6d18; }
&.spc_result_err { background: #f3ded9; color: #c0341d; }
}
}