All checks were successful
Deploy bericht / deploy (push) Successful in 13s
Anhaenge-Spalte: Kachelraster mit Server-Thumbnails statt Dateinamen-Liste (Bilder per GD, PDFs per PDF.js), Grossansicht per Klick, Auswahlreihenfolge sichtbar, Sortierung/Filter (Aufnahmezeit per eigenem EXIF-Parser, da im Prod-Container ohne exif-Modul), ziehbare Spaltenbreite, Kachelgroesse, Drag & Drop auf Seitenliste/Arbeitsflaeche/Raster-Plaetze. Arbeitstisch zeigt jetzt Kopf-, Inhalts- und Fussbereich passend zur echten Seitengeometrie (bericht_page_geometry()) - Editor und PDF-Erzeugung rechnen mit denselben Werten, das PDF setzt die Arbeitsflaeche 1:1 statt sie ein zweites Mal einzupassen. Neu: Bild einer Seite austauschen (auch einzelne Raster-Plaetze), Seiten mehrfach markieren und sammeln loeschen/duplizieren, Autosave mit Verlassen-Warnung, Tastenkuerzel, kein location.reload() mehr nach Hinzufuegen/Loeschen/Hochladen (ajax/fragments.php). Nebenbei behoben: dol_dir_list() ohne mode=1 (Dateigroesse leer), PDF.js-Worker-Pfad ohne /custom-Praefix, PDFs liefen als Download statt inline, Groessen-Select blieb leer, Mehrfach-Upload nahm nur die erste Datei, Race-Condition bei schnellem Seitenwechsel. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
51 lines
1.7 KiB
PHP
51 lines
1.7 KiB
PHP
<?php
|
|
/* Liefert Teilstuecke der Editor-Oberflaeche als HTML, damit nach dem Hinzufuegen,
|
|
* Loeschen oder Hochladen kein kompletter Seiten-Reload noetig ist (der warf den
|
|
* Editor jedes Mal auf Seite 1 zurueck und verwarf den Zoom).
|
|
*
|
|
* GET: berichtid, what = pages | attachments | both
|
|
* Antwort: { success, pages_html?, attachments_html?, page_count }
|
|
*/
|
|
require_once __DIR__.'/_inc.php';
|
|
|
|
global $db, $user, $langs, $conf;
|
|
|
|
$berichtid = GETPOSTINT('berichtid');
|
|
$what = GETPOST('what', 'alpha');
|
|
if (!in_array($what, array('pages', 'attachments', 'both'), true)) $what = 'both';
|
|
if (!$berichtid) bericht_ajax_fail('berichtid fehlt');
|
|
|
|
$bericht = new Bericht($db);
|
|
if ($bericht->fetch($berichtid) <= 0) bericht_ajax_fail('Bericht nicht gefunden', 404);
|
|
|
|
$langs->loadLangs(array('bericht@bericht', 'other'));
|
|
|
|
$out = array();
|
|
$pages = BerichtPage::fetchAllForBericht($db, $bericht->id);
|
|
$out['page_count'] = count($pages);
|
|
|
|
if ($what === 'pages' || $what === 'both') {
|
|
ob_start();
|
|
bericht_print_page_list($pages);
|
|
$out['pages_html'] = ob_get_clean();
|
|
}
|
|
|
|
if ($what === 'attachments' || $what === 'both') {
|
|
$parent = bericht_fetch_parent($db, $bericht->element_type, $bericht->fk_element);
|
|
if (!$parent) bericht_ajax_fail('Verknüpftes Objekt nicht gefunden', 404);
|
|
|
|
$attachments = bericht_collect_attachments($db, $parent, $bericht->element_type);
|
|
$used_paths = bericht_used_source_paths($db, $bericht->id);
|
|
|
|
$by_source = array();
|
|
foreach ($attachments as $a) {
|
|
$by_source[$a['source'].':'.$a['source_ref']][] = $a;
|
|
}
|
|
|
|
ob_start();
|
|
bericht_print_attachment_list($by_source, $used_paths);
|
|
$out['attachments_html'] = ob_get_clean();
|
|
$out['attachment_count'] = count($attachments);
|
|
}
|
|
|
|
bericht_ajax_ok($out);
|