<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ez publish]]></title><description><![CDATA[ez publish]]></description><link>https://damien.pobel.fr</link><generator>metalsmith-feed</generator><lastBuildDate>Mon, 11 May 2026 10:18:06 GMT</lastBuildDate><atom:link href="https://damien.pobel.fr/rss/ez-publish/fr.xml" rel="self" type="application/rss+xml"/><item><title><![CDATA[Clap de fin pour le Planet eZ Publish.fr]]></title><description><![CDATA[<figure class="object-center">
    <img loading="lazy" src="/images/bandeau-planet-ez-publish-fr.png" alt="Logo Planet eZ
Publish.fr">
</figure>

<p><a href="/post/planet-ez-publish-fr/">Il y a 6 ans(!) presque jour pour jour</a>, j&#39;avais
lancé le Planet eZ Publish<del>.org</del>.fr, <em>ze French
corner</em> avec <a href="https://github.com/dpobel/planet-ezpublish.fr/blob/47613bc5f91f44b572630ee8a8ed7dd6a88f3323/www/lib/version.php#L33">eZ Publish 4.0.1
apparemment</a>&nbsp;!
J&#39;avoue que je ne me souviens plus trop des détails mais je vois en relisant les
différents posts que j&#39;ai expérimenté pas mal de trucs avec ce site.</p>
<p>Mais pour être honnête, depuis <a href="/post/planet-ez-publish-fr-mis-sur-orbite-par-ez-publish-5/">la migration vers eZ Publish
5.0</a>, le site est
en <em>roue libre</em> sans une grande motivation de ma part pour le maintenir et ni le
faire vivre. D&#39;ailleurs, il faudrait le renommer Planet eZ Platform
<a href="/post/au-revoir-ez-publish-bonjour-ez-platform/">maintenant</a> :-) Aussi, une
très large partie des sources sont mortes ou les liens pointent dans le vide…
Hé <a href="https://www.w3.org/Provider/Style/URI">Cool URIs don&#39;t change</a> ou au moins
redirigent vers une ressource correspondante&nbsp;!  &lt;/râlage&gt;</p>
<p>Du coup, d&#39;ici quelques jours, je vais arrêter le script de mise à jour et faire
un export statique du site pour le garder en ligne en mode zéro maintenance. Si
quelqu&#39;un veut reprendre le flambeau, je suis prêt à donner un petit coup de
main, mais en attendant clap, rideau&nbsp;!</p>
]]></description><link>https://damien.pobel.fr/post/arret-planet-ezpublish-fr</link><guid isPermaLink="true">https://damien.pobel.fr/post/arret-planet-ezpublish-fr</guid><category><![CDATA[ez publish]]></category><category><![CDATA[rss]]></category><category><![CDATA[ez platform]]></category><pubDate>Mon, 25 Jan 2016 23:24:00 GMT</pubDate></item><item><title><![CDATA[Au revoir eZ Publish, bonjour eZ Platform]]></title><description><![CDATA[<figure class="object-left">
    <img loading="lazy" src="/images/330x/ez-platform-rocket-launch.png" alt="eZ Platform
Rocket Launch">
</figure>

