Infos

Fil RSSÉquipe Infoglobe

Archives

12 présentations en 2 jours : T3CON11-FRA

Patrick Gaumond | Événements,T3CON | Mardi, 11 octobre 2011

Le plus court résumé que je puisse faire du T3CON11-FRA de Francfort cette année, est que sur un maximum de 12 présentations possibles, j’aurai assisté à 12 d’entre elles. Ça vous donne une idée de la qualité des présentateurs et de la variété des sujets!

En fait, si le clonage était possible, c’est 36 conférences auquel j’aurais pu assister et même un peu plus puisqu’il y a eu quelques « bird of a feather » également.

Les sujets ont été aussi divers que l’accessibilité, la sécurité, les nouveautés de la version 4.6 qui verra le jour à la fin octobre, la découverte de nouvelles extensions telles pt_list, l’éditeur RTE Aloha, le DAM ou le « Government Package » ont tous été des occasions de parfaire mes connaissances et aiguiser ma curiosité.

Même la journée suivant la conférence aura aussi été l’occasion de raffiner encore plus la tenue du T3CON à Québec en juin prochain. Jürgen a non seulement invité les gens à venir me parler pendant la conférence mais il a une fois de plus rappelé aux participants qu’ils auraient du bon temps à Québec.

Jürgen invitant les congressistes à Québec

Jürgen invitant les congressistes à Québec

Les gens au Québec et ailleurs intéressés à préparer la conférence avec moi et l’équipe en train de se former, sont invités à m’écrire à patrick.gaumond [@] infoglobe.ca

Au plaisir de travailler ensemble à faire de cet événement la meilleure occasion de propulser TYPO3 vers de nouveaux sommets en Amérique du Nord!

 

Patrick Gaumond

Préparer le T3CON12-QC pendant le T3CON11-FRA

Patrick Gaumond | CMS/SGC,T3CON | Mardi, 11 octobre 2011

Tel qu’expliqué précédemment, ma participation cette année au T3CON11-FRA n’était pas dans le but de présenter une conférence mais d’apprendre les bons coups et les moins bons que je peux observer, sachant ce qui s’en vient dans exactement 250 jours…

Jai eu, au cours des derniers jours, de nombreuses discussions avec des personnes qui font beaucoup pour TYPO3 depuis de nombreuses années. Que ce soient Jürgen Egeling, le grand manitou des T3CON européens, Thomas Hempel ou Gina Steiner du comité des événements ou Ben Van ‘t Ende, responsable de la communauté mondiale, tous ont été à l’écoute de mes interrogations et plus qu’intéressés à me communiquer leurs idées et leurs commentaires constructifs.

Jürgen Egeling       Ben Van ‘t Ende

En fait, j’ai même été invité à joindre le comité responsable des événements TYPO3 à travers le monde. Un chapeau de plus après celui de membre de l’équipe de Certification.

Parmi tout ce que j’ai noté, voici quelques-uns de ces points en rafale:

  • Toutes les conférences se donnent dans des salles au format théâtre sans table.
  • Il n’y a pas de repas spécifiques végétariens mais il y a toujours différentes salades disponibles.
  • Les conférences sont courtes et sous les 45 minutes à la demande de Jürgen, qui m’a expliqué les dépassements récurrents des années passées.
  • Il y a 1h30 de pause pour le dîner.
  • Les cadeaux aux présentateurs cette année: robe de chambre avec le logo TYPO3 sur le coeur (c’est plus simple à rapporter que la chaise de l’an passée).
  • Beaucoup de conférences à 2 présentateurs. Prévoir des micros pour les questions en particulier si les conférences sont enregistrées.
  • Prévoir des adaptateurs de prises européennes pour l’électricité.
  • etc.

J’ai aussi pris le pouls de quelques personnes pour savoir ce qu’ils croyaient être une bonne sortie pour le « social event » du premier soir de la conférence.

De plus, j’ai pris soin de rencontrer toutes les personnes francophones susceptibles de pouvoir venir nous présenter des choses à la mi-juin à Québec. Jürgen a aussi pris la peine de faire l’annonce de la conférence à Québec en débutant le « keynote » ce matin.

J’ai franchement hâte au 13 juin en ce moment pour accueillir cette merveilleuse communauté européenne mais également les gens de partout au Québec, des États-Unis et d’ailleurs !

