Dans le cadre demain gestion documentaire, je dois mettre en téléchargement des fichiers au format PDF. Cependant, je suis aussi chargé d'éventuellement modifier leur contenu, après une retransformation au format Word par exemple, des documents PDF que je mets à disposition à mes utilisateur. Dans notre jargon, nous appelons ces fichiers d'origine des natifs.
Cependant, nous ne voulons absolument pas que ces fichiers natifs soient accessibles à nos utilisateurs, mais nous souhaitons toutefois les ranger et les stocker de manière logique. Ainsi naquit ce plugin.
Dans ce cas, mon plugin va récupérer pour chacun des liens hypertextes créés, le contenu de cette balise data-natif et va le transformer en un simple lien de type a href, à la suite direct du lien vers mon pdf.
Je n'ai pas souhaité gérer un accès à ce contenu selon que l'utilisateur soit administrateur ou non du système, j'ai donc préféré dans la configuration de mon plugin, intégrer une case à cocher où vous pouvez simplement activer ou non le téléchargement du fichier natif. Si le plugin est réglé à non, l'ensemble des liens vers les fichiers natifs ne sont pas visibles à l'utilisateur. Dans le cas contraire, une petite icône apparaît avec un lien direct vers le document natif.
natif.php
<?php
defined('_JEXEC') or die('Access deny');
class plgContentNatif extends JPlugin
{
function onContentPrepare($content, $article, $params, $limit){
/*UTILISATION :
<a href="/monFichier_PDF" data-natif="__DOCUMENTS__/document_natif.odt">LIEN</a>
*/
$document = JFactory::getDocument();
$document->addStyleSheet('plugins/content/natif/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);
$show_natif = $this->params->get('show_natif', '');
if ($show_natif==1)
{
$re = '/(<a.*)(data-natifs?=")(.*)">(.*)<\/a>/m';
$subst = "$1\">$4</a><a href=\"$3\" target=\"_blank\" class=\"fichier-natif\">NATIF</a>";
}
else
{
$re = '/(<a.*)(data-natifs?=")(.*)">(.*)<\/a>/m';
$subst = "$1\">$4</a>";
}
$article->text = preg_replace($re, $subst, $article->text);
}
}
?>
natif.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="1.0" type="plugin" group="Content">
<name>Natif</name>
<author>Sebastien LHUILLIER</author>
<creationDate>Février 2024</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 prend en compte ou pas l'affichage des fichiers natifs (word/excel) en sus des PDF</description>
<files>
<filename plugin="natif">natif.php</filename>
<filename>natif.xml</filename>
<filename>style.css</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="show_natif" type="radio" default="0" label="Natifs" description="Affiche les liens vers les fichier natifs">
<option value="1">Oui</option>
<option value="0">Non</option>
</field>
<field name="note2" type="note" class="alert" label="Utilisation" description="Dans les liens a href vers les PDF, rajouter data-natif="chemin_vers_le_fichier_natif" (document modifiable : word, excel, powerpoint,...)"/>
</fieldset>
</fields>
</config>
</extension>
