Add row context menus, fix glyphicon copy corruption, combine CC email editing

- Fuchs/gulpfile.js: pass encoding:false to gulp.src() in the copy task —
  vinyl-fs otherwise UTF-8-decodes binary files by default, which was
  silently corrupting the glyphicons webfont (and any other binary asset
  copyconfig.json matches) on every `gulp copy`/`gulp all` run.
- Invoice/reminder editor: replace the row's flat action icons (edit/
  delete/insert/set-price) with a single context button opening a
  dropdown menu, reusing the existing $ocms.menu toolbar mechanism.
- Fix "-1" leaking into the Pos. column for Text/Title rows: $inv.rrw's
  `dta.position || dta.SortOrder` fallback treated the numbering's
  intentional empty string as unset and fell back to SortOrder (-1 for
  such rows); now only a genuinely uncomputed position falls back.
- Zusatzempfänger (CC) is now edited together with the main invoice
  email in one combined dialog ($inv.emailFrm/$inv.eEmail), wired into
  all three entry points (create, continue, storno) instead of a
  separate hover-revealed row with its own edit target.
- Add tooltips to every row/header edit control, including several that
  had none before (header field pencils, the request/section title
  edit button), phrased as object+verb ($rct.frmTT).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-10 19:38:03 +02:00
co-authored by Claude Sonnet 5
parent 071982caec
commit c182d4fd69
12 changed files with 447 additions and 131 deletions
+15 -2
View File
@@ -31,6 +31,9 @@
sV: 'USt festlegen',
cD: 'Löschen?',
mR: 'Zeile verschieben',
ctxM: 'Weitere Aktionen',
noteToggle: 'Notiz ein-/ausblenden',
sectionTitleEditTT: 'Auftragsbezeichnung ändern',
svcPart: 'Service-Anteil',
vat: 'Umsatzsteuer',
combP: 'Positionen zusammenfassen',
@@ -62,11 +65,21 @@
, '-': '-'
}, invHR: ['Pos.', 'Menge', 'Artikelbezeichnung', 'VK', 'Summe']
, frm: {
invoiceaddress: 'Adresse'
invoicetitle: 'Titel'
, invoiceaddress: 'Adresse'
, loc: 'Leistungsort / Lieferadresse'
, invoiceemail: 'Email'
, invoiceemailcc: 'Zusatzempfänger (CC)'
, provisionperiod: 'Leistungsdatum / -zeitraum'
}
/* Tooltip text for each header-field pencil — object+verb phrasing ("<was> <tun>"),
distinct from frm[] above (used for dialog titles / field labels, which stay short nouns). */
, frmTT: {
invoicetitle: 'Rechnungstitel ändern'
, invoiceaddress: 'Rechnungsempfänger-Adresse ändern'
, loc: 'Leistungsort oder Lieferadresse ändern'
, invoiceemail: 'Email-Adresse ändern und zusätzliche Email-Empfänger festlegen'
, provisionperiod: 'Leistungsdatum oder -zeitraum ändern'
}
}, $rcol = {
req: new fields_definition('Auftrag', 'Aufträge', [