Modifications d'éléments existants
- Détails
- Catégorie : Modifications d'éléments existants
Dans mon précédent article numéro 880, comment j'ai rajouté un bloc statique aide-mémoire dans la partie édition Joomla content de l'administrateur, je vous ai proposé comment rajouter une petite aide mémoire de vos commandes personnalisées de vos plugins.
J'ai refait un équivalent de la solution à cette problématique, en rendant modulable l'ensemble de ce que je vous avais déjà proposé dans l'article précédemment cité.
Quoi de neuf ?
Dans cette nouvelle méthode de faire, j'ai réalisé le stockage de l'ensemble de mes informations dans un simple fichier externe au format XML de chacun des plugins que je développe, ainsi qu'un petit élément qui vous permet de lire ces fichiers XML.
Ainsi, si vous souhaitez rajouter des éléments, il vous suffit simplement d'éditer ce fichier XML de votre plugin dans un éditeur simple, afin de rajouter de nouvelles données.
Modifications à apporter
Pour mettre en place ce système, j'ai dû apporter quelques modifications aux dichiers de base de joomla.
Après avoir effectué un héritage de votre Fichier edit.php de administrator->com_content->edit, j'ai simplement rajouter à la suite de la ligne 75, le code suivant :
<?php include('explications.php'); ?>
De cette manière, si je veux modifier des choses particulières dans ma nouvelle modification, il ne suffit pas d'aller rechercher et bidouiller le fichier d'origine, les données se trouve dans un fichier externe explication.php. C'est un choix personnel mis je prèfère. Un moyen simple, à mon avis, de se retrouver plus facilement.
Désormais, l'ensemble des modifications que je vais apporter seront incluses dans ce nouveau fichier explications.php
Fonctionnement de ce nouveau fichier
Comme beaucoup d'informaticiens, je suis très fainéant. Ainsi, dans ce fichier, je vais aller scanner l'ensemble des noms de fichiers qui portent la le sous chaine SEOExplication dans les noms de fichiers au format XML, qui seront disséminés dans l'ensemble du sous répertoire administrator.
Ainsi, mon petit outil va rechercher l'ensemble des explications contenues dans les sous répertoires de mes modules ainsi que de mes plugins que j'ai développé. Nous retrouverons ici l'ensemble de la doc de l'ensemble de mes développements.
Fonctionnement générique
De manière à ce que ce fonctionnement s'applique à l'ensemble de mes développements, je me suis fixé une norme XML afin de pouvoir faire en sorte que ensemble de mes documentations de mes plugins (ou de mes modules) soit tout identiques. Le format de mon fichier XML et le suivant et porte toujours un nom qui va contenir la chaîne de caractères SEBExplication, avec comme extension de fichiers XML. Ce sont les deux conditions pour que le fichier soit détecté par mon système soit reconnu comme un fichier d'aide.
Exemple d'un fichier XML
<SEBexplication>
<nom>SEOExplication</nom>
<tag>{ici mon tag}</tag>
<explications>Ce tag permet de ...</explications>
</SEBexplication>
Les modifications à apporter.
Dans un premier temps, vous devez créer le fichier explications.php et le placer dans le dossier administrateur template Isis -> HTML -> com_content -> article.
Désormais que ce fichier est créé, vous devez le faire appeler par le fichier edit que vous aurez préalablement hérité, et qui se trouvera dans le répertoire, après héritage, administrator->template->Isis->HTML->com_content->article edit.php en rajoutant ligne 76 :
<?php include('explications.php'); ?>
Enfin, vous devez corriger ou modifier le fichier CSS de la template d'administration de Joomla, je vous donne ce que moi j'ai rajouté mais à vous d'y faire votre propre style de cet outil :
.seb-admin-explications {
border: 2px solid red;
padding: 1%;
border-radius: 5px;
background-color: lightyellow;
}
.seb-admin-explications .nom {
text-align: center;
font-weight: bold;
}
.seb-admin-explications .tag {
float: left;
margin-right: 2%;
color: blue;
font-weight: bold;
}
Add a comment
- Détails
- Catégorie : Modifications d'éléments existants
Aujourd'hui, nous allons regarder la dérivation que l'on appelle aussi override en anglais voire surcharge en français bien de chez nous.
Nous allons surcharger un fichier d'affichage des champs de type répétables (repeatables) afin de pouvoir appliquer à chacun des éléments répérés, un style particulier. Nous allons alors créer une classe par champs.
J'en ai aussi déjà parlé, pour opérer à cette surcharge, vous pouvez surcharger votre fichier directement à partir de l'interface de Joomla dans le menu template -> sélectionner votre template -> cliquez dans l'onglet "Créer des substitutions", sélectionnez votre élément répétable dans la colonne plugin en sélectionnant le sous-égaiement field. Vous trouverez ainsi un élément qui s'appelle répeatable en anglais, cliquez dessus, le processus de surcharge se met en place.
<?php
/**
* @package Joomla.Plugin
* @subpackage Fields.Repeatable
*
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
$fieldValue = $field->value;
if ($fieldValue === '')
{
return;
}
// Get the values
$fieldValues = json_decode($fieldValue, true);
if (empty($fieldValues))
{
return;
}
$html = '<ul>';
foreach ($fieldValues as $value)
{
$html .= '<li>' . implode(', ', $value) . '</li>';
}
$html .= '</ul>';
echo $html;
- Détails
- Catégorie : Modifications d'éléments existants
Modification de la template de base.
Styliser mon message
<?php
/**
* @package Joomla.Administrator
* @subpackage Template.Isis
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
$msgList = $displayData['msgList'];
$alert = array('error' => 'alert-error', 'warning' => '', 'notice' => 'alert-info', 'message' => 'alert-success');
?>
<div id="system-message-container">
<?php if (is_array($msgList) && $msgList) : ?>
<?php foreach ($msgList as $type => $msgs) : ?>
<div class="alert <?php echo isset($alert[$type]) ? $alert[$type] : 'alert-' . $type; ?>">
<button type="button" class="close" data-dismiss="alert">×</button>
<?php if (!empty($msgs)) : ?>
<h4 class="alert-heading"><?php echo JText::_($type); ?></h4>
<?php foreach ($msgs as $msg) : ?>
<div class="alert-message"><?php echo $msg; ?></div>
<div class="alert-message message-matso">Ne pas oublier de prévenir la cellule matso</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
- Détails
- Catégorie : Modifications d'éléments existants
Bien qu'à avoir déjà contacté le développeur pour la problématique que je vais vous évoquer ici, je n'ai malheureusement eu aucune réponse de sa part. Italien, peut-être ne savait-il pas lire les langues (fançais et anglais) dans lesquelles je me suis exprimé, c'est la raison pour laquelle je me suis attaqué ce matin à de la rétro engineering de ce bel outil Big File Uploader afin de regarder comment son code fonctionne pour pouvoir modifier ce que je devais faire.
Un petit rappel de ma problématique.
- l'une en version gratuite, celle que j'utilise,
- l'autre en version Pro dont je n'ai pas les moyens de m'acheter ! (mais surtout dont je n'ai pas l'utilité)
Enfin, la version gratuite répond surtout tout à fait à mes attentes. Cette version gratuite permet de mettre en ligne sur votre serveur de gros fichiers, mais le chemin de cette destination de ce répertoire de stockage, codé en dur dans le code, ne correspond pas du tout à l'architecture que j'ai mise en place pour stocker mes fichiers. Cette architecture m'est plus ou moins imposée par une organisation fonctionnelle de notre environnement de travail.
L'idée est donc de pouvoir spécifier un nouveau répertoire de destination qui se trouvera d'ailleurs dans un sous répertoire bien spécifique. Actuellement, le code de Big File Uploader définit un dossier dans le répertoire image de Joomla. Mais pourquoi diable ce dossier-ci ?
private function getTempPath($idFile){
return JPATH_SITE . DIRECTORY_SEPARATOR . "__DOCUMENTS__" . DIRECTORY_SEPARATOR . "fileuploaded" . DIRECTORY_SEPARATOR ;
}
private function getFilePath($nomeFile=''){
//return JPATH_ADMINISTRATOR.DIRECTORY_SEPARATOR."components".DIRECTORY_SEPARATOR."com_bigfileuploader".DIRECTORY_SEPARATOR."uploadedfile".DIRECTORY_SEPARATOR.$nomeFile;
return JPATH_SITE . DIRECTORY_SEPARATOR . "__DOCUMENTS__" . DIRECTORY_SEPARATOR . "fileuploaded" . DIRECTORY_SEPARATOR . $nomeFile;
}
Dans ce même fichier, à la ligne 84, dans la fonction qui retourne le chemin temporaire, modifier il y a aussi votre chemin de positionnement de votre dossier dans lequel vous souhaitez que le fichier destination s'insère.private function getTempPath($idFile){
//return JPATH_ADMINISTRATOR.DIRECTORY_SEPARATOR."components".DIECCTORY_SEPARATOR."com_bigfileuploader".DIRECTORY_SEPARATOR."uploadedfile";
return JPATH_SITE . DIRECTORY_SEPARATOR . "__DOCUMENTS__" . DIRECTORY_SEPARATOR . "fileuploaded" . DIRECTORY_SEPARATOR ;
}
Mon Github
slhuilli1's GitHub repositories
-
targetpdf
Add "_blank" automatically when href ils a pdf file !
-
zippage
Zipper tous les PDF internes d'une page Joomla Content
-
legendeimg
No description
-
antispam
Plugin qui génère une chaine mais avec le symbole @ dans le css, évitant de se faire aspirer son mail !
-
modallightbox
No description
-
titrearticle
Remplace affiche le titre de l'article.
-
provisoire
Lister des documents marqués comme "provisioires"
-
cssmodal
Plugin Joomla pour lancer une fenetre modale
-
modalpdf
No description
-
demandeajoutdoc
This pligin add a mailto: link info Regular Labs Tabs (for intranet whithout spam)
-
natif
Ce plugin prend en compte ou pas l'affichage des fichiers natifs (word/excel) en sus de liens vers des PDF
-
nouveau
Un plugin joomla qui affiche une mention "nouveau" sur un lien hypertext avannt une date butoire - A Joomla plugin that displays a “new” mention on a hyperlink before a deadline
-
lastdocsupdates
Plugin d'affichage des derniers fichiers modifiés dans un répertoire donné
-
noteitv2
No description
-
NoCache
No description
-
addIdToHn
Ce plugin ajoute automatiquement un id calculé (compté) aux balises Hn
-
ReadFirefoxBookmarks
reading Firefox bookmak with PHP using SQLite library
-
externalcssandlib
Add external CSS and javascript libraries in your projets
-
qr
Ce plugins affiche une liste de questions reponses - This plugin for Joomla show a list of questions, when clicked, the answer is showed
-
dataarchives
Joomla plugin - Ajour une class sur un lien si ce lien possede data-archives="oui" - Add a class on a link if this link has data-archives="oui"
-
attachments
No description
-
mod_vacances
Ce module Joomla affiche les congés français. Basé sur des OpenDatas du minitère de l'éducation nationale
-
noteit
Ce plugin permet l'ajout de Post it (format graphique) dans un article
-
nbonlineusers
No description
-
removehtmlcomment
Delete all html comment in a joomla article
-
rechercheget
Recherche en GET dans Joomla Content
-
formatfichier
Synrthese of articles' Joomla content
-
workflow_steps
A simple HTML/CSS code to show where the step of workflow is
-
mod_entjca
Module listants les entreprises créées dans le département de votre choix.
-
definitions
Ce plugin permet l'affichage de termes et leurs définition