config deux options

This commit is contained in:
Fred Tempez 2024-03-15 21:14:49 +01:00
parent 75203d6e8e
commit c4fc466876
2 changed files with 135 additions and 102 deletions

View File

@ -36,7 +36,10 @@ class folder extends common
public function index() public function index()
{ {
self::$folders = $this->getFolderContent($this->getData(['module', $this->getUrl(0), 'path'])); $config['showsubfolder'] = $this->getData(['module', $this->getUrl(0), 'subfolder']);
$config['sort'] = $this->getData(['module', $this->getUrl(0), 'sort']);
self::$folders = $this->getFolderContent($this->getData(['module', $this->getUrl(0), 'path']), $config);
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
@ -54,12 +57,18 @@ class folder extends common
$this->getUser('permission', __CLASS__, __FUNCTION__) === true && $this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost() $this->isPost()
) { ) {
$this->setData(['module', $this->setData([
$this->getUrl(0),[ 'module',
'path'=> preg_replace('/^\\./', '', $this->getInput('folderConfigPath')), $this->getUrl(0),
'title' => $this->getInput('folderConfigTitle') [
'path' => preg_replace('/^\\./', '', $this->getInput('folderConfigPath')),
'title' => $this->getInput('folderConfigTitle'),
'sort' => $this->getInput('folderConfigSort', helper::FILTER_BOOLEAN),
'subfolder' => $this->getInput('folderConfigSubfolder', helper::FILTER_BOOLEAN),
'folder' => $this->getInput('folderConfigFolder', helper::FILTER_BOOLEAN),
]]); ]
]);
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
@ -80,66 +89,76 @@ class folder extends common
} }
private function getFolderContent($chemin) private function getFolderContent($chemin, $config = [])
{ {
// Vérifier si le chemin existe et est un dossier $showSubFolder = isset($config['showsubfolder']) ? $config['showsubfolder'] : true;
if (is_dir($chemin)) { $sort = isset($config['sort']) ? $config['sort'] : true;
// Ouvrir le dossier
if ($dh = opendir($chemin)) {
// Initialiser les tableaux pour les sous-dossiers et les fichiers
$subDirectories = [];
$files = [];
// Parcourir les éléments du dossier // Vérifier si le chemin existe et est un dossier
while (($element = readdir($dh)) !== false) { if (is_dir($chemin)) {
// Exclure les éléments spéciaux // Ouvrir le dossier
if ($element != '.' && $element != '..') { if ($dh = opendir($chemin)) {
// Construire le chemin complet de l'élément // Initialiser les tableaux pour les sous-dossiers et les fichiers
$cheminComplet = $chemin . '/' .$element; $subDirectories = [];
$files = [];
// Vérifier si c'est un dossier // Parcourir les éléments du dossier
if (is_dir($cheminComplet)) { while (($element = readdir($dh)) !== false) {
// Ajouter le dossier au tableau des sous-dossiers // Exclure les éléments spéciaux
$subDirectories[] = $element; if ($element != '.' && $element != '..') {
} else { // Construire le chemin complet de l'élément
// Ajouter le fichier au tableau des fichiers $cheminComplet = $chemin . '/' .$element;
$files[] = $element;
}
}
}
// Fermer le dossier // Vérifier si c'est un dossier
closedir($dh); if (is_dir($cheminComplet)) {
// Ajouter le dossier au tableau des sous-dossiers
$subDirectories[] = $element;
} else {
// Ajouter le fichier au tableau des fichiers
$files[] = $element;
}
}
}
// Trier les sous-dossiers et les fichiers // Fermer le dossier
sort($subDirectories); closedir($dh);
sort($files);
// Initialiser la liste des éléments // Trier les sous-dossiers et les fichiers si nécessaire
$items = '<ul>'; if ($sort) {
sort($subDirectories);
sort($files);
}
// Ajouter les sous-dossiers à la liste // Initialiser la liste des éléments
foreach ($subDirectories as $subDirectory) { $items = '<ul>';
$items .= "<li class='directory'>$subDirectory";
// Appeler récursivement la fonction pour ce sous-dossier
$items .= $this->getFolderContent($chemin . '/' . $subDirectory);
$items .= '</li>';
}
// Ajouter les fichiers à la liste // Ajouter les sous-dossiers à la liste si configuré pour les afficher
foreach ($files as $file) { if ($showSubFolder) {
$items .= "<li class='file'><a href='" . $chemin . '/' . $file . "' data-lity>$file</a></li>"; foreach ($subDirectories as $subDirectory) {
} $items .= "<li class='directory'>$subDirectory";
// Appeler récursivement la fonction pour ce sous-dossier
$items .= $this->getFolderContent($chemin . '/' . $subDirectory, $config);
$items .= '</li>';
}
}
// Ajouter les fichiers à la liste
foreach ($files as $file) {
$items .= "<li class='file'><a href='" . $chemin . '/' . $file . "' data-lity>$file</a></li>";
}
// Fermer la liste
$items .= "</ul>";
return $items;
}
}
return '';
}
// Fermer la liste
$items .= "</ul>";
return $items;
}
}
return '';
}

View File

@ -1,39 +1,53 @@
<?php echo template::formOpen('folderConfig'); ?> <?php echo template::formOpen('folderConfig'); ?>
<div class="row"> <div class="row">
<div class="col1"> <div class="col1">
<?php echo template::button('folderConfigBack', [ <?php echo template::button('folderConfigBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>
<div class="col2 offset9"> <div class="col2 offset9">
<?php echo template::submit('folderConfigSubmit'); ?> <?php echo template::submit('folderConfigSubmit'); ?>
</div>
</div>
<div class='row'>
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Paramètres'); ?>
</h4>
<div class="row">
<div class="col6">
<?php echo template::select('folderConfigPath', $module::$sharePath, [
'label' => 'Dossier',
'class' => 'filemanager',
'selected' => $this->getData(['module', $this->getUrl(0), 'path'])
]); ?>
</div>
<div class="col6">
<?php echo template::text('folderConfigTitle', [
'label' => 'Titre',
'placeholder' => 'Répertoire',
'value' => empty ($this->getData(['module', $this->getUrl(0), 'title'])) ? 'Répertoire' : $this->getData(['module', $this->getUrl(0), 'title'])
]); ?>
</div>
</div>
<div class="row">
<div class="col4">
<?php echo template::checkbox('folderConfigSort', true, 'Trier les dossiers et les fichiers', [
'checked' => $this->getData(['module', $this->getUrl(0), 'sort'])
]); ?>
</div>
<div class="col4">
<?php echo template::checkbox('folderConfigSubfolder', true, 'Descendre dans l\'arboresence', [
'checked' => $this->getData(['module', $this->getUrl(0), 'subfolder'])
]); ?>
</div>
</div>
</div> </div>
</div> </div>
<div class='row'> </div>
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Paramètres'); ?></h4>
<div class="row">
<div class="col6">
<?php echo template::select('folderConfigPath', $module::$sharePath, [
'label' => 'Dossier',
'class' => 'filemanager',
'selected' => $this->getData(['module', $this->getUrl(0), 'path'])
]); ?>
</div>
<div class="col6">
<?php echo template::text('folderConfigTitle', [
'label' => 'Titre',
'placeholder' => 'Répertoire',
'value' => empty($this->getData(['module', $this->getUrl(0), 'title'])) ? 'Répertoire' : $this->getData(['module', $this->getUrl(0), 'title'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?> <?php echo template::formClose(); ?>
<div class="moduleVersion">Version <div class="moduleVersion">Version
<?php echo $module::VERSION; ?> <?php echo $module::VERSION; ?>