[spip-dev] Bug docs sur #TEXTE avec SPIP 1.9.3 dev SVN [11385]

Bonjour,

Quelle que soit la boucle ARTICLES que je teste, j'ai cette erreur dès que je mets la balise #TEXTE dans mon squelette :

<BOUCLE_document>()Erreur SQLdocuments.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_document FROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L1 ON ( L1.id_type = documents.id_type ) WHERE (documents.taille > 0 OR documents.distant='oui') AND (documents.id_document = 463)Unknown column 'documents.id_type' in 'on clause'</BOUCLE_document>

Je soupçonne un bug dans un modèle, je n'en ai pas de personnalisé pour les docs.

Je cherche et vous tiens au courant si personne ne trouve avant moi...

-Nicolas

Quelle que soit la boucle ARTICLES que je teste, j'ai cette erreur dès que je mets la balise #TEXTE dans mon squelette :

<BOUCLE_document>()Erreur SQLdocuments.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_document FROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L1 ON ( L1.id_type = documents.id_type ) WHERE (documents.taille > 0 OR documents.distant='oui') AND (documents.id_document = 463)Unknown column 'documents.id_type' in 'on clause'</BOUCLE_document>

Je soupçonne un bug dans un modèle, je n'en ai pas de personnalisé pour les docs.
Je cherche et vous tiens au courant si personne ne trouve avant moi...

Pour l'instant, je confirme ce que dit l'erreur, à savoir qu'il n'y a pas de colonne "id_type" dans la table "spip_documents".

-Nicolas

Pour l'instant, je confirme ce que dit l'erreur, à savoir qu'il n'y a
pas de colonne "id_type" dans la table "spip_documents".

Elle a été remplacée par la colonne extension : le compilateur devrait
le savoir, sauf si tu as personnalisé la définition de la boucle
DOCUMENTS (à travers un plugin ?)

-- Fil

Je n'ai pas l'impression.

Voilà les plugins activés :
- cfg : moteur de configuration
- Coloration Code pour trunk
- Gravatar
- Indexation
- Le Couteau Suisse
- Liens inter-contenus
- Snippets

-Nicolas

Je les ai tous désactivés, et j'ai toujours le problème.

-Nicolas

Pour l'instant, je confirme ce que dit l'erreur, à savoir qu'il n'y a
pas de colonne "id_type" dans la table "spip_documents".

Elle a été remplacée par la colonne extension : le compilateur devrait
le savoir, sauf si tu as personnalisé la définition de la boucle
DOCUMENTS (à travers un plugin ?)

Les images ne sont pas non plus affichées dans la visualisation de l'article en back office, et j'ai ça dans spip.log pour chacune des images :

Apr 04 10:20:20 127.0.0.1 (pid 19302) calcul (3.7ms) [../dist/modeles/img] lang='fr', dir_racine='../', id_document='464', id='464', args='Array', align='center', date='2008-04-04 10:20:20', date_redac='2008-04-04 10:20:20' (1 octets)
Apr 04 10:20:20 127.0.0.1 (pid 19302) Erreur mysql 1054
Apr 04 10:20:20 127.0.0.1 (pid 19302) Unknown column 'documents.id_type' in 'on clause' - SELECT documents.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_documentFROM `www_gasteroprod_com`.spip_documents AS `documents` INNER JOIN `www_gasteroprod_com`.spip_types_documents AS L1 ON ( L1.id_type = documents.id_type )WHERE (documents.taille > 0 OR documents.distant='oui') AND (documents.id_document = 466)
Apr 04 10:20:20 127.0.0.1 (pid 19302) Erreur mysql 1054
Apr 04 10:20:20 127.0.0.1 (pid 19302) Unknown column 'documents.id_type' in 'on clause' - SELECT documents.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_documentFROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L1 ON ( L1.id_type = documents.id_type )WHERE (documents.taille > 0 OR documents.distant='oui') AND (documents.id_document = 466)
Apr 04 10:20:20 127.0.0.1 (pid 19302) Erreur requete _document (.html)
Apr 04 10:20:20 127.0.0.1 (pid 19302) Erreur SQL: <tt><blink>&lt;BOUCLE_document&gt;()</blink><br /><b>Erreur SQL</

