<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Thomas ZILLIOX &#187; Web</title>
	<atom:link href="https://blog.developpez.com/thomas-zilliox/pcategory/web/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/thomas-zilliox</link>
	<description></description>
	<lastBuildDate>Tue, 07 Aug 2012 17:24:03 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Réparer la BDD d&#8217;eZ Publish</title>
		<link>https://blog.developpez.com/thomas-zilliox/p9818/web/reparer_ez_publish</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p9818/web/reparer_ez_publish#comments</comments>
		<pubDate>Fri, 18 Mar 2011 12:00:00 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[Base de données]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[eZ Publish]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[J&#8217;ai réussi à mettre eZ Publish dans un état instable. J&#8217;avais quelques objets sans nœuds associés, ce qui provoque des comportements bizarres. J&#8217;avais alors corrigé ma BDD à la main. Mais suite à la rédaction de cet article, Alexandre SEBBANE m&#8217;a fait remarqué la présence du script bin/php/flatten.php. Ce script a pour but de supprimer de la BDD les informations non utilisées. Il peut s&#8217;agir des contentobject, contentclass, workflow, role ou de tout. Pour nettoyer [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>J&rsquo;ai réussi à mettre eZ Publish dans un état instable.<br />
J&rsquo;avais quelques objets sans nœuds associés, ce qui provoque des comportements bizarres.<br />
</p>
<p>J&rsquo;avais alors corrigé ma BDD à la main. Mais suite à la rédaction de cet article, <a href="http://twitter.com/#!/alexsebbane">Alexandre SEBBANE</a> m&rsquo;a fait remarqué la présence du script <strong>bin/php/flatten.php</strong>.<br />
Ce script a pour but de supprimer de la BDD les informations non utilisées. Il peut s&rsquo;agir des contentobject, contentclass, workflow, role ou de tout.</p>
<p>Pour nettoyer les objets sans nœuds associés, il faudrait essayer la ligne de commande ci-dessous.<br />
Par contre, vous allez supprimer toutes les anciennes versions des objets publiés et les brouillons encore non-publiés :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">bin/php/flatten.php -s admin contentobject</div></div>
<p></p>
<p>Si ça ne marche pas, vous pouvez toujours faire comme moi. Exécutez plusieurs fois la commande SQL ci-dessous pour supprimer les nœuds sans parent :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DELETE FROM ezcontentobject_tree WHERE parent_node_id NOT IN <br />
&nbsp; &nbsp; ( SELECT * FROM <br />
&nbsp; &nbsp; &nbsp; &nbsp; (SELECT node_id FROM ezcontentobject_tree)<br />
&nbsp; &nbsp; tmp );</div></div>
<p>Puis exécutez les commandes SQL ci-dessous pour supprimer les objets qui n&rsquo;ont pas de nœuds associés :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DELETE FROM ezcontentobject_attribute WHERE contentobject_id NOT IN <br />
&nbsp; &nbsp; (SELECT contentobject_id FROM ezcontentobject_tree);<br />
DELETE FROM ezcontentobject_version WHERE contentobject_id NOT IN <br />
&nbsp; &nbsp; (SELECT contentobject_id FROM ezcontentobject_tree);<br />
DELETE FROM ezcontentobject_name WHERE contentobject_id NOT IN <br />
&nbsp; &nbsp; (SELECT contentobject_id FROM ezcontentobject_tree);<br />
DELETE FROM ezcobj_state_link WHERE contentobject_id NOT IN <br />
&nbsp; &nbsp; (SELECT contentobject_id FROM ezcontentobject_tree);<br />
DELETE FROM ezcontentobject WHERE id NOT IN <br />
&nbsp; &nbsp; (SELECT contentobject_id FROM ezcontentobject_tree);<br />
DELETE FROM eznode_assignment WHERE contentobject_id NOT IN <br />
&nbsp; &nbsp; (SELECT contentobject_id FROM ezcontentobject_tree);<br />
DELETE FROM ezcontentobject_link WHERE from_contentobject_id NOT IN <br />
&nbsp; &nbsp; (SELECT contentobject_id FROM ezcontentobject_tree);<br />
DELETE FROM ezcontentobject_link WHERE to_contentobject_id NOT IN <br />
&nbsp; &nbsp; (SELECT contentobject_id FROM ezcontentobject_tree);<br />
DELETE FROM ezcontentobject_trash WHERE contentobject_id NOT IN <br />
&nbsp; &nbsp; (SELECT contentobject_id FROM ezcontentobject_tree);</div></div>
<p>Ce n&rsquo;est pas une solution propre, mais ça peut dépanner.<br />
</p>
<p>Pour éviter ce genre de soucis, prennez l&rsquo;habitude de faire <a href="http://blog.developpez.com/thomas-zilliox/p10151/web/sql/faire-un-dump-mysql/">des sauvegarder régulières de vos BDD</a> <img src="https://blog.developpez.com/thomas-zilliox/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>En espérant que ça puisse vous aider,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Afficher les erreurs PHP</title>
		<link>https://blog.developpez.com/thomas-zilliox/p11105/web/afficher_les_erreurs_php</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p11105/web/afficher_les_erreurs_php#comments</comments>
		<pubDate>Wed, 20 Jun 2012 15:40:18 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Il existe une propriété dans php.ini pour indiquer le niveau d&#8217;affichage des erreurs et alertes. De nombreuses installations de PHP n&#8217;affichent pas les erreurs ou pas toutes. En effet, cela peut causer des problèmes. Par exemple, il n&#8217;est pas possible de faire header() s&#8217;il y a déjà eu une sortie écran. Notamment, cela peut vous bloquer les redirections. Les alertes peuvent aussi donner un peu trop d&#8217;indications à un éventuel hacker Néanmoins, il souvent très [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Il existe une propriété dans php.ini pour indiquer le niveau d&rsquo;affichage des erreurs et alertes.<br />
De nombreuses installations de PHP n&rsquo;affichent pas les erreurs ou pas toutes.</p>
<p>En effet, cela peut causer des problèmes. Par exemple, il n&rsquo;est pas possible de faire header() s&rsquo;il y a déjà eu une sortie écran. Notamment, cela peut vous bloquer les redirections. Les alertes peuvent aussi donner un peu trop d&rsquo;indications à un éventuel hacker <img src="https://blog.developpez.com/thomas-zilliox/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>Néanmoins, il souvent très pratique en période de développement d&rsquo;afficher ces erreurs.<br />
Vous pouvez le faire directement en PHP :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">error_reporting( E_ALL | E_STRICT );<br />
ini_set( 'display_errors', '1' );</div></div>
<p>J&rsquo;utilise le niveau E_STRICT et E_ALL. En effet, avant PHP 5.4, E_ALL ne contient pas les alertes de niveau E_STRICT.</p>
<p>C&rsquo;est à faire absolument, lorsque votre code génère une page blanche et que vous n&rsquo;avez pas accès aux logs.</p>
<p>En espérant que ça puisse vous aider,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bien démarrer avec SugarCRM</title>
		<link>https://blog.developpez.com/thomas-zilliox/p10399/web/bien_demarrer_avec_sugarcrm</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p10399/web/bien_demarrer_avec_sugarcrm#comments</comments>
		<pubDate>Fri, 14 Oct 2011 11:00:00 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[Sugar CRM]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voici quelques liens qui peuvent être utiles pour bien démarrer avec Sugar CRM : Installer SugarCRM : Installer sous Ubuntu : Billet de Marc Gomez Télécharger : Liste des téléchargement sur le site de SugarCRM Créer son premier module SugarCRM : Le Hello World Module : Tutoriel du site de SourceCreativity Ajouter un champs à un module : Billet sur le blog de LornaJane Les Forums en français SugarCRM : Developpez : Forum SugarCRM CRM-France [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voici quelques liens qui peuvent être utiles pour bien démarrer avec Sugar CRM :</p>
<p>Installer SugarCRM :</p>
<ul>
<li>Installer sous Ubuntu : <a href="http://www.marcgomez.fr/archives/298">Billet de Marc Gomez</a></li>
<li>Télécharger : <a href="http://www.sugarforge.org/frs/?group_id=6">Liste des téléchargement sur le site de SugarCRM</a></li>
</ul>
<p>Créer son premier module SugarCRM :</p>
<ul>
<li>Le Hello World Module : <a href="http://www.sourcecreativity.com/sourcecreativity-free-extensions/articles/sugarcrm-tutorials-helloworld-module.html">Tutoriel du site de SourceCreativity</a></li>
<li>Ajouter un champs à un module : <a href="http://www.lornajane.net/posts/2008/sugarcrm-custom-fields">Billet sur le blog de LornaJane</a></li>
</ul>
<p>Les Forums en français SugarCRM :</p>
<ul>
<li>Developpez : <a href="http://www.developpez.net/forums/f1577/logiciels/solutions-dentreprise/crm/sugarcrm/">Forum SugarCRM</a></li>
<li>CRM-France : <a href="http://www.crm-france.com/forums/forum-problemes-developpements-bugs.html">Forum problèmes, développements, bugs &#8230;</a></li>
<li>Site officiel : <a href="http://www.sugarcrm.com/forums/f47/">Forum français</a></li>
</ul>
<p>Ressources officielles :</p>
<ul>
<li>Guide utilisateurs en <a href="http://www.sugarcrm.com/crm/support/documentation/SugarCommunityEdition/6.2/-docs-Application_Guides-Sugar_Community_Edition_Application_Guide_6.2.3GA-toc.html">HTML</a> ou en <a href="http://www.sugarcrm.com/network/help/OS/6.2/Application_Guides/Sugar_Community_Edition_Application_Guide_6.2.3/Sugar_Community_Edition_Application_Guide_6.2.3GA.pdf">PDF</a></li>
<li>Guide développeurs en <a href="http://www.sugarcrm.com/crm/support/documentation/SugarCommunityEdition/6.2/-docs-Developer_Guides-Sugar_Developer_Guide_6.2.0-toc.html">HTML</a> ou en <a href="http://www.sugarcrm.com/network/help/OS/6.2/Developer_Guides/Sugar_Developer_Guide_6.2.0/Sugar_Developer_Guide_6.2.0.pdf">PDF</a></li>
<li>Articles : <a href="http://www.sugarcrm.com/kb/">SugarCRM Knowledge Base</a></li>
<li>Blogs : <a href="http://developers.sugarcrm.com/wordpress/">SugarCRM Developer Blogs</a></li>
<li>Tutoriels : <a href="http://developers.sugarcrm.com/tutorials.php?id=recent">SugarCRM Tutorials</a></li>
<li>Podcasts : <a href="http://www.sugarforge.org/content/community/communications/podcasts.php">SugarCRM Podcasts</a></li>
<li>Actualités : <a href="http://www.sugarforge.org/content/open-source/news.php">SugarCRM News</a></li>
</ul>
<p>Schéma UML :</p>
<ul>
<li>Schéma simple : <a href="http://www.sugarcrm.com/forums/attachments/f6/2508d1178891935-entity-relationship-diagram-sugarcrm_erdiagram.jpg">Vu sur le forum SugarCRM</a></li>
<li>Schéma complet : <a href="http://media.sugarcrm.com/developer/tutorials/Sugar6.0.0_CE_Schema_Diagrams.pdf">fait par SugarCRM</a></li>
</ul>
<p>Ce billet est un billet vivant. Il sera donc complété au fur et à mesure de mes découvertes.<br />
N&rsquo;hésitez pas à m&rsquo;envoyer vos liens préférés !</p>
<p>En espérant que ça puisse vous être utile,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erreur sur le déploiement de package dans SugarCRM</title>
		<link>https://blog.developpez.com/thomas-zilliox/p10413/web/erreur_sur_le_deploiement_de_package_dan</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p10413/web/erreur_sur_le_deploiement_de_package_dan#comments</comments>
		<pubDate>Mon, 17 Oct 2011 16:23:15 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[Sugar CRM]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Lors de mes premiers tests avec SugarCRM, j&#8217;ai essayé de déployer un Package créé avec Module Builder sans lui associer de module. Sans surprises ça ne fonctionne pas. Seulement les traces ne sont pas très explicites ! Voici les erreurs que l&#8217;on va rencontrer : Au déploiement, une popup dit &#171;&#160;An error has occured during deploy process, your package may not have installed correctly&#160;&#187; Au déploiement, les los disent &#171;&#160;PHP Warning: dir(/[&#8230;]/icons): failed to open [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Lors de mes premiers tests avec SugarCRM, j&rsquo;ai essayé de déployer un Package créé avec Module Builder sans lui associer de module.<br />
Sans surprises ça ne fonctionne pas. Seulement les traces ne sont pas très explicites !</p>
<p>Voici les erreurs que l&rsquo;on va rencontrer :</p>
<ul>
<li>Au déploiement, une popup dit &laquo;&nbsp;An error has occured during deploy process, your package may not have installed correctly&nbsp;&raquo;</li>
<li>Au déploiement, les los disent &laquo;&nbsp;PHP Warning:  dir(/[&#8230;]/icons): failed to open dir: No such file or directory in /[&#8230;]/dir_inc.php on line 52&Prime;</li>
<li>On peut quand même essayer de le charger avec Module Loader : &laquo;&nbsp;Failed to copy /[&#8230;]/themes&nbsp;&raquo;</li>
</ul>
<p>Donc si vous rencontrez ces erreurs, il s&rsquo;agit sûrement d&rsquo;un module cassé ou mal associé au votre Package.</p>
<p>En espérant que ça puisse vous aider,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer SugarCRM sous Ubuntu</title>
		<link>https://blog.developpez.com/thomas-zilliox/p10410/web/installer_sugarcrm_sous_ubuntu</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p10410/web/installer_sugarcrm_sous_ubuntu#comments</comments>
		<pubDate>Mon, 17 Oct 2011 18:00:00 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[Sugar CRM]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voici les quelques commandes à exécuter pour installer SugarCRM sous un Ubuntu. La procédure utilise les versions Ubuntu 11.10 et SugarCRM 6.2 . &#60;span style=&#34;color:#777;&#34;&#62;# Télécharger SugarCRM Community Edition 6.2&#60;/span&#62; cd /tmp wget http://www.sugarforge.org/frs/download.php/8507/SugarCE-6.2.3.zip cd /var/www unzip /tmp/SugarCE-6.2.3.zip mv SugarCE-Full-6.2.3 mon_projet &#60;span style=&#34;color:#777;&#34;&#62;# Mettre les bons droits&#60;/span&#62; sudo chown -R www-data: mon_projet sudo chmod -R 775 mon_projet Ensuite il faut aller, via son navigateur, sur l&#8217;url http://localhost/mon_projet/install.php Et suivre les instructions. En espérant que ça [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voici les quelques commandes à exécuter pour installer SugarCRM sous un Ubuntu.<br />
La procédure utilise les versions Ubuntu 11.10 et SugarCRM 6.2 .</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;span style=&quot;color:#777;&quot;&gt;# Télécharger SugarCRM Community Edition 6.2&lt;/span&gt;<br />
cd /tmp<br />
wget http://www.sugarforge.org/frs/download.php/8507/SugarCE-6.2.3.zip<br />
cd /var/www<br />
unzip /tmp/SugarCE-6.2.3.zip<br />
mv SugarCE-Full-6.2.3 mon_projet<br />
<br />
&lt;span style=&quot;color:#777;&quot;&gt;# Mettre les bons droits&lt;/span&gt;<br />
sudo chown -R www-data: mon_projet<br />
sudo chmod -R 775 mon_projet</div></div>
<p>Ensuite il faut aller, via son navigateur, sur l&rsquo;url <em style="color:#777;">http://localhost/mon_projet/install.php</em><br />
Et suivre les instructions.</p>
<p>En espérant que ça puisse vous aider,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bookmarklet de mise en forme des traces de debug sous eZ Publish</title>
		<link>https://blog.developpez.com/thomas-zilliox/p10213/web/bookmarklet_debug_ezpublish</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p10213/web/bookmarklet_debug_ezpublish#comments</comments>
		<pubDate>Mon, 22 Aug 2011 20:00:00 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[Bookmarklet]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[eZ Publish]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Sous eZ Publish, on peut afficher des traces de debug directement en front-office. Dans cet article je vous présente un petit Bookmarklet que j&#8217;ai fait pour améliorer leur rendu. Pour installer ce Bookmarklet, faîtes glisser ce lien dans votre barre de favoris : eZ Filter Debug Pour activer ce Bookmarklet, cliquez dessus lorsque vous êtes sur une page générée par eZ Publish avec les traces de debug activée Vous pouvez lire cette article, si vous [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sous eZ Publish, on peut afficher des traces de debug directement en front-office.<br />
Dans cet article je vous présente un petit Bookmarklet que j&rsquo;ai fait pour améliorer leur rendu.</p>
<ul>
<li>Pour installer ce Bookmarklet, faîtes glisser ce lien dans votre barre de favoris : <a href="javascript:var%20e=document.createElement('script');e.setAttribute('language','javascript');e.setAttribute('src','http://zilliox.me/resource/bookmarklet/ezpublish-filter-debug.js');document.body.appendChild(e);void(0);">eZ Filter Debug</a></li>
<li>Pour activer ce Bookmarklet, cliquez dessus lorsque vous êtes sur une page générée par eZ Publish avec les traces de debug activée</li>
<li>Vous pouvez lire cette article, si vous voulez en savoir plus sur <a href="http://blog.developpez.com/thomas-zilliox/p10159/web/javascript/bookmarklet/javascript-et-bookmarklet/">comment faire un Bookmarklet</a></li>
</ul>
<p>
Le Bookmarklet &laquo;&nbsp;eZ Filter Debug&nbsp;&raquo; se résume en 3 fonctionnalités qui peuvent vous intéresser :</p>
<p>
<strong>1. Chargement de la feuille de style debug.css</strong></p>
<p>Pour mettre en forme les traces de debug, il faut charger la feuille de style debug.css.<br />
Mais on n&rsquo;a pas forcément envie de la charger tout le temps, surtout en production.<br />
C&rsquo;était l&rsquo;idée de départ : ce Bookmarklet charge à la volée la feuille de style de Debug.</p>
<p>
<strong>2. Afficher les traces de debug à la demande</strong></p>
<p>La deuxième idée est de pouvoir cacher les traces de debug par défaut.<br />
Pour cela, il suffit de rajouter dans votre feuille CSS la ligne suivante :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#debug {display: none;}</div></div>
<p>Lorsque vous activerez le Bookmarklet, les traces de Debug s&rsquo;afficheront, et vous serez redirigé vers elles.</p>
<p>Ceci n&rsquo;est pas forcément utile, car eZ Publish vous permet déjà de n&rsquo;afficher les traces de Debug que pour une certaine liste d&rsquo;IP.<br />
Mais ça peut être pratique dans certains cas : IP dynamique, client interne, site mobile, etc.</p>
<p>
<strong>3. Permettre de filtrer les traces de debug</strong></p>
<p>Les traces de Debug affichent également les traces de Notice, Timing, Warning et Error.<br />
Pas toujours facile de s&rsquo;y retrouver en un coup d’oeil.<br />
Du coup le Bookmarklet &laquo;&nbsp;eZ Filter Debug&nbsp;&raquo; vous propose également une option de filtrage :</p>
<p><img src="http://zilliox.me/resource/bookmarklet/bookmarklet_ezpublish_filtrage.png" alt="Illustration du filtrage des traces de debug sous eZ Publish" title="Démonstration du filtrage des traces de debug sous eZ Publish" /></p>
<p>
Note 1 : ce Bookmarklet a été testé sous eZ Publish 4.3 &#8211; 4.5.<br />
Note 2 : Le code du Bookmarklet est diponible sur <a href="https://github.com/Open-Wide/eZ-Filter-Debug">GitHub</a>.<br />
N&rsquo;hésitez pas en me faire des remarques, soit par commentaire, soit par le <a href="http://zilliox.me/thomas/contact.htm">formulaire de contact de mon site</a>.</p>
<p>En espérant que ça puisse vous être utile,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connaître la version de jQuery, Mootools ou Prototype</title>
		<link>https://blog.developpez.com/thomas-zilliox/p9849/web/connaitre_sa_version_de_mootools</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p9849/web/connaitre_sa_version_de_mootools#comments</comments>
		<pubDate>Wed, 30 Mar 2011 18:00:00 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[Bookmarklet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[J&#8217;ai récemment repris des &#171;&#160;vieux&#160;&#187; sites avec des scripts jQuery, Mootools ou Prototype. Le problème est que je ne savais pas toujours quelle version du framework était utilisée. J&#8217;ai donc créer le Bookmarklet WhatJS. Il permet de savoir quel framework JavaScript est utilisé sur une page. Pour l&#8217;utiliser, faîtes glisser le lien ci-dessus vers votre barre de favoris. Cliquez dessus une fois sur la page que vous voulez scanner. Vous pouvez le tester sur cette [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>J&rsquo;ai récemment repris des &laquo;&nbsp;vieux&nbsp;&raquo; sites avec des scripts jQuery, Mootools ou Prototype.<br />
Le problème est que je ne savais pas toujours quelle version du framework était utilisée.</p>
<p>J&rsquo;ai donc créer le Bookmarklet <a href="javascript:(function(s){s='';if(typeof(jQuery)!=='undefined'){s+='jQuery '+jQuery(document).jquery+'\r\n'}if(typeof(MooTools)!=='undefined'){s+='MooTools '+MooTools.version+'\r\n'}if(typeof(Prototype)!=='undefined'){s+='Prototype '+Prototype.Version+'\r\n'}if(s==''){s='Pas de framework JS sur cette page'}alert(s);})();">WhatJS</a>.</p>
<p>Il permet de savoir quel framework JavaScript est utilisé sur une page.<br />
Pour l&rsquo;utiliser, faîtes glisser le lien ci-dessus vers votre barre de favoris.<br />
Cliquez dessus une fois sur la page que vous voulez scanner.<br />
Vous pouvez le tester sur <a href="http://goo.gl/C0oYJ">cette page</a> par exemple.</p>
<p>Pour les plus curieux, voici les astuces que j&rsquo;ai utilisé pour identifier la version des framework.<br />
Vous pouvez copiez-collez les codes ci-dessous directement dans votre barre de navigation :</p>
<ul>
<li>Connaître la version de jQuery :
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">javascript:alert(jQuery(document).jquery);</div></div>
</li>
<li>
Connaître la version de Mootools :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">javascript:alert(MooTools.version);</div></div>
</li>
<li>
Connaître la version de Prototype :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">javascript:alert(Prototype.Version);</div></div>
</li>
</ul>
<p>En espérant que ça puisse vous aider,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript et Bookmarklet</title>
		<link>https://blog.developpez.com/thomas-zilliox/p10159/web/javascript_et_bookmarklet</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p10159/web/javascript_et_bookmarklet#comments</comments>
		<pubDate>Wed, 27 Jul 2011 18:00:00 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[Bookmarklet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Hier, on a codé un petit script pour entourer toutes les images d&#8217;une page. Aujourd&#8217;hui on va s&#8217;amuser à le transformer en Bookmarklet, ou applisignet en québecois. 1. Qu&#8217;est-ce qu&#8217;un Bookmarklet Un Bookmarklet est un Bookmark, ou favoris, qui contient un script JavaScript à exécuter. Un Bookmarklet est simple à reconnaître, son URL commence toujours par javascript:. Au chargement de l&#8217;URL, la navigateur exécute le JavaScript sans changer de page. Par exemple, essayez de copier-coller [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Hier, on a codé <a href="http://blog.developpez.com/thomas-zilliox/p10156/web/javascript/javascript-et-les-iframes/">un petit script pour entourer toutes les images d&rsquo;une page</a>.<br />
Aujourd&rsquo;hui on va s&rsquo;amuser à le transformer en Bookmarklet, ou applisignet en québecois.</p>
<p>
<strong>1. Qu&rsquo;est-ce qu&rsquo;un Bookmarklet</strong><br />
Un Bookmarklet est un Bookmark, ou favoris, qui contient un script JavaScript à exécuter.<br />
Un Bookmarklet est simple à reconnaître, son URL commence toujours par <strong>javascript:</strong>.<br />
Au chargement de l&rsquo;URL, la navigateur exécute le JavaScript sans changer de page.</p>
<p>Par exemple, essayez de copier-coller la ligne suivante dans la barre d&rsquo;adresse de votre navigateur :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">javascript:alert('\103\145\143\151\40\145\163\164\40\165\156\40\102\157\157\153\155\141\162\153\154\145\164');</div></div>
<p><span id="more-36"></span><br />
Je peux également en faire un lien avec le code HTML suivant :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;lt;a href=&quot;javascript:alert('\103\145\143\151\40\145\163\164\40\165\156\40\102\157\157\153\155\141\162\153\154\145\164');&quot;&amp;gt;Example simple de Bookmarklet&amp;lt;a&amp;gt;</div></div>
<p>Si vous déplacer le lien suivant vers votre barre de favoris, celui deviendra une application-signet, ou Bookmarklet : <a href="javascript:alert('\103\145\143\151\40\145\163\164\40\165\156\40\102\157\157\153\155\141\162\153\154\145\164');">Example simple de Bookmarklet</a>.</p>
<p>
<strong>2. Comment faire notre Bookmarklet</strong><br />
On aurait pu  mettre tout le code de notre script directement dans le bookmarklet.<br />
Mais les navigateurs ont une limite de caractères pour leur barre d&rsquo;adresse.<br />
Par exemple, pour Internet Explorer la limite 2083 caractères.</p>
<p>Il faut savoir, qu&rsquo;on ne peut pas avoir de saut de ligne dans une barre d&rsquo;adresse et que les caractères spéciaux doivent être encodés.<br />
Au final, ne pas mettre son code directement dans le Bookmarklet permet d&rsquo;augmenter la lisibilité et donc de diminuer les erreurs.</p>
<p>Si le Bookmarklet charge un fichier JavaScript distant, alors la mise à jour sera aisé.<br />
Il suffira de modifier le fichier JavaScript pour mettre à jour tous les Bookmarklets.</p>
<p>
<strong>3. Mettre le script en ligne</strong><br />
Pour cela on va mettre le script d&rsquo;hier dans un fichier : <strong>borderimage.js</strong>.<br />
Il faut ensuite le charger sur un site internet afin qu&rsquo;il soit accessible à tous.<br />
Pour notre Bookmarklet, l&rsquo;URL sera : http://zilliox.me/resource/bookmarklet/borderimage.js</p>
<p>
<strong>4. Coder notre Bookmarklet</strong><br />
Il suffit donc de créer un script qui chargera un fichier JavaScript distant.<br />
Notre Bookmarklet doit donc ajouter à la balise body, une balise qui ressemblera à ça :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;lt;script language=&quot;javascript&quot; src=&quot;bookmarklet.js&quot;&amp;gt;&amp;lt;/script&amp;gt;</div></div>
<p>Notre Bookmarklet va donc exécuter le code JavaScript suivant :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">var e=document.createElement('script');<br />
e.setAttribute('language','javascript');<br />
e.setAttribute('src','bookmarklet.js');<br />
document.body.appendChild(e);</div></div>
<p>
<strong>5. Mettre en forme</strong><br />
Il ne nous reste plus qu&rsquo;à :</p>
<ul>
<li>Supprimer les sauts de lignes</li>
<li>Modifier les espaces par %20</li>
<li>Ajouter void(0); à la fin pour que le lien ne fasse rien</li>
</ul>
<p>Ce qui nous donne un résultat beaucoup moins lisible :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">javascript:var%20e=document.createElement('script');e.setAttribute('language','javascript');e.setAttribute('src','bookmarklet.js');document.body.appendChild(e);void(0);</div></div>
<p>Vous voulez tester ce Bookmarklet ? Faîtes glisser ce lien vers votre barre de favoris : <a href="javascript:var%20e=document.createElement('script');e.setAttribute('language','javascript');e.setAttribute('src','http://zilliox.me/resource/bookmarklet/borderimage.js');document.body.appendChild(e);void(0);">Border Image</a>.</p>
<p>PS : Pour annuler l&rsquo;effet du Bookmarklet, il suffit de recharger la page <img src="https://blog.developpez.com/thomas-zilliox/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>En espérant que ça vous ait plu,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Traduction avec paramètres sous eZ Publish</title>
		<link>https://blog.developpez.com/thomas-zilliox/p9671/web/traduction_parametres_ezpublish</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p9671/web/traduction_parametres_ezpublish#comments</comments>
		<pubDate>Thu, 18 Aug 2011 20:00:00 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[eZ Publish]]></category>
		<category><![CDATA[Traduction]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Une petite astuce pour les traductions sous eZ Publish, on peut utiliser des paramètres. Par exemple, on est pas obligé de couper la traduction de &#171;&#160;Plus que 3 exemplaires.&#160;&#187; si la valeur 3 est dynamique. Vous pouvez utiliser dans votre template le code ci-dessous : {&#34;Only %quantity left in stock.&#34;&#124;i18n('shop', , hash('%quantity', $product.stock))} Et utiliser dans votre fichier de traduction, le code ci-dessous : &#38;lt;!DOCTYPE TS&#38;gt; &#38;lt;TS&#38;gt; &#38;lt;context&#38;gt; &#160; &#160; &#38;lt;name&#38;gt;shop&#38;lt;/name&#38;gt; &#160; &#160; &#38;lt;message&#38;gt; &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Une petite astuce pour les traductions sous eZ Publish, on peut utiliser des paramètres.<br />
Par exemple, on est pas obligé de couper la traduction de &laquo;&nbsp;Plus que 3 exemplaires.&nbsp;&raquo; si la valeur 3 est dynamique.</p>
<p>Vous pouvez utiliser dans votre template le code ci-dessous :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">{&quot;Only %quantity left in stock.&quot;|i18n('shop', , hash('%quantity', $product.stock))}</div></div>
<p>Et utiliser dans votre fichier de traduction, le code ci-dessous :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;lt;!DOCTYPE TS&amp;gt;<br />
&amp;lt;TS&amp;gt;<br />
&amp;lt;context&amp;gt;<br />
&nbsp; &nbsp; &amp;lt;name&amp;gt;shop&amp;lt;/name&amp;gt;<br />
&nbsp; &nbsp; &amp;lt;message&amp;gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;source&amp;gt;Only %quantity left in stock.&amp;lt;/source&amp;gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;translation&amp;gt;Plus que %quantity exemplaires.&amp;lt;/translation&amp;gt;<br />
&nbsp; &nbsp; &amp;lt;/message&amp;gt;<br />
&amp;lt;/context&amp;gt;<br />
&amp;lt;/TS&amp;gt;</div></div>
<p>En espérant que ça puisse vous aider,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Récupérer les view parameters dans une vue</title>
		<link>https://blog.developpez.com/thomas-zilliox/p9686/web/recuperer_view_parameters_dans_vue</link>
		<comments>https://blog.developpez.com/thomas-zilliox/p9686/web/recuperer_view_parameters_dans_vue#comments</comments>
		<pubDate>Tue, 16 Aug 2011 20:00:00 +0000</pubDate>
		<dc:creator><![CDATA[tzilliox]]></dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[eZ Publish]]></category>
		<category><![CDATA[Modules et vues]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dans une template &#171;&#160;classique&#160;&#187;, on a accès à la variable $view_parameters. Celle-ci contient les valeurs des paramètres personnalisés passés dans l&#8217;url. Par exemple pour l&#8217;url suivante : http://www.example.com/my/url/alias/(couleur)/vert/(prix)/34 On pourra accéder aux paramètres &#171;&#160;couleur&#160;&#187; et &#171;&#160;prix&#160;&#187; à l&#8217;aide de la variable $view_parameters : La couleur est : {$view_parameters.couleur} Le prix est : {$view_parameters.prix} Par contre, vous n&#8217;avez pas accès à $view_parameters dans une vue d&#8217;un module. Mais on peut quand même les récupérer à l&#8217;aide [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans une template &laquo;&nbsp;classique&nbsp;&raquo;, on a accès à la variable $view_parameters.<br />
Celle-ci contient les valeurs des paramètres personnalisés passés dans l&rsquo;url.<br />
Par exemple pour l&rsquo;url suivante :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http://www.example.com/my/url/alias/(couleur)/vert/(prix)/34</div></div>
<p>On pourra accéder aux paramètres &laquo;&nbsp;couleur&nbsp;&raquo; et &laquo;&nbsp;prix&nbsp;&raquo; à l&rsquo;aide de la variable $view_parameters :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">La couleur est : {$view_parameters.couleur}<br />
Le prix est : {$view_parameters.prix}</div></div>
<p>
Par contre, vous n&rsquo;avez pas accès à $view_parameters dans une vue d&rsquo;un module.<br />
Mais on peut quand même les récupérer à l&rsquo;aide du code suivant :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$uri = eZURI::instance( eZSys::requestURI() );<br />
$viewParameters = $uri-&amp;gt;UserParameters();</div></div>
<p>On peut ensuite facilement les passer à une template :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;span style=&quot;color:#777;&quot;&gt;// Récupérer les view_parameters&lt;/span&gt;<br />
$uri = eZURI::instance( eZSys::requestURI() );<br />
$viewParameters = $uri-&amp;gt;UserParameters();<br />
<br />
&lt;span style=&quot;color:#777;&quot;&gt;// Instancier la template&lt;/span&gt;<br />
$tpl = templateInit();<br />
$tpl-&amp;gt;setVariable( 'view_parameters', $viewParameters );<br />
<br />
&lt;span style=&quot;color:#777;&quot;&gt;// Renvoyer le résultat de la vue&lt;/span&gt;<br />
$Result = array();<br />
$Result['content'] = $tpl-&amp;gt;fetch( &quot;design:&amp;lt;ma/template.tpl&amp;gt;&quot; );</div></div>
<p>En espérant que ça puisse vous aider,<br />
Thomas.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