Je vous rappelle que le T3CON12-QC se tiendra les 13,14 et 15 juin 2012 !

 

Patrick Gaumond

T3CON 2011 Francfort: Infoglobe y sera !

Patrick Gaumond | CMS/SGC,Événements,T3CON | Lundi, 26 septembre 2011

350 attendues

Encore une fois cette année, j’ai la chance de participer à la plus grande conférence mondiale sur le système de gestion de contenus Web TYPO3. Cette conférence marque mon sixième voyage en Allemagne depuis 2004 puisque j’ai participé à 2 « Snowboard Tour » en 2004 et 2005 en plus de 3 différents T3CON en 2006, 2007 et 2010. Fort heureusement pour moi, la connaissance de l’anglais et de Typoscript est suffisante pour m’y faire comprendre… Je ne sais dire que « danke », « nein » et « prost » en allemand.

Le site de la conférence à venir est http://t3con11-frankfurt.typo3.org/

À la différence des T3CON nord-américain des 3 dernières années et de la conférence de 2010 à Francfort, je ne présenterai aucune conférence. Ce n’est pas que les sujets manquent ou que l’inspiration n’y était pas mais cette fois, j’y serai à titre d’ambassadeur. En effet, ma mission sera de charmer autant les présentateurs potentiels que les participants à l’édition nord-américaine 2012 qui se tiendra à Québec. Ainsi, outre les conférences auxquelles j’assisterai, mon énergie ne sera pas concentrée à préparer une présentation mais à inviter les personnes les plus intéressantes de la communauté européenne.

Exceptionnellement, et par respect pour notre réalité québécoise, il a été décidé d’offrir à Québec une série de conférences en français tout au long du T3CON12-QC. Je suis donc également à Francfort pour y recruter les meilleurs présentateurs d’expression française, qu’ils soient suisses, belges, allemands ou même…français.

Je pars le mardi 4 octobre et serai en terre allemande dès le mercredi 5 pour une soirée « off-conference » comme disent les allemands. Cette soirée regroupera les membres de la communauté internationale TYPO3 dans un but strictement social. Je risque d’y être bien sage à tenter de prendre le dessus sur le décalage horaire mais j’y débuterai assurément mon travail de recrutement. Ce sera l’occasion d’y revoir les gens de DKD qui nous reçoivent et qui sont derrière la mise sur pied de l’extension TYPO3 Apache Solr.

J’aurais aussi l’occasion, durant mon périple, de renouer avec de multiples amis que je ne vois malheureusement que sur une base annuelle lors de mes périples en terre « TYPO3ienne ».

Je tenterai de vous tenir au courant de toute l’effervescence habituelle de cette conférence pendant mon séjour !

Patrick Gaumond

 

Magento : une application orientée commerce électronique

mrebai | CMS/SGC | Lundi, 12 septembre 2011

De plus en plus d’entreprises spécialisées dans la vente de produits optent pour les boutiques en ligne. De cette façon, elles peuvent davantage se rapprocher de leurs clients actuels ou potentiels qui peuvent, en quelques clics, acheter tous les produits qu’ils désirent se procurer.

D’un point de vue technique, beaucoup de solutions existent pour le commerce électronique. On peut créer une boutique en ligne en utilisant un Framework de développement Web (Zend Framework, Cake Php, etc.) ou en utilisant un CMS (TYPO3, Drupal, etc).

Mais il existe une autre solution encore plus simple d’utilisation: les applications de commerce électronique. Ces plate-formes permettent de créer et de gérer des pages Web qui offrent des fonctionnalités dont l’on se sert dans le cas de boutiques en ligne. Magento en fait partie!

Lorsqu’un Framework de développement web ou un CMS « générique » est utilisé pour créer une boutique en ligne, il faut développer beaucoup de fonctionnalités, comme la liste des produits, la gestion de l’inventaire, la gestion des livraisons, la gestion des factures, sans oublier une solution de paiement en ligne (Paypal). Par contre, si on utilise une plate-forme comme Magento, toutes ces fonctionnalités existent déjà.

Magento est donc une plate-forme spécialisée en commerce électronique « open source ». Elle a été lancée le 31 mars 2008 par l’entreprise américaine Varien. Cette plate-forme se base sur le Framework Zend. Tout le code Php de Zend peut être surchargé pour des fins de personnalisation et d’ajout de nouvelles fonctionnalités.

