Files
dolibarr/htdocs/webportal/controllers/abstractdocument.controller.class.php
webmaster67 fad11836ff NEW: Add directory navigation to Web Portal Shared Documents (#35443)
* Create documentlist.controller.class.php

Intégration de mon portail client personnalisé avec GED
attention 
class/sontext.class.php devra aussi être modifier.

* Update context.class.php

ajout du ged 
pour les fichiers joints par tiers.

* Update context.class.php

ajout d'accès à fichiers joints du tiers.

* Update menu.tpl.php

ajout du menu accès au GED

* Update README.md

* Update README.md

* Update README.md

* Add files via upload

document utile sert a partager via le GED de dolibarr des fichiers avec tous les clients utilisateur du webportal.

* Update context.class.php

ajout dans le menu de deux controleur suplémentaire.

* Update menu.tpl.php

ajoute des deux chapitre dans le menu

* Update README.md

* Update README.md

* Update menu.tpl.php

document format change

* Add files via upload

mises à jour et normalisation fichiers

* Add files via upload

ajout webportal.lang

* Update README.md

* Delete htdocs/webportal/documentutile.controller.class.php

* Update menu.tpl.php

* Update README.md

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update menu.tpl.php

* Update menu.tpl.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update README.md

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update README.md

* Create webportal.lang

* Update webportal.lang

* Update webportal.lang

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update website.lang

* Delete htdocs/langs/fr_FR/webportal.lang

* Delete htdocs/langs/en_US/webportal.lang

* Update README.md

* Update README.md

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Create abstractdocument.controller.class.php

* Update website.lang

* Update website.lang

* Update website.lang

* Update README.md

* Update README.md

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update README.md

* Update context.class.php

* Update README.md

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update menu.tpl.php

* Update documentlist.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update menu.tpl.php

* Update menu.tpl.php

* Update README.md

* Update context.class.php

* Update documentlist.controller.class.php

* Update menu.tpl.php

* Update menu.tpl.php

* Update context.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

taking into account subfolders in shareddocuments

* Update abstractdocument.controller.class.php

support for subfolders and addition of a breadcrumb trail for navigation through subfolders

* Update website.lang

* Update website.lang

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update website.lang

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update documentlist.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

it's ready Boss
@eldy

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

correction get post faite

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

french comment removed sorry

* Update shareddocuments.controller.class.php

french comment traductions ok !

* Update documentlist.controller.class.php

* Update documentlist.controller.class.php

tabs corrected

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

oubli d'un @

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-11 13:53:23 +02:00

91 lines
3.3 KiB
PHP

<?php
/*
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (c) 2025 Schaffhauser sébastien <sebastien@webmaster67.fr>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*/
require_once __DIR__ . '/../class/controller.class.php';
/**
* \file htdocs/webportal/controllers/abstractdocument.controller.class.php
* \ingroup webportal
* \brief This file is an abstract controller with shared logic to display a list of documents.
*/
/**
* Abstract Class for Document Controllers
* Contains the shared logic to display a table of files.
*
* @property DoliDB $db Inherited from Controller
* @property int $accessRight Inherited from Controller
*/
abstract class AbstractDocumentController extends Controller
{
/**
* Renders an HTML file browser table for a given list of files and directories.
*
* @param string $title The main H2 title for the page.
* @param array<int, array<string, mixed>> $itemList The list of items from dol_dir_list('all').
* @param string $emptyMessage The message to display if the list is empty.
* @param array<string, callable> $linkBuilder An array of functions to build URLs ('dir' and 'file').
* @return void
*/
protected function displayFileBrowser($title, $itemList, $emptyMessage, array $linkBuilder)
{
global $langs;
echo '<h2>' . htmlspecialchars($title) . '</h2>';
if (is_array($itemList) && count($itemList) > 0) {
// 1. Separate folders and files
$directories = array();
$files = array();
foreach ($itemList as $item) {
if ($item['type'] === 'dir') {
$directories[] = $item;
} else {
$files[] = $item;
}
}
// 2. Display the table
echo '<table class="table table-hover" width="100%">';
echo '<thead><tr>';
echo '<th>' . $langs->trans('Name') . '</th>';
echo '<th style="text-align: right; white-space: nowrap;">' . $langs->trans('Size') . '</th>';
echo '<th style="text-align: right; white-space: nowrap;">' . $langs->trans('DateM') . '</th>';
echo '</tr></thead>';
echo '<tbody>';
// 3. Display all folders first
foreach ($directories as $dir) {
echo '<tr>';
// The link for a directory is for navigation
echo '<td><a href="' . $linkBuilder['dir']($dir) . '">📁&nbsp;' . htmlspecialchars($dir['name']) . '</a></td>';
echo '<td style="text-align: right;">--</td>'; // No size for a directory
echo '<td style="text-align: right;">' . dol_print_date($dir['date'], 'dayhour') . '</td>';
echo '</tr>';
}
// 4. Then, display all files
foreach ($files as $file) {
echo '<tr>';
// The link for a file is for download
echo '<td><a href="' . $linkBuilder['file']($file) . '" target="_blank">📄&nbsp;' . htmlspecialchars($file['name']) . '</a></td>';
echo '<td style="text-align: right;">' . dol_print_size($file['size']) . '</td>';
echo '<td style="text-align: right;">' . dol_print_date($file['date'], 'dayhour') . '</td>';
echo '</tr>';
}
echo '</tbody></table>';
} else {
echo '<p>' . htmlspecialchars($emptyMessage) . '</p>';
}
echo '<br>';
}
}