Flexform et itemsProcFunc
Ces derniers temps, l’équipe Infoglobe a été assez active sur le blogue. C’est le T3CON à San Francisco qui nous a inspiré tous. Nos articles, bien qu’intéressants, n’étaient pas très techniques. Cependant, notre blogue s’adresse aussi aux programmeurs et aux utilisateurs invétérés de notre SGC favori TYPO3.
C’est la raison pour laquelle j’ai décidé aujourd’hui, de vous parler d’une astuce que j’ai appris il y a de cela quelques mois. Les logiciels libres c’est avant tout un partage de connaissances!
Flexform et itemsProcFunc
Récemment, j’ai dû développer une extension qui liste des enregistrements provenant du DAM (Digital Assets Management). Très simple me diriez-vous? C’est vrai lorsque nous sommes seul à gérer un site. La plupart du temps, les sites web et les intranets que nous développons pour nos clients sont beaucoup plus complexes que ça. Ils impliquent un grand nombre d’intervenants (utilisateurs back-end BE) et un grand nombre de rôles et de permissions (groupes back-end BE). Le choix des enregistrements dans le formulaire back-end créé grâce à un « flexform » dépend donc des permissions accordées à l’utilisateur BE courant et aux groupes auxquels ce dernier appartient.
Supposons par exemple que notre utilisateur BE appartienne à un groupe BE qui a pour « filemount » un dossier bien précis. Il ne faudrait pas dans ce cas, lui afficher des enregistrements du DAM qui ne sont pas inclus dans ce dossier.
Exemple :
<config>
<type>select</type>
<foreign_table>table</foreign_table>
<foreign_table_where>
AND table.champ_1 = x AND table.champ_2 = y
AND table.deleted = 0 AND table.hidden = 0
ORDER BY table.champ_3 ASC
</foreign_table_where>
</config>
Dans un flexform, nous pouvons utiliser un « select » avec un « foreign_table » et faire des requêtes simples avec « foreign_table_where » comme dans l’exemple ci-haut. Par contre, la tâche devient plus ardue lorsqu’on arrive au point où il faut jouer dans plusieurs tables de la base de données et chercher dans des relations stockées dans un champ grâce à des indentifiants séparés par des virgules. Heureusement que TYPO3 est assez flexible pour nous permettre de tout configurer selon nos besoins. Dans le « flexform » nous pouvons utiliser « itemsProcFunc », qui nous permet d’aller chercher les items de notre « select » dans une userfunc.
Dans la classe user_maclass, il suffit d’avoir une fonction addElements qui nous permettra de faire les requêtes les plus complexes possibles. Cette fonction peut recevoir deux variables par référence : &$config et &$ref. La première contient toute la configuration du champ du flexform en question. On pourra alors accéder à la valeur du paramètre « exemple » dans $config['config']['exemple']. Nous pouvons aussi modifier les valeurs dynamiquement, seulement en les attribuant à la variable : $config['items'] = array_merge($config['items'],$optionList);.
Flexform :
<config> <type>select</type> <itemsProcFunc>user_maclass->addElement</itemsProcFunc> <exemple>valeur</exemple> </config>
class PHP :
class user_maclass {
function addElement(&$config) {
$optionList = $this->getList($config);
if(is_array($optionList)){
$config['items'] = array_merge($config['items'],$optionList);
}
}
}
Attention – la class class.user_maclass.php doit être incluse par le fichier ext_tables.php de la façon suivante :
include_once(t3lib_extMgm::extPath($_EXTKEY).'class.user_maclass.php');
Pour accéder aux données de l’utilisateur BE courant, nous avons la variable globale $BE_USER.
Exemple :
global $BE_USER;
if(!$BE_USER->isAdmin()){
//Récuperer les usergroup de l'utilisateur actuel
$ug = $BE_USER->user['usergroup'];
$arrug = explode(',',$ug);
}
On pourra toujours affirmer que TYPO3 est difficile à apprendre, du moins, pour les développeurs et non pas pour l’utilisateur final. Mais personne ne peut nier la force et la flexibilité de ce SGC.












La prochaine version de TYPO3, la version 4.3 a été retardée de deux mois. Nous allons donc attendre jusqu’au
Voilà que j’étais en train d’attendre la version Alpha 2 de TYPO3 4.3 (qui devait sortir aujourd’hui !), que je suis tombé sur quelque chose d’intéressant autour de tt_news. Y’a un an de cela, lors de la T3FRUniversity 2008 qui s’est déroulée en France, on commençait à me parler de la prochaine version de tt_news, la fameuse version 3.0. Depuis un an, rien du tout, aucune nouvelle de côté là. C’est alors que par le plus grand des hasards, que je suis tombé sur une information à ce sujet en lançant une recherche sur le web. Je vais vous partager ici les quelques petites choses que j’ai découvert en attendant qu’une version finale arrive.
Vous le savez sans doute, TYPO3 à un éditeur de texte (RTE/Wysiwyg) par défaut qui s’appelle « htmlarea », une solution assez bien connue dans le monde des éditeurs opensource, mais qui commence à se faire vieille et qui n’est plus supporté par aucune communauté me semble t’il. Sans doute connaissez-vous mieux 

Une extension qui fait parler beaucoup d’elle ces temps-ci est l’extension 
3 semaines déjà ! C’est le temps qui s’est écoulé depuis mon dernier billet sur mon blogue. 3 semaines sans pouvoir parler de TYPO3, parce que j’étais vraiment trop occupé ! Ahhahhh