Vous pouvez télécharger le code de Magento gratuitement sur la page suivante : http://www.magentocommerce.com/download

Voici une liste des principales fonctionnalités déjà incluses dans Magento :

  • Tableau de bord d’administration (vue d’ensemble du site);
  • Gestion des produits;
  • Gestion des stocks;
  • Gestions des factures ainsi que des livraisons;
  • Comptes clients: les clients peuvent s’inscrire sur le site et modifier leur profil. Cette fonctionnalité existe par défaut dans Magento;
  • Une solution de paiement en ligne (Paypal) est intégrée dans Magento par défaut;
  • Gestion du site : création de pages web, modifications de leurs contenus, etc.;
  • Plusieurs autres fonctionnalités.

En 2008, Magento gagne le trophée du « meilleur nouveau projet Open Source », offert par la société SourceForge Inc. Et en juillet 2011, la grande entreprise américaine Ebay annonce l’acquisition de Magento ainsi que son intention de l’utiliser pour améliorer son site destiné aux vendeurs professionnels.

Il est à noter que des milliers d’extensions sont disponibles dans le MarketPlace de Magento nommé « Magento Connect ». Cependant, les extensions ne sont pas toutes gratuites.  Il existe une version payante de Magento appelée « Magento professional edition ».  «Magento community edition » étant la version libre.

Au Québec, rares sont les entreprises qui ont opté pour cette solution, généralement par manque d’information. L’équipe Web d’Infoglobe recommande fortement l’utilisation de cette plate-forme pour les boutiques en ligne, pour sa facilité d’utilisation et pour sa flexibilité.

Mohamed Rebai

Le test d’utilisabilité : Quelle utilité?

mrebai | Web | Mardi, 23 août 2011

Tel que défini par la norme ISO 9241-210, la conception centrée sur l’utilisateur est un processus qui repose sur l’idée que les futurs utilisateurs sont les personnes les mieux placées pour évaluer le produit (le site Web dans notre cas). On peut voir dans le graphe ci-dessous les principales étapes de ce processus :



En résumé, il s’agit d’un processus itératif, dans lequel on recommence les étapes suivantes tant que nos objectifs ne sont pas atteints :

  • Comprendre et spécifier le contexte d’utilisation;
  • Comprendre et spécifier les exigences utilisateurs et organisationnelles;
  • Produire des solutions de conception;
  • Évaluer les solutions au regard des exigences prédéfinies.

Maintenant… Comment évalue-t-on les solutions, tout en sachant que les futurs utilisateurs sont les personnes les mieux placées pour évaluer le produit ?

Le test d’utilisabilité

Le meilleur moyen d’évaluer les difficultés et les problèmes d’utilisation d’un site web, c’est d’effectuer un test d’utilisabilité.

Selon Wikipedia, l’utilisabilité est définie par la norme ISO 9241-11 comme « le degré selon lequel un produit peut être utilisé par des utilisateurs identifiés, pour atteindre des buts définis avec efficacité, efficience et satisfaction, dans un contexte d’utilisation spécifié ». Les trois principaux critères de l’utilisabilité sont donc :

  • L’efficacité : Est ce que le site web permet aux utilisateurs d’effectuer les tâches souhaitées ?
  • L’efficience : Est ce que le site web permet aux utilisateurs d’effectuer les tâches souhaitées en un minimum de temps ?
  • La satisfaction : Est ce que les utilisateurs sont satisfaits de leur utilisation du site Web ?

Le test d’utilisabilité permet donc de mesurer ces trois critères. Le principe de ce test est simple : On invite des utilisateurs pour effectuer des tâches pré-définies, on les observe, on analyse les résultats et finalement on amène des recommandations. Voici sommairement les pré-requis d’un test d’utilisabilité.

Des objectifs

Avant tout, on doit définir les objectifs à atteindre. Ces objectifs s’appuient sur les trois critères de l’utilisabilité; soit l’efficacité, l’efficience et la satisfaction.

Un exemple d’objectif peut être « 100% des utilisateurs doivent pouvoir trouver la page de contact en moins de 3 clics ».

Voici quelques critères que l’on peut utiliser dans la définition des objectifs :

  • Réussite de la tâche;   
  • Temps de réalisation de la tâche;
  • Nombre de clics nécessaires pour réussir la tâche;
  • etc.