<p>eZ Platform 15.12 est sorti le 15
décembre&nbsp;!
La sortie d&#39;une nouvelle version est toujours au moins un petit évènement mais
celle-ci représente <em>un peu</em> plus que ça. En effet, il s&#39;agit de la première
version <em>stable</em> d&#39;eZ Platform, techniquement il s&#39;agit de <a href="https://github.com/ezsystems/ezplatform/releases/tag/v1.0.1">la
1.0.1</a>, eh <strong>oui
1.0.x</strong>&nbsp;!</p>
<p>Au dela de ce numéro symbolique, quelque part eZ Publish est en
train de tirer sa
révérence
après un bon paquet d&#39;années de service. Et je dois dire que ce changement
signifie quelque chose pour moi, je suis <a href="https://twitter.com/dpobel/status/656387581618298880">utilisateur d&#39;eZ Publish depuis plus
de 10 ans maintenant</a> (!)
et ce blog était même à l&#39;origine <a href="/post/ouverture">une expérimentation autour de ce
CMS</a> qui s&#39;appelait alors &quot;eZ publish&quot; :) Bon après, si on
gratte un peu, on peut voir qu&#39;eZ Platform dépend notamment d&#39;un (gros) paquet
appelé <code>ezpublish-kernel</code>, <em>la bête est encore vivante</em> ;-)</p>
<p>Plus sérieusement, <a href="/tag/ez-platform">eZ Platform</a> est la réécriture d&#39;eZ
Publish, en gros on a gardé les concepts mais ils sont mis en œuvre avec du code
moderne, de bien meilleur qualité, mieux découpé, testé et basé notamment sur
l&#39;excellent Symfony.</p>
<p>Une nouvelle version est toujours qu&#39;une étape vers les suivantes. Les
<em>Fast-Track Releases</em> vont maintenant se succèder tous les 2 mois. En toute
logique la prochaine sera la 16.02 et évidemment on travaille déjà dessus
notamment dans le but <a href="https://jira.ez.no/browse/EZP-25353">d&#39;améliorer l&#39;éditeur de texte
riche</a>, <a href="https://jira.ez.no/browse/EZP-25305">de donner accès à la
corbeille</a>, <a href="https://jira.ez.no/browse/EZP-25115">de permettre la migration de
XmlText vers RichText</a> (de l&#39;ancien <em>Field
Type</em> de texte riche vers le nouveau) et <a href="https://jira.ez.no/browse/EZP-24071">de permettre la modification les droits des
utilisateurs</a>. Attention&nbsp;: cette liste
n&#39;est ni exhaustive, ni une promesse. Aussi, eZ Platform est un logiciel
libre, toutes les contributions (sur ces sujets comme sur d&#39;autres) sont comme
toujours les bienvenues que ce soit par <a href="https://jira.ez.no/browse/EZP">un rapport de
bug</a>, un bout de code dans une <em>pull request</em> ou
simplement du <em>feedback</em> sur la
documentation, les rapports de bug existants par exemple. Alors, à vos claviers.</p>
]]></description><link>https://damien.pobel.fr/post/au-revoir-ez-publish-bonjour-ez-platform</link><guid isPermaLink="true">https://damien.pobel.fr/post/au-revoir-ez-publish-bonjour-ez-platform</guid><category><![CDATA[ez publish]]></category><category><![CDATA[ez platform]]></category><category><![CDATA[ez systems]]></category><category><![CDATA[cms]]></category><category><![CDATA[php]]></category><category><![CDATA[symfony]]></category><category><![CDATA[online editor]]></category><pubDate>Fri, 08 Jan 2016 09:36:07 GMT</pubDate></item><item><title><![CDATA[Vidéo de la conférence "eZ Publish, créer un site orienté contenu" au Forum PHP]]></title><description><![CDATA[<p>Je viens de voir que la vidéo de la conférence <a href="/post/ez-publish-forum-php-2013-creer-site-oriente-contenu">eZ Publish, créer un site
orienté contenu en 45
minutes</a> que
<a href="http://patrickallaert.blogpost.be/">Patrick Allaert</a> et moi-même avons donnée
au Forum PHP en novembre est maintenant disponible.</p>
<p>Pour rappel, <a href="https://patrickallaert.github.io/create-site-from-scratch.html">les
slides</a> et <a href="https://github.com/dpobel/ForumPhp2013DemoBundle">le
code associé</a> (il y a <a href="https://github.com/dpobel/ForumPhp2013DemoBundle/tags">un tag
par étape</a>) sont
disponibles en ligne, ce qui facilitera aussi le suivi de la conférence vue la
taille réduite des écrans dans cette salle et les quelques problèmes de son avec
le micro de Patrick :(</p>
<div class="video-container">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/cxBUanbJCn0?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>

<p>Si vous étiez présent ou même à partir de cette vidéo, il est encore temps <a href="https://joind.in/talk/view/9358">de
noter et commenter notre présentation sur
joind.in</a>.</p>
<p>Les vidéos des autres conférences arrivent progressivement sur <a href="http://www.youtube.com/user/afupPHP/videos">le compte
Youtube de l&#39;AFUP</a>, je ne peux que
vous conseillez de suivre les mises en lignes, <a href="https://joind.in/event/view/1371#event-tabs">certaines méritent vraiment
d&#39;être vues</a>.</p>
]]></description><link>https://damien.pobel.fr/post/video-forum-php-ez-publish-creer-site-oriente-contenu</link><guid isPermaLink="true">https://damien.pobel.fr/post/video-forum-php-ez-publish-creer-site-oriente-contenu</guid><category><![CDATA[ez publish]]></category><category><![CDATA[forum php]]></category><category><![CDATA[afup]]></category><category><![CDATA[php]]></category><pubDate>Tue, 24 Dec 2013 13:46:49 GMT</pubDate></item><item><title><![CDATA[Forum PHP 2013: eZ Publish, créer un site orienté contenu en 45 min.]]></title><description><![CDATA[<p>Avec <a href="http://patrickallaert.blogspot.be/">Patrick Allaert</a>, nous avons présenté
une conférence intitulée <em>eZ Publish : un CMS pour créer un site orienté
contenu en 45 minutes</em> au <a href="http://afup.org/pages/forumphp2013/">the Forum PHP
2013</a> à Paris.</p>
<p><a href="https://patrickallaert.github.io/create-site-from-scratch.html">Les slides sont disponibles en
ligne</a> avec <a href="https://github.com/dpobel/ForumPhp2013DemoBundle">le
code associé, le
ForumPhp2013DemoBundle</a> sur GitHub.
L&#39;idée était de présenter quelques uns des principaux concepts du CMS
eZ Publish 5 (au passage
la version 5.2 est sortie cette semaine):</p>
<ul>
<li>les types de contenu</li>
<li>eZ Publish 5 est une application Symfony2</li>
<li>la flexibilité du CMS et la manière de construire un vrai site</li>
</ul>
<p>Dans la partie pratique, nous avons construit le site d&#39;une conférence PHP comme
le Forum PHP pour montrer les fonctionnalités suivantes: (les liens pointent vers la diff correspondant sur
GitHub)</p>
<ol>
<li><a href="https://github.com/dpobel/ForumPhp2013DemoBundle/commit/dd8329485118944514372e91e70973a699f0045c">Comment écrire une règle d&#39;override pour la vue full pour utilisé un
template spécifique</a></li>
<li><a href="https://github.com/dpobel/ForumPhp2013DemoBundle/commit/626d619afe24f14f517e1a8c81623de918db96b5">Comment en plus utilisé un controller spécifique pour injecter des données
supplémentaires</a></li>
<li><a href="https://github.com/dpobel/ForumPhp2013DemoBundle/commit/f561f7ee2c266f282c28e75fa01327561704d6f7">Comment organiser les templates en utilisant des <em>sub-views</em></a></li>
<li><a href="https://github.com/dpobel/ForumPhp2013DemoBundle/commit/4c53df7c238f56332f1e2e4fd27a5f6200b45d3f">Exemple d&#39;utilisation des <em>sub-views</em> et de controllers spécifiques</a></li>
</ol>
<p>Après ces étapes, nous avons aussi modifié un type de contenu pendant la
conférence et <a href="https://github.com/dpobel/ForumPhp2013DemoBundle/commit/0342db41f50f7a3885379a8687bd1699266c507c">adapté le template pour prendre en compte le nouvel attribut</a> (Un fichier à télécharger).</p>
<p>Si vous étiez présent, merci <a href="https://joind.in/talk/view/9358">de noter et commenter notre présentation sur
joind.in</a> et dans le cas contraire, <del>la vidéo
devrait bientôt être disponible en ligne</del> <a href="/post/video-forum-php-ez-publish-creer-site-oriente-contenu">la vidéo de la conférence est
disponible</a>.</p>
]]></description><link>https://damien.pobel.fr/post/ez-publish-forum-php-2013-creer-site-oriente-contenu</link><guid isPermaLink="true">https://damien.pobel.fr/post/ez-publish-forum-php-2013-creer-site-oriente-contenu</guid><category><![CDATA[ez publish]]></category><category><![CDATA[forum php]]></category><category><![CDATA[afup]]></category><category><![CDATA[php]]></category><pubDate>Fri, 22 Nov 2013 11:15:48 GMT</pubDate></item><item><title><![CDATA[Demo de l'API REST v2 d'eZ Publish à la eZ Unconf #2]]></title><description><![CDATA[<p>J&#39;étais à la eZ Unconference 2013
à proximité de Montpellier. Pendant l&#39;atelier API publique et API REST, j&#39;ai
présenté une utilisation concrète l&#39;API REST v2 d&#39;eZ
Publish. J&#39;ai choisi de
construire une petite application en HTML5/JavaScript statique pour montrer qu&#39;il est possible
de faire une application assez amusante avec très peu de lignes de code.</p>
<h2 id="lapplication">L&#39;application</h2>
<p>Le code de cette application est disponible <a href="https://github.com/ezunconference/eZunConf2013-REST-API-demo">sur GitHub dans le dépôt
eZunConf2013-REST-API-demo</a>
et <a href="https://github.com/ezunconference/eZunConf2013-REST-API-demo#install">elle est installable</a>
sur n&#39;importe quel eZ Publish 5 suffisament récent. Avec <a href="http://caniuse.com/stream">un navigateur moderne
supportant l&#39;API getUserMedia/Stream</a>, elle permet de
prendre une photo avec la webcam de votre ordinateur et de créer un objet Image
à partir de celle-ci dans eZ Publish&nbsp;! Voici un rapide screencast de
l&#39;application en action:</p>
<div class="video-container">
<iframe width="640" height="480" src="https://www.youtube-nocookie.com/embed/4bTClN_4HYg?rel=0"
frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>