<br /> documents.id_document, documents.mode, documents.largeur,

documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_documentFROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L1 ON ( L1.id_type = documents.id_type )WHERE (documents.taille &gt; 0 OR documents.distant='oui') AND (documents.id_document = 466)<br /><span style='color: red'><b>Unknown column 'documents.id_type' in 'on clause'</b></

<br /><blink>&lt;/BOUCLE_document&gt;</blink></tt>&nbsp;&nbsp;<a

class='aide'href='http://www.gasteroprod.local/ecrire/?exec=aide_index&amp;aide=erreur_mysql&amp;var_lang=fr’onclick=&quot;javascript:window\.open\(this.href,'spip_aide', 'scrollbars=yes, resizable=yes, width=740, height=580'); return false;"><img src='../dist/images/aide.gif'alt="AIDE" title="De l'aide sur cet &eacute;l&eacute;ment" class='aide' /></a> | ()

-Nicolas

As-tu bien vidé le cache ? Si oui vérifie si tu n'as pas de vieux
modèles doc.html ou img.html (mais le mode debug aurait déjà dû te
les signaler).

As-tu bien vidé le cache ?

Oui, directement en shell.

Si oui vérifie si tu n'as pas de vieux
modèles doc.html ou img.html

Non, rien.

(mais le mode debug aurait déjà dû te
les signaler).

"var_mode=debug" ne donne rien, malheureusement.

-Nicolas

Pour info, j'ai toujours le souci en SVN 11400...

Pour info, j'ai toujours le souci en SVN 11400...

Cherche id_type dans ton code, normalement il n'existe plus dans SPIP.

-- Fil

Il y a pas mal de variables $id_type encore, mais en creusant vraiment, dans ecrire/inc/import_insere.php, il y a ceci :

function import_identifie_id_type($values, $table, $desc, $request) {
$e = $values[‘extension’];
$t = $values[‘titre’];
$r = sql_fetsel(“id_type AS id, titre”, “spip_types_documents”, “extension=” . sql_quote($e) . " AND titre=" . sql_quote($t));
return $r ? array($r[‘id’], $r[‘titre’]) : false;
}

Dans mon propre code, il n’y a que ça dans mes URL, identique à ce qu’il y a dans ecrire/urls/propres.php :

if ($type == ‘site’)
$id_type = ‘id_syndic’;
else
$id_type = ‘id_’.$type;
$url = get_spip_script(’./’)."?page=$type&$id_type=$id";

-Nicolas

Cette fonction est appellée de manière calculée lorsqu'on trouve un champ "id_type" lors d'une fusion de bases.
Elle ne sera donc aujourd'hui plus jamais appelée.
Il faudrait la renommer import_identifie_extension et l'adapter à ce remplacement de clé primaire.
Mais pas de panique, c'est le cas très rare de la fusion avec une vieille base d'une base plus récente ayant une table de type de documents plus fournie que la base résidente. On peut plutôt se poser la question d'interdire la fusion dans une vielle base d'une base nouvelle, il y a toutes les chances pour que ça produise des incohérences plus graves que ce cas rare.

Committo,Ergo:Sum

Cherche id_type dans ton code, normalement il n'existe plus dans SPIP.

Il y a pas mal de variables $id_type encore, mais en creusant vraiment, dans ecrire/inc/import_insere.php, il y a ceci :
function import_identifie_id_type($values, $table, $desc, $request)

Cette fonction est appellée de manière calculée lorsqu'on trouve un champ "id_type" lors d'une fusion de bases.

Donc ce n'est pas ça mon problème de modèle <img>. Dingue cette histoire... :frowning:

Je continuerais à chercher et vous tiendrais au courant...

-Nicolas

