<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>CODESIGN</title>
<link>http://www.codesign.fr/rss</link>
<description>CODESIGN</description>
<language>fr-fr</language>
<copyright>copyright 2010 CODESIGN</copyright>
<pubDate>Tue, 19 Jan 2010 15:48:17 PST</pubDate>
<lastBuildDate>Tue, 19 Jan 2010 15:48:17 PST</lastBuildDate>
<category>Loisirs</category>
<generator>In house</generator>
<docs>http://blogs.law.harvard.edu/tech/rss/</docs>
<atom:link href="http://www.codesign.fr/rss" rel="self" type="application/rss+xml" />
<item><guid>http://www.codesign.fr/blog//php-forcer-le-telechargement-de-donnees</guid><title>PHP : Forcer le téléchargement de données</title>
<link>http://www.codesign.fr/blog//php-forcer-le-telechargement-de-donnees</link>
<description>&lt;p&gt;Forcer le t&amp;eacute;l&amp;eacute;chargement, c'est commander le navigateur : lui dire d'une part que le contenu est nouveau, lui indiquer le bon type de fichier (&lt;strong&gt;MIME Type&lt;/strong&gt;) afin que votre syst&amp;egrave;me vous propose une application pour l'ouvrir (ici &quot;text/csv&quot;), et enfin sp&amp;eacute;cifier que le navigateur doit t&amp;eacute;l&amp;eacute;charger un fichier sous un nom particulier (&lt;strong&gt;Content-Disposition : attachment ; filename = &quot;catalogue-HDBVM.csv&quot;;&lt;/strong&gt;).&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Bien s&amp;ucirc;r, il faut maintenant envoyer le contenu : on commence par indiquer la taille du contenu (ici &quot;Content-Length: &quot;.strlen($html) ), puis on &quot;&amp;eacute;crit&quot; le contenu...&lt;/p&gt; &lt;pre&gt;// TELECHARGEMENT&lt;br /&gt;header(&quot;Pragma: public&quot;);&lt;br /&gt;header(&quot;Expires: 0&quot;);&lt;br /&gt;header(&quot;Cache-Control: must-revalidate, post-check=0, pre-check=0&quot;);&lt;br /&gt;header(&quot;Cache-Control: private&quot;,false);&lt;br /&gt;header(&quot;Content-Type: text/csv&quot;);&lt;br /&gt;header(&quot;Content-Disposition: attachment; filename=&quot;catalogue-HDBVM.csv&quot;;&quot; );&lt;br /&gt;// header(&quot;Content-Transfer-Encoding: binary&quot;); // mettre lors du t&amp;Atilde;&amp;copy;l&amp;Atilde;&amp;copy;chargement d'un fichier binaire...&lt;br /&gt;header(&quot;Content-Length: &quot;.strlen($html));&lt;br /&gt;echo $html;&lt;br /&gt;exit();&lt;/pre&gt; &lt;p&gt;R&amp;eacute;ponse, en for&amp;ccedil;ant le t&amp;eacute;l&amp;eacute;chargement d'un fichier au format CSV. Ce format de fichier est connu de tous les tableurs.&lt;/p&gt; &lt;p&gt;Voici un code permettant de t&amp;eacute;l&amp;eacute;charger un fichier .CSV... Noter l'utilisation des fonctions &quot;string4CSV&quot; et &quot;lastString4CSV&quot;, bien qu'assez brutale, elles permettent de supprimer certains caract&amp;egrave;res ind&amp;eacute;sirables. Certe, ce n'est pas encore pouss&amp;eacute;, mais je pense qu'&amp;agrave; la prochaine utilisation, je chercherais un peu plus loin...&lt;/p&gt; &lt;pre&gt;function string4CSV( $string )&lt;br /&gt;	{&lt;br /&gt;	$string = str_replace( &quot;t&quot;, '', $string );&lt;br /&gt;	$string = str_replace( &quot;&amp;lt;/li&amp;gt;&quot;, &quot; - &quot;, $string );&lt;br /&gt;	$string = str_replace( '&amp;lt;br&amp;gt;', ' - ', $string );&lt;br /&gt;	$string = str_replace( '&amp;lt;br /&amp;gt;', ' - ', $string );&lt;br /&gt;	$string = strip_tags( $string );&lt;br /&gt;	$string = str_replace( &quot;&amp;amp;#39;&quot;, &quot;'&quot;, $string );&lt;br /&gt;	$string = str_replace( &quot;n&quot;, '', $string );&lt;br /&gt;	$string = str_replace( &quot;r&quot;, '', $string );&lt;br /&gt;	$string = str_replace( ';', ',', $string );&lt;br /&gt;	return( $string . ';' );&lt;br /&gt;	}&lt;br /&gt;function lastString4CSV( $string )&lt;br /&gt;	{&lt;br /&gt;	$string = str_replace( &quot;t&quot;, '', $string );&lt;br /&gt;	$string = str_replace( &quot;&amp;lt;/li&amp;gt;&quot;, &quot; - &quot;, $string );&lt;br /&gt;	$string = str_replace( '&amp;lt;br&amp;gt;', ' - ', $string );&lt;br /&gt;	$string = str_replace( '&amp;lt;br /&amp;gt;', ' - ', $string );&lt;br /&gt;	$string = strip_tags( $string );&lt;br /&gt;	$string = str_replace( &quot;&amp;amp;#39;&quot;, &quot;'&quot;, $string );&lt;br /&gt;	$string = str_replace( &quot;n&quot;, '', $string );&lt;br /&gt;	$string = str_replace( &quot;r&quot;, '', $string );&lt;br /&gt;	$string = str_replace( ';', ',', $string );&lt;br /&gt;	return( $string . &quot;rn&quot; );&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;$sql = new SQLite( XXX );&lt;br /&gt;$query = SQL::getSelectQuery( 'xxx', array(&lt;br /&gt;	SQL::WHERE =&amp;gt; 'xxx &amp;gt; 0',&lt;br /&gt;	SQL::ORDER =&amp;gt; 'xxx ASC'&lt;br /&gt;	) );&lt;br /&gt;$rows = $sql-&amp;gt;query( $query );&lt;br /&gt;if( $rows == false )&lt;br /&gt;	$html = '';&lt;br /&gt;else&lt;br /&gt;	{&lt;br /&gt;	$row_cpt = 0;&lt;br /&gt;	$html = &quot;LABEL1;LABEL2;LABEL3n&quot;;&lt;br /&gt;	while( ( $row = $sql-&amp;gt;fetchAssoc( $rows ) ) != false )&lt;br /&gt;		{&lt;br /&gt;		$html .= string4CSV($row['xxx']);&lt;br /&gt;		$html .= string4CSV($row['yyy']);&lt;br /&gt;		$html .= lastString4CSV( 'zzz' );&lt;br /&gt;		}&lt;br /&gt;	}&lt;/pre&gt; &lt;p&gt;Pour ce faire, il suffit juste de modifier quelques &amp;eacute;l&amp;eacute;ments de l'en-t&amp;ecirc;te...&lt;/p&gt; &lt;pre&gt;header(&quot;Content-Type: application/octet-stream&quot;);&lt;br /&gt;header(&quot;Content-Disposition: attachment; filename=&quot;benefit_mod_auto.exe&quot;;&quot; );&lt;br /&gt;header(&quot;Content-Transfer-Encoding: binary&quot;);&lt;br /&gt;$filename = FILE_ROOT . 'medias/' . $module_filename;&lt;br /&gt;header(&quot;Content-Length: &quot;.filesize($filename));&lt;br /&gt;readfile(&quot;$filename&quot;);&lt;/pre&gt;&lt;p&gt;&lt;a href=&quot;http://www.cmatoile.com/article/php-forcer-le-telechargement-de-donnees#top&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4&gt;&lt;/h4&gt; &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.iana.org/assignments/media-types/&quot;&gt;MIME Media Types&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html&quot;&gt;MIME ON THE WEB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.w3.org/Protocols/HTTP/Object_Headers.html&quot;&gt;Object Meta Information&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.ietf.org/rfc/rfc2046.txt&quot;&gt;RFC 2046 : Multipurpose Internet Mail Extensions / (MIME) Part Two:/ Media Types&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;http://www.cmatoile.com/article/php-forcer-le-telechargement-de-donnees#top&quot;&gt;ha&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Wed, 23 Mar 2005 23:00:00 PST</pubDate>
</item>
<item><guid>http://www.codesign.fr/blog//methodologie-d-integration-de-pages-html</guid><title>Méthodologie d'intégration de pages HTML</title>
<link>http://www.codesign.fr/blog//methodologie-d-integration-de-pages-html</link>
<description>&lt;p&gt;Lors de mon travail pour l'agence &lt;a href=&quot;http://www.preferences.fr/&quot; target=&quot;_blank&quot; title=&quot;Visit this web agency website&quot;&gt;Pr&amp;eacute;f&amp;eacute;rences&lt;/a&gt;, qui consistait &amp;eacute;ssentiellement &amp;agrave; construire des morceaux/blocs pour le CMS EZ Publish, je me suis attel&amp;eacute; &amp;agrave; &amp;eacute;crire les &lt;strong&gt;diff&amp;eacute;rentes &amp;eacute;tapes n&amp;eacute;cessaires &amp;agrave; l'int&amp;eacute;gration&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Integration&lt;/strong&gt; : r&amp;eacute;aliser les d&amp;eacute;coupes graphiques &amp;agrave; partir d'un gabarit r&amp;eacute;alis&amp;eacute; par un graphiste, construire la page HTML &amp;eacute;quivalente.&lt;/p&gt; &lt;p&gt;Voici donc les &amp;eacute;tapes que je suivais &amp;agrave; chaque fois :&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Entrer le texte&lt;/li&gt;&lt;li&gt;&lt;em&gt;Valider le document et la structure XHTML&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Cr&amp;eacute;er ou couper les graphiques&lt;/li&gt;&lt;li&gt;Mettre en place les r&amp;egrave;gles CSS de positionnement (layout)&lt;/li&gt;&lt;li&gt;Mettre en place les r&amp;egrave;gles CSS des textes&lt;/li&gt;&lt;li&gt;Mettre en place les r&amp;egrave;gles CSS des fonds graphiques et remplacements d'images&lt;/li&gt;&lt;li&gt;&lt;em&gt;Valider le CSS&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Entrer le texte&lt;/strong&gt; : tout ce qu'il y a &amp;agrave; faire est d'entrer le texte/le contenu, soit en se basant sur le gabarit fournit par le graphiste, soit &amp;agrave; partir d'autres sources (documents, ancien site...), et surtout d'utiliser les tags HTML correctes pour &quot;entourer&quot; ces textes. R&amp;eacute;aliser des &lt;strong&gt;division&lt;/strong&gt; quand cela est n&amp;eacute;cessaire, principalement pour les blocs qui se r&amp;eacute;p&amp;egrave;tent (i.e. utilisation de classes CSS), ou des blocs sp&amp;eacute;cifiques (i.e. utilisation des ids CSS). Vous pouvez admirer le r&amp;eacute;sultat en regardant la page &lt;strong&gt;sans tenir compte des CSS&lt;/strong&gt;; cette partie du travail est important pour r&amp;eacute;aliser et v&amp;eacute;rifier que la page est bien organis&amp;eacute;e et que l'information est bien transcrite.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Cr&amp;eacute;er ou d&amp;eacute;couper les graphiques&lt;/strong&gt; : Prendre le gabarit et &lt;strong&gt;en sortir tous les &amp;eacute;l&amp;eacute;ments graphiques&lt;/strong&gt; n&amp;eacute;cessaires devant &amp;ecirc;tre int&amp;eacute;gr&amp;eacute; dans la page tel que (photo, icones, ... tout ce qui se trouve dans la page sous la forme d'un tag IMG, avec le bon nom de fichier et les dimensions... si cela ne l'est pas, corriger l'&amp;eacute;tape pr&amp;eacute;c&amp;eacute;dente). L'&amp;eacute;tape suviante demande quelques connaissances dans la manipulation des images gr&amp;acirc;ce aux CSS, parceque vous aurez probablement &amp;agrave; r&amp;eacute;aliser des &lt;strong&gt;modifications ou des variations des &amp;eacute;l&amp;eacute;ments du gabarit&lt;/strong&gt;. Couper les &amp;eacute;l&amp;eacute;ments, fabriquer les parties (partie haute et basse d'une zone aux coins arrondis par exemple...).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mettre en place les r&amp;egrave;gles CSS de positionnement (layout)&lt;/strong&gt; : il est temps de formater la page et de positionner les blocs, images, colonnes, bref tout ce qui est demand&amp;eacute;. Avec le gabarit charg&amp;eacute; dans votre &amp;eacute;diteur pr&amp;eacute;f&amp;eacute;r&amp;eacute;, il suffit d'utiliser &lt;strong&gt;l'outils mesure&lt;/strong&gt; pour prendre correctement la distance entre deux objets, ou &lt;strong&gt;dessiner des rectangles&lt;/strong&gt; au dessus des blocs et prendre les dimensions de ce rectangle comme si c'&amp;eacute;tait une r&amp;egrave;gle. Si le code de l'&amp;eacute;tape 1 ne remplis pas les exigences du gabarit d&amp;eacute;coup&amp;eacute;, il suffit de le changer, le revalider, et de poursuivre la s&amp;eacute;ance de r&amp;egrave;gles de positionnement CSS. Lorsque cette &amp;eacute;tape est termin&amp;eacute;e, compl&amp;eacute;ter le positionnement en jouant sur les marges et le padding. Cela agira comme une transition vers l'&amp;eacute;tape pr&amp;eacute;c&amp;eacute;dente.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mettre en place les r&amp;egrave;gles CSS des textes&lt;/strong&gt; : maintenant que tous les blocs sont positionn&amp;eacute;s, d&amp;eacute;finir toutes les r&amp;egrave;gles CSS pour les fonts en suivant le gabarit. Utiliser l'&lt;strong&gt;outil texte&lt;/strong&gt; afin d'avoir les dimension en pixel et les propri&amp;eacute;t&amp;eacute;s de la police. Ne pas oublier d'ajouter d'autres polices standards, et le fait d'avoir les dimensions en pixel dans le gabarit n'emp&amp;ecirc;che pas d'utiliser d'autre forme de dimensionnement pour la page (proportionnel)...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mettre en place les r&amp;egrave;gles CSS des fonds graphiques et remplacements d'images&lt;/strong&gt; : la derni&amp;egrave;re &amp;eacute;tape avant de valider le travail est de placer les fonds graphiques, les puces, bref, tous les &amp;eacute;l&amp;eacute;ments graphiques r&amp;eacute;alis&amp;eacute;s &amp;agrave; l'&amp;eacute;tape 3. Des ajustement mineurs sur la feuille de style sont &amp;agrave; pr&amp;eacute;voir (marges, espacements) mais cette &amp;eacute;tape devrait &amp;ecirc;tre rapide. Utiliser l'&lt;strong&gt;outils de mesure&lt;/strong&gt; pour caller les espacement avec ceux du gabarit.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;La page est compl&amp;egrave;te, il ne reste plus qu'&amp;agrave; valider la feuille de style et &amp;agrave; tester sous les environnements :&lt;/strong&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Safari&lt;/li&gt;&lt;li&gt;Firefox&lt;/li&gt;&lt;li&gt;IE&lt;/li&gt;&lt;li&gt;Opera ou autres...&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;D'un point de vue m&amp;eacute;thodologique, j'ai remarqu&amp;eacute; qu'il &amp;eacute;tait bien plus productif de ne jamais couper une des &amp;eacute;tapes par une autre activit&amp;eacute; : prendre chaque &amp;eacute;tape comme une t&amp;acirc;che atomique et indivisible.&lt;/p&gt;</description>
<pubDate>Sat, 06 Aug 2005 22:00:00 PST</pubDate>
</item>
<item><guid>http://www.codesign.fr/blog//gestion-des-fichiers-xml-en-php</guid><title>Gestion des fichiers XML en PHP</title>
<link>http://www.codesign.fr/blog//gestion-des-fichiers-xml-en-php</link>
<description>&lt;p&gt;Pour la gestion des fichiers XML en PHP, je cumule l'utilisation de SimpleXML et de la biblioth&amp;egrave;que DOM XML. SimpleXML est excellente pour l'affichage et l'&amp;eacute;dition, DOM XML n&amp;eacute;cessaire pour l'ajout de donn&amp;eacute;es.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.php.net/manual/fr/ref.simplexml.php&quot; title=&quot;R&amp;eacute;f&amp;eacute;rence SimpleXML&quot;&gt;http://www.php.net/manual/fr/ref.simplexml.php&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.php.net/manual/fr/ref.domxml.php&quot; title=&quot;R&amp;eacute;f&amp;eacute;rence DOM XML&quot;&gt;http://www.php.net/manual/fr/ref.domxml.php&lt;/a&gt;&lt;/p&gt; &lt;p&gt;SimpleXML permet l'utilisation simpliste de fonctionnalit&amp;eacute;s du language XPATH. Voici comment s&amp;eacute;lectionner un noeud ou des noeuds particuliers du fichier XML :&lt;/p&gt; &lt;pre&gt;/**&lt;br /&gt; * R&amp;Atilde;&amp;copy;cup&amp;Atilde;&amp;uml;re les donn&amp;Atilde;&amp;copy;es d'une rubrique&lt;br /&gt; * @param string $url # l'identifiant URL de la rubrique &amp;agrave;&amp;nbsp; r&amp;eacute;cup&amp;eacute;rer&lt;br /&gt; * @return array # les donn&amp;Atilde;&amp;copy;es de la rubrique 'id', 'name', 'url', 'description'&lt;br /&gt; */&lt;br /&gt;static function getRubriqueByURL( $url )&lt;br /&gt;	{&lt;br /&gt;	$xml = self::getRubriqueDatas();&lt;br /&gt;	$rubrique_xml = $xml-&amp;gt;xpath(&quot;rubrique[@url='{$url}']&quot;);&lt;br /&gt;	if( is_null( $rubrique_xml ) || !isset( $rubrique_xml[0] ) ) return null;&lt;br /&gt;	$rubrique = array(&lt;br /&gt;		'id' =&amp;gt; $rubrique_xml[0]['id'],&lt;br /&gt;		'name' =&amp;gt; $rubrique_xml[0]['name'],&lt;br /&gt;		'url' =&amp;gt; $rubrique_xml[0]['url'],&lt;br /&gt;		'description' =&amp;gt; (string)$rubrique_xml[0]-&amp;gt;description&lt;br /&gt;		);&lt;br /&gt;	return( $rubrique );&lt;br /&gt;	}&lt;br /&gt;		&lt;/pre&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Recherche de tous les noeuds &lt;em&gt;rubrique&lt;/em&gt; ayant un attribut &lt;em&gt;url&lt;/em&gt; valant la chaine pass&amp;eacute;e...&lt;/p&gt; &lt;pre&gt;xpath(&quot;rubrique[@url='{$url}']&quot;)&lt;/pre&gt; &lt;p&gt;Recherche du m&amp;ecirc;me type, on s&amp;eacute;lectionne tous les noeud &lt;em&gt;pro&lt;/em&gt; dont l'attribut &lt;em&gt;rubrique&lt;/em&gt; vaut &lt;em&gt;$id&lt;/em&gt; ET les &lt;strong&gt;conditions suppl&amp;eacute;mentaires avec les op&amp;eacute;rateurs and et or (respecter les minuscules !)&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;xpath( 'pro[@rubrique=&quot;'.$id.'&quot; and (@valide=1 or @valide=2) and @type=&quot;1&quot;]' )&lt;/pre&gt; &lt;p&gt;Identique &amp;agrave; la premi&amp;egrave;re fonction de recherche, mais ici, &lt;em&gt;[1]&lt;/em&gt; sp&amp;eacute;cifie qu'on ne r&amp;eacute;cup&amp;egrave;re qu'un seul r&amp;eacute;sultat.&lt;/p&gt; &lt;pre&gt;$xml-&amp;gt;xpath( 'pro[@login=&quot;'.$flogin-&amp;gt;getValue().'&quot;][1]' )&lt;/pre&gt; &lt;p&gt;La fonction de recherche est particuli&amp;egrave;re et utilise la fonction contains. Il faut savoir que XPATH 1.0 est &lt;strong&gt;sensible &amp;agrave; la casse des caract&amp;egrave;res&lt;/strong&gt; et il n'existe malheureusement pas de fonction de conversion de casse.&lt;/p&gt; &lt;p&gt;S&amp;eacute;lection de tous les noeuds &lt;em&gt;pro&lt;/em&gt; dont tous les enfants (&lt;em&gt;.&lt;/em&gt;) contiennent la chaine &lt;em&gt;$term&lt;/em&gt; avec des conditions suppl&amp;eacute;mentaires.&lt;/p&gt; &lt;pre&gt;xpath( 'pro[contains(.,&quot;'.$term.'&quot;) and (@valide=1 or @valide=2)]' )&lt;/pre&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Une des choses &amp;agrave; ne pas oublier dans l'utilisation de SimpleXML est de &lt;strong&gt;caster (typer)&lt;/strong&gt; les valeurs de noeuds, alors que cela n'est pas n&amp;eacute;cessaire pour les attributs.&lt;/p&gt; &lt;pre&gt;(string)$rubrique-&amp;gt;description&lt;/pre&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Pour l'ajout de donn&amp;eacute;es, il faut utiliser DOM XML. Voici ma classe &lt;a href=&quot;http://www.codesign.fr/makingof/annuaire-preventionniste/xml.class.php5&quot; title=&quot;Classe de gestion des fichiers XML&quot;&gt;xml.class.php5&lt;/a&gt;, utilis&amp;eacute;e dans ce projet.&lt;/p&gt; &lt;p&gt;Il suffit juste de quelques notions en XML et/ou en DOM pour la mettre en place :&lt;/p&gt; &lt;pre&gt;$xml = new XML( FILE_ROOT . 'annuaire/annuaire.xml' );&lt;br /&gt;$node = $xml-&amp;gt;getRoot();&lt;br /&gt;$newid = $node-&amp;gt;getAttribute( 'nextid' ) + 1;&lt;br /&gt;&lt;br /&gt;$att = array(&lt;br /&gt;	array('name'=&amp;gt;'id', 'value'=&amp;gt;$newid ),&lt;br /&gt;	array('name'=&amp;gt;'rubrique', 'value'=&amp;gt;'1' ),&lt;br /&gt;	array('name'=&amp;gt;'type', 'value'=&amp;gt;'0' ),&lt;br /&gt;	array('name'=&amp;gt;'date', 'value'=&amp;gt;time() ),&lt;br /&gt;	array('name'=&amp;gt;'valide', 'value'=&amp;gt;'0' ),&lt;br /&gt;	array('name'=&amp;gt;'url', 'value'=&amp;gt;$params['login']),&lt;br /&gt;	array('name'=&amp;gt;'login', 'value'=&amp;gt;$params['login'] ),&lt;br /&gt;	array('name'=&amp;gt;'pbb', 'value'=&amp;gt;md5($params['password']) )&lt;br /&gt;	);&lt;br /&gt;$pro = $xml-&amp;gt;addChildNode( $node, 'pro', $att );&lt;br /&gt;$xml-&amp;gt;addChildNode( $pro, 'contactemail', null, $params['email'] );&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;$node-&amp;gt;setAttribute( 'nextid', $newid );&lt;br /&gt;&lt;br /&gt;$xml-&amp;gt;save();&lt;br /&gt;		&lt;/pre&gt; &lt;p&gt;Par contre, la modification des donn&amp;eacute;es d'un fichier XML est plus simple en passant par SimpleXML.&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Chargement du fichier voulu dans &lt;em&gt;$xml&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Pointage vers un noeud particulier avec &lt;em&gt;xpath&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Modification de l'attribut &quot;price&quot; : &lt;em&gt;$prices[0]['price']&lt;/em&gt; (on note $prices[0] car le retour de la fonction xpath est un tableau...)&lt;/li&gt;&lt;li&gt;Modification de la valeur du noeud enfant &lt;em&gt;description&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Sauvegarde du noeud &lt;em&gt;$xml&lt;/em&gt;, correspondant au fichier complet.&lt;/li&gt;&lt;/ul&gt; &lt;pre&gt;$xml = simplexml_load_file( FILE_ROOT . self::TARIF_XML );&lt;br /&gt;$path = 'tarif[@type=&quot;'.$type.'&quot;][1]';&lt;br /&gt;$prices = $xml-&amp;gt;xpath( $path );&lt;br /&gt;if( is_null( $prices ) || ( count( $prices ) == 0 ) ) return 0;&lt;br /&gt;$prices[0]['price'] = $price;&lt;br /&gt;$prices[0]-&amp;gt;description = $description;&lt;br /&gt;$xml-&amp;gt;asXML( FILE_ROOT . TARIFS_XML );&lt;br /&gt;		&lt;/pre&gt;</description>
<pubDate>Tue, 11 Apr 2006 22:00:00 PST</pubDate>
</item>
<item><guid>http://www.codesign.fr/blog//preparer-ses-pages-en-vue-d-une-optimisation-pour-le-referencement</guid><title>Préparer ses pages en vue d'une optimisation pour le référencement</title>
<link>http://www.codesign.fr/blog//preparer-ses-pages-en-vue-d-une-optimisation-pour-le-referencement</link>
<description>&lt;p&gt;L'&amp;eacute;l&amp;eacute;ment le plus important est donc &lt;strong&gt;le titre de la page&lt;/strong&gt;. Celui-ci doit &amp;ecirc;tre diff&amp;eacute;rent d'une page &amp;agrave; l'autre, avoir des mots en relation avec le contenu de la page et bien s&amp;ucirc;r il doit contenir les mots clefs souhait&amp;eacute;s (et qui doivent se r&amp;eacute;p&amp;eacute;ter dans la page...).&lt;br /&gt;Si le client souhaite voir son nom partout, mettez le &amp;agrave; la fin du titre.&lt;br /&gt;Ce n'est pas la peine de se creuser la t&amp;ecirc;te pour la balise KEYWORDS, ajoutez simplement moins de 10 mots clefs li&amp;eacute;s &amp;agrave; la page.&lt;br /&gt;R&amp;eacute;p&amp;eacute;tez &amp;eacute;galement les mots clefs dans la description (meta DESCRIPTION).&lt;br /&gt;Pour cette partie, s'en est termin&amp;eacute; !&lt;br /&gt;&lt;br /&gt;&amp;lt;title&amp;gt;codesign, webdesigner ind&amp;eacute;pendant, int&amp;eacute;grateur HTML freelance&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;meta name=&quot;keywords&quot; content=&quot;webdesigner, int&amp;eacute;grateur, freelance, ind&amp;eacute;pendant&quot;&amp;gt;&lt;br /&gt;&amp;lt;meta name=&quot;description&quot; content=&quot;Pierre Canthelou est webdesigner freelance. En direct ou en tant qu'int&amp;eacute;grateur HTML pour les agences (freelance)&quot;&amp;gt; Dans le contenu, il faut distinguer quelques &amp;eacute;l&amp;eacute;ments importants (outre le fait que le contenu doit appara&amp;icirc;tre le plus t&amp;ocirc;t possible).&lt;br /&gt;&lt;br /&gt;Tout d'abord les titres (tags H1 et H2 surtout), qui devront r&amp;eacute;p&amp;eacute;ter les mots clefs souhait&amp;eacute;s. Pas besoin de mettre tous les mots clefs dans une seule balise, ils peuvent &amp;ecirc;tre &lt;strong&gt;dispers&amp;eacute;s ET r&amp;eacute;p&amp;eacute;t&amp;eacute;s&lt;/strong&gt;.&lt;br /&gt;Il est souvent dit qu'une page ne doit avoir qu'un seul tag H1 : ce n'est pas forc&amp;eacute;ment vrai; la page doit avoir une structure coh&amp;eacute;rente, c'est tout... Et si on consid&amp;egrave;re la balise TITLE comme le grand titre de la page, rien n'emp&amp;ecirc;che d'avoir plusieurs H1 !&lt;br /&gt;&lt;br /&gt;Le contenu textuel doit lui aussi inclure les mots clefs, sous forme de texte plut&amp;ocirc;t que d'image, et surtout, veuillez &amp;agrave; les mettre en &lt;strong&gt;emphase&lt;/strong&gt; gr&amp;acirc;ce aux tags STRONG ou EM (ou avec un lien, voir ci-dessous) ET &amp;agrave; les &lt;strong&gt;r&amp;eacute;p&amp;eacute;ter&lt;/strong&gt; !&lt;br /&gt;&lt;br /&gt;Dans le cas du travail pour un client, c'est bien s&amp;ucirc;r &amp;agrave; lui de formuler correctement les phrases et disposer les mots clefs. Si le client fait appel &amp;agrave; une soci&amp;eacute;t&amp;eacute; sp&amp;eacute;cialis&amp;eacute;e en r&amp;eacute;f&amp;eacute;rencement, alors ce sont eux qui diront quels mots accentuer, charge au client d'&amp;eacute;crire un texte qui remplisse ces conditions. Parlons ici de trois entit&amp;eacute;s : les liens de navigations qui se retrouvent dans toutes les pages, les liens au sein du contenu, et la carte du site.&lt;br /&gt;&lt;br /&gt;De mani&amp;egrave;re g&amp;eacute;n&amp;eacute;rale, les liens devront bien s&amp;ucirc;r contenir des mots clefs, aussi bien dans l'intitul&amp;eacute; que dans l'URL cible. Les mots devront &amp;ecirc;tre s&amp;eacute;par&amp;eacute;s par des tirets (-) et non des underscore (_). Cela implique donc que les liens soient des &quot;phrases&quot;, et non le nom d'une page avec des param&amp;egrave;tres non significatifs : une URL du type page.php?id=125 ne vaut rien compar&amp;eacute;e &amp;agrave; /metiers/webdesigner-freelance !&lt;br /&gt;Utilisez l'URL rewriting dans ce cas afin de faire sauter les param&amp;egrave;tres : page.php?id=125 doit devenir /metier/webdesigner-freelance/125 par exemple.&lt;br /&gt;&lt;br /&gt;Pour la carte du site et les liens dans le contenu, il est facile de faire des liens avec des lib&amp;eacute;ll&amp;eacute;s long pouant contenir plusieurs mots clefs, mais ce n'est pas forc&amp;eacute;ment le cas de la navigation, d'o&amp;ugrave; l'importance d'avoir page sp&amp;eacute;ciale carte du site. Il est alors possible de mettre des libell&amp;eacute; diff&amp;eacute;rents dans la carte, plus longs, avec plus de mots clefs.&lt;br /&gt;&lt;br /&gt;De m&amp;ecirc;me, la navigation est souvent graphique, ce qui veut dire que les termes sont sous forme d'image ou &quot;remplac&amp;eacute;s&quot; par des images via les CSS. Cette deuxi&amp;egrave;me solution est pr&amp;eacute;f&amp;eacute;rable, nous verrons plus loin comment la mettre en oeuvre.&lt;br /&gt;&lt;br /&gt;Pour un meileurs r&amp;eacute;f&amp;eacute;rencement et pour donner plus de poids &amp;agrave; certains mots clefs, il faut introduire de nombreux liens internes (c'est &amp;agrave; dire des liens menant &amp;agrave; d'autres page du site).&lt;br /&gt;&lt;br /&gt;Si la navigation est contr&amp;ocirc;l&amp;eacute;e par du Javascript (comme c'est souvent le cas pour des menus d&amp;eacute;roulants), il faut pr&amp;eacute;voir le cas particulier d'un internaute n'ayant pas activ&amp;eacute; le Javascript (le robot du moteur !), sinon les liens vers les pages internes seront inutiles (bien que la carte du site puisse aider). Dans ce domaine, il suffit de suivre les recommandations propres au respect de l'accessibilit&amp;eacute;, &amp;agrave; savoir pour le tag IMG remplir l'attribut ALT avec un texte compos&amp;eacute; des mots clefs.&lt;br /&gt;Pour les animations Flash qui peuvent contenir des textes int&amp;eacute;ressants pour le r&amp;eacute;f&amp;eacute;rencement, il faut pr&amp;eacute;voir une alternative texte visible sur la page, sous forme de l&amp;eacute;gende par exemple (l&amp;eacute;gende contenant des mots clefs...). Le travail du client se place au nieau du texte, celui de l'agence au niveau des mots clefs, URL et titres. En effet, leur &amp;eacute;tude d&amp;eacute;terminera quels mots clefs seront pertinent selon les crit&amp;egrave;res du client, le client devra int&amp;eacute;grer ces mots clefs dans son texte, et votre travail consistera &amp;agrave; placer ces mots clefs dans les divers &amp;eacute;l&amp;eacute;ments que j'ai cit&amp;eacute; ci-dessus.&lt;br /&gt;Si le site a &amp;eacute;t&amp;eacute; int&amp;eacute;gr&amp;eacute; avant que l'agence ne d&amp;eacute;marre son travail, vosu serez amen&amp;eacute; &amp;agrave; modifier une partie des pages r&amp;eacute;alis&amp;eacute;es, et probablement en ajouter de nouvelles, avec des liens dans le texte permettant d'y acc&amp;eacute;der... La meilleure solution est donc de pr&amp;eacute;voir ce travail &amp;agrave; l'avance et de conseiller &amp;agrave; votre client de faire appel &amp;agrave; l'agence en amont !&lt;br /&gt;&lt;br /&gt;Si le site a d&amp;eacute;j&amp;agrave; des page r&amp;eacute;f&amp;eacute;renc&amp;eacute;es sur les sites, qu'elles soient anciennes ou nouvelles, vous devrez mettre en place des redirections sur le serveur. Ces redirections devront &amp;ecirc;tre de type 301.&lt;br /&gt;&lt;br /&gt;EXEMPLES DE REDIRECTIONS&lt;/p&gt;</description>
<pubDate>Mon, 30 Jun 2008 22:00:00 PST</pubDate>
</item>
<item><guid>http://www.codesign.fr/blog//ce-que-les-graphistes-devraient-savoir-pour-faire-des-maquettes-de-pages-web</guid><title>Ce que les graphistes devraient savoir pour faire des maquettes de pages web</title>
<link>http://www.codesign.fr/blog//ce-que-les-graphistes-devraient-savoir-pour-faire-des-maquettes-de-pages-web</link>
<description>&lt;p&gt;Les premiers &amp;eacute;l&amp;eacute;ments &amp;agrave; v&amp;eacute;rifier avec un graphiste sont ses connaissances des limites impos&amp;eacute;es par les caract&amp;eacute;ristiques du web :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;largeur fixe de la page (&lt;a target=&quot;_blank&quot; href=&quot;http://cameronmoll.com/archives/001220.html&quot;&gt;960 pixel en g&amp;eacute;n&amp;eacute;ral&lt;/a&gt;, maximum 980...), y compris les ombres ou certaines fioritures...&lt;/li&gt;&lt;li&gt;largeur fluide (plus rare, et c'est un autre d&amp;eacute;bat)&lt;/li&gt;&lt;li&gt;couleurs des pictos, images (on est souvent amen&amp;eacute; &amp;agrave; descendre en 256 couleurs tram&amp;eacute;es)&lt;/li&gt;&lt;li&gt;probl&amp;egrave;mes de transparences (sauf si on oublie &lt;a target=&quot;_blank&quot; href=&quot;http://24ways.org/2007/supersleight-transparent-png-in-ie6&quot;&gt;Internet Explorer 6&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;polices standards du web (&lt;a target=&quot;_blank&quot; href=&quot;http://www.ampsoft.net/webdesign-l/WindowsMacFonts.html&quot;&gt;voir la liste&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;int&amp;eacute;gration de polices (avec ses risques au niveau qualit&amp;eacute;), voir &lt;a target=&quot;_blank&quot; href=&quot;http://www.fontsquirrel.com/fontface/generator&quot;&gt;Font Squirrel&lt;/a&gt;&lt;/li&gt;&lt;li&gt;tailles des polices (minimum 9px)&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;Diff&amp;eacute;rences entre le print et le web.&lt;/h4&gt;&lt;p&gt;Le m&amp;eacute;dias &quot;page web&quot; est bien diff&amp;eacute;rent du m&amp;eacute;dia papier car on doit absoluement prendre en compte son cadre/environnement : la taille de l'&amp;eacute;cran d'une part, la taille de la fen&amp;ecirc;tre du navigateur d'autre part. Donc, dor&amp;eacute;navant, il faut r&amp;eacute;aliser un gabarit de la page ET de son fond, et prendre en consid&amp;eacute;ration la taille maximale commun&amp;eacute;ment utilis&amp;eacute;e aujour'hui, &amp;agrave; savoir 1920 pixels de large...&lt;br /&gt;Donc, il faut placer une zone de 960 pixels de large dans une zone de 1920 pixels... Et si il doit y avoir de l'ombre sur les c&amp;ocirc;t&amp;eacute;s de la &quot;page&quot;, il faut les compter dans les 960/980...&lt;br /&gt;De la m&amp;ecirc;me mani&amp;egrave;re, le graphiste doit voir son design comme va le voir l'int&amp;eacute;grateur, sous forme de plans, de calques superpos&amp;eacute;s et qui vont &amp;eacute;ventuellement glisser. Par exemple, l'image de fond plac&amp;eacute;e dans la zone des 1920 pixels sera centr&amp;eacute;e dans cette zone et par dessus on place le calque de page qui fait 960 pixels de large et qui va glisser au centre lorsque l'internaute va redimensionner sa fen&amp;ecirc;tre...&lt;br /&gt;Autre grande diff&amp;eacute;rence, le graphiste print contr&amp;ocirc;le pr&amp;eacute;cis&amp;eacute;ment la taille des &amp;eacute;l&amp;eacute;ments qu'il place dans sa feuille, on est d'accord, alors que le graphiste web ne doit pas consid&amp;eacute;rer que tous les &amp;eacute;l&amp;eacute;ments qu'il place vont forc&amp;eacute;ment &amp;ecirc;tre &amp;eacute;quilibr&amp;eacute; au pixel pr&amp;egrave;s, car il n'a aucun contr&amp;ocirc;le sur :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;le nombre de caract&amp;egrave;res que va entrer le webmaster dans certains blocs dynamiques et qui peuvent ainsi cr&amp;eacute;er un d&amp;eacute;s&amp;eacute;quilibre visuel dans la page&lt;/li&gt;&lt;li&gt;la taille des polices affich&amp;eacute;e (certaines seront plus grandes, et Mac et Windows n'affichent pas la Verdana de la m&amp;ecirc;me mani&amp;egrave;re...)&lt;/li&gt;&lt;li&gt;la taille de la fen&amp;ecirc;tre de visualisation&lt;/li&gt;&lt;li&gt;la sortie des couleurs &amp;agrave; l'&amp;eacute;cran&lt;/li&gt;&lt;li&gt;la taille de la page en hauteur (pr&amp;eacute;sence ou non d'ascenceurs...)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ces &amp;eacute;l&amp;eacute;ments sont purement des crit&amp;egrave;res graphiques, mais au del&amp;agrave; de cela se posent des contraintes et /ou des cons&amp;eacute;quences dues &amp;agrave; l'int&amp;eacute;gration FullCSS, voire aux solutions justement qu'elle peut apporter (et que CSS3 ne manquera pas d'am&amp;eacute;liorer).&lt;/p&gt;&lt;p&gt;Eduquons donc un peu le graphiste profane en int&amp;eacute;gration HTML et dans l'utilisation des CSS.&lt;/p&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;CSS SPRITES&lt;/h4&gt;&lt;p&gt;Cette technique date de 2005 (environ) : elle est recommand&amp;eacute;e par Yahoo pour acc&amp;eacute;l&amp;eacute;rer le chargement des sites et minimiser leur utilisation en bande passante, et elle permet d'&amp;eacute;viter des rollovers avec attente du chargement de l'image au passage la souris...&lt;/p&gt;&lt;p&gt;Pour r&amp;eacute;sumer la technique, l'utilisation des CSS et de la propri&amp;eacute;t&amp;eacute; background permet, en jouant sur la position d&amp;eacute;cal&amp;eacute;e de ce background, d'afficher une certaine partie d'une image.&amp;nbsp;&lt;img src=&quot;/medias/blogs/bg-langues.png&quot; alt=&quot;bg-langues.png&quot; /&gt;&amp;nbsp;Imaginez cette image d&amp;eacute;coup&amp;eacute;e en 4 rectangles via la r&amp;egrave;gle CSS background...&lt;/p&gt;&lt;p&gt;Une autre :&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;/medias/blogs/bg-menu.png&quot; alt=&quot;bg-menu.png&quot; /&gt;&lt;/p&gt;&lt;p&gt;Cons&amp;eacute;quences ?&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Le graphiste a tout int&amp;eacute;r&amp;ecirc;t &amp;agrave; fournir avec sa maquette globale des maquettes ne contenant que les icones ou les montages de menus (avec &amp;eacute;tats on et off). Cela &amp;eacute;vitera que l'int&amp;eacute;grateur le fasse (mal).&lt;/strong&gt;&lt;/p&gt;&lt;h4&gt;BOITES EXTENSIBLES&lt;/h4&gt;&lt;p&gt;J'englobe l&amp;agrave; dedans toutes les zones entour&amp;eacute;es d'un contour, ayant ou non un fond graphique, mais qui contiennent du texte ou une image. A moins que le texte ne varie jamais jamais, et encore, pour des raisons d'accessibilit&amp;eacute; mieux vaut en douter, il faut consid&amp;eacute;rer que cette boite doit pouvoir s'&amp;eacute;tendre au moins en hauteur et ne pas trop, lors de la r&amp;eacute;alisation de la maquette, c&amp;acirc;ler le bas de cette boite avec d'autres &amp;eacute;l&amp;eacute;ments graphiques alentours histoire de faire joli...&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/boites.png&quot; alt=&quot;boites.png&quot; /&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/boite2.png&quot; width=&quot;150&quot; alt=&quot;boite2.png&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Dans ce premier exemple, la r&amp;eacute;alisation en CSS est simple, mais dans d'autres cas, cela peut devenir extr&amp;egrave;mement compliqu&amp;eacute; car il faut r&amp;eacute;fl&amp;eacute;chir &amp;agrave; la mani&amp;egrave;re de faire &quot;glisser&quot; les calques graphiques pour permettre cette extension verticale, comme par exemple le deuxi&amp;egrave;me. &lt;strong&gt;Celui-ci demande que le graphiste ait d&amp;eacute;fini une hauteur de d&amp;eacute;grad&amp;eacute; pas trop grande afin que en dessous de cette limite on puisse appliquer une couleur unie&lt;/strong&gt;. Ce cas se retrouve d'ailleurs pour les fonds de pages, les fonds de sites avec d&amp;eacute;grad&amp;eacute;s...&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img style=&quot;vertical-align: middle;&quot; src=&quot;http://www.codesign.fr/medias/blogs/boite.png&quot; alt=&quot;boite.png&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Cons&amp;eacute;quences ?&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;Penser d&amp;egrave;s la maquette a d&amp;eacute;finir les &amp;eacute;l&amp;eacute;ments qui vont varier en hauteur et dans ce cas pr&amp;eacute;senter des maquettes de ces &amp;eacute;l&amp;eacute;ments dans diff&amp;eacute;rentes tailles...&lt;/strong&gt;&lt;/p&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;ACCESSIBILITE&lt;/h4&gt;&lt;div&gt;Il serait amusant de demander au graphiste de faire (en plus des 37 autres maquettes de chaques page du site...) des maquettes contenant des variantes de tailles de polices :)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Mais ce serait pas mal qu'ils le test un peu tout de m&amp;ecirc;me, et &amp;ccedil;a nous ram&amp;egrave;ne au pr&amp;eacute;c&amp;eacute;dent paragraphe sur les bo&amp;icirc;tes extensibles...&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Les autres crit&amp;egrave;res, mais qui semblent int&amp;eacute;resser de moins en moins de monde, sont les probl&amp;egrave;mes de &lt;strong&gt;couleurs et de contraste&lt;/strong&gt;.&lt;/div&gt;&lt;div&gt;Je n'ai pas trop de sources sur le sujet.&lt;/div&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;SITE MULTI LINGUE&lt;/h4&gt;&lt;div&gt;&lt;/div&gt;&lt;p&gt;Le cas des sites multi-lingues implique, pour des raisons de maintenance et de portabilit&amp;eacute;, de ne pas faire d'images avec du texte (ou alors le mini du mini). Sans parler ici des probl&amp;egrave;mes li&amp;eacute;s &amp;agrave; la symbolique des couleurs, les plus gros probl&amp;egrave;mes sont :&lt;/p&gt;&lt;p&gt;- la traduction des textes des images qui impliquent de dupliquer les r&amp;egrave;gles CSS pour les diff&amp;eacute;rentes langues&lt;br /&gt;- la longueur des textes variant d'une langue &amp;agrave; l'autre&lt;br /&gt;- le sens de lecture&lt;/p&gt;&lt;p&gt;Tout ceci a une grande influence sur l'int&amp;eacute;gration, peut-&amp;ecirc;tre moins sur le maquettage, mais comme l'un se r&amp;eacute;percute sur l'autre, le probl&amp;egrave;me de l'int&amp;eacute;grateur devient celui du graphiste.&lt;/p&gt;&lt;p&gt;Cons&amp;eacute;quences ?&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Pr&amp;eacute;f&amp;eacute;rer d'entr&amp;eacute;e les polices standards pour tous les &amp;eacute;l&amp;eacute;ments de la page (titres, texte, menus, ...) afin, d'une mani&amp;egrave;re g&amp;eacute;n&amp;eacute;rale, de limiter la traduction &amp;agrave; des traductions de texte et non d'images.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;CONCLUSION&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Les indications ne sont pas exhaustives, je les enrichirais au fur et &amp;agrave; mesure de mes travaux.&lt;/p&gt;&lt;p&gt;Un compl&amp;eacute;ment &amp;agrave; lire :&amp;nbsp;&lt;a target=&quot;_blank&quot; href=&quot;http://demontiers.com/2010/04/et-si-graphistes-et-integrateurs-travaillaient-enfin-ensembles/&quot;&gt;http://demontiers.com/2010/04/et-si-graphistes-et-integrateurs-travaillaient-enfin-ensembles/&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Tue, 23 Mar 2010 23:00:00 PST</pubDate>
</item>
<item><guid>http://www.codesign.fr/blog//integrer-un-gabarit-html-etape-1-le-code-html</guid><title>Intégrer un gabarit HTML - Etape 1 - Le code HTML</title>
<link>http://www.codesign.fr/blog//integrer-un-gabarit-html-etape-1-le-code-html</link>
<description>C'est parti pour un making-of. Cela me fera en m&amp;ecirc;me temps un exercice de notation de mes m&amp;eacute;thodes d'int&amp;eacute;gration.&lt;br /&gt;&lt;br /&gt;Pour voir le gabarit complet, &lt;a target=&quot;_blank&quot; href=&quot;http://www.codesign.fr/medias/blogs/accueil-6.png&quot;&gt;cliquez-ici&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Je commence par r&amp;eacute;cup&amp;eacute;rer mon dossier de base d'int&amp;eacute;gration, qui contient un fichier HTML avec le minimum syndical, ma feuille de style commune et quelques autres...&lt;br /&gt;&lt;br /&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/integration01.png&quot;&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/integration01.png&quot; alt=&quot;integration01.png&quot; width=&quot;450&quot; /&gt;&lt;/p&gt;
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mes fichiers de base XHTML : &lt;a target=&quot;_blank&quot; href=&quot;http://www.codesign.fr/medias/blogs/integration.zip&quot;&gt;[integration.zip]&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;1. Notations&lt;/h4&gt;
&lt;strong&gt;Mes ID de zones :&lt;/strong&gt;&lt;br /&gt;#b-brand = marque, haut de page&lt;br /&gt;#b-breadcrumb = fil d'arianne&lt;br /&gt;#b-content = contenu&lt;br /&gt;#b-content-main&lt;br /&gt;#b-content-sub&lt;br /&gt;#b-content-sup&lt;br /&gt;&lt;br /&gt;#b-nav = navigation&lt;br /&gt;#b-nav-main&lt;br /&gt;#b-nav-sup&lt;br /&gt;#b-nav-sub&lt;br /&gt;&lt;br /&gt;#b-siteinfos = infos du site, bas de page&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Mes pr&amp;eacute;fixes de classe ou d'ID :&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;bloc  = b-&lt;br /&gt;style = s-&lt;br /&gt;menu  = m-&lt;br /&gt;page  = p-&lt;br /&gt;titre &amp;nbsp;= t-
&lt;h4&gt;2. Je regarde le gabarit graphique et je le traduit en HTML&lt;/h4&gt;
Pour cela, je me sers de mes yeux :) et de &lt;a target=&quot;_blank&quot; href=&quot;http://skitch.com/&quot;&gt;Skitch&lt;/a&gt;&amp;nbsp;(qui me permet de faire une carte rapide des sections du site, voir le post sur le &lt;a href=&quot;http://www.codesign.fr/blog/petite-plongee-dans-les-tags-du-html5&quot;&gt;HTML5&lt;/a&gt;) et de mes connaissances en langage HTML. Je ne d&amp;eacute;finis pas trop encore les zones ou les &quot;codes&quot; CSS sp&amp;eacute;cifiques, je m'int&amp;eacute;resse surtout au formatage &quot;Sans CSS&quot; de l'ensemble HTML, &amp;agrave; la s&amp;eacute;mantique, en utilisant bien l'ensemble des tags HTML qui me sont offerts.&lt;br /&gt;&lt;br /&gt; Rien ne sers de mettre trop de classes ou &amp;nbsp;d'ID pour les CSS, il faut utiliser les fonctions de cascade des CSS pour sp&amp;eacute;cifier plus tard tel ou tel &amp;eacute;l&amp;eacute;ment.&lt;br /&gt;&lt;br /&gt; J'en profite aussi pour r&amp;eacute;fl&amp;eacute;chir &amp;agrave; la partie SEO (et oui, il n'est jamais assez t&amp;ocirc;t...), et donc aux attributs &quot;title&quot; des liens et au nom des liens... (voir mon autre &lt;a href=&quot;/blog/preparer-ses-pages-en-vue-d-une-optimisation-pour-le-referencement&quot;&gt;article sur le SEO&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt; Idem pour l'accessibilit&amp;eacute;, en int&amp;eacute;grant les raccourcis clavier classiques. En france, cela donne :&lt;br /&gt;s ou c: Acc&amp;egrave;s aux Contenus &lt;br /&gt;n: Acc&amp;egrave;s &amp;agrave; la Navigation Site&lt;br /&gt;r: Acc&amp;egrave;s &amp;agrave; la Recherche&lt;br /&gt;t: Acc&amp;egrave;s aux Outils Site&lt;br /&gt;1: Acc&amp;egrave;s &amp;agrave; Accueil&lt;br /&gt;2: Acc&amp;egrave;s aux Actualit&amp;eacute;s&lt;br /&gt;4: Acc&amp;egrave;s &amp;agrave; Recherche&lt;br /&gt;9: Acc&amp;egrave;s &amp;agrave; Contactez-Nous &lt;br /&gt;0: Acc&amp;egrave;s &amp;agrave; la rubrique Accessibilit&amp;eacute; &lt;br /&gt;3: Acc&amp;egrave;s au Site Map &lt;br /&gt; &lt;strong&gt;&lt;br /&gt;Exemple pour la partie brand&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt; &amp;lt;div id=&quot;b-brand&quot;&amp;gt;&lt;br /&gt; &amp;lt;h1 class=&quot;tir&quot;&amp;gt;La Librairie des Ecoles&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt; &amp;lt;h2 class=&quot;tir&quot;&amp;gt;Des manuels scolaires traditionnels gratuits en ligne&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt; &amp;lt;ul class=&quot;b-access&quot;&amp;gt;&lt;br /&gt; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#b-content&quot; title=&quot;Acc&amp;egrave;s au contenu&quot; accesskey=&quot;s&quot;&amp;gt;Acc&amp;egrave;s au contenu&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#b-nav&quot; title=&quot;Acc&amp;egrave;s &amp;agrave; la navigation&quot; accesskey=&quot;n&quot;&amp;gt;Acc&amp;egrave;s &amp;agrave; la navigation&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;/&quot; title=&quot;Aller &amp;agrave; l'accueil&quot; accesskey=&quot;1&quot;&amp;gt;Aller &amp;agrave; l'accueil&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;/contactez-nous&quot; title=&quot;Envoyer un message, t&amp;eacute;l&amp;eacute;phoner ou nous rejoindre&quot; accesskey=&quot;9&quot;&amp;gt;Contactez-nous&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;/plan-du-site&quot; title=&quot;Aller au plan du site&quot; accesskey=&quot;3&quot;&amp;gt;Aller au plan du site&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt; &amp;lt;/ul&amp;gt;&lt;br /&gt; &amp;lt;p&amp;gt;&amp;lt;a id=&quot;m-moncompte&quot; href=&quot;/mon-compte&quot; title=&quot;Acc&amp;egrave;s &amp;agrave; mes informations&quot; accesskey=&quot;c&quot;&amp;gt;Mon Compte&amp;lt;/a&amp;gt; | &amp;lt;a id=&quot;m-mescommandes&quot; href=&quot;/mon-compte/mes-commandes&quot; title=&quot;Acc&amp;egrave;s &amp;agrave; mes pr&amp;eacute;c&amp;eacute;dentes commandes&quot;&amp;gt;Mes Commandes&amp;lt;/a&amp;gt; | &amp;lt;a id=&quot;m-monpanier&quot; href=&quot;/panier&quot; title=&quot;Liste des livres dans mon panier&quot;&amp;gt;Mon Panier&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt; &lt;/pre&gt;
&amp;nbsp;&lt;br /&gt;&lt;br /&gt;En g&amp;eacute;n&amp;eacute;ral, j'&amp;eacute;cris le code HTML des &amp;eacute;l&amp;eacute;ments qui forment les bases du gabarit et je termine par le contenu sp&amp;eacute;cifique &amp;agrave; la page. Ainsi je fais en premier la partie BRAND, en second la partie SITEINFOS, puis la navigation NAV et ensuite les contenus secondaires (sidebar, pubs, ...).&lt;br /&gt;&lt;br /&gt;En cas d'adresse (postale, mail, t&amp;eacute;l, ...) &amp;agrave; ins&amp;eacute;rer, il ne faut pas utiliser le tag ADDRESS mais plut&amp;ocirc;t un microformat, comme ceci :&lt;br /&gt;
&lt;pre&gt;&amp;lt;div class=&quot;vcard&quot;&amp;gt;&lt;br /&gt;&amp;lt;h3 class=&quot;org&quot;&amp;gt;Codesign&amp;lt;/h3&amp;gt; &amp;lt;p class=&quot;adr&quot;&amp;gt; &amp;lt;span class=&quot;extended-address&quot;&amp;gt;Cercot&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;span class=&quot;street-address&quot;&amp;gt;1 rue des Orf&amp;egrave;vres&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;span class=&quot;postal-code&quot;&amp;gt;71390&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span class=&quot;locality&quot;&amp;gt;Moroges&amp;lt;/span&amp;gt;&amp;amp;nbsp;-&amp;amp;nbsp;&amp;lt;span class=&quot;country-name&quot;&amp;gt;France&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt; &amp;lt;p class=&quot;tel&quot;&amp;gt; &amp;lt;span class=&quot;type&quot;&amp;gt;T&amp;eacute;l : &amp;lt;/span&amp;gt; (33) 03 85 47 91 50 &amp;lt;/p&amp;gt; &amp;lt;p class=&quot;email-wrp&quot;&amp;gt;&amp;lt;a href=&quot; mailto:contact@codesign.fr&quot; title=&quot;Cliquer pour nous &amp;eacute;crire&quot; class=&quot;email&quot;&amp;gt;contact@codesign.fr&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h4&gt;3. Tests&lt;/h4&gt;
Apr&amp;egrave;s avoir r&amp;eacute;alis&amp;eacute; tout ou partie du code HTML de la page, je fais un ou plusieurs tests visuels, qui se limitent &amp;agrave; visualiser la page nue, sans CSS et &amp;agrave; estimer si le formatage est correct ou pas.&lt;br /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/integration02.png&quot; alt=&quot;integration02.png&quot; width=&quot;450&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;&lt;br /&gt;L'avant derni&amp;egrave;re &amp;eacute;tape consiste &amp;agrave; envoyer le fichier HTML r&amp;eacute;sultant &amp;agrave; un valideur du type :&lt;br /&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://validator.w3.org/&quot;&gt;http://validator.w3.org/&lt;/a&gt;&lt;br /&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://worldspace.deque.com/wsservice/eval/checkCompliance.jsp&quot;&gt;http://worldspace.deque.com/wsservice/eval/checkCompliance.jsp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La derni&amp;egrave;re &amp;eacute;tape, c'est IE :(. Regader le r&amp;eacute;sultat sous (IE6) IE7 et IE8...&amp;nbsp;</description>
<pubDate>Wed, 05 May 2010 22:00:00 PST</pubDate>
</item>
<item><guid>http://www.codesign.fr/blog//petite-plongee-dans-les-tags-du-html5</guid><title>Petite plongée dans les tags du HTML5</title>
<link>http://www.codesign.fr/blog//petite-plongee-dans-les-tags-du-html5</link>
<description>&lt;h4&gt;Division structurelle de la page avec HTML5&lt;/h4&gt;
On commence par s&amp;eacute;parer en 2 les types de tags, histoire de simplifier un peu :&lt;br /&gt;1) &lt;strong&gt;Les tags des metas-datas&lt;/strong&gt; : title, meta, link, script et style&lt;br /&gt;2) &lt;strong&gt;Les tags de flux de contenu&lt;/strong&gt;, c'est &amp;agrave; dire ceux utilis&amp;eacute; pour marquer le contenu affich&amp;eacute; de la page (&amp;eacute;l&amp;eacute;ments blocs ou en-ligne) : les g&amp;eacute;n&amp;eacute;riques sont div, p, em et strong. Ce groupe contient aussi les tags d'en-t&amp;ecirc;te, de phras&amp;eacute; et d'inclusion.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Les sections (tags section, article et nav) sont &amp;agrave; utiliser pour structurer le document, et chaque section a son propre en-t&amp;ecirc;te, contenu et pied&lt;/strong&gt; :&lt;br /&gt;- section : c'est un regroupement th&amp;eacute;matique de contenu&lt;br /&gt;- article : &amp;eacute;l&amp;eacute;ment ind&amp;eacute;pendant de contenu (post de forum, article de magazine, entr&amp;eacute;e de blog, commentaire d'utilisateur, ...)&lt;br /&gt;- nav : contient les liens de navigation vers d'autres pages ou parties de la page&lt;br /&gt;- aside : c'est une section dont le contenu est li&amp;eacute; dune mani&amp;egrave;re ou d'une autre au contenu autour de lui mais qui doit en &amp;ecirc;tre s&amp;eacute;par&amp;eacute;&lt;br /&gt;- blockquote : une section cit&amp;eacute;e d'une autre source (voir q plus bas)&lt;br /&gt;- figure : un conteu en g&amp;eacute;n&amp;eacute;ral avec une l&amp;eacute;gende qui peut &amp;ecirc;tre sorti du contenu sans affecter le sens de celui-ci&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Donc au sein des sections se trouvent :&lt;/strong&gt;&lt;br /&gt;- les en-t&amp;ecirc;tes (&lt;em&gt;h1, ..., h6&lt;/em&gt;) : en-t&amp;ecirc;te de section, et leader qui peut contenir aussi des &lt;em&gt;h1, ..., h6&lt;/em&gt; et des metas-data introduisant la section&lt;br /&gt;- le pied de section (&lt;em&gt;footer&lt;/em&gt;) contient des informations sur l'auteur de la section, liens vers des documents li&amp;eacute;s, ou copyright&lt;br /&gt;- ce qui r&amp;eacute;introduit le tag &lt;em&gt;address&lt;/em&gt; dans sont juste contexte, puisque celui-ci est sens&amp;eacute; indiqu&amp;eacute; comment on peut contacter l'auteur :)&lt;br /&gt;- les &amp;eacute;l&amp;eacute;ments de phras&amp;eacute; (tag de niveau texte) comme &lt;em&gt;abbr&lt;/em&gt;, &lt;em&gt;em&lt;/em&gt;, &lt;em&gt;strong&lt;/em&gt;, &lt;em&gt;span&lt;/em&gt;, &lt;em&gt;p&lt;/em&gt;, &lt;em&gt;hr&lt;/em&gt;, &lt;em&gt;br&lt;/em&gt;, &lt;em&gt;pre&lt;/em&gt;, &lt;em&gt;dialog&lt;/em&gt;, &lt;em&gt;ol&lt;/em&gt;, &lt;em&gt;ul&lt;/em&gt;, &lt;em&gt;li&lt;/em&gt;, &lt;em&gt;dl&lt;/em&gt;, &lt;em&gt;dt&lt;/em&gt;, &lt;em&gt;dd&lt;/em&gt;, &lt;em&gt;q&lt;/em&gt; (&lt;strong&gt;phrase cit&amp;eacute;e d'une autre source&lt;/strong&gt;), &lt;em&gt;cite&lt;/em&gt; (&lt;strong&gt;le titre d'une cr&amp;eacute;ation, livre, po&amp;egrave;me...&lt;/strong&gt;), &lt;em&gt;small&lt;/em&gt;, &lt;em&gt;mark&lt;/em&gt; (&lt;strong&gt;surligneur ?&lt;/strong&gt;), &lt;em&gt;dfn&lt;/em&gt; (&lt;strong&gt;d&amp;eacute;finition d'un terme&lt;/strong&gt;), &lt;em&gt;time&lt;/em&gt;, &lt;em&gt;progress&lt;/em&gt;, &lt;em&gt;meter&lt;/em&gt;, &lt;em&gt;code&lt;/em&gt;, &lt;em&gt;var&lt;/em&gt;, &lt;em&gt;samp&lt;/em&gt; (&lt;strong&gt;example de code informatique&lt;/strong&gt;), &lt;em&gt;kbd&lt;/em&gt; (&lt;strong&gt;entr&amp;eacute;e utilisateur&lt;/strong&gt;), &lt;em&gt;sup&lt;/em&gt;, &lt;em&gt;sub&lt;/em&gt;, &lt;em&gt;i&lt;/em&gt; (un bout de texte &amp;agrave; prononcer diff&amp;eacute;rement ou qui se d&amp;eacute;tache du reste du texte, terme technique, ...), &lt;em&gt;b&lt;/em&gt; (quasi idem et aussi complexe), &lt;em&gt;ins&lt;/em&gt; (ajout &amp;agrave; un document), table, &lt;em&gt;output&lt;/em&gt; (&lt;strong&gt;r&amp;eacute;sultat d'un calcul&lt;/strong&gt;)&lt;br /&gt;- le contenu imbriqu&amp;eacute; (qui peut se retrouver dans le phras&amp;eacute;...) qui charge un contenu externe dans la page, comme &lt;em&gt;img&lt;/em&gt;, &lt;em&gt;object&lt;/em&gt;, &lt;em&gt;embed&lt;/em&gt;, &lt;em&gt;v
&lt;script src=&quot;http://www.codesign.fr/scripts/tiny_mce/themes/advanced/langs/fr.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
ideo&lt;/em&gt; &lt;br /&gt;- les &amp;eacute;l&amp;eacute;ments interactifs (action entre le navigateur et l'utilisateur via un p&amp;eacute;riph&amp;eacute;rique de contr&amp;ocirc;le genre souris, clavier, ...) comme &lt;em&gt;a&lt;/em&gt;, &lt;em&gt;audio&lt;/em&gt;, &lt;em&gt;video&lt;/em&gt;, &lt;em&gt;input&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h4&gt;Nouveaux tags int&amp;eacute;ressants&lt;/h4&gt;
&lt;strong&gt;G&amp;eacute;n&amp;eacute;ral&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;dialog&lt;/em&gt; qui fonctionne comme une liste de d&amp;eacute;finition &lt;em&gt;dl&lt;/em&gt;... (suivi de paires &lt;em&gt;dt&lt;/em&gt; + &lt;em&gt;dd&lt;/em&gt;) - Il est dans la r&amp;eacute;f&amp;eacute;rence mais pas dans la doc :(&lt;br /&gt;&amp;lt;mark&amp;gt;Mon texte &amp;agrave; mettre en avant&amp;lt;/mark&amp;gt;&lt;br /&gt;&amp;lt;ins cite=&quot;http://www.domain.tld&quot; datetime=&quot;1990-12-31T23:59:60Z&quot;&amp;gt;bla bla&amp;lt;/ins&amp;gt;&lt;br /&gt;&amp;lt;del&amp;nbsp;cite=&quot;http://www.domain.tld&quot; datetime=&quot;1990-12-31T23:59:60Z&quot;&amp;gt;bla bla&amp;lt;/del&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Temps, progession et distance&lt;/strong&gt;&lt;br /&gt;&amp;lt;time datetime=&quot;1971-10&quot;&amp;gt;Naissance&amp;lt;/time&amp;gt;&lt;br /&gt;&amp;lt;time datetime=&quot;2010-05-10T11:30:00&quot; pubdate&amp;gt;Publi&amp;eacute; le 10 Mai 2010 &amp;agrave; 11h30&amp;lt;/time&amp;gt; (si &amp;agrave; c&amp;ocirc;t&amp;eacute; d'un article...)&lt;br /&gt;&lt;br /&gt;&amp;lt;progress value=&quot;10&quot; max=&quot;100&quot;&amp;gt;J'avance !&amp;lt;/progress&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;meter value=&quot;80&quot; min=&quot;0&quot; low=&quot;50&quot; high=&quot;115&quot; max=&quot;150&quot; optimum=&quot;70&quot;&amp;gt;Taille d'un enfant de 5 ans&amp;lt;/meter&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Multim&amp;eacute;dia&lt;/strong&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/&quot;&gt;video&lt;/a&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://html5doctor.com/native-audio-in-the-browser/&quot;&gt;audio&lt;/a&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://24ways.org/2009/html5-tool-of-satan-or-yule-of-santa&quot;&gt;canvas&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Les formulaires&lt;/strong&gt; (que je compl&amp;egrave;terais dans un prochain article)&lt;br /&gt;&amp;lt;form autocomplete=&quot;on | off&quot; novalidate accept-charset=&quot;&quot;&amp;gt;&lt;br /&gt;form, fieldset, label, input, button&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Les commandes&lt;/strong&gt; (command) et les listes de commandes (menu), qui semblent des concepts int&amp;eacute;ressants mais que je verrais plus tard car l&amp;agrave; je viens d'essayer rapidement et cela ne fonctionne pas sur Safari 4 Mac...&lt;br /&gt;&lt;br /&gt;Maintenant, va falloir que TinyMCE et tous les autres Rich Text Editor se mettent &amp;agrave; ajouter tous ces nouveaux tags &amp;agrave; la s&amp;eacute;mantique forte...&lt;br /&gt;&lt;br /&gt;http://dev.w3.org/html5/markup/&lt;br /&gt;http://dev.w3.org/html5/html-author/&lt;br /&gt;http://html5doctor.com/how-to-use-html5-in-your-client-work-right-now&lt;br /&gt;http://html5doctor.com/html-5-boilerplates/&lt;br /&gt;http://html5doctor.com/block-level-links-in-html-5/&lt;br /&gt;http://html5doctor.com/the-time-element/&lt;br /&gt;http://camendesign.com/code/video_for_everybody&lt;br /&gt;http://code.google.com/p/html5media/&lt;br /&gt;http://oli.jp/&lt;br /&gt;http://snook.ca/archives/html_and_css/html5-forms-are-coming&lt;br /&gt;http://net.tutsplus.com/tutorials/html-css-techniques/html-5-and-css-3-the-techniques-youll-soon-be-using/&lt;br /&gt;http://www.alistapart.com/articles/get-ready-for-html-5/&lt;br /&gt;http://html5demos.com/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MAJ du 11/05/2010&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;J'utilise &lt;a target=&quot;_blank&quot; href=&quot;http://skitch.com/&quot;&gt;Skitch&lt;/a&gt; pour faire une carte rapide des tags de la maquette d'un site que je vais faire en HTML5 (&lt;a target=&quot;_blank&quot; href=&quot;http://www.yves-rechsteiner.com&quot;&gt;Yves Rechsteiner&lt;/a&gt;). La maquette se veut simple, avec un header &amp;agrave; 3 colonnes dont le contenu sera contextuel. Voici le r&amp;eacute;sultat.&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/yves-decoupe.png&quot;&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/yves-decoupe.png&quot; width=&quot;450&quot; alt=&quot;yves-decoupe.png&quot; /&gt;&lt;/p&gt;
&lt;/a&gt;</description>
<pubDate>Mon, 10 May 2010 22:00:00 PST</pubDate>
</item>
<item><guid>http://www.codesign.fr/blog//integrer-un-gabarit-html-etape-2-css-de-positionnement</guid><title>Intégrer un gabarit HTML - Etape 2 - CSS de positionnement</title>
<link>http://www.codesign.fr/blog//integrer-un-gabarit-html-etape-2-css-de-positionnement</link>
<description>Toujours dans la continuit&amp;eacute; de l'int&amp;eacute;gration compl&amp;egrave;te du site de La Librairie des Ecoles, maintenant que j'ai r&amp;eacute;alis&amp;eacute; la structure HTML5, je m'attaque au positionnement des &amp;eacute;l&amp;eacute;ments gr&amp;acirc;ce aux CSS.&lt;br /&gt;&lt;br /&gt;Pourquoi cette &amp;eacute;tape en second, et pas les polices ou les fonds de couleurs et autres imageries ?&lt;br /&gt;&lt;br /&gt;Le r&amp;eacute;sultat :&amp;nbsp;&lt;a target=&quot;_blank&quot; href=&quot;http://codesign.coclic-o.com/html_files/43/integration/index.htm&quot;&gt;cliquez-ici&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Parceque le positionnement et la source la plus prolifique en bug, notemment avec Internet Explorer... Autant les &amp;eacute;liminer d&amp;egrave;s le d&amp;eacute;but. Et le positionnement permet aussi de mettre en place les effets JS ou du moins les tester (dans le cadre d'un projet &amp;agrave; plusieurs...) et d'avoir un semblant de pr&amp;eacute;sentation...&amp;nbsp;
&lt;p style=&quot;text-align:center&quot;&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/a_page-accueil-1.png&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/a_page-accueil-1.png&quot; width=&quot;550&quot; alt=&quot;a_page-accueil-1.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
La m&amp;eacute;thode que j'utilise depuis quelques temps consiste &amp;agrave; &lt;strong&gt;mettre en fond de page un export complet du gabarit graphique&lt;/strong&gt; &amp;agrave; int&amp;eacute;grer. L'avantage principal est ainsi d'&amp;eacute;viter de devoir constamment regarder/calculer des dimensions sur l'outils g&amp;eacute;n&amp;eacute;rateur du gabarit (Photoshop, Fireworks, Illustrator...), et donc aussi les aller-retours entre l'&amp;eacute;diteur CSS et cet outils graphique.&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;body {background:url(images/accueil-8.png) no-repeat 50% 0;font-family:Arial, sans-serif;}&lt;/pre&gt;
&lt;br /&gt;Etant sur Mac, j'utilise &lt;a target=&quot;_blank&quot; href=&quot;http://macrabbit.com/cssedit/&quot;&gt;CSSEdit&lt;/a&gt; comme premier &amp;eacute;diteur CSS, mais l'extension d&amp;eacute;veloppeur+firefox revient &amp;agrave; peu pr&amp;egrave;s au m&amp;ecirc;me...&lt;br /&gt;&lt;br /&gt;Je commence l'&amp;eacute;criture des r&amp;egrave;gles de positionnement de haut en bas et de droite &amp;agrave; gauche, en r&amp;eacute;alisant en priorit&amp;eacute; les blocs immuables (ceux qui ne varient pas d'une page &amp;agrave; l'autre)...&lt;br /&gt; &lt;br /&gt;Par exemple :&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;&lt;div&gt;/*== BRAND */&lt;/div&gt;
&lt;div&gt;#b-brand {height:101px;overflow:hidden;color:#fff;position:relative;}&lt;/div&gt;
&lt;div&gt;#b-brand hgroup {position:absolute;left:110px;top:20px;}&lt;/div&gt;
&lt;div&gt;#b-brand hgroup h1 {font-weight:normal;margin:5px 0;font-size:36px;}&lt;/div&gt;
&lt;div&gt;#b-brand hgroup h2 {font-weight:normal;margin:15px 0;font-size:12px;}&lt;/div&gt;
&lt;div&gt;#b-brand nav {padding:10px 5px;margin:0 5px 0 0;width:265px;float:right;color:#1C305F;text-align:center;font-size:12px;}&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;/*== CONTENT */&lt;/div&gt;
&lt;div&gt;#b-content {overflow:hidden;position:relative;margin-top:20px;}&lt;/div&gt;
&lt;div&gt;#b-content-main {margin:0 220px 0 220px;}&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;/*== NAV */&lt;/div&gt;
&lt;div&gt;#m-main {position:absolute;top:0;left:0;width:200px;}&lt;/div&gt;
&lt;div&gt;#m-main ul {margin-top:150px;position:relative;}&lt;/div&gt;
&lt;div&gt;#m-main ul ul {margin:0 0 0 5px;}&lt;/div&gt;
&lt;div&gt;#m-main ul li a {height:35px;margin:0 0 5px 0;display:block;}&lt;/div&gt;
&lt;div&gt;#m-main ul ul li {padding-left:20px;margin-bottom:22px;}&lt;/div&gt;
&lt;div&gt;#m-main ul ul li a {height:auto;margin:0;display:inline;}&lt;/div&gt;
&lt;div&gt;#m-main ul li#m-meilleursventes {margin-top:10px;}&lt;/div&gt;
&lt;div&gt;#m-main ul li#m-meilleursventes a {height:49px;padding-bottom:264px;}&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;br /&gt;J'essaye &amp;eacute;galement de ne pas trop contraindre les boites afin de laisser une certaines flexibilit&amp;eacute; (hauteur &amp;nbsp;+largeur), flexibilit&amp;eacute; n&amp;eacute;cessaire en cas d'augmentation du volume de texte ou de la taille des polices. Cela demande plus de travail l&amp;agrave; maintenant mais en &amp;eacute;vitera plus tard lorsque le client collera un texte 2 fois plus long &amp;agrave; un endroit tout &amp;agrave; fait inappropri&amp;eacute;... :)&lt;br /&gt;&lt;br /&gt;Je pr&amp;eacute;cise que le site en exemple est semi-fluid : il s'&amp;eacute;tends de 980px &amp;agrave; 1440px (volont&amp;eacute; du client d'avoir un site &amp;agrave; la Amazon et moi j'ajoute une contrainte de dimension maximale car son site n'est pas comme Amazon).&lt;br /&gt;&lt;br /&gt;J'ai utilis&amp;eacute; les s&amp;eacute;lecteur :first-child et :last-child pour modifier certaines de mes marges, comme pour les livres :&lt;br /&gt;
&lt;pre&gt;#b-librairie .b-group:last-child, #b-librairie .b-group.iecss3-last-child {padding-bottom:0;}
#b-librairie .b-group .b-livre:last-child, #b-librairie .b-group .b-livre.iecss3-last-child {margin-left:6%;}&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;Et comme IE ne comprends pas ces nouveaux s&amp;eacute;lecteurs, j'ai voulu utilis&amp;eacute; le script&amp;nbsp;&lt;a target=&quot;_blank&quot; href=&quot;http://www.keithclark.co.uk/labs/ie-css3/&quot;&gt;http://www.keithclark.co.uk/labs/ie-css3/&lt;/a&gt;, mais sans trop de succ&amp;egrave;s. Par contre j'ai gard&amp;eacute; la classe indiqu&amp;eacute;e (iecss3-XXX) et je l'ai ajout&amp;eacute; dans mon code HTML...&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;&amp;lt;section class=&quot;b-group iecss3-last-child&quot;&amp;gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;Un passage sous Parallels pour tester IE8, quelques corrections, et j'en ai termin&amp;eacute; avec cette partie.&lt;br /&gt;&lt;br /&gt;Le r&amp;eacute;sultat : &lt;a target=&quot;_blank&quot; href=&quot;http://codesign.coclic-o.com/html_files/43/integration/index.htm&quot;&gt;cliquez-ici&lt;/a&gt;&amp;nbsp;</description>
<pubDate>Tue, 11 May 2010 22:00:00 PST</pubDate>
</item>
<item><guid>http://www.codesign.fr/blog//integrer-un-gabarit-html-etape-3-typographie</guid><title>Intégrer un gabarit HTML - Etape 3 - Typographie</title>
<link>http://www.codesign.fr/blog//integrer-un-gabarit-html-etape-3-typographie</link>
<description>Maintenant que la structure g&amp;eacute;n&amp;eacute;rale est pos&amp;eacute;e, vient le temps d'appliquer les styles graphiques en commen&amp;ccedil;ant par les polices...&lt;br /&gt;&lt;br /&gt;Je reprends le m&amp;ecirc;me sens d'int&amp;eacute;gration, commen&amp;ccedil;ant par les &amp;eacute;l&amp;eacute;ments g&amp;eacute;n&amp;eacute;raux et terminant par les &amp;eacute;l&amp;eacute;ments sp&amp;eacute;cifiques &amp;agrave; la page d'accueil (gabarit principal). Pour chaque &amp;eacute;l&amp;eacute;ment je v&amp;eacute;rifie dans le fichier du gabarit la taille, le corps et le type de police. J'utilise directement les pixels, je ne cherche pas &amp;agrave; faire une quelconque relation entre les tailles relative et autres complexit&amp;eacute;s pour rendre accessible ma page avec des tailles de polices variables, puisque la plupart des navigateurs modernes utilisent le zoom pour agrandir une page.&lt;br /&gt;&lt;br /&gt;Par contre, en lieu et place d'image avec une police &quot;non g&amp;eacute;n&amp;eacute;rique&quot;, j'utilise les capacit&amp;eacute;s @font-face, support&amp;eacute;es par, tenez-vous bien, IE6 !!!&lt;br /&gt;&lt;br /&gt;Pour la g&amp;eacute;n&amp;eacute;ration des r&amp;egrave;gles, je ne m'emb&amp;ecirc;te pas : &lt;a target=&quot;_blank&quot; href=&quot;http://www.fontsquirrel.com/fontface/generator&quot;&gt;http://www.fontsquirrel.com/fontface/generator&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Le seul probl&amp;egrave;me que j'ai actuellement vient de la diff&amp;eacute;rence de tailles de polices entre Windows de MacOSX... D'o&amp;ugrave; l'int&amp;eacute;r&amp;ecirc;t d'avoir des boites flexibles, et l&amp;agrave; j'ai quelques am&amp;eacute;liorations &amp;agrave; apporter... Ok, c'est fait...&lt;br /&gt;&lt;br /&gt;Voil&amp;agrave; les screenshots qui montrent les diff&amp;eacute;rences mais apr&amp;egrave;s &amp;eacute;tape 4 d'insertion des couleurs et visuels (sur MAC et PC) :&lt;br /&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/mac-safari.png&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/mac-safari.png&quot; alt=&quot;mac-safari.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/mac-firefox.png&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/mac-firefox.png&quot; alt=&quot;mac-firefox.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/mac-chrome.png&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/mac-chrome.png&quot; alt=&quot;mac-chrome.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/windows-chrome.png&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/windows-chrome.png&quot; alt=&quot;windows-chrome.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/windows-firefox.png&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/windows-firefox.png&quot; alt=&quot;windows-firefox.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/windows-ie8.png&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/windows-ie8.png&quot; alt=&quot;windows-ie8.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/windows-ie6.png&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/windows-ie6.png&quot; alt=&quot;windows-ie6.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;</description>
<pubDate>Thu, 20 May 2010 22:00:00 PST</pubDate>
</item>
<item><guid>http://www.codesign.fr/blog//integrer-un-gabarit-html-etape-4-couleurs-et-visuels</guid><title>Intégrer un gabarit HTML - Etape 4 - Couleurs et Visuels</title>
<link>http://www.codesign.fr/blog//integrer-un-gabarit-html-etape-4-couleurs-et-visuels</link>
<description>La derni&amp;egrave;re &amp;eacute;tape de r&amp;eacute;alisation consiste simplement &amp;agrave; :&lt;br /&gt;&lt;strong&gt;1- mettre des fonds de couleurs unies dans un premier temps, en prenant les couleurs correspondantes selon la source graphique et en modifiant au besoin la couleur de la police.&lt;br /&gt;2- faire la d&amp;eacute;coupe du visuel dans la source graphique, l'exporter en PNG32 et cr&amp;eacute;er la r&amp;egrave;gle CSS background:url(image.png)no-repeat 0 0...&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Parfois l'image ne passe pas avec IE6, il suffit alors de mettre une r&amp;egrave;gle position:relative... et parfois zoom:1 !&lt;br /&gt;&lt;br /&gt;Pourquoi du PNG32, lourd et pesant ? Parceque je maquette, et je suis susceptible de faire des cartes pour sprites plus tard...&lt;br /&gt;&lt;br /&gt;C'est quoi une &lt;strong&gt;carte pour sprite&lt;/strong&gt; ? et ben ce sont plusieurs visuels regroup&amp;eacute;s dans la m&amp;ecirc;me image.&lt;br /&gt;&lt;br /&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/sprites.png&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/sprites.png&quot; alt=&quot;sprites.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Quand toutes les r&amp;egrave;gles ont &amp;eacute;t&amp;eacute; cr&amp;eacute;es, que les r&amp;egrave;gles &amp;eacute;ventuelles de la partie 1 ont &amp;eacute;t&amp;eacute; modifi&amp;eacute;es pour s'adapter aux contraintes de gestion des visuels, on peut alors retravailler chaque visuels pour gagner du poids...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Petite note sur les pr&amp;eacute;fixes que j'utilise :&lt;/strong&gt;&lt;br /&gt;- bg- pour les fonds de blocs&lt;br /&gt;- puce- pour les ... puces :)&lt;br /&gt;- btn- pour les ... boutons :p&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Un exemple pour le header de La Librairie des Ecoles&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;/*== BRAND */&lt;br /&gt;#b-brand {background:url(images/bg-page.png) repeat-y 0 0;padding:0 10px 0 10px;width:960px;}&lt;br /&gt;#b-brand .b-wrapper {height:101px;overflow:hidden;color:#fff;position:relative;background:#213E80 url(images/bg-brand.png) no-repeat 0 0;}&lt;br /&gt;#b-brand hgroup {position:absolute;left:115px;top:15px;}&lt;br /&gt;#b-brand hgroup h1 {font-weight:normal;margin:5px 0;font-family:GlyphaRoman,courier;font-size:35px;border:1px solid #fff;border-right:0;border-left:0;padding:5px 0;}&lt;br /&gt;#b-brand hgroup h1 a {text-decoration: none;color:#fff;}&lt;br /&gt;#b-brand hgroup h2 {font-weight:normal;margin:10px 0;font-family:courier;font-size:12px;}&lt;br /&gt;#b-brand nav {padding:10px 5px;margin:0 5px 0 0;width:265px;float:right;text-align:center;font-size:12px;font-family:Arial,sans-serif;color:#1C305F;background:#DBDDE8;-webkit-border-bottom-left-radius:10px;-webkit-border-bottom-right-radius:10px;-moz-border-radius-bottomleft:10px;-moz-border-radius-bottomright:10px;border-bottom-left-radius:10px;border-bottom-right-radius:10px;}&lt;br /&gt;#b-brand nav a, #b-brand nav a:link, #b-brand nav a:visited {color:#1C305F}&lt;br /&gt;#b-brand nav a:hover {color:#203d7f;text-decoration:none;}&lt;br /&gt;&lt;/pre&gt;
&lt;strong&gt;Explications :&lt;/strong&gt;&lt;br /&gt;Le visuel bg-page ne pourra pas &amp;ecirc;tre ins&amp;eacute;r&amp;eacute; dans la carte de prites car il doit &amp;ecirc;tre r&amp;eacute;p&amp;eacute;t&amp;eacute;... A l'inverse, bg-brand pourra &amp;ecirc;tre utilis&amp;eacute; dans la carte de sprites.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;#m-main ul li#m-lecture {background:url(images/bg-nav-lecture.png) repeat-y 0 0;}&lt;br /&gt;#m-main ul li#m-francais {background:url(images/bg-nav-francais.png) repeat-y 0 0;}&lt;br /&gt;#m-main ul li#m-mathematiques {background:url(images/bg-nav-maths.png) repeat-y 0 0;}&lt;br /&gt;#m-main ul li#m-histoiregeo {background:url(images/bg-nav-histoire.png) repeat-y 0 0;}&lt;br /&gt;#m-main ul li#m-sciences {background:url(images/bg-nav-default.png) repeat-y 0 0;}&lt;br /&gt;#m-main ul li#m-morale {background:url(images/bg-nav-default.png) repeat-y 0 0;}&lt;br /&gt;#m-main ul li#m-parniveau {background:url(images/bg-nav-niveaux.png) repeat-y 0 0;}&lt;br /&gt;&lt;/pre&gt;
Classiquement, toutes ces &lt;strong&gt;images de fond&lt;/strong&gt; peuvent &amp;ecirc;tre ins&amp;eacute;r&amp;eacute;es dans la carte de sprites, mais elles se r&amp;eacute;p&amp;egrave;tent en hauteur, donc elles devront &amp;ecirc;tre align&amp;eacute;es en longueur dans la carte...&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;.b-livre nav li.b-feuilleter {background:url(images/puce-feuilleter.png) no-repeat 0 0;padding:3px 0 3px 20px;}&lt;br /&gt;.b-livre nav li.b-conseiller {background:url(images/puce-email.png) no-repeat 0 0;padding:3px 0 3px 20px;}&lt;br /&gt;&lt;/pre&gt;
Les &lt;strong&gt;puces&lt;/strong&gt;, elles, c'est s&amp;ucirc;r, doivent &amp;ecirc;tre dans une carte, align&amp;eacute;es plut&amp;ocirc;t de mani&amp;egrave;res verticales, ou alors tr&amp;egrave;s &amp;eacute;loign&amp;eacute;es les unes des autres...&lt;br /&gt;&lt;br /&gt;Je n'ai pas encore mont&amp;eacute; les cartes, d&amp;egrave;s que c'est fait, je les pose ici.</description>
<pubDate>Fri, 21 May 2010 22:00:00 PST</pubDate>
</item><item><guid>http://www.codesign.fr/blog//playlist-musicale-jw-player-html-javascript-et-css</guid><title>Playlist musicale : JW Player, HTML, Javascript et CSS</title>
<link>http://www.codesign.fr/blog//playlist-musicale-jw-player-html-javascript-et-css</link>
<description>Dans le cadre de la refonte compl&amp;egrave;te du site du musicien Yves Rechsteiner, et comme vous pouvez le voir sur l'image ci-dessous, j'ai une playlist de X extraits au format MP3, et je veux pouvoir activer la lecture d'un simple clic sur le nom de l'extrait.&lt;br /&gt;&lt;br /&gt;&lt;a class=&quot;b-blogimg&quot; href=&quot;http://www.codesign.fr/medias/blogs/capture-d-ecran-2010-05-26-a-15.48.08.png&quot;&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.codesign.fr/medias/blogs/capture-d-ecran-2010-05-26-a-15.48.08.png&quot; alt=&quot;Site de Yves&quot; align=&quot;middle&quot; width=&quot;550&quot; /&gt;&lt;/p&gt;
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;M&amp;ecirc;me si le site est en HTML5 je ne compte pas utiliser pour l'instant le  tag AUDIO car trop de probl&amp;egrave;mes de compatibilit&amp;eacute;...&lt;br /&gt;Je pars donc sur le player &lt;a target=&quot;_blank&quot; href=&quot;http://www.longtailvideo.com/players/&quot;&gt;JW Player&lt;/a&gt; version Flash.&lt;br /&gt;&lt;br /&gt;Pas facile de trouver des informations coh&amp;eacute;rentes, mais finallement, en lisant bien, on apprends que le lecteur, lors de son initialisation, cherche l'existence d'une mathode en Javascript nomm&amp;eacute;e &quot;playerReady&quot;, et sans elle, rien de jouable :(&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;var player = null;&lt;br /&gt;var track = null;&lt;br /&gt;&lt;br /&gt;function playerReady(thePlayer) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; player = window.document[thePlayer.id];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addListeners();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function createPlayer() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var flashvars = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/CODE:table_elt:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'class' =&amp;gt; 'yr_extraits',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'filter' =&amp;gt; 'f_status&amp;gt;0',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'html' =&amp;gt; '&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; file:&quot;{ITEM_F_FILE_RELURL}&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ':]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; autostart:&quot;false&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var params = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; allowfullscreen:&quot;true&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; allowscriptaccess:&quot;always&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var attributes = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id:&quot;ply&quot;,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; name:&quot;ply&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; swfobject.embedSWF(&quot;http://www.codesign.fr/scripts/mediaplayer/player.swf&quot;, &quot;mediaspace&quot;, &quot;150&quot;, &quot;24&quot;, &quot;9.0.115&quot;, false, flashvars, params, attributes);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function addListeners() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (player) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; player.addModelListener(&quot;TIME&quot;, &quot;positionListener&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; setTimeout(&quot;addListeners()&quot;,100);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function positionListener(obj) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentPosition = obj.position;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; finalPosition = obj.duration;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; percent = Math.round( currentPosition / finalPosition * 100 );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var tmp = document.getElementById(track.getAttribute('rel'));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (tmp) { tmp.innerHTML = '&amp;lt;em style=&quot;width:' + percent + '%&quot;&amp;gt;' + percent + &quot;%&amp;lt;/em&amp;gt;&quot;; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;createPlayer();&lt;br /&gt;&lt;br /&gt;function _play( url, atrack )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( atrack == track )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; player.sendEvent('STOP');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; track = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; player.sendEvent('STOP');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; player.sendEvent('LOAD', url );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; player.sendEvent('PLAY');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; track = atrack;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;
Toutes cette partie est du Javascript. Il faut bien prendre la derni&amp;egrave;re version de SWFObjects, et non pas celle fournie avec JW Player. La fonction &quot;createPlayer&quot; va donc placer le Flash dans le code HTML correspondant &amp;agrave; &quot;mediaspace&quot;. Si, lors de cette cr&amp;eacute;ation, vous ne sp&amp;eacute;cifiez pas de &quot;file&quot;, alors tout le reste ne fonctionnera pas :(&lt;br /&gt;&lt;br /&gt;Ici, certaines parties sont cod&amp;eacute;e pour mon CMS (comme le [CODE:...:]).&lt;br /&gt;&lt;br /&gt;Comme je voulais aussi afficher la progression de la lecture sans passer par leur propre afficheur, j'ai imagin&amp;eacute; une barre de progression en CSS/HTML. Dans la fonction &quot;positionListener&quot;, je change la taille de cette barre en lui donnant une valeur d'attribut &quot;width&quot; &amp;eacute;gale au pourcentage de progression.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Le code HTML de toute cette partie&lt;/strong&gt;, encapsul&amp;eacute;e dans mon CMS :&lt;br /&gt;
&lt;pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;section id=&quot;b-ecouter&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h2&amp;gt;Ecouter&amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [/CODE:table_list:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'class' =&amp;gt; 'yr_extraits',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'filter' =&amp;gt; 'f_status&amp;gt;0',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'html' =&amp;gt; '&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;command rel=&quot;com{ITEM_ID}&quot; title=&quot;Cliquez pour &amp;eacute;couter Intitul&amp;eacute;&quot; icon=&quot;/medias/control_play.png&quot; onclick=&quot;_play('{ITEM_F_FILE_RELURL}',this)&quot;&amp;gt;{ITEM_F_TITLE} ({ITEM_F_FILE_SIZE}) &amp;lt;small id=&quot;com{ITEM_ID}&quot;&amp;gt;&amp;lt;em&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/command&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ':]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id=&quot;samp&quot; style=&quot;position:absolute;top:0;left:0;z-index:-1&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id=&quot;mediaspace&quot;&amp;gt;This text will be replaced&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/section&amp;gt;&lt;/pre&gt;
&lt;br /&gt;&lt;br /&gt;L'emplacement du lecteur est dans &quot;samp&quot;, qui est cach&amp;eacute; via &quot;position:absolute...;z-index:-1&quot;. Le lecteur est r&amp;eacute;ellement plac&amp;eacute; dans &quot;mediaspace&quot; lors de l'appel &amp;agrave; createPlayer. Ce m&amp;ecirc;me appel de fonction d&amp;eacute;clenche &quot;playerReady&quot; (Flash envois une r&amp;eacute;f&amp;eacute;rence &amp;agrave; l'objet cr&amp;eacute;&amp;eacute; afin d'&amp;ecirc;tre accessible via le JS), lui-m&amp;ecirc;me d&amp;eacute;terminant quels &amp;eacute;v&amp;egrave;nements je vais traquer.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Le code CSS de cette zone&lt;/strong&gt; :
&lt;pre&gt;&lt;br /&gt;#b-brand aside section#b-ecouter li {padding:0 0 0 20px;background:url(images/puce-brand-nav.png) no-repeat 0 0;margin-bottom:5px;}&lt;br /&gt;#b-brand aside section#b-ecouter li command:hover {cursor:pointer;}&lt;br /&gt;#b-brand aside section#b-ecouter li command small {margin:2px 0 0 0;width:70%;background:rgba(0,0,0,0.2);display:block;height:5px;overflow:hidden;}&lt;br /&gt;#b-brand aside section#b-ecouter li command small em {display:block;background:rgba(0,0,0,0.7);text-indent:-9999px;height:5px;width:0;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;strong&gt;Les points &amp;agrave; respecter pour ne pas gal&amp;eacute;rer comme j'ai fait sont :&lt;br /&gt;- la version de SWF Object&lt;br /&gt;- l'attribut file lors de la cr&amp;eacute;ation de l'objet ne doit pas &amp;ecirc;tre vide&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Et voil&amp;agrave; ma super playlist focntionnelle !&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/swfobject/downloads/detail?name=swfobject_2_2.zip&quot;&gt;SWF Object&lt;/a&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://developer.longtailvideo.com/contributors/nyboe/JW_API_xmpl_6-1-0-0.html&quot;&gt;JW Players Examples&lt;/a&gt;&lt;br /&gt;</description>
<pubDate>Tue, 25 May 2010 22:00:00 PST</pubDate>
</item>
</channel>
</rss>