Des scénarios de test

Un scénario de test est un petit paragraphe de mise en situation décrivant un contexte d’utilisation afin de demander à la personne exécutant le test, d’effectuer une tâche. Voici un exemple :
« Vous souhaitez aller voir un film au cinéma mais vous ne voulez pas faire la file d’attente étant donné le grand achalandage durant cette soirée de la semaine. Pour acheter vos billets en avance, un ami vous recommande le site www.achetezvosticketsdecinemaenligne.com. Vous allez donc visiter ce site dans l’intention d’acheter les tickets. »

 

Les sujets du test

Généralement, 5 à 8 sujets de test sont suffisants pour trouver la plupart des problèmes d’utilisabilité d’un site Web. Il est conseillé cependant de bien choisir les sujets de test en fonction du public visé par le produit (le site Web). Par exemple, pour un site de jeu vidéos, il est préférable d’inviter des jeunes personnes fans de jeux vidéos.

Le déroulement du test

Équipement nécessaire

Avant tout, on doit être équipé d’une webcam (ou tout autre caméra vidéo de bonne qualité) et d’un microphone pour enregistrer le déroulement du test. La vidéo des tests nous permettra par la suite d’effectuer une analyse des faits importants. Cette vidéo comportera une capture écran de tout ce que l’utilisateur effectue (les mouvements de la souris, les clics, etc.) ainsi que du visage de l’utilisateur, qui nous donnera des informations sur les réactions et sentiments éprouvés par ce dernier (frustration, hésitation, soulagement, etc). L’enregistrement audio nous permettra quant à lui, d’écouter les interactions entre l’utilisateur et la personne responsable du bon déroulement du test (dit le facilitateur).

Rôle du facilitateur

Le rôle du facilitateur est d’accueillir les sujets (une personne à la fois) et de leur expliquer le but de l’exercice. Il est bien important de leur préciser que ce que l’on teste c’est le site Web et non eux-mêmes. Ainsi, ils se sentiront plus confortables.

Une fois le test achevé, on pose quelques questions à l’utilisateur pour avoir ses impressions ainsi que ses recommandations concernant l’ensemble du site Web. Finalement, on lui propose de répondre à un bref questionnaire afin d’évaluer sa satisfaction quant à son utilisation du site.

Durant tout le temps du test d’utilisabilité, le facilitateur doit être concentré et prendre en note tout ce qu’il juge important. Généralement, quand un utilisateur hésite ou est frustré, cela signifie qu’il n’aime pas une fonctionnalité dans le site. Il faut donc prendre cette information en note.

L’analyse

Durant la phase d’analyse, on doit mesurer l’efficacité (nombre d’utilisateurs ayant réussi les scénarios, etc.), l’efficience (durée du test, nombre de clics, etc.) ainsi que la satisfaction des utilisateurs (grâce aux questionnaires de satisfaction). La vidéo du test ainsi que les notes du facilitateur doivent également être pris en considération lors de la phase d’analyse.

Présentation des résultats

Une fois l’analyse terminée, les personnes en charge du projet présentent les résultats obtenus ainsi que les recommandations formulées pour l’amélioration du site Web.

Pour conclure

Le principal avantage d’un test d’utilisabilité est de connaître la manière dont réfléchissent les utilisateurs lorsqu’ils naviguent sur notre site. Ainsi nous pouvons savoir quelles sont les fonctionnalités qu’ils aiment, lesquelles ils n’apprécient pas, pourquoi, etc. On entre dans la peau de l’utilisateur pour percevoir notre site d’un angle différent.

De plus, effectuer un test d’utilisabilité est assez facile et peu coûteux. Sa valeur ajoutée est très grande pour l’interface du site. On peut même tester l’accessibilité du site grâce à ce genre de test, en invitant des personnes handicapés.

Mohamed Rebai.

Quelques astuces pour intégrer du HTML5 dans votre site TYPO3

pboivin | CMS/SGC,Web | Mercredi, 10 août 2011

La dernière version du HTML fait de plus en plus parler d’elle. Que ce soit pour profiter des dernières fonctionnalités disponibles ou encore, pour être plus proactif, tout le monde veut y passer ! Voici quelques astuces afin de rendre vos sites TYPO3 les plus conformes possibles en HTML5.

