prepare intranet for first Dokploy deployment

This commit is contained in:
2026-08-26 12:59:51 +02:00
parent 5cfe688bdc
commit 29dfb85fef
1321 changed files with 227234 additions and 0 deletions
@@ -0,0 +1,124 @@
<?php /* Name: functions.php
Beschreibung: Generelle Funktionen
- Verwaltung von Schaltflächen
- Info-Panels (Boxen und Tabellen)
- Markdown-Formatierung
- Eigene Prüffunktionen */
// Schaltfläche: Ausgabe eines beliebigen Buttons
function display_button($p_key,$p_text,$align) {
global $p_buttons;
if (array_key_exists($p_key, $p_buttons)) {
$p_file = $p_buttons[$p_key];
echo "<div class='button_picto' style='justify-content:" . $align . ";'>";
echo file_get_contents($p_file);
if ($p_text) echo $p_text;
echo "</div>";
}
}
/** Infopanel mit einer zweispaltigen Tabelle
* @param string $title Überschrift des Panels
* @param array $data_array Strukturdaten mit Schlüssel und Wert
* @return string Die formatierte Zeichenkette.
*/
function infopanel_table($title, $data_array) {
// Ausgabe des Panels mit ZWEI Spalten
echo '<div class="info_panel_table">';
echo ' <table>';
echo ' <thead>';
echo ' <tr>';
echo ' <th colspan="2">';
echo ' <label>' . $title . '</label>';
echo ' </th>';
echo ' </tr>';
echo '</thead>';
echo ' <tbody id="tableBody">';
foreach ($data_array as $key => $value) {
echo ' <tr>';
echo ' <td>' . $key . '</td>';
echo ' <td>' . nvl($value, '---') . '</td>';
echo ' </tr>';
}
echo ' </tbody>';
echo ' </table>';
echo '</div>';
}
/** Markdown-Formatierung für Schnelleingaben
* @param string $text Die zu formatierende Zeichenkette.
* @return string Die formatierte Zeichenkette.
*/
function markdownFormat($text) {
$text = nl2br(rtrim($text, "\n")); // Umbrüche formatieren (<BR>)
$pattern = "/(\::::)( .+)/";
$replacement = "<li style='margin-left:40px; list-style: none;'>$2</li>"; // :::: {Einrücken 2. Ebene}
$text = preg_replace($pattern, $replacement, $text);
$pattern = "/(\::)( .+)/";
$replacement = "<li style='margin-left:20px; list-style: none;'>$2</li>"; // :: {Einrücken 1. Ebene}
$text = preg_replace($pattern, $replacement, $text);
$pattern = "/(\-\-)( .+)/";
$replacement = "<li style='margin-left:40px;'>$2</li>"; // -- {Listenelement 2. Ebene}
$text = preg_replace($pattern, $replacement, $text);
$pattern = "/(\-)( .+)/";
$replacement = "<li>$2</li>"; // - {Listenelement 1. Ebene}
$text = preg_replace($pattern, $replacement, $text);
$text = preg_replace("/\*\*(.*?)\*\*/s", "<b>$1</b>", $text); // **{Fett}**
$text = preg_replace("/\*(.*?)\*/s", "<i>$1</i>", $text); // *{Kursiv}*
$text = "<ul>" . $text . "</ul>"; // Listenumschluss
return $text;
}
/////////////////////////////////////////
// EIGENE PRÜFFUNKTIONEN //
/////////////////////////////////////////
/** Checken einer Zeichenkette auf das Vorhandensein.
* @param string|null $value Die zu überprüfende Zeichenkette.
* @param mixed $default Der Ersatzwert, der zurückgegeben wird, wenn die Zeichenkette leer ist.
* @return mixed Der ursprüngliche Wert oder der Ersatzwert.
*/
function nvl(string $value = null, $default) {
return isset($value) && $value !== '' ? $value : $default;
}
/** Gegenderte Anzeige eines Rollennamens (Datenbankwert → Anzeige).
* @param string $role Der Rollenname aus der Datenbank
* @return string Der gegenderte Anzeigename
*/
function genderRole(string $role): string {
static $map = [
'Admin' => 'Admin',
'Technik' => 'Technik',
'Entwickler' => 'Entwickler*in',
'Amtsgeschwister' => 'Amtsgeschwister',
'Diakon' => 'Diakon*in',
'DiakonIn' => 'Diakon*in',
'Priester' => 'Priester*in',
'PriesterIn' => 'Priester*in',
'Brandschutz' => 'Brandschutz',
'Brandschutzbeauftragter' => 'Brandschutz­beauftrage*r',
];
return $map[$role] ?? $role;
}
?>