From 33fa9c8f94f69975d355bfe4a1839d5912c10cf9 Mon Sep 17 00:00:00 2001 From: Thomas Spohr Date: Wed, 13 Aug 2025 08:35:35 +0200 Subject: [PATCH] Letzte Version --- com_eis/Archiv.zip | Bin 24078 -> 0 bytes com_eis/eis.xml | 16 ++- com_eis/eis.zip | Bin 0 -> 12539 bytes com_eis/services/provider.php | 10 ++ .../src/Controller/DownloadController.php | 62 ++++++++++ com_eis/src/View/Main/HtmlView.php | 1 - mod_pdf_tree/Archiv.zip | Bin 5359 -> 0 bytes mod_pdf_tree/helper.php | 29 +++-- mod_pdf_tree/mod_eis_anzeige.zip | Bin 0 -> 4231 bytes mod_pdf_tree/tmpl/default.php | 115 ++++++++---------- 10 files changed, 149 insertions(+), 84 deletions(-) delete mode 100644 com_eis/Archiv.zip create mode 100644 com_eis/eis.zip create mode 100644 com_eis/site/src/Controller/DownloadController.php delete mode 100644 mod_pdf_tree/Archiv.zip create mode 100644 mod_pdf_tree/mod_eis_anzeige.zip diff --git a/com_eis/Archiv.zip b/com_eis/Archiv.zip deleted file mode 100644 index f9d4b23dc602417c543ac4485695cab9fae08e2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24078 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 diff --git a/com_eis/eis.xml b/com_eis/eis.xml index fff3d50..71da673 100644 --- a/com_eis/eis.xml +++ b/com_eis/eis.xml @@ -5,17 +5,23 @@ install/sql/mysql/install.utf8.sql - - - install/sql/mysql/uninstall.mysql.utf8.sql - - + + + install/sql/mysql/uninstall.mysql.utf8.sql + + com_eis 2025-07-23 Thomas Spohr powert by OpenAI 1.0.0 EIS Minimal-Komponente EIS\Component\EIS + + + src + + + COM_EIS_MENU diff --git a/com_eis/eis.zip b/com_eis/eis.zip new file mode 100644 index 0000000000000000000000000000000000000000..c26791c28155a81d65b01e1e4eb6eef87b88d2a3 GIT binary patch literal 12539 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 literal 0 HcmV?d00001 diff --git a/com_eis/services/provider.php b/com_eis/services/provider.php index 745360f..e081340 100644 --- a/com_eis/services/provider.php +++ b/com_eis/services/provider.php @@ -1,4 +1,5 @@ registerServiceProvider(new ComponentDispatcherFactory('\\EIS\\Component\\EIS')); $container->registerServiceProvider(new MVCFactory('\\EIS\\Component\\EIS')); $container->registerServiceProvider(new RouterFactory('\\EIS\\Component\\EIS')); + // DownloadController explizit registrieren + $container->set( + DownloadController::class, + fn(Container $c) => new DownloadController() + ); + + // Komponentenschnittstelle $container->set( ComponentInterface::class, static fn(Container $c) => new MVCComponent( diff --git a/com_eis/site/src/Controller/DownloadController.php b/com_eis/site/src/Controller/DownloadController.php new file mode 100644 index 0000000..7113aca --- /dev/null +++ b/com_eis/site/src/Controller/DownloadController.php @@ -0,0 +1,62 @@ +input; + + // Nur für eingeloggte Benutzer + if ($user->guest) { + $app->enqueueMessage('Bitte zuerst einloggen.', 'warning'); + $app->redirect(Route::_('index.php?option=com_users&view=login', false)); + return; + } + + // ID aus URL lesen + $id = $input->getInt('id'); + if (!$id) { + throw new \RuntimeException("Keine Dokument-ID übergeben."); + } + + // Datenbankabfrage + /** @var DatabaseDriver $db */ + $db = Factory::getDbo(); + + $query = $db->getQuery(true) + ->select($db->quoteName(['path', 'name'])) + ->from($db->quoteName('#__eis_documents')) + ->where($db->quoteName('id') . ' = ' . (int) $id) + ->where($db->quoteName('is_folder') . ' = 0'); + + $row = $db->setQuery($query)->loadAssoc(); + + if (!$row) { + throw new \RuntimeException("PDF nicht gefunden oder kein gültiges Dokument."); + } + + $filePath = $row['path']; + $fileName = $row['name']; + + if (!file_exists($filePath)) { + throw new \RuntimeException("Datei existiert nicht auf dem Server."); + } + + // PDF-Datei ausgeben + header('Content-Type: application/pdf'); + header('Content-Disposition: inline; filename="' . basename($fileName) . '"'); + header('Content-Length: ' . filesize($filePath)); + readfile($filePath); + exit; + } +} diff --git a/com_eis/src/View/Main/HtmlView.php b/com_eis/src/View/Main/HtmlView.php index 5403239..4637434 100644 --- a/com_eis/src/View/Main/HtmlView.php +++ b/com_eis/src/View/Main/HtmlView.php @@ -4,7 +4,6 @@ namespace EIS\Component\EIS\Administrator\View\Main; \defined('_JEXEC') or die; use Joomla\CMS\Factory; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; - class HtmlView extends BaseHtmlView { public function display($tpl = null): void diff --git a/mod_pdf_tree/Archiv.zip b/mod_pdf_tree/Archiv.zip deleted file mode 100644 index 80322468535e29b646707e03d269f76c0a56403e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5359 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 diff --git a/mod_pdf_tree/helper.php b/mod_pdf_tree/helper.php index c2f74db..eeb6832 100644 --- a/mod_pdf_tree/helper.php +++ b/mod_pdf_tree/helper.php @@ -9,7 +9,6 @@ class ModEisAnzeigeHelper /** * Holt alle PDF-Elemente aus der Datenbank */ - public static function getItems(): array { /** @var DatabaseDriver $db */ @@ -35,7 +34,6 @@ class ModEisAnzeigeHelper /** * Hauptfunktion zum Rendern des Baums */ - public static function renderTree(array $items, int $parentId = null): string { if (!isset($items[$parentId])) { @@ -47,19 +45,21 @@ class ModEisAnzeigeHelper foreach ($items[$parentId] as $item) { $isFolder = (bool) $item['is_folder']; $title = htmlspecialchars($item['title'] ?: $item['name']); - // $path = htmlspecialchars($item['path'] ?? ''); - $path = htmlspecialchars(self::convertToRelativeUrl($item['path'] ?? '')); + $path = self::convertToRelativeUrl($item['path'] ?? ''); + + // Erweiterung .pdf im Titel entfernen (nur Anzeige, nicht Link) + $displayTitle = preg_replace('/\.pdf$/i', '', $title); if ($isFolder) { $fileCount = self::countFilesRecursive($items, $item['id']); $html .= '
  • '; $html .= ''; - $html .= '' . $title . ' (' . $fileCount . ')'; + $html .= '📁 ' . $displayTitle . ' (' . $fileCount . ')'; $html .= self::renderTree($items, $item['id']); $html .= '
  • '; } else { $html .= '
  • '; - $html .= '' . $title . ''; + $html .= '📄' . $displayTitle . ''; $html .= '
  • '; } } @@ -68,22 +68,25 @@ class ModEisAnzeigeHelper return $html; } - /** * Konvertiert absoluten Serverpfad in URL */ private static function convertToRelativeUrl(string $fullPath): string { - // <== HIER den absoluten Pfad zu deinem Webroot anpassen - $webRoot = '/var/www/vhosts/ts-it24.net/stbv.ts-it24.net'; - $webBase = ''; // ggf. '/subdir' falls Joomla in Unterordner + // Absoluter Serverpfad zum Joomla-Root + $webRoot = '/var/www/joomla'; + $webBase = ''; // ggf. '/unterordner', wenn Joomla in Subdir if (str_starts_with($fullPath, $webRoot)) { - return $webBase . str_replace($webRoot, '', $fullPath); + $relativePath = str_replace($webRoot, '', $fullPath); + // Leerzeichen und Sonderzeichen escapen + $relativePath = implode('/', array_map('rawurlencode', explode('/', $relativePath))); + return rtrim(\JUri::root(), '/') . $webBase . $relativePath; } - return $fullPath; // Fallback: Original verwenden + return $fullPath; // Fallback } + /** * Zählt alle PDF-Dateien unterhalb eines Ordners rekursiv */ @@ -96,7 +99,7 @@ class ModEisAnzeigeHelper } foreach ($items[$parentId] as $item) { - if ((bool)$item['is_folder']) { + if ((bool) $item['is_folder']) { $count += self::countFilesRecursive($items, $item['id']); } else { $count++; diff --git a/mod_pdf_tree/mod_eis_anzeige.zip b/mod_pdf_tree/mod_eis_anzeige.zip new file mode 100644 index 0000000000000000000000000000000000000000..21ae967609eab120cbe4cc38fdea57380ebe7c16 GIT binary patch literal 4231 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 - - +
    +
    -
    - +
    - -
    - \ No newline at end of file +