diff --git a/mod_pdf_tree/.DS_Store b/mod_pdf_tree/.DS_Store
index e70023a..b7184eb 100644
Binary files a/mod_pdf_tree/.DS_Store and b/mod_pdf_tree/.DS_Store differ
diff --git a/mod_pdf_tree/Archiv.zip b/mod_pdf_tree/Archiv.zip
index 8c02f50..841218f 100644
Binary files a/mod_pdf_tree/Archiv.zip and b/mod_pdf_tree/Archiv.zip differ
diff --git a/mod_pdf_tree/helper.php b/mod_pdf_tree/helper.php
index b8b0309..9c37c26 100644
--- a/mod_pdf_tree/helper.php
+++ b/mod_pdf_tree/helper.php
@@ -41,48 +41,60 @@ class ModEisAnzeigeHelper
* Hauptfunktion zum Rendern des Baums
*/
public static function renderTree(array $items, int $parentId = null): string
- {
- if (!isset($items[$parentId])) {
- return '';
- }
-
- $html = '
';
-
- foreach ($items[$parentId] as $item) {
- $isFolder = (bool) $item['is_folder'];
- $rawName = $item['title'] ?: $item['name'];
- $fileId = (int) $item['id'];
-
- // Dateiendung .pdf entfernen
- $displayName = preg_replace('/\.pdf$/i', '', $rawName);
- $displayName = htmlspecialchars($displayName);
-
- if ($isFolder) {
- $fileCount = self::countFilesRecursive($items, $item['id']);
- $html .= '- ';
- $html .= '📁 ' . $displayName . ' (' . $fileCount . ')';
- $html .= self::renderTree($items, $item['id']);
- $html .= '
';
- } else {
- $link = Route::_('index.php?option=com_eis&task=download.download&id=' . $fileId);
-
- // Tooltip mit Dateigröße
- $tooltip = '';
- if (!empty($item['path']) && file_exists($item['path'])) {
- $size = filesize($item['path']);
- $tooltip = ' title="Größe: ' . self::formatFileSize($size) . '"';
- }
-
- $html .= '- ';
- $html .= '📄 ' . $displayName . '';
- $html .= '
';
- }
- }
-
- $html .= '
';
- return $html;
+{
+ if (!isset($items[$parentId])) {
+ return '';
}
+ $html = '';
+
+ foreach ($items[$parentId] as $item) {
+ $isFolder = (bool) $item['is_folder'];
+ $rawName = $item['title'] ?: $item['name'];
+ $fileId = (int) $item['id'];
+
+ // Dateiendung .pdf entfernen und escapen
+ $displayName = preg_replace('/\.pdf$/i', '', $rawName);
+ $displayName = htmlspecialchars($displayName, ENT_QUOTES, 'UTF-8');
+
+ if ($isFolder) {
+ $fileCount = self::countFilesRecursive($items, $item['id']);
+
+ // WICHTIG: Toggle-Element einfügen – dein JS hängt hier dran
+ $html .= '- ';
+ $html .= '▶ ';
+ $html .= '📁 ' . $displayName . ' (' . (int) $fileCount . ')';
+
+ // Kindknoten
+ $html .= self::renderTree($items, $item['id']);
+ $html .= '
';
+ } else {
+ $link = Route::_('index.php?option=com_eis&task=download.download&id=' . $fileId);
+
+ // Tooltip + (neu) inline-Anzeige der Dateigröße, falls der Pfad existiert
+ $tooltip = '';
+ $sizeStr = '';
+ if (!empty($item['path']) && is_file($item['path'])) {
+ $size = @filesize($item['path']);
+ if ($size !== false) {
+ $formatted = self::formatFileSize((int) $size);
+ $tooltip = ' title="Größe: ' . $formatted . '"';
+ // Sichtbar neben dem Dateinamen anzeigen
+ //$sizeStr = ' (' . $formatted . ')';
+ }
+ }
+
+ $html .= '- ';
+ //$html .= '📄 ' . $displayName . '' . $sizeStr;
+ $html .= '📄 ' . $displayName . '';
+ $html .= '
';
+ }
+ }
+
+ $html .= '
';
+ return $html;
+}
+
/**
* Zählt alle PDF-Dateien unterhalb eines Ordners rekursiv
*/
diff --git a/mod_pdf_tree/tmpl/default.php b/mod_pdf_tree/tmpl/default.php
index e5cd84a..444a9e7 100644
--- a/mod_pdf_tree/tmpl/default.php
+++ b/mod_pdf_tree/tmpl/default.php
@@ -55,6 +55,7 @@
display: inline-block;
user-select: none;
}
+.pdf-tree .meta { color: #666; }
/* Optionale visuelle Trennung bei Dateien */
.file-link {