T3CON12-Québec : C’est parti !

Patrick Gaumond | CMS/SGC,Développement,Événements,Québec,T3CON,Web | Dimanche, 18 mars 2012

C'est votre première visite ici ! Peut être voudriez-vous souscrire à notre fil RSS pour connaître tous les changements. Merci pour votre visite !

 

 

Du 13 au 15 juin 2012, Québec sera la ville hôte de la 11e édition de la conférence internationale T3CON, un événement consacré à TYPO3. Les billets sont en vente et les conférenciers invités à proposer des sujets de conférence jusqu’au 30 mars.

http://t3con12-quebec.typo3.org/fr

Après avoir participé personnellement à 4 T3CON en Allemagne et 3 aux États-Unis, c’est avec fierté que j’invite les passionnés autant que les curieux à participer à cet événement international. Vous pouvez également proposer des conférences sur le Web en général ou sur TYPO3. Particularité « régionale », vous pouvez présentez en français ou en anglais ou les deux!

Des experts à rencontrer!
Quelque 200 spécialistes et gestionnaires du Web et de la communication en provenance d’une douzaine de pays se rassembleront pour connaitre les nouveautés de la dernière version de TYPO3 et les fonctionnalités attendues pour la future version. Les participants pourront y rencontrer des experts de renommée et membres actifs de la communauté internationale TYPO3 afin de découvrir les plus récentes méthodes et mise en place des bonnes pratiques Web que permet ce puissant et flexible outil de gestion Web.

Le concepteur orignal de TYPO3, Kasper Skårhøj, sera présent tout au long de la conférence et participera au coup d’envoi. Divers spécialistes présenteront en français et en anglais diverses conférences touchant les solutions concrètes qu’ils ont mises en place au cours de leurs différents mandats. De plus, des sujets plus vastes que TYPO3 tels l’accessibilité ou  la rédaction Web seront également présentés dans une optique liée à la communication. Les gestionnaires pourront également évaluer la pertinence d’utiliser TYPO3 par la tenue d’une matinée de découverte des fonctionnalités de TYPO3.

L’événement se tiendra à l’Hôtel Clarion où il sera également possible d’y loger. Pour en savoir plus sur l’événement et vous y inscrire dès maintenant, consultez le site http://t3con12-quebec.typo3.org/fr.

Patrick Gaumond
Courriel :t3con@typo3quebec.ca

PHPUnit; Intégration de nouvelles fonctionnalités

Yannick Voyer | CMS/SGC,Développement | Jeudi, 30 juin 2011

Lorsque nous développons de nouvelles fonctionnalités dans notre code, il nous arrive de se demander si une modification viendra en briser une autre créée antérieurement. Afin de s’assurer de la stabilité de notre composante, il est impératif d’avoir un système qui nous assure que les fonctionnalités implémentées auparavant n’aient pas été supprimées. PHPUnit à la rescousse!

 

PHPUnit permet de tester nos blocs de code indépendamment les uns des autres. Lors de la création d’un test de fonctionnalité, nous devons donner une valeur à notre fonction. PHPUnit s’assurera que la valeur retournée par la fonction sera la valeur attendue. Plus la fonction sera étendue afin de supporter de nouveaux paramètres, plus les tests nous permettront de nous assurer qu’aucune fonctionnalité précédemment développée ne sera brisée.

Installation

Le mode d’installation à été trouvé sur PHPUnit.de. Il nous permet d’installer la version via les canaux PEAR.

Installer xdebug

Installer PHPUnit

sudo pear channel-discover pear.phpunit.de

sudo pear install –alldeps phpunit/PHPUnit

Une fois que PHPUnit est installé et fonctionnel, vous êtes prêt à créer votre premier test. Idéalement, si vous utilisez une librairie ou un framework, vous voudrez sans doute vouloir configurer vos tests afin que chacun utilise les classes de votre librairie. Pour cela, je vous suggère de vous créer une classe qui servira de « bootstrap » et qui sera appelée avant chaque test.

Voici un exemple de « bootstrap ».

setup.php