<p>Ce genre de fonctionnalité aurait typiquement sa place sur n&#39;importe quel site
où les utilisateurs devraient avoir une vraie photo sur leur profil comme un
réseau social, un intranet d&#39;entreprise, un site communitaire,&nbsp;…</p>
<h2 id="quelques-détails-techniques">Quelques détails techniques</h2>
<ul>
<li>Dans le screencast, le navigateur demande à l&#39;utilisateur de s&#39;identifier car
l&#39;application utilise l&#39;authentification <em>Basic</em> (la méthode d&#39;authenfication
par défault de l&#39;API REST). <a href="https://github.com/ezunconference/eZunConf2013-REST-API-demo#session-authentication">Avec quelques modifications
mineures</a>,
l&#39;authenfication par session est aussi utilisable.</li>
<li>6 requêtes HTTP sont nécessaires à la création du contenu et à la récupération
de son URI. Ce chiffre relativement important est dû à la division fine des
ressources (il s&#39;agit d&#39;une bonne pratique dans le design d&#39;une API REST). Autre
point sur les ressources, les URIs ne devraient jamais être construites par le
client REST, mais toujours récupérées depuis une réponse précédente. Des API
clientes (en PHP et en JavaScript) sont en cours d&#39;écriture et elles devraient
permettre de largement simplifier le code en évitant d&#39;avoir à travailler au
niveau requêtes HTTP.</li>
<li>L&#39;application doit être sur le même domaine qu&#39;eZ Publish. Il s&#39;agit d&#39;une
limitation imposée par les navigateurs. <a href="https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS">Il est possible de <em>contourner</em> ce
problème</a>
mais je n&#39;ai juste pas eu le temps de me pencher en détail là dessus.</li>
</ul>
<p>Pour de plus amples détails, je vous laisse examiner <a href="https://github.com/ezunconference/eZunConf2013-REST-API-demo/blob/master/demorest/index.htm#L46">le code
JavaScript</a>. Merci
d&#39;être indulgent sur la qualité du code, cet exemple a vraiment été écrit
rapidement et dans le but d&#39;être très simple à comprendre. J&#39;espère avoir le
temps d&#39;écrire une version plus propre et plus avancée prochainement.</p>
<h2 id="ressources-au-sujet-de-lapi-rest-v2-dez-publish">Ressources au sujet de l&#39;API REST v2 d&#39;eZ Publish</h2>
<ul>
<li><a href="https://github.com/ezsystems/ezpublish-kernel/blob/master/doc/specifications/rest/REST-API-V2.rst">Les spécfications de l&#39;API REST
v2</a></li>
<li><a href="https://gist.github.com/bdunogier/3918294">createcontent.sh</a> par <a href="http://share.ez.no/community/profile/10106">Bertrand Dunogier</a></li>
<li><a href="https://github.com/emodric/ezpRestScripts">Un ensemble de scripts de test</a> par <a href="http://share.ez.no/community/profile/89539">Edi Modrić</a></li>
<li><a href="http://damien.pobel.fr/post/ez-publish-rest-curl">Using the eZ Publish REST API v2 with
cURL</a> publié ici-même il y&#39;a
quelques temps</li>
</ul>
]]></description><link>https://damien.pobel.fr/post/ez-publish-rest-api-v2-demo-unconf-2013</link><guid isPermaLink="true">https://damien.pobel.fr/post/ez-publish-rest-api-v2-demo-unconf-2013</guid><category><![CDATA[ez publish]]></category><category><![CDATA[rest]]></category><category><![CDATA[javascript]]></category><pubDate>Thu, 13 Jun 2013 12:50:02 GMT</pubDate></item><item><title><![CDATA[Twig pagelayout pour les modules legacy dans eZ Publish 5]]></title><description><![CDATA[<p>Je suis en train de mettre à jour le Planète eZ
Publish.fr à la dernière version d&#39;eZ Publish 5.
J&#39;en profite pour passer en revue les problèmes ou les fonctionnalités
manquantes que j&#39;avais recontrés lors de <a href="/post/planet-ez-publish-fr-mis-sur-orbite-par-ez-publish-5">la mise en place de la version avec eZ
Publish 5 en décembre
dernier</a>. <a href="https://github.com/dpobel/planet-ezpublish.fr/issues/20">L&#39;un de
ces problèmes</a>
concernait les différences entre les pages générées par les modules legacy
(ezinfo/about, planet/search,…) et le reste du site. En effet, en 5.0, il
n&#39;était pas possible d&#39;utiliser un pagelayout Twig avec un module
legacy, et donc le résultat de ces modules
étaient toujours injectés dans le bon vieux <code>pagealyout.tpl</code>. À partir des n
2013.4
et 5.1, il est maintenant possible d&#39;utiliser un pagelayout Twig avec les
modules legacy. Il s&#39;agit d&#39;une fonctionnalité intéressante dans l&#39;optique d&#39;une
mise à jour progressive vers la nouvelle stack, mais certains éléments autour de
cette fonctionnalités sont intéressants.</p>
<p>Pour commencer, la version initiale a été ajoutée par Joe
Kepley <em>via</em> <a href="https://github.com/ezsystems/ezpublish-kernel/pull/264">une pull
request</a>. Il mérite un
grand bravo pour ça :-)</p>
<p>Ensuite, en travaillant sur une amélioration, j&#39;ai ajouté la possibilité <a href="https://github.com/ezsystems/ezpublish-kernel/pull/277">de
définir ce pagelayout par siteaccess ou groupe de
siteaccess</a>. Il n&#39;y a pas <a href="http://symfony.com/doc/current/cookbook/bundles/extension.html">de configuration sémantique</a>, donc pour configurer le
pagelayout à utiliser avec les modules legacy, il faut écrire la configuration
suivante dans <code>ezpublish.yml</code>&nbsp;:</p>
<pre><code class="language-yml"><span class="hljs-attr">parameters:</span>
  <span class="hljs-attr">ezpublish_legacy.planete.module_default_layout:</span> <span class="hljs-string">PlanetBundle::pagelayout.html.twig</span>
