* GPL v3+ * * Admin-Setup für das Bericht-Modul. * Verwaltung von ODT-Templates + globalen Konstanten. */ $res = 0; if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; $tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i--; $j--; } if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; if (!$res && file_exists("../../main.inc.php")) $res = @include "../../main.inc.php"; if (!$res && file_exists("../../../main.inc.php")) $res = @include "../../../main.inc.php"; if (!$res) die("Include of main fails"); require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once __DIR__.'/../lib/bericht.lib.php'; if (!$user->admin && !$user->hasRight('bericht', 'admin')) accessforbidden(); $langs->loadLangs(array("admin", "bericht@bericht")); $action = GETPOST('action', 'alpha'); $templates_dir = DOL_DATA_ROOT.'/bericht/templates'; if (!is_dir($templates_dir)) { dol_mkdir($templates_dir); } // --- Aktionen --- if ($action === 'upload_template' && !empty($_FILES['template_file']['name'])) { $name = dol_sanitizeFileName($_FILES['template_file']['name']); if (!preg_match('/\.odt$/i', $name)) { setEventMessages('Nur .odt-Dateien erlaubt', null, 'errors'); } else { $dest = $templates_dir.'/'.$name; if (move_uploaded_file($_FILES['template_file']['tmp_name'], $dest)) { setEventMessages($langs->trans("BerichtSetupTemplateUploaded"), null, 'mesgs'); } else { setEventMessages('Upload fehlgeschlagen', null, 'errors'); } } header("Location: ".$_SERVER['PHP_SELF']); exit; } if ($action === 'delete_template') { $name = dol_sanitizeFileName(GETPOST('name', 'alphanohtml')); $path = $templates_dir.'/'.$name; if ($name && file_exists($path)) { @unlink($path); setEventMessages($langs->trans("BerichtSetupTemplateDeleted"), null, 'mesgs'); } header("Location: ".$_SERVER['PHP_SELF']); exit; } if ($action === 'save_const') { $consts = array( 'BERICHT_DEFAULT_TEMPLATE' => GETPOST('default_template', 'alphanohtml'), 'BERICHT_TAB_ON_INVOICE' => GETPOST('tab_invoice', 'int') ? '1' : '0', 'BERICHT_TAB_ON_ORDER' => GETPOST('tab_order', 'int') ? '1' : '0', 'BERICHT_TAB_ON_PROPAL' => GETPOST('tab_propal', 'int') ? '1' : '0', 'BERICHT_BURN_ANNOTATIONS' => GETPOST('burn', 'int') ? '1' : '0', 'BERICHT_LIBREOFFICE_BIN' => GETPOST('lobin', 'alphanohtml'), ); foreach ($consts as $k => $v) { dolibarr_set_const($db, $k, $v, 'chaine', 0, '', $conf->entity); } setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); header("Location: ".$_SERVER['PHP_SELF']); exit; } // --- Anzeige --- llxHeader('', $langs->trans("BerichtSetup")); $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("BerichtSetup"), $linkback, 'title_setup'); print ''.$langs->trans("BerichtSetupDescription").'

'; // --- Templates --- print '
'; print '

'.$langs->trans("BerichtSetupTemplates").'

'; print '

'.$langs->trans("BerichtSetupTemplatesDesc").'

'; $templates = bericht_list_templates(); if (empty($templates)) { print '
'.$langs->trans("BerichtSetupNoTemplates").'
'; } else { print ''; print ''; foreach ($templates as $tpl) { $path = $templates_dir.'/'.$tpl; print ''; print ''; print ''; print ''; print ''; } print '
'.$langs->trans("File").''.$langs->trans("Size").''.$langs->trans("Action").'
📄 '.dol_escape_htmltag($tpl).''.dol_print_size(filesize($path)).''; print ''.$langs->trans("Delete").''; print '
'; } print '
'; print '
'; print ''; print ''; print ''; print ''; print '
'; print '

'; // --- Platzhalter-Hinweis --- print '
'; print '

'.$langs->trans("BerichtPlaceholdersTitle").'

'; print ''; $placeholders = array( '{auftragsnummer}' => 'Aus extrafield options_auftragsnummer der Rechnung', '{angebotsnummer}' => 'Aus extrafield options_angebotsnummer', '{rechnungsnummer}' => 'Rechnungsnummer (ref)', '{kunde_name}' => 'Name des Kunden (Société)', '{kunde_adresse}' => 'Adresse des Kunden (mehrzeilig)', '{datum}' => 'Heutiges Datum', '{beschreibung}' => 'Auftragsbeschreibung (extrafield)', '{hinweis}' => 'Hinweis (extrafield)', '{bericht_titel}' => 'Titel des Berichts', '{ersteller}' => 'Login-Name des Erstellers', ); foreach ($placeholders as $k => $desc) { print ''; } print '
'.$k.''.$desc.'
'; print '

'; // --- Konstanten --- print '
'; print '

'.$langs->trans("BerichtSetupOptions").'

'; print '
'; print ''; print ''; print ''; print ''; $cb = function ($name, $key, $default) { $v = getDolGlobalString($key, $default) ? 'checked' : ''; return ''; }; print ''; print ''; print ''; print ''; print ''; print '
'.$langs->trans("BerichtSetupDefaultTemplate").''; print '
'.$langs->trans("BerichtSetupTabInvoice").''.$cb('tab_invoice', 'BERICHT_TAB_ON_INVOICE', '1').'
'.$langs->trans("BerichtSetupTabOrder").''.$cb('tab_order', 'BERICHT_TAB_ON_ORDER', '1').'
'.$langs->trans("BerichtSetupTabPropal").''.$cb('tab_propal', 'BERICHT_TAB_ON_PROPAL', '1').'
'.$langs->trans("BerichtSetupBurnAnnotations").''.$cb('burn', 'BERICHT_BURN_ANNOTATIONS', '1').'
'.$langs->trans("BerichtSetupLibreOfficeBin").''; print ''; print '
'; print '
'; print '
'; print '
'; llxFooter(); $db->close();