Dans votre Typoscript « Constant », utilisez ce qui suit :

config.doctype = html5
config.xmlprologue = none

Dans votre Typoscript « Setup », utilisez ce qui suit :

page.headerData.50 = TEXT
page.headerData.50.value (
    <script src="fileadmin/templates/scripts/modernizr-1.7.min.js"></script>
)

Modernizr est une librairie qui permet aux vieux navigateurs de comprendre que les nouvelles balises existent. Vous servir de cette librairie peut vous éviter bien des problèmes d’affichage (www.modernizr.com).

Pour les styles, il est important d’ajouter au minimum ce qui suit, afin de permettre de traiter les nouvelles balises un peu comme des « div » :

article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
    display: block;
}

Voici un exemple d’une configuration des dates de tt_news pour HTML 5 :

plugin.tt_news {
    displayLatest {
    # Date en HTML5
         date_stdWrap >
         date_stdWrap.cObject = COA
         date_stdWrap.cObject {
             10 = TEXT
             10.field = datetime
             10.strftime = %Y-%m-%d
             10.wrap = <time pubdate="pubdate" datetime="|">
             20 = TEXT
             20.field = datetime
             20.strftime = %d %B %Y
             20.wrap = |</time>
         }
    }
    displayList {
        date_stdWrap < plugin.tt_news.displayLatest.date_stdWrap
    }
    displaySingle {
        date_stdWrap < plugin.tt_news.displayLatest.date_stdWrap
    }
}

Voici un gabarit HTML d’exemples de tt_news qui respecte beaucoup mieux le nouveau balisage HTML5 :

<!-- ###TEMPLATE_LATEST### begin -->
<header>
    <h1>###LATEST_HEADER###</h1>
    <div>
        <!--###LINK_ARCHIVE###-->###GOTOARCHIVE###<!--###LINK_ARCHIVE###-->
    </div>
</header>
<!-- ###CONTENT### begin -->
    <!-- ###NEWS### begin -->
    <article>
        <header>
            ###NEWS_DATE###
            <h2>
                <!--###LINK_ITEM###-->###NEWS_TITLE###<!--###LINK_ITEM###-->
            </h2>
        </header>
        ###NEWS_SUBHEADER###
        <p>
            <!--###LINK_ITEM###-->###MORE###<!--###LINK_ITEM###-->
        </p>
    </article>
    <!-- ###NEWS### end-->
<!-- ###CONTENT###  end -->
<!-- ###TEMPLATE_LATEST### end -->

Et voilà le résultat final avec le Typoscript et le nouveau gabarit HTML :

<header>
    <h1>Actualités</h1>
    <div><a href="{lien}">Toutes les actualités</a></div>
</header>
<article>
    <header>
        <time pubdate="pubdate" datetime="2011-08-05">5 août 2011</time>
         <h2><a href="{lien}" title="{titre}">{titre}</a></h2>
    </header>
    <p>{contenu}</p>
    <p><a href="{lien}" title="{titre}">Lire la suite</a> </p>
</article>

Depuis la toute dernière version de TYPO3 (4.5.4), la balise méta-charset est maintenant en format HTML5 (si vous avez bien assigné votre doctype). Il n’est donc plus nécessaire d’utiliser des extensions telles que html5meta_t3lib_pagerenderer pour rendre votre site conforme.

Voilà ! Avec ces quelques conseils, vous avez un bon point de départ pour commencer dès maintenant votre intégration en HTML5.

 

Intégration de Varnish avec TYPO3

souellet | CMS/SGC | Jeudi, 04 août 2011

Varnish est un “reverse-proxy” libre très rapide qui permet d’augmenter le nombre de requêtes par seconde que votre site Web peut traiter. Il peut aussi être utilisé comme « load-balancer » si vous avez plusieurs serveurs web. Son installation est assez simple et configurable via un fichier VCL.

Si vous voulez utiliser Varnish avec TYPO3, je vous conseille d’installer l’extension moc_varnish. Cette  extension  permet une intégration quasiment parfaite avec le système de cache de TYPO3. De plus, moc_varnish vous fournit quelques fichiers VCL pour faciliter la configuration du service.

Pour tester l’efficacité de Varnish, je vous conseille le logiciel « siege » ou « ab » pour comparer les performances de votre site.

 

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.