</code></pre>
<p>Dans cet exemple, <code>planete</code> est le nom du siteaccess et la valeur est évidemment
le chemin vers le template.</p>
<p>Enfin, avec quelques changements, le même pagelayout peut être utilisé pour les
modules legacy comme pour le reste du site. Le principal changement et
potentiellement le seul à apporter concerne le block <code>content</code> pour qu&#39;il tienne
compte de l&#39;éxécution d&#39;un module legacy. Une simple condition sur la variable
<code>module_result</code> permet de détecter le contexte&nbsp;:</p>
<pre><code class="language-django"><span class="language-xml"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">&quot;fr-FR&quot;</span>&gt;</span>
<span class="hljs-comment">&lt;!-- ... --&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
</span><span class="hljs-template-tag">{% <span class="hljs-name"><span class="hljs-name">block</span></span> content %}</span><span class="language-xml">
    </span><span class="hljs-template-tag">{% <span class="hljs-name"><span class="hljs-name">if</span></span> module_result %}</span><span class="language-xml">
        </span><span class="hljs-comment">{# we are in a legacy rendered module #}</span><span class="language-xml">
        </span><span class="hljs-template-variable">{{ module_result.content|raw }}</span><span class="language-xml">
    </span><span class="hljs-template-tag">{% <span class="hljs-name"><span class="hljs-name">endif</span></span> %}</span><span class="language-xml">
</span><span class="hljs-template-tag">{% <span class="hljs-name"><span class="hljs-name">endblock</span></span> %}</span><span class="language-xml">
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span></span>
</code></pre>
<p>Rien de compliqué, non&nbsp;? Il s&#39;agit là d&#39;un des nombreux ponts entre eZ
Publish legacy et la nouvelle stack eZ Publish 5. Vous voulez en apprendre
plus&nbsp;? Si j&#39;étais vous, je m&#39;inscrirais à la prochaine eZ UnConference #2.
Sans conteste, le moyen le plus rapide de tout apprendre ou presque sur eZ
Publish 5!</p>
<p>Mise à jour à 14h30: cette fonctionnalité est documentée avec un exemple
utilisant l&#39;héritage de template Twig.</p>
]]></description><link>https://damien.pobel.fr/post/ez-publish-twig-pagelayout-legacy-module</link><guid isPermaLink="true">https://damien.pobel.fr/post/ez-publish-twig-pagelayout-legacy-module</guid><category><![CDATA[twig]]></category><category><![CDATA[ez publish]]></category><category><![CDATA[template]]></category><category><![CDATA[symfony]]></category><pubDate>Wed, 01 May 2013 10:59:44 GMT</pubDate></item><item><title><![CDATA[Planet eZ Publish.fr mis sur orbite par eZ Publish 5!]]></title><description><![CDATA[<p>Comme annoncé <em>via</em>
<a href="https://twitter.com/dpobel/status/276627335921414144">Twitter</a> il y
a une semaine, le Planet eZ Publish.fr est
dorénavant mis sur orbite par eZ Publish 5 (en réalité des <em>clones</em>
github du 04/12/2012 soit quelque part entre la version 5.0 et les futures
2012.11/2012.12). Pour autant que je
sache, il s&#39;agit du premier site utilisant eZ Publish 5 ou au moins qui ne se
contente pas d&#39;utiliser le <em>fallback</em> sur la partie legacy (ie eZ Publish 4.x).
En effet, j&#39;ai tenté de ré-implémenter au maximum le site dans la nouvelle pile
basée sur Symfony 2. L&#39;ensemble du code source est disponible dans <a href="https://github.com/dpobel/planet-ezpublish.fr">le dépôt git
dpobel/planet-ezpublish.fr</a>, pour
les curieux les éléments dignes d&#39;intérêt se situent dans le
<a href="https://github.com/dpobel/planet-ezpublish.fr/tree/master/planet/src/Planet/PlanetBundle">PlanetBundle</a>
et dans les fichiers de configuration
<a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/ezpublish/config/ezpublish.yml">ezpublish.yml</a>,
<a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/ezpublish/config/override.yml">override.yml</a>
et
<a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/ezpublish/config/parameters.yml">parameters.yml</a>.</p>
<h2 id="nouvelle-stack-vs-legacy">Nouvelle stack vs. legacy</h2>
<p>Au final, il reste 3 fonctionnalités basées sur la partie <em>legacy</em> :</p>
<ul>
<li>Le formulaire de <a href="http://www.planet-ezpublish.fr/contact">contact</a>, les
attributs collecteur d&#39;information n&#39;étant pas pris en charge pour le moment</li>
<li><a href="http://www.planet-ezpublish.fr/planet/search">Le moteur de recherche</a>, là
encore l&#39;intégration de Solr est incomplete</li>
<li><a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/legacy/extensions/planete/cronjobs/cleanup_planetarium.php">Un script de
nettoyage</a>
de la partie planétarium, pour ce dernier point, j&#39;avoue que c&#39;est par pure
flemme :-)</li>
</ul>
<p>À l&#39;inverse, le reste du site n&#39;utilise que les nouvelles API et le moteur de
template Twig:</p>
<ul>
<li><a href="https://github.com/dpobel/planet-ezpublish.fr/tree/master/planet/src/Planet/PlanetBundle/Resources/views/full">Les différentes
vues</a>des
contenus (<a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/ezpublish/config/override.yml">règles
d&#39;override</a>)</li>
<li>Le flux RSS sur mesure est <a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/src/Planet/PlanetBundle/Controller/PlanetController.php#L283">une simple action d&#39;un
contrôleur</a>
derrière <a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/src/Planet/PlanetBundle/Resources/config/routing.yml">la route
adhoc</a></li>
<li><a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/src/Planet/PlanetBundle/Command/ImportCommand.php">Le script
d&#39;import</a>
utilise l&#39;API publique pour créer et mettre à jour les contenus à partir des
flux RSS</li>
</ul>
<h2 id="bugs-et-difficultés-diverses">Bugs et difficultés diverses</h2>
<p>Sans surprise, il y a quelques bugs dans cette nouvelle version; pour une
version majeure en point 0, le contraire aurait été très étonnant, mais il y a
aussi des manques plus globaux.</p>
<p>D&#39;une manière générale, l&#39;API publique est très
verbeuse. J&#39;ai publié <a href="https://gist.github.com/3983418">un gist</a> qui compare le
code nécessaire pour récupérer une liste de nœuds triée par priorité dans
l&#39;ancienne et la nouvelle API. Je crois que le constat est assez clair. Pour
éviter de répéter encore et encore, les mêmes bouts de code, j&#39;ai <a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/src/Planet/PlanetBundle/Repository/LocationService.php#L36">2 méthodes
utilitaires dans une surcharge du Location
service</a>.
Avec le recul, ce n&#39;est probablement pas la meilleure manière de faire, mais en
tout cas, cette petite addition m&#39;évite de me répéter.</p>
<p> </p>
<p>Les templates eZ Publish 5 sont radicalement différents des templates eZ Publish
4.x. Et c&#39;est pas uniquement une question de langage. Le point le plus impactant
est la disparition de <a href="http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Template-fetch-functions">nos bonnes vieilles fonctions
<em>fetch</em></a>.
Il s&#39;agit d&#39;une excellente chose en terme d&#39;architecture technique mais en
l&#39;état elle complexifie un peu l&#39;écriture de template. Il est en effet assez
rare de pouvoir se contenter du contenu et de l&#39;emplacement de ce contenu pour
générer la vue d&#39;objet. Dans ce cas, une solution est d&#39;appeler dans une sous
requête une action d&#39;un <em>controller custom</em> (voir par exemple <a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/src/Planet/PlanetBundle/Resources/views/full/planet.html.twig#L18">la vue full
correspondant à la page
d&#39;accueil</a>).
Une autre solution consiste à utiliser <a href="https://confluence.ez.no/display/EZP/Events">l&#39;évènement
<code>ezpublish.pre_content_view</code></a>
mais cet évènement est générique ce qui oblige à détecter d&#39;une manière ou d&#39;une
autre dans quel cas l&#39;évènement est lancé ce qui n&#39;est pas forcément évident
(<a href="https://github.com/dpobel/planet-ezpublish.fr/blob/master/planet/src/Planet/PlanetBundle/EventListener/PreContentViewListener.php#L28">voir par exemple
PlanetBundle/EventListener/PreContentViewListener.php</a>).
Bref, pour moi il manque quelque chose ici qui permette de facilement injecter
des paramètres dans les templates de vue.</p>
<p>En tant qu&#39;ancien intégrateur, j&#39;espère qu&#39;on pourra remédier à ces deux points
pour rendre le au jour le jour développement un peu plus facile.</p>
<h2 id="performances">Performances</h2>
<p>Qu&#39;en est il des performances ? Contrasté est probablement le terme le plus
adapté. En effet, sur un site sans identification et peu d&#39;évolution dans le
contenu, il est relativement facile de maximiser l&#39;utilisation du cache HTTP et
de finalement atteindre les performances <a href="http://symfony.com/doc/master/book/http_cache.html">du reverse proxy Symfony
2</a>. Dans ce cas eZ Publish 5
est assez nettement supérieur à eZ Publish 4.x qui servirait une page
complètement cachée et optimisée (<em>cache-block + viewcache</em>)! Si, le reverse
proxy de Symfony se révèle trop lent, il est bien sûr possible de le remplacer
par un reverse proxy dédié; dans ce domaine
<a href="https://www.varnish-cache.org/">Varnish</a> est un candidat de choix qui apportera
de bien meilleures performances encore!</p>
<p>En revanche, lorsque des parties de la page doivent être recalculées, les
performances s&#39;effondrent rapidement. <a href="https://github.com/ezsystems/ezpublish-kernel/pull/191">Un chantier est en
cours</a> pour améliorer
les performances des API et cela devrait durer quelques temps.</p>
<h2 id="conclusion">Conclusion</h2>
<p><strong>ÇA FONCTIONNE!</strong> À vrai dire plutôt mieux que je ne l&#39;aurai cru il y a
quelques mois! Bien sûr il reste bien des bugs à corriger et des choses à
améliorer, mais clairement eZ Publish 5 est utilisables dans pas mal de cas et
pour tout le reste il y a le <em>legacy fallback</em> :-)</p>
]]></description><link>https://damien.pobel.fr/post/planet-ez-publish-fr-mis-sur-orbite-par-ez-publish-5</link><guid isPermaLink="true">https://damien.pobel.fr/post/planet-ez-publish-fr-mis-sur-orbite-par-ez-publish-5</guid><category><![CDATA[symfony]]></category><category><![CDATA[ez publish]]></category><category><![CDATA[php]]></category><category><![CDATA[twig]]></category><category><![CDATA[performances]]></category><category><![CDATA[git]]></category><pubDate>Thu, 13 Dec 2012 11:05:50 GMT</pubDate></item><item><title><![CDATA[Symlink to the eZ Publish var directory, a good idea?]]></title><description><![CDATA[<h2 id="symlink-based-directory-layout">Symlink based directory layout</h2>
<p>On most of my sites, I tend to adopt the following folder layout:</p>
<pre><code class="language-bash">/web/sites/planet-ezpublish.fr$ find . -maxdepth 2 -name www\* -o -name var -<span class="hljs-built_in">ls</span> | <span class="hljs-built_in">tr</span> -s <span class="hljs-string">&#x27; &#x27;</span> | <span class="hljs-built_in">cut</span> -d <span class="hljs-string">&#x27; &#x27;</span> -f 11-14
./wwwnewdesign/var -&gt; ../var/
./www44/var -&gt; ../var
./var
./www2012.5/var -&gt; ../var
./www -&gt; wwwnewdesign
</code></pre>
<p>As you can see, <code>www</code>
 (the Apache document root) and <code>www&lt;version&gt;/var</code>
 are symlinks. The main idea behind this organization is to ease upgrades from an eZ Publish version to another, after upgrading on my developer machine and uploading the code to <code>/web/sites/mywebsite.com/www&lt;version&gt;</code>