Ou a fortriori, se brancher sur le mécanisme que je viens de mettre en place pour les imports de vieilles bases :
- creation des tables en version stable immediatement inferieure à la version de la base importee
- upgrade jusqu'a la bonne version de base
- import
- upgrade jusqu'a la version actuelle
- recopie dans les tables
Mais j'avoue ne pas avoir eu le courage de gérer cette étape supplémentaire dans la fusion, et je l'ai tout simplement conditionnée au fait qu'on était en import simple.
Cela dit, pas de précipitation, commençons déjà par finir de tester/debug ce processus avec de vieux dump.

Corrolairement, quelle est la version stable mini que l'on doit fixer pour le support des imports de vieux dump ?
J'ai intégré à partir de la 1.8.0, mais un rapide coup d'oeil m'a montré que les versions antérieures n'avaient pas de "tables_principales" ni "tables_auxiliaires", et qu'il fallait donc faire un minimum de portage de code pour la recréation des vieilles bases antérieures.
Je serais partisan de le faire juste pour la 1.7.0, qui serait le point de départ, et toutes les bases des 1.7.x seraient obtenues uniquement par upgrade depuis la 1.7.0.

Cédric

Le squelette dist/modeles/img.html me donne la compilation suivante dans “tmp/cache/skel/html_cab0590af31b841c1e4beb62bbb371da.php” :

<?php/* * Squelette : dist/modeles/img.html * Date : Tue, 05 Feb 2008 22:41:40 GMT * Compile : Tue, 08 Apr 2008 13:21:56 GMT (0.031s) * Boucles : _document */ //// //function BOUCLE_documenthtml_cab0590af31b841c1e4beb62bbb371da(&$Cache, &$Pile, &$doublons, &$Numrows, $SP) { $connect = ''; $in0 = array(); if (!(is_array($a = ($Pile[0]['mode'])))) $in0[]= $a; else $in0 = array_merge($in0, $a); // REQUETE $result = calculer_select( array("documents.id_document", "documents.mode", "documents.largeur", "documents.hauteur", "documents.titre", "L1.mime_type", "L1.titre AS type_document"), # SELECT array('documents' => 'spip_documents','L1' => 'spip_types_documents'), # FROM array(), # FROM type jointure array( array('(documents.taille > 0 OR documents.distant=\'oui\')'), array('=', 'documents.id_document', intval($Pile[0]['id_document'])), (!$Pile[0]['mode'] ? '' : ((is_array($Pile[0]['mode'])) ? array('<>', ((sql_quote($in0)==="''") ? 0 : ('FIELD(documents.mode,' . sql_quote($in0) . ')')), 0) : array('=', 'documents.mode', sql_quote($Pile[0]['mode']))))), # WHERE **array('L1' => array('documents', 'id_type')), # WHERE pour jointure** array(), # GROUP array(), # ORDER '', # LIMIT array(), # HAVING 'documents', # table '_document', # boucle ''); # serveur $t0 = ""; $SP++; // RESULTATS while ($Pile[$SP] = @sql_fetch($result,"")) { $t0 .= (' ' .vide($Pile['vars']['image'] = interdire_scripts((sinon(match($Pile[$SP]['mode'],'image|vignette'),interdire_scripts(entites_html((@$Pile[0]['embed']),true))) ? ' ':''))) .(($t1 = strval((is_array($a = ($Pile["vars"])) ? $a['image'] : "")))!=='' ? ($t1 . ( '' . (($t2 = strval(interdire_scripts(entites_html((@$Pile[0]['lien']),true))))!=='' ? ('')) : '') . '' . interdire_scripts(texte_backend(typo($Pile[$SP]['titre'],' . interdire_scripts((entites_html((@$Pile[0]['lien']),true) ? '':'')) . '')) : '') .(($t1 = strval(((is_array($a = ($Pile["vars"])) ? $a['image'] : "") ? '':' ')))!=='' ? ($t1 . ( '' . inserer_attribut(calcule_logo_document($Pile[$SP]['id_document'], '', $doublons, 0, '', '', '',''),'alt',interdire_scripts((strlen(typo($Pile[$SP]['titre'], "TYPO", $connect)) ? ( interdire_scripts(typo($Pile[$SP]['titre'], "TYPO", $connect)) . ' {' . interdire_scripts($Pile[$SP]['type_document']) . '}'):interdire_scripts($Pile[$SP]['type_document'])))) . '')) : '')); } @sql_free($result,''); return $t0;} //// Fonction principale du squelette dist/modeles/img.html.//function html_cab0590af31b841c1e4beb62bbb371da($Cache, $Pile, $doublons=array(), $Numrows=array(), $SP=0) { if (is_array($Pile[0]["doublons"])) $doublons = nettoyer_env_doublons($Pile[0]["doublons"]); $connect = ''; $page = (BOUCLE_documenthtml_cab0590af31b841c1e4beb62bbb371da($Cache, $Pile, $doublons, $Numrows, $SP) .''); return analyse_resultat_skel('html_cab0590af31b841c1e4beb62bbb371da', $Cache, $page);} ?>