class Setup {

public static function init() {

// Root, libraries, classes and tests directories.
$root       = dirname(dirname(__FILE__));
$config     = $root} . ‘/config’;
$librairies = $root . ‘/libraries’;
$tests      = $root . ‘/tests’;

// Empêche le coverage du dossier de tests.
PHPUnit_Util_Filter::addDirectoryToFilter($tests);

// Update include path.
$path = array($config, $librairies, $tests, get_include_path());
set_include_path(implode(PATH_SEPARATOR, $path));

// Add files to the PHPUnit code coverage whitelist.
if (version_compare(PHPUnit_Runner_Version::id(), ’3.1.6′, ‘>=’)) {
PHPUnit_Util_Filter::addDirectoryToWhitelist($starLib);

}

}

Votre classe de test

Blog.php

require_once ‘PHPUnit/Framework.php’;
//require_once dirname(__FILE__) . ‘/setup.php’;

class Blog extends PHPUnit_Framework_TestCase {

public function test_failed() {

$this->assertFalse(true, ‘Ce test ne fonctionne pas’);

}

public function test_success() {

$this->assertTrue(true, ‘Ce test fonctionne’);

}

}

Une fois ces étapes réalisées, vous n’avez qu’à exécuter le fichier Blog.php pour obtenir ce résultat:

phpunit –colors Blog.php

Pour plus d’informations sur l’utilisation de PHPUnit, voir sur le site .

Bon test !

 

Flexform et itemsProcFunc

Mehdi Guermazi | CMS/SGC,Développement,Web | Mardi, 21 juin 2011

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 :

Un champ de type select dans un flexform

Un champ de type select dans un flexform

 

<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.

Erreur de BOM (Byte Order Mark).

Yannick Voyer | Développement | Mardi, 14 juin 2011

       Ça vous dit quelque chose?

Dernièrement, j’ai tenté de mettre du code en production. C’est alors que ces caractères plutôt étranges sont apparus dans le haut de ma page. J’ai d’abord pensé que c’était un problème d’encodage. Je me suis donc mis à la recherche d’un saut de ligne ou d’un autre caractère qui pouvait être rendu avant le doctype. Il m’a fallu bien peu de temps pour me rendre compte que ces recherches ne règleraient en rien mon problème. J’ai donc regardé l’encodage des fichiers sur le serveur afin de les comparer avec l’encodage de la page dans Firefox. Mon constat : les deux étaient identiques, soit UTF-8.

 

J’ai alors eu l’idée d’utiliser le « valideur W3C»  afin de vérifier s’il n’y avait pas d’autres problèmes sur la page en question. À ma grande surprise, cette note est apparue:

Byte-Order Mark found in UTF-8 File

Le Byte-Order Mark permet aux programmes de comprendre que le texte est en UTF-8, UTF-16 ou UTF-32. Le IdéeBOM est un espace insécable de largeur nulle zero-width no-break space. Certains encodages tel que UTF-16 ont besoin des BOM pour bien fonctionner. Pour ce qui est de UTF-8, il n’est pas nécessaire et est plutôt mal supporté par les IDE. Par contre, certains programmes peuvent l’ajouter pour diverses raisons. Puisque les BOM ne sont pas visibles, nous sommes incapables de les remplacer avec un « search/replace ».

On peut corriger ce problème en utilisant un éditeur qui permet d’enregistrer un fichier dans un encodage sans BOM. En faisant quelques recherches sur le net, j’ai trouvé que Notepad++ nous offre cette possibilité. Dans l’éditeur, cliquez sur l’option UTF-8 without BOM dans le menu Encoding. Il ne vous restera qu’à sauvegarder votre fichier pour que le caractère ne s’affiche plus sur la page.

Voilà donc une bonne raison pour laquelle il vaut mieux utiliser des éditeurs standards pour tous les développeurs afin qu’aucun problème causé par une personne ne surgisse et bloque tous les autres développeurs.

TOP 51 des sites Web créés avec TYPO3

Infoglobe | CMS/SGC,Développement | Mercredi, 22 octobre 2008

Il arrive régulièrement que nous nous posions la question de savoir quelles sont les grosses entreprises qui utilisent TYPO3. On se rend très vite compte qu’il y en a un nombre très impressionnant dès lors qu’on regarde en Allemagne; mais encore faut-il savoir parler allemand… pas comme moi!

Donc je me suis dit qu’il serait surement intéressant de faire le tour et de lister les grosses entreprises qui utilisent le CMS TYPO3 pour gérer leur site Web.