, I just have to change the symlinks on the disk and I&#39;m done!</p>
<h2 id="cache-issues">Cache issues</h2>
<p>I know that some others are using a quite similar setup but <a href="https://twitter.com/npanau">Nicolas</a> and <a href="http://www.arnaudlafon.com/">Arnaud</a> seem <a href="https://twitter.com/arnaudlafon/status/215755953675567104">to encounter caching issues with it</a>. At first, <a href="https://twitter.com/dpobel/status/215774405547147264">I answered that this is working as expected for me</a>, but a while after, I discovered that I also have some cache issues on Planet eZ Publish.fr (mainly <code>cache-block</code>
 not being expired) while the same setup on <a href="http://pwet.fr">pwet.fr</a>/t-ka.net does not seem to be affected.</p>
<p>Actually, this comes from the configured file handler. pwet.fr/t-ka.net eZ Publish instance is configured with the <code>eZFS2FileHandler</code>
 while Planet eZ Publish.fr was configured with <code>eZFSFileHandler</code>
. And there is a big difference between those file handlers: when a cache file is outdated, <code>eZFSFileHandler</code>
 will try to remove it while <code>eZFS2FileHandler</code>
 just sets a specific last modified time to mark it as expired (this is the base of the stale cache mechanism). In addition, a protection had been added in eZ Publish (and <a href="https://github.com/ezsystems/ezpublish-legacy/commit/33439b3d">it&#39;s enabled by default</a>) to not let it remove files that are outside of the eZ Publish directory, and of course, this is the case with the symlink layout above. <em>So the cache issue is not a bug, it&#39;s a feature</em> ;-)</p>
<p>So if you want to use this kind of setup, you have to configure your eZ Publish instance with the <code>eZFS2FileHandler</code>. But keep in mind, that <code>eZFS2FileHandler</code>
 is still a bit experimental and that 2012.4 and 2012.5 community releases were affected by this bug, so you&#39;d better apply <a href="https://github.com/ezsystems/ezpublish-legacy/commit/ca5f2805ab179d7426697d9d5d32d8f0701fbc1f">this patch</a> to keep your images!</p>
]]></description><link>https://damien.pobel.fr/post/symlink-to-the-ez-publish-var-directory-a-good-idea</link><guid isPermaLink="true">https://damien.pobel.fr/post/symlink-to-the-ez-publish-var-directory-a-good-idea</guid><category><![CDATA[ez publish]]></category><category><![CDATA[cache]]></category><category><![CDATA[truc]]></category><category><![CDATA[apache]]></category><pubDate>Fri, 06 Jul 2012 15:49:12 GMT</pubDate></item><item><title><![CDATA[Peinture fraîche sur le Planet eZ Publish.fr]]></title><description><![CDATA[<figure class="object-center"><a href="/images/nouveau-design-du-planet-ez-publish-fr.png"><img loading="lazy" src="/images/660x/nouveau-design-du-planet-ez-publish-fr.png" alt="Nouveau design du Planet eZ Publish.fr">
</a></figure>


