All checks were successful
Deploy bericht / deploy (push) Successful in 1s
Dolibarr-Modul für Arbeitsberichte aus Rechnungs-Anhängen mit Browser-PDF-Editor. - Reiter "Bericht" auf Rechnungen, Aufträgen und Angeboten - Anhänge-Browser inkl. verknüpfter Objekte (Auftrag → Rechnung) - PDF.js + Fabric.js Browser-Editor: Pfeile, Kreise, Rechtecke, Freihand, Text - SortableJS Seiten-Verwaltung mit Drag&Drop - ODT-Deckblatt mit Platzhaltern, Templates im Admin verwaltbar - TCPDF + FPDI Finalisierung mit eingebrannten Annotationen - ECM-Verknüpfung: PDF erscheint unter Verknüpfte Dokumente - Auftragsnummer aus existierendem Extrafield options_auftragsnummer - Mehrere Berichte pro Dokument - Beim Aktivieren werden vorhandene Extrafields nicht überschrieben Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26 lines
975 B
PHP
26 lines
975 B
PHP
<?php
|
|
/* Speichert Fabric.js-JSON für eine Seite + ggf. Notiz.
|
|
* POST: pageid, fabric_json, note, token
|
|
*/
|
|
require_once __DIR__.'/_inc.php';
|
|
|
|
global $db, $user;
|
|
if (!$user->hasRight('bericht', 'write')) bericht_ajax_fail('Permission denied', 403);
|
|
|
|
$pageid = (int) ($_POST['pageid'] ?? 0);
|
|
if (!$pageid) bericht_ajax_fail('pageid fehlt');
|
|
|
|
$fabric = (string) ($_POST['fabric_json'] ?? '');
|
|
$note = (string) ($_POST['note'] ?? '');
|
|
|
|
// Page laden
|
|
$res = $db->query("SELECT rowid FROM ".$db->prefix()."bericht_page WHERE rowid = ".((int) $pageid));
|
|
if (!$res || !$db->fetch_object($res)) bericht_ajax_fail('Page nicht gefunden', 404);
|
|
|
|
$sql = "UPDATE ".$db->prefix()."bericht_page SET "
|
|
."fabric_json = ".($fabric !== '' ? "'".$db->escape($fabric)."'" : "NULL").","
|
|
."note = ".($note !== '' ? "'".$db->escape($note)."'" : "NULL")
|
|
." WHERE rowid = ".((int) $pageid);
|
|
if (!$db->query($sql)) bericht_ajax_fail('DB-Fehler: '.$db->lasterror());
|
|
|
|
bericht_ajax_ok();
|