J’ai mis en évidence en gras la ligne où est utilisé le id_type, commentée avec “# WHERE pour jointure”.

-Nicolas

Le squelette dist/modeles/img.html me donne la compilation suivante dans
"tmp/cache/skel/html_cab0590af31b841c1e4beb62bbb371da.php" :

Tu dois avoir un vieux fichier pas à jour, car il n'y a plus de
id_type sur cette boucle.

-- Fil

Le squelette dist/modeles/img.html me donne la compilation suivante dans
« tmp/cache/skel/html_cab0590af31b841c1e4beb62bbb371da.php » :

Tu dois avoir un vieux fichier pas à jour, car il n’y a plus de
id_type sur cette boucle.

J’ai comparé ma version à celle du SVN, elles sont identiques ! :frowning:

<BOUCLE_document (DOCUMENTS) {id_document} {mode?}>
[(#REM)

Modele pour

Si on est en mode « image » ou « vignette », ou appele avec embed=oui,
on affiche l’image complete ; sinon le logo

Si un lien est passe #ENV{lien} on ajoute le a href
ou on truque le #URL_DOCUMENT

]
[(#SET{
image,
#MODE|match{‹ image|vignette ›}

sinon{#ENV{embed}}
?{’ '}
})][

(#REM) image complete ?

][(#GET{image})
<span class=‹ spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok ›[ style=‹ float:(#ENV{align}|match{left|right});[ width:(#LARGEUR)px;] ›]>
[<a href=« (#ENV{lien}) »[ class=« (#ENV{lien_class}) »]>]<img src=‹ #URL_DOCUMENT ›[ width=« (#LARGEUR) »][ height=« (#HAUTEUR) »] alt=« [(#TITRE|texte_backend)] »[ title=« (#TITRE|texte_backend) »] />[(#ENV{lien}|?{})]
][

(#REM) sinon logo document + lien + alt + title etc

][(#GET{image}|?{‹  ›,’ ‹ })
<span class=‹ spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok ›[ style=‹ float:(#ENV{align}|match{left|right});[ width:(#LOGO_DOCUMENT||largeur)px;] ›]><a href=« [(#ENV{lien}|sinon{#URL_DOCUMENT})] »[ (#ENV{lien}|?{ ›',type=« #MIME_TYPE »})][ title=« (#TITRE|texte_backend) »]>[(#LOGO_DOCUMENT||inserer_attribut{alt,#TITRE|strlen|?{#TITRE {#TYPE_DOCUMENT},#TYPE_DOCUMENT}})]
]</BOUCLE_document>

Il serait bien de mettre dans spip.log et les messages d’erreur un chemin complet vers les squelettes utilisés, parce que là je n’ai que « dist/modeles/img.html ».

Le seul autre fichier « img.html » dans mon arborescence est celui du plugin SPIP-Album que je n’utilise pas, et n’ai jamais activé.

Je deviens dingue…

-Nicolas

Je deviens dingue....

Hi hi.

Ce qui est en cause c'est peut-être plutôt dans ecrire/public/ où tu
trouves les définitions des jointures.

-- Fil

J'ai fait un squelette avec juste ça :

<BOUCLE_principale(ARTICLES){id_article}>
  #TEXTE
</BOUCLE_principale>

Je logue le passage dans chacune des fonctions de ecrire/public/jointures.php, et j'obtiens ça :

Apr 08 17:02:58 127.0.0.1 (pid 29246) COMPIL (0.017s) [design/article-test] html_f9659758154fe9ac5de554e6c103d1da.php
Apr 08 17:02:58 127.0.0.1 (pid 29246) ### fabrique_jointures html_cab0590af31b841c1e4beb62bbb371da
Apr 08 17:02:58 127.0.0.1 (pid 29246) ### liste_champs_jointures
Apr 08 17:02:58 127.0.0.1 (pid 29246) COMPIL (0.026s) [dist/modeles/img] html_cab0590af31b841c1e4beb62bbb371da.php
Apr 08 17:02:58 127.0.0.1 (pid 29246) Erreur mysql 1054
Apr 08 17:02:58 127.0.0.1 (pid 29246) Unknown column ‘documents.id_type’ in ‘on clause’ -
SELECT documents.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_document
FROM `www_gasteroprod_com`.spip_documents AS `documents` INNER JOIN `www_gasteroprod_com`.spip_types_documents AS L1 ON ( L1.id_type = documents.id_type )
WHERE (documents.taille > 0 OR documents.distant=‘oui’)
         AND (documents.id_document = 464)
Apr 08 17:02:58 127.0.0.1 (pid 29246) Erreur mysql 1054
Apr 08 17:02:58 127.0.0.1 (pid 29246) Unknown column ‘documents.id_type’ in ‘on clause’ -
SELECT documents.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_document
FROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L1 ON ( L1.id_type = documents.id_type )
WHERE (documents.taille > 0 OR documents.distant=‘oui’)
         AND (documents.id_document = 464)
Apr 08 17:02:58 127.0.0.1 (pid 29246) Erreur requete _document (article-test.html)
Apr 08 17:02:58 127.0.0.1 (pid 29246) Erreur SQL: <tt><blink>&lt;BOUCLE_document&gt;()</blink><br />
<b>Erreur SQL</b><br />
  documents.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_document
FROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L1 ON ( L1.id_type = documents.id_type )
WHERE (documents.taille &gt; 0 OR documents.distant=‘oui’)
         AND (documents.id_document = 464)
<br /><span style=‘color: red’><b>Unknown column ‘documents.id_type’ in ‘on clause’</b></span><br /><blink>&lt;/BOUCLE_document&gt;</blink>
</tt>
&nbsp;&nbsp;<a class=‘aide’
href=‘http://www.gasteroprod.local/ecrire/?exec=aide_index&aide=erreur_mysql&var_lang=fr
onclick=“javascript:window.open(this.href,‘spip_aide’, ‘scrollbars=yes, resizable=yes, width=740, height=580’); return false;”><img src=‘dist/images/aide.gif’
alt=“AIDE” title=“De l’aide sur cet &eacute;l&eacute;ment” class=‘aide’ /></a> | (article-test)
Apr 08 17:02:58 127.0.0.1 (pid 29246) calcul (0.115s) [dist/modeles/img] lang=‘fr’, id_document=‘464’, id=‘464’, args=‘Array’, align=‘center’, date=‘2008-04-08 17:02:58’, date_redac=‘2008-04-08 17:02:58’ (1 octets)
Apr 08 17:02:58 127.0.0.1 (pid 29246) Erreur mysql 1054
Apr 08 17:02:58 127.0.0.1 (pid 29246) Unknown column ‘documents.id_type’ in ‘on clause’ -
SELECT documents.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_document
FROM `www_gasteroprod_com`.spip_documents AS `documents` INNER JOIN `www_gasteroprod_com`.spip_types_documents AS L1 ON ( L1.id_type = documents.id_type )
WHERE (documents.taille > 0 OR documents.distant=‘oui’)
         AND (documents.id_document = 466)
Apr 08 17:02:58 127.0.0.1 (pid 29246) Erreur mysql 1054
Apr 08 17:02:58 127.0.0.1 (pid 29246) Unknown column ‘documents.id_type’ in ‘on clause’ -
SELECT documents.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_document
FROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L1 ON ( L1.id_type = documents.id_type )
WHERE (documents.taille > 0 OR documents.distant=‘oui’)
         AND (documents.id_document = 466)
Apr 08 17:02:58 127.0.0.1 (pid 29246) Erreur requete _document (article-test.html)
Apr 08 17:02:58 127.0.0.1 (pid 29246) Erreur SQL: <tt><blink>&lt;BOUCLE_document&gt;()</blink><br />
<b>Erreur SQL</b><br />
  documents.id_document, documents.mode, documents.largeur, documents.hauteur, documents.titre, L1.mime_type, L1.titre AS type_document
FROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L1 ON ( L1.id_type = documents.id_type )
WHERE (documents.taille &gt; 0 OR documents.distant=‘oui’)
         AND (documents.id_document = 466)
<br /><span style=‘color: red’><b>Unknown column ‘documents.id_type’ in ‘on clause’</b></span><br /><blink>&lt;/BOUCLE_document&gt;</blink>
</tt>
&nbsp;&nbsp;<a class=‘aide’
href=‘http://www.gasteroprod.local/ecrire/?exec=aide_index&aide=erreur_mysql&var_lang=fr
onclick=“javascript:window.open(this.href,‘spip_aide’, ‘scrollbars=yes, resizable=yes, width=740, height=580’); return false;”><img src=‘dist/images/aide.gif’
alt=“AIDE” title=“De l’aide sur cet &eacute;l&eacute;ment” class=‘aide’ /></a> | (article-test)
Apr 08 17:02:58 127.0.0.1 (pid 29246) calcul (4.7ms) [dist/modeles/img] lang=‘fr’, id_document=‘466’, id=‘466’, args=‘Array’, align=‘center’, date=‘2008-04-08 17:02:58’, date_redac=‘2008-04-08 17:02:58’ (1 octets)
Apr 08 17:02:58 127.0.0.1 (pid 29246) notes ignorees par html_f9659758154fe9ac5de554e6c103d1da: <p>[<a href="#nh1" name=“nb1” class=“spip_note” title=“Notes 1” rev=“footnote”>1</a>] Leur nom technique, le fichier s&#8217;appelant par d?faut <code class=‘spip_code’ dir=‘ltr’>favicon.ico</code></p>

<p>[<a href="#nh2" name=“nb2” class=“spip_note” title=“Notes 2” rev=“footnote”>2</a>] A cr?er s&#8217;il n&#8217;existe pas d?j?</p>
Apr 08 17:02:58 127.0.0.1 (pid 29246) calcul (0.242s) [design/article-test] page=‘article-test’, id_article=‘635’, date_redac=‘2008-04-08 17:02:58’, date=‘2008-04-08 17:02:58’ (3517 octets)
Apr 08 17:02:58 127.0.0.1 (pid 29246) COMPIL (0.015s) [dist/formulaires/administration] html_a33bcb252cd18b6afdbec1d578e1edb1.php
Apr 08 17:02:58 127.0.0.1 (pid 29246) calcul (3.1ms) [dist/formulaires/administration] id_article=‘635’, voir_article=‘http://www.gasteroprod.local/ecrire/?exec=articles&id_article=635’, visites=‘46’, popularite=‘1’, statistiques=‘http://www.gasteroprod.local/ecrire/?exec=statistiques_visites&id_article=635’, action=‘spip.php?page=article-test&id_article=635’, divclass=‘spip-admin-float’, lang=‘fr’, calcul=‘recalcul’, date=‘2008-04-08 17:02:58’, date_redac=‘2008-04-08 17:02:58’ (558 octets)

-Nicolas

C'est du délire, je ne trouve vraiment pas du tout d'où ça peut venir... :frowning:

Et du coup, ça donne des billets moins percutants:
http://www.gasteroprod.com/blog/bientot-des-listes-de-taches-to-do-list-dans-google-docs.html