<p>Attention, la peinture est toute fraîche sur le Planet eZ Publish.fr! Après la migration <a href="https://github.com/dpobel/planet-ezpublish.fr">du code sur GitHub</a> et la mise à jour d&#39;eZ Publish 4.4 vers eZ Publish Community Project 2012.5 il y a une dizaine de jours, j&#39;ai donné un gros coup de frais au design du site. Ce nouveau design se veut évidemment plus sympa et est aussi <em>responsive</em> pour une mise en page optimisée en fonction des capacités de la plate-forme utilisée. En principe, il ne devrait pas y avoir de problèmes d&#39;affichage sur les navigateurs modernes et même avec Internet Explorer 8 et supérieur mais je ne suis pas maso, j&#39;ai pas cherché la compatibilité avec les versions 6 et 7 même si ça ne doit pas être si terrible :-)</p>
<p>J&#39;en ai aussi profité pour intégrer eZ Find et Solr ce qui m&#39;a donné l&#39;occasion de mettre en place le nouveau mécanisme de plugin lors de l&#39;indexation permettant notamment d&#39;ajouter des champs spécifique dans l&#39;index Solr ce qui est utile dans mon cas pour générer les <em>facets</em> par auteur (qui ne sont pas des auteurs au sens eZ Publish du terme).</p>
<p>Comme d&#39;habitude, les commentaires, inscriptions, <a href="https://github.com/dpobel/planet-ezpublish.fr/issues">rapports de bug</a> ou même <a href="https://github.com/dpobel/planet-ezpublish.fr/pulls">les pull requests</a> sont les bienvenues !</p>
]]></description><link>https://damien.pobel.fr/post/peinture-fraiche-sur-le-planet-ez-publish-fr</link><guid isPermaLink="true">https://damien.pobel.fr/post/peinture-fraiche-sur-le-planet-ez-publish-fr</guid><category><![CDATA[responsive design]]></category><category><![CDATA[ez publish]]></category><category><![CDATA[git]]></category><category><![CDATA[navigateur]]></category><category><![CDATA[rss]]></category><category><![CDATA[ez find]]></category><category><![CDATA[solr]]></category><pubDate>Wed, 20 Jun 2012 20:58:58 GMT</pubDate></item><item><title><![CDATA[Quelques nouveautés dans le formulaire d'édition de contenu d'eZ Publish]]></title><description><![CDATA[<p>eZ Publish Community Project 2012.3 est sortie aujourd&#39;hui. L&#39;extension ezautosave est embarquée et activée par défaut, elle ajoute un nouveau <em>widget</em> pour faciliter la prévisualisation de contenu depuis le formulaire d&#39;édition. J&#39;ai ajouté cette fonctionnalité via <a href="https://github.com/ezsystems/ezautosave/pull/2">une pull request</a> faite avec mon chapeau de membre de la communauté; j&#39;en suis plutôt fier ;-)</p>
<p>En plus de cela, plusieurs améliorations du formulaire d&#39;édition dans l&#39;interface d&#39;administration avaient déjà été ajoutées dans les dernières versions:</p>
<ul>
<li>le mode plein écran a été supprimé pour être remplacé par un barre d&#39;outil fixe en haut de l&#39;écran pour avoir à disposition les principaux boutons;</li>
<li>le menu de gauche peut être caché, son état est stocké dans une préférence pour le conserver après un rafraîchissement de page;</li>
<li>dès que vous <em>scrollez</em> vers le bas, un lien pour retourner en haut du formulaire fait son apparition;</li>
<li>l&#39;extension ezautosave fait en sorte de sauvegarder automatiquement le brouillon en cours pendant l&#39;édition;</li>
<li>l&#39;extension ajoute aussi le lien de prévisualisation mentionné ci-dessus dans la barre d&#39;outil fixe</li>
</ul>
<p>Une image vaut mille mots, qu&#39;en est il d&#39;une vidéo ? ;-)</p>
<div class="video-container">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/By7-YbYTGLA?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>

<p>(Visualisation en HD fortement conseillée)</p>
]]></description><link>https://damien.pobel.fr/post/quelques-nouveautes-dans-le-formulaire-d-edition-de-contenu-d-ez-publish</link><guid isPermaLink="true">https://damien.pobel.fr/post/quelques-nouveautes-dans-le-formulaire-d-edition-de-contenu-d-ez-publish</guid><category><![CDATA[ez publish]]></category><category><![CDATA[interface]]></category><category><![CDATA[ergonomie]]></category><category><![CDATA[travail]]></category><category><![CDATA[javascript]]></category><pubDate>Fri, 30 Mar 2012 20:45:46 GMT</pubDate></item></channel></rss>