Le besoin spécifique
Je parle souvent de mon projet professionnel. Je fais bien entendu en sorte que tout le classement des documents que je dois rendre tes rechargeable soit intégré dans joomla.
F9nUne de mes problématiques et d'avoir des documents que je dois classer mais qui temporairement ne doivent pas être rendu public. Cela peut s'expliquer par l'état de problématique notamment celle du documentaliste en lui-même qui ne connaît pas étonnant et les aboutissants du document à rendre disponible. C'est ainsi que j'ai créé dans mon répertoire des documents à rendre disponible un sous répertoire dans lequel je vais placer temporairement les dossiers et documents que je vais devoir ranger.
N'ayant pas toujours sous la main un supérieur pour pouvoir me dire où classer tel élément, je me suis créé un dossier a_ranger.
Fonctionnement
Ce petit plugin va tout simplement lister le contenu de ce répertoire et affiche à l'utilisateur qui en a évidemment eu droit. Pour la question de droits d'accès au plugin (car les données restent "sensibles" puisque ca montre le travail non encore effectué), je m'appuie simplement sur un article uniquement accessible aux administrateurs dans lequel j'appelle mon plugin avec le short code adéquat : {aRanger} (attention à la casse !)
Sur plugin n'a rien de bien transcendant à la seule différence que je m'appuie sur la nouvelle commande scandir de PHP 5 qui n'existait pas dans les versions précédentes type PHP4
aranger.php
<?php
defined('_JEXEC') or die('Access deny');
class plgContentAranger extends JPlugin
{
function onContentPrepare($content, $article, $params, $limit){
$document = JFactory::getDocument();
$document->addStyleSheet('plugins/content/aranger/style.css');
JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
$customFields = FieldsHelper::getFields('com_users.user', JFactory::getUser(), true);
$a = FieldsHelper::getFields('com_content.article', $article);
$dir = $this->params->get('Aranger', '');
$files1 = scandir($dir);
$ch = '<div class="a-ranger">';
$ch .= '<div class="titre">Liste des fichiers temporaires dans le dossier <span class="dossier-a-ranger">'.$dir.'</span></div>';
$ch .= '<ul>';
foreach($files1 as $monfic)
{
$ch .= '<li>'.$monfic.'</li>';
}
$ch .= '</ul></div>';
$article->text =str_replace('{aRanger}',$ch, $article->text);
}
}
aranger.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="1.0" type="plugin" group="Content">
<name>A ranger</name>
<author>Sebastien LHUILLIER</author>
<creationDate>Novembre 2023</creationDate>
<copyright>Sébastien LHUILLIER</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.</authorEmail>
<authorUrl>www.sebastien-lhuillier.com</authorUrl>
<version>1.0</version>
<description>Ce plugin ajoute affiche le contenu des ficher à classer, en listant le dossier __DOCUMENTS__/a_ranger et s'utilse avec le shorttag {aRanger}</description>
<files>
<filename plugin="aranger">aranger.php</filename>
<filename>aranger.xml</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="note21" type="note" class="alert" label="Tag" description="Tag à utiliser : {aRanger}" />
<field name="Aranger" type="text" default="" label="Dossier où ranger les documents" description="" size="10" />
</fieldset>
</fields>
</config>
</extension>