Et voici ce que ça donne! TYPO3 est utilisé par de nombreuses références prestigieuses telles CISCO, l’UNICEF, Air France-KML, The Economist, Total, EDS, Epson, BAYER, Ford, UNESCO, Audi, Philips, Handicap International ou encore Bonjour Québec… Vous en trouverez ici 51 des meilleures.

Bien entendu, nous n’avons pu valider que les sites Web. Il fut en effet impossible de vérifier si 3M, American Express et MGM Home Entertainment utilisent TYPO3 sur leurs intranets, tel que c’est mentionné sur le site TYPO3.com.

Mise à jour: EDS a été ajouté à la liste (il remplace http://performance-publique.gouv.fr).

(Lire la suite…)

Framework FORMidable pour TYPO3

pboivin | Développement | Mardi, 07 octobre 2008

Une extension qui fait parler beaucoup d’elle ces temps-ci est l’extension ameos_formidable. Il s’agit d’un API (interface de programmation) qui permet de créer facilement et rapidement des formulaires pour des extensions TYPO3.

Il s’agit probablement en effet de l’extension la plus mature pour le moment pour créer des formulaires frontend. L’extension possède une solide librairie de fonctions pour créer toutes les sortes de contrôles habituelles et plus encore.

(Lire la suite…)

La librairie PHPlot

pboivin | Développement | Mardi, 07 octobre 2008

En programmant une extension TYPO3 j’ai découvert PHPlot, une librairie PHP permettant de créer facilement des graphiques dynamiques à même un tableau de données.

La librairie est très facile d’utilisation, il suffit d’inclure la librairie dans notre code (include) et créer un objet PHPlot (new PHPlot). Par la suite, une image sera généré avec un graphique et une légende au besoin.

(Lire la suite…)

Xdebug – Ajoutez un débogueur à vos outils de développement

souellet | Développement,Linux | Vendredi, 26 septembre 2008

Xdebug est un extension php qui vous permet d’afficher des informations de déboguage comme les erreurs d’un script, les traces de fonctions et de la « stack » directement dans votre navigateur. Mais les fonctionnalités de l’extension de s’arrête pas la. En effet, lorsqu’il est jumelé avec un IDE, il vous permet d’utiliser les fonctions de pas-à-pas et de breakpoint. Avec cet outil, vous pouvez profiler votre code et obtenir des statistiques de performance sur l’utilisation de vos fonctions.

(Lire la suite…)

Intégration de TYPO3 dans votre IDE

souellet | CMS/SGC,Développement | Vendredi, 26 septembre 2008

Eclipse et Netbeans sont deux IDE open source qui vous offre de nombreuses fonctionnalités comme la gestion de projets, le déboguage, l’accès à SVN, ainsi que des outils de collaboration.

Que vous soyez débutant ou expert, l’autocompletion est un outil qui peut vous être très utile. En ajoutant à votre IDE les sources de TYPO3 dans «l’include path» de votre projet, vous pouvez consulter rapidement la liste de fonctions de l’API de développement de TYPO3. L’autocompletion de code vous permettra de développer vos applications plus efficacement.

Exemple avec Netbeans

Utiliser du PHP sur un stdWrap en typoscript

pboivin | CMS/SGC,Développement | Vendredi, 26 septembre 2008

Après une petite recherche sur internet j’ai trouvé une façon très facile d’écraser n’importe quel contenu (stdWrap) en typoscript. Il existe déjà plusieurs possibilités avec la fonction « stdWrap » telles que la modification de la casse, supprimer les balises HTML, « wrapper » le stdWrap, etc. Comme ce n’est jamais assez, je me suis demandé s’il était possible d’utiliser du PHP à même le typoscript pour modifier le contenu du stdWrap.

La propriété « postUserFunc » du stdWrap sert exactement à cet effet.

Il suffit d’appeler un script PHP préalablement défini et d’appeler la fonction de celui-ci tout en y passant quelques paramètres au besoin.

Voici un exemple d’utilisation :

includeLibs.nomLib = fileadmin/templates/scripts/scriptPHP.php
 tt_content.cheminDuStdWrap.stdWrap {
 postUserFunc = nomDeLaClasse->nomDeLaFonction
}