[spip-dev] spipesque

Coucou,

je retrouve ce "post-it" que j'avais préparé avant nos libations de la
semaine dernière :

* messagerie : l'éparpillement des messageries (une par site SPIP, à tout le
    moins) est un peu pénible : il faut se rendre sur les parties ecrire/
    d'une dizaine de SPIPs pour voir si on a de nouveaux messages : arg!
    Peut-être qu'une passerelle vers le mail avec Headers corrects pour
    trier, serait une solution (à chaque rédacteur de choisir s'il veut
    recevoir par mail) ?

* accélérer encore (des idées en vrac)
  - supprimer le calcul des rubriques actives : pas très utile, pas clair
    (au vu de la liste spip), gênant (quand on a une rubrique de brèves
    uniquement) et ralentissement
  - passer $row dans genere_url_article($id_article) (pas compliqué, un peu
    utile, je veux bien m'en charger, mais ça implique de modifier un petit
    peu les sites existants et utilisant inc-urls.php3)

    -- des idées idiotes --
  - écrire en C une fonction externe pour la partie la plus lente (typo ?) ?
  - prétraitements de la base ? (à étudier)

* consolider :
  - "nettoyage" du code
  - mots-clés sur brèves

* forums :
  - changer 'utilise les forums' en 'forums on/off par défaut', en effet sur
    j'aimerais pouvoir ouvrir des forums, mais seulement sur des articles
    sélectionnés. -- et ne pas avoir à penser à déselectionner quand je n'en
    veux pas !

* interface :
  - améliorer la marge de l'interface ecrire/ qui devient fourre-tout,
    mettre toute l'aide dans le popup 'aide', grouper forums/pétitions
    dans une case "interactif", etc.

bises

-- Fil

Fil wrote:

* accélérer encore

Voici une suggestion pour les programmeurs officiels:

Dans le fichier inc_texte.php3, il y a quelques boucles
de la forme:

while (ereg($regexp_echap, $letexte, $regs)){
                $compt_sources++;
                $zesources[$compt_sources] = $regs[0];
                $zetexte = split($regexp_echap,$letexte,2);
                $letexte =
$zetexte[0]."<SOURCETYPO$compt_sources>".$zetexte[1];
        }

Sous cette forme, l'expression régulière $regexp_echap
est "matché" deux fois sur la même portion de texte
($letexte), ce qui est inutile. Et comme les expressions
régulières peuvent être assez gourmandes en ressource,
il est peut être préférable d'éviter ce doublon, en
remplaçant:
$zetexte = split($regexp_echap,$letexte,2);

avec un morceau de code qui ressemblerait à ceci:

$pos_regexp = strpos($letexte, $regs[0]);
$zetexte[0] = substr($letexte, 0, $pos_regexp);
$zetexte[1] = substr($letexte, $pos_regexp + strlen($regs[0]));

Cordialement

Michael,

ps: il y a sans doute d'autre optimisations possibles,
    mais c'est après avoir découvert un bug, que je vous
    avez signalé, que j'avais découvert ce double appel
    à la même expression régulière.

Bonsoir,

* messagerie : l'éparpillement des messageries (une par site SPIP, à
tout le moins) est un peu pénible : il faut se rendre sur les
parties ecrire/ d'une dizaine de SPIPs pour voir si on a de nouveaux
messages : arg!
Peut-être qu'une passerelle vers le mail avec Headers corrects pour
trier, serait une solution (à chaque rédacteur de choisir s'il veut
recevoir par mail) ?

Oui, très bonne idée, à associer aux alertes en fonctions d'événements
importants : enregistrement d'un nouvel auteur, création d'un article,
...

* accélérer encore (des idées en vrac)
- supprimer le calcul des rubriques actives : pas très utile, pas
clair (au vu de la liste spip), gênant (quand on a une rubrique de
brèves uniquement) et ralentissement

En effet, ce n'est pas forcément très utile. Par contre, classer les
rubriques les plus consultées comme pour les articles, et indiquer le
nombre de hits par jour/mois/année pourrait être utile ...

-- des idées idiotes --
- écrire en C une fonction externe pour la partie la plus lente
(typo ?) ?

Ouh la la, plutôt chaud, ça, et difficilement exploitable par beaucoup
d'utilisateurs ...

Une autre idée, en bonus, que j'avais déjà été émise :

Pouvoir inclure des squelettes les uns dans les autres, par exemple
avec un <SPIP_INCLUDE(header)> qui inclurait le squelette
'header.html'.

Cela implique une première passe (au moins) pour le parsing, donc gros
intérêt fonctionnel mais perfs à surveiller ...

-Nicolas

Fil wrote:

* messagerie : l'éparpillement des messageries (une par site SPIP, à tout le
    moins) est un peu pénible : il faut se rendre sur les parties ecrire/
    d'une dizaine de SPIPs pour voir si on a de nouveaux messages : arg!
    Peut-être qu'une passerelle vers le mail avec Headers corrects pour
    trier, serait une solution (à chaque rédacteur de choisir s'il veut
    recevoir par mail) ?

Qu'appelles-tu Header corrects ? Tu avais soulevé, pendant la réunion
(super soirée au fait, merci :-)), le problème de l'utilité même de
la messagerie. Y a plusieurs trucs :

- Interface pas complète. Notamment, pas possible de supprimer un
message dont tu n'es pas expéditeur. Et puis, pour écrire à quelqu'un,
obligé de trouver son nom quelque part et de cliquer sur le bidule
vert à côté (au lieu de pouvoir faire "composer" et ajouter directement
le nom du destinataire).

- Est-ce que ça ne sert pas principalement à des choses qui pourraient
tout aussi bien se faire par mail ? Au vu de l'utilisation actuelle
dans uzine, j'en ai l'impression....

- Problème pour la sauvegarde de la base : faut l'implémenter. Or, la
relation spip_auteurs_messages n'étant pas simple (y a des colonnes
en plus), va falloir bidouiller, ce qui ne me plaît pas trop (et ne
m'intéresse pas des masses non plus ;-)).

- Accessoirement, ça crée une messagerie qui donne l'impression d'être
privée mais dont le contenu est consultable par quiconque a accès direct
à la base de données.

Pour l'ensemble du groupware, j'avais commencé à essayer d'en discuter
pour étudier ça ensemble, j'avais même entamé un petit fichier
http://rezo.net/spip-dev/devel/groupware.txt

Le "lock" manuel d'un article est notamment très important.

* accélérer encore (des idées en vrac)
  - supprimer le calcul des rubriques actives : pas très utile, pas clair
    (au vu de la liste spip), gênant (quand on a une rubrique de brèves
    uniquement) et ralentissement

C'est quand même nécessaire pour éviter l'affichage de rubriques "parasites",
ou privées (comme sur uzine par exemple). Je ne suis pas sûr d'autre part
que ça bouffe beaucoup : tu as essayé de mesurer en supprimant ce calcul ?
D'ailleurs je me rends compte que ce sera bien accéléré en mettant le statut
en index (SELECT DISTINCT id_rubrique FROM spip_articles WHERE statut = 'publie',
eh oui !). D'autre part le nombre de requêtes ne peut pas être supérieur à
la profondeur maximale du site, qui même sur le diplo ne dépasse pas 6 ou 7.

  - passer $row dans genere_url_article($id_article) (pas compliqué, un peu
    utile, je veux bien m'en charger, mais ça implique de modifier un petit
    peu les sites existants et utilisant inc-urls.php3)

Mmmh, ça sert à quoi ? Le fait d'utiliser le descriptif est quand même
très marginal. De plus, rien ne dit que le $row soit disponible (appel
lors d'un lien du type [bidule->125] par exemple). Grosse bidouille
en perspective pour pas grand'chose....

A propos, la version installée sur le Diplo n'est toujours pas celle
qui optimise les champs d'article récupérés depuis la base (1.0.5) :
accélération des sommaires.

  - écrire en C une fonction externe pour la partie la plus lente (typo ?) ?

:))) idiot en effet dans le cadre d'un soft exclusivement PHP/MySQL.
De plus, ce n'est certainement pas l'interprétation PHP qui est
prépondérante dans typo() et propre(), mais l'exécution sous-jacente
des regexps.

  - prétraitements de la base ? (à étudier)

Eventuellement. Mais il faut bien voir que ce qui est pénalisant,
ce n'est pas tellement les appels à la base de données (sauf sur
des pages pleines d'infos : sommaires détaillés....) mais le
code PHP qui met tout ça en ordre. Il suffit de voir la différence
de rapidité entre une page du site public et la page équivalente
dans ecrire (i.e. même taille de texte, même nombre de forums...).

  - mots-clés sur brèves

:))

Sinon il y a une demande qui revient très très souvent : gestion
d'un site multilingue. Sans aller jusqu'à pouvoir avoir plusieurs
versions d'un même article, on pourrait régler la langue des articles
(en plus c'est indispensable en vue d'éventuellement un jour avoir
plusieurs typos différentes en fonction de la langue) :

- une langue pour tout le site (configuration précise) : par défaut
le français
- éventuellement remplacée par une langue pour certaines rubriques
(héritée par les sous-rubriques et les articles)
- éventuellement remplacée par une langue pour certains articles

Donc une bête colonne MySQL en plus, avec l'interface qui va bien :
pop-up avec choix "langue par défaut" (sauf pour tout le site) ou
un paquet de langues définies "français, anglais..." (on doit
pouvoir récupérer la liste avec les codes ISO quelque part).

Possibilité de désactiver le multilingue dans la configuration
précise (désactivé par défaut ?).

Dans le site public, ajout d'un critère {lang} dans les boucles :
on peut ainsi avoir une partie multilingue, et puis le reste
géré de façon normale. S'il est présent, filtre selon la langue,
calculée de façon un peu particulière en examinant dans l'ordre :

- variable lang dans l'URL d'appel ($HTTP_GET_VARS['lang'])
- si pas, variable lang en cookie ($HTTP_COOKIE_VARS['lang'])
- si pas, langues acceptées par le navigateur ($HTTP_ACCEPT_LANGUAGE)

La variable lang et le cookie laissant le choix éventuel au
webmestre de fournir une sélection de langue explicite.
On pourra aussi forcer une langue dans les squelettes :
{lang=fr}.

Pour le calcul des langues de chaque rubrique, même type de
fonction que pour le calcul des... rubriques actives (désolé,
Fil ;-)). D'ailleurs, en réutilisant la même fonction, ça
ne devrait pas augmenter le temps d'exécution.

a+

Bises

Antoine.

@ Antoine Pitrou (pitrou@free.fr) :

Qu'appelles-tu Header corrects ? Tu avais soulevé, pendant la réunion

Je continue de penser que la messagerie n'est pas très utile dans son
format actuel, mais je ne suis pas non plus hostile à l'idée d'une
messagerie interne. Reste qu'il faudrait démontrer en quoi on peut faire
mieux que le mail ou que la messagerie instantanée type AIM.

Ce que j'appelle "Headers corrects" c'est quelque chose qui 1) permet de
trier tout ce qui provient d'un site (n'importe quel entete de type X-SPIP:
votre spip, discussion numero tant, etc.) et 2) comporte des champs
Message-Id: et In-Reply-To: cohérents, qui permettent à mon système de mail
de m'afficher l'arborescence de la discussion.

- Est-ce que ça ne sert pas principalement à des choses qui pourraient
tout aussi bien se faire par mail ? Au vu de l'utilisation actuelle
dans uzine, j'en ai l'impression....

Oui, j'en ai aussi le sentiment : trop de dispersion entre forums publics,
forum interne et messagerie interne (encore pire si on participe à plusieurs
spip).

- Accessoirement, ça crée une messagerie qui donne l'impression d'être
privée mais dont le contenu est consultable par quiconque a accès direct
à la base de données.

C'est vrai aussi du forum interne !

Pour l'ensemble du groupware, j'avais commencé à essayer d'en discuter
pour étudier ça ensemble, j'avais même entamé un petit fichier
http://rezo.net/spip-dev/devel/groupware.txt

Le "lock" manuel d'un article est notamment très important.

Oui !

> * accélérer encore (des idées en vrac)
> - supprimer le calcul des rubriques actives : pas très utile, pas clair
> (au vu de la liste spip), gênant (quand on a une rubrique de brèves
> uniquement) et ralentissement

C'est quand même nécessaire pour éviter l'affichage de rubriques "parasites",
ou privées (comme sur uzine par exemple). Je ne suis pas sûr d'autre part
que ça bouffe beaucoup : tu as essayé de mesurer en supprimant ce calcul ?
D'ailleurs je me rends compte que ce sera bien accéléré en mettant le statut
en index (SELECT DISTINCT id_rubrique FROM spip_articles WHERE statut = 'publie',
eh oui !). D'autre part le nombre de requêtes ne peut pas être supérieur à
la profondeur maximale du site, qui même sur le diplo ne dépasse pas 6 ou 7.

Sur miel, qui est une machine rapide, une passe sur 1130 rubriques prend
0.60s. S'il y a trois passes, cela peut mener à une grosse seconde. Et quand
un robot-fou passe sur le site, mieux vaut ne pas perdre trop de secondes :wink:
Expérience faite, avec un index posé sur le champ statut cela ne va pas plus
vite : puisque presque tous les articles sont de statut 'publie', le calcul
le plus important est probablement DISTINCT. (Pour ce que j'en comprends.)

> - passer $row dans genere_url_article($id_article) (pas compliqué, un peu
> utile, je veux bien m'en charger, mais ça implique de modifier un petit
> peu les sites existants et utilisant inc-urls.php3)

Mmmh, ça sert à quoi ? Le fait d'utiliser le descriptif est quand même
très marginal. De plus, rien ne dit que le $row soit disponible (appel
lors d'un lien du type [bidule->125] par exemple). Grosse bidouille
en perspective pour pas grand'chose....

ouaip

A propos, la version installée sur le Diplo n'est toujours pas celle
qui optimise les champs d'article récupérés depuis la base (1.0.5) :
accélération des sommaires.

Euh, je croyais l'avoir fait. Mais là je suis en vacances, hein :wink:

> - mots-clés sur brèves

:))

Sinon il y a une demande qui revient très très souvent : gestion
d'un site multilingue. Sans aller jusqu'à pouvoir avoir plusieurs
versions d'un même article, on pourrait régler la langue des articles

Je préférerais avoir un champ "technique" qui pourrait servir à plein de
choses, dont la langue. Pour l'instant j'utilise le champ "PS" comme champ
technique, et je le truffe de plein de métadonnées dans un format bizarre
mais facile à entrer à la main et à décoder en regexp. Par exemple :

    PS = 'A 1a 14 15 - reportage'

signifie : "Article", pages 1, 14 et 15, sans chapo (a), de type "reportage"
Ensuite pour calculer le sommaire, je trie {par ps} et j'ai le bon ordre.
Pour n'avoir que les "Articles", je trie {ps==^A}.

- variable lang dans l'URL d'appel ($HTTP_GET_VARS['lang'])
- si pas, variable lang en cookie ($HTTP_COOKIE_VARS['lang'])
- si pas, langues acceptées par le navigateur ($HTTP_ACCEPT_LANGUAGE)

Je déteste ces deux dernières propositions : quasi personne ne règle son
navigateur, et souvent il est mal réglé :wink:

@ Mickey <parienti@parienti.org> :

Sous cette forme, l'expression régulière $regexp_echap
est "matché" deux fois sur la même portion de texte
($letexte), ce qui est inutile.

Ouaip. J'installe ta correction dans inc_texte.php3
(http://rezo.net/spip-dev/devel/SPIP-1.2/ecrire/)

Il y avait quatre "split()" à remplacer par des strpos() ; le code est
moins lisible ainsi, mais espérons le un poil plus rapide.

-- Fil

Salut tout le monde,

LA MESSAGERIE
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Fil wrote:
>
> * messagerie
> Peut-=EAtre qu'une passerelle vers le mail avec Headers corrects po=

ur

> trier, serait une solution (=E0 chaque r=E9dacteur de choisir s'il =

veut

> recevoir par mail) ?

Oui.

Pour le "faire suivre automatiquement" vers l'adresse mail du
r=E9dacteur qui le d=E9sire, c'est tr=E8s facile. Donc =E0 ajouter.

Pour le header de mail qui te permette de reconstituer un thread de
mails, est-ce que tu as des infos pr=E9cises sur la fa=E7on dont il faut
coder =E7a? (Est-ce qu'il existe une syntaxe universelle d=E9crite
kekpart?)

- Interface pas compl=E8te.

Oui, bien entendu. En plus il manque des fonctions.

Notamment, pas possible de supprimer un
message dont tu n'es pas exp=E9diteur.

Non, c'est le contraire.

- Quand tu es destinataire d'un message, tu peux d'un clic te
supprimer de la "conversation" (tu n'es plus dans les destinataires,
c'est tout).

- Quand tu es l'exp=E9diteur (et que le message est d=E9j=E0 envoy=E9), tu n=
e
peux plus d'exclure du message tant qu'il y a encore des
destinataires (quand tous les destinataires se sont exclus, l=E0 tu
peux le sucrer). L'id=E9e, c'=E9tait d'=E9viter que l'auteur d'un message
n'envoie des saloperies et se retire imm=E9diatement, ce qui donnerait
des messages anonymes. Mais c'est sans doute une pr=E9caution inutile...

Et puis, pour =E9crire =E0 quelqu'un,
oblig=E9 de trouver son nom quelque part et de cliquer sur le bidule
vert =E0 c=F4t=E9 (au lieu de pouvoir faire "composer" et ajouter directeme=

nt

le nom du destinataire).

Oui et non...

Oui c'est une limite, mais...

- Quand tu cherches un nom, tu passes par la liste des r=E9dacteurs, et
l=E0 tu as tous les noms et les liens qui vont bien. Certes, sur uZine
o=F9 y'a une tripot=E9e de noms, c'est un poil plus long, puisqu'il faut
d=E9rouler les lettres.

- L'utilisation des liens =E0 c=F4t=E9 des noms rend l'interface
ultra-simplissime de chez simplissime. Tu vois un nom et tu cliques,
et t'as plus qu'=E0 r=E9diger ton message. A l'inverse, si tu ouvres un
page sans destinataire, il faut traiter =E7a comme de v=E9ritables mails,
bien penser =E0 ajouter le destinataire, ne pouvoir envoyer le message
qu'une fois que c'est fait... au niveau de l'interface, =E7a me semble
beaucoup plus complexe. Et risque de confusion, d=E8s lors, entre les
messages "en attente de destinataire" et les "m=E9mos".

- Est-ce que =E7a ne sert pas principalement =E0 des choses qui pourraient
tout aussi bien se faire par mail ? Au vu de l'utilisation actuelle
dans uzine, j'en ai l'impression....

Non. Depuis une semaine, je n'arr=EAte pas d'utiliser la messagerie
interne d'uZine. Je trouve =E7a tr=E8s pratique. Les discussions autour
d'uZine _dans_ uZine, c'est vachement pratique. Ca sert =E0 la fois de
forum priv=E9, de semi-chat (parce que je ne l'utilise jamais en temps
r=E9el avec des r=E9ponses toutes les deux secondes), =E7a permet
d'interpeller un autre r=E9dacteur directement (usage dont je rafole
d=E9sormais: "tu me t=E9l=E9phones quand tu te d=E9connectes")... Donc: je
ne l'utilise vraiment ni comme le mail, ni comme un chat.

De plus, ne pas perdre de vue que nous disposons d'une tripot=E9e
d'outils divers et vari=E9s pour discuter au minir=E9zo: notamment
plusieurs mailing-lists; et tous les membres savent parfaitement
utiliser le mail (notamment r=E9pondre =E0 un seul, r=E9pondre =E0
plusieurs...). Ca n'est pas le cas de tout le monde. Bon, la
messagerie n'est pas compl=E8te, mais c'est tout de m=EAme ce qu'il faut
aussi pr=E9voir: possibilit=E9 d'organiser des discussions entre admins,
des forums de gestion =E9ditoriale du site, dialogues entre tous les
r=E9dacteurs... Le minir=E9zo n'en a certes pas besoin, vu qu'on a autant
de mailing-lists qu'on veut, =E7a n'est vraiment pas le cas de tout le
monde.

- Probl=E8me pour la sauvegarde de la base : faut l'impl=E9menter. Or, la
relation spip_auteurs_messages n'=E9tant pas simple (y a des colonnes
en plus), va falloir bidouiller, ce qui ne me pla=EEt pas trop (et ne
m'int=E9resse pas des masses non plus ;-)).

Ca me semble pas urgent urgent, d'autant que la messagerie n'est pas
termin=E9e. Mais comme je ne pige rigoureusement rien =E0 la proc=E9dure de
sauvegarde de la base, =E0 part t=E9zigue, y'a pas grand monde qui pourra
le faire :slight_smile:

- Accessoirement, =E7a cr=E9e une messagerie qui donne l'impression d'=EAtr=

e

priv=E9e mais dont le contenu est consultable par quiconque a acc=E8s direc=

t

=E0 la base de donn=E9es.

Yop. Je rajoute un petit avertissement dans la colonne de gauche?
(Je suppose qu'il est illusoire d'esp=E9rer crypter les messages dans
la base de donn=E9es?)

Pour l'ensemble du groupware, j'avais commenc=E9 =E0 essayer d'en discuter
pour =E9tudier =E7a ensemble, j'avais m=EAme entam=E9 un petit fichier
http://rezo.net/spip-dev/devel/groupware.txt

Yop, je l'ai lu, c'est ce que j'ai suivi. Manquent seulement des fonctions.

Manquent notamment:

> > * messagerie
> > Peut-être qu'une passerelle vers le mail avec Headers corrects pour
> > trier, serait une solution (à chaque rédacteur de choisir s'il veut
> > recevoir par mail) ?

Pour le header de mail qui te permette de reconstituer un thread de
mails, est-ce que tu as des infos précises sur la façon dont il faut
coder ça? (Est-ce qu'il existe une syntaxe universelle décrite
kekpart?)

C'est très simple. Exemple dans ton message :

Message-Id: <a05100301b7ad98372e49@[193.252.56.210]> <- c'est toi

In-Reply-To: <3B86E451.CCB1D51@free.fr> <- réponse au
                                                             message d'Antoine

References: <20010824235259.A16898@orwell.bok.net> <- tout le thread
            <3B86E451.CCB1D51@free.fr> <- ..............

Pour créer un Message-Id: tu mets '"un truc unique"@machine'. Dans notre cas
le 'truc unique' peut être composé à partir du id_message et d'une constante
de la base (le nom du site par exemple), le tout transcodé comme on veut du
moment qu'il n'y ait que des chiffres et des lettres de A à Z. Et pour
composer les 'In-Reply-To:' et 'References:' il suffit de recalculer les
"trucs uniques" respectivement du message auquel on répond et des messages
du thread (le 'References:' est un peu plus optionnel).

<http://www.faqs.org/rfcs/rfc822.html>

Hello,

- Quand tu es destinataire d'un message, tu peux d'un clic te
supprimer de la "conversation" (tu n'es plus dans les destinataires,
c'est tout).

- Quand tu es l'expéditeur (et que le message est déjà envoyé), tu ne
peux plus d'exclure du message tant qu'il y a encore des
destinataires (quand tous les destinataires se sont exclus, là tu
peux le sucrer).

Oui mais l'idée c'est de pouvoir gérer correctement la liste des
messages quand il commence à y en avoir plusieurs dizaines. i.e.
pouvoir réellement ne plus voir les messages qui ne nous intéressent
plus.

- L'utilisation des liens à côté des noms rend l'interface
ultra-simplissime de chez simplissime. Tu vois un nom et tu cliques,
et t'as plus qu'à rédiger ton message. A l'inverse, si tu ouvres un
page sans destinataire, il faut traiter ça comme de véritables mails,
bien penser à ajouter le destinataire,

On peut donner le choix entre les deux possibilités, non ? Soit
cliquer sur le machin vert n'importe où, soit composer le truc
directement sur la page de messagerie. Ce que je veux dire, c'est
qu'il est plus logique et immédiat de pouvoir composer depuis la
messagerie que depuis la liste "rédacteurs" (qui est de plus pas
instantanée s'il y a beaucoup de rédacteurs).

Donc: je
ne l'utilise vraiment ni comme le mail, ni comme un chat.

Tu pourrais parfaitement utiliser le mail de cette façon.
Que tu prennes des habitudes différentes avec les deux outils
est une chose, cependant l'outil lui-même est bien redondant
avec le mail : rien ne t'interdit d'avoir une conversation
fournie et réactive par mail.

Bon, la
messagerie n'est pas complète, mais c'est tout de même ce qu'il faut
aussi prévoir: possibilité d'organiser des discussions entre admins,
des forums de gestion éditoriale du site, dialogues entre tous les
rédacteurs...

Ouhla, heu, t'as l'intention d'ajouter tout ça ?

(Je suppose qu'il est illusoire d'espérer crypter les messages dans
la base de données?)

Oui ;))

- pendant un délais que _nous_ fixons arbitrairement (par exemple 10
minutes - grosso modo le temps qu'on passe habituellement sur le
formulaire de l'article sans le valider), les autres utilisateurs qui
arriveraient sur la page de cet article seraient prévenus que c'est
en travaux (par exemple, le logo "modifier cet article" serait
accompagné d'un petit cadenas).

Mmmmh. Je ne suis pas sûr qu'un délai arbitraire puisse être très
pertinent, et ça peut être perturbant de façon inutile. D'autre part,
quelqu'un qui travaille hors ligne aura envie de verrouiller l'article
bien avant de cliquer sur "modifier" pour répercuter les ajouts qu'il
aura faits dans son éditeur de texte.

- j'ai pas testé, mais d'après ce que le code de inc-calcul, il me
semble qu'on ne peut pas faire de sélection du genre
{id_article<>23}. Non?

Non, faudra que j'ajoute.

Personnellement, je crois que le site multilingue, si on veut faire
bien, est indissociable de la localisation de SPIP. En effet, ça ne
concerne pas que l'affichage d'un petit drapeau (je plaisante), d'un
charset... Ca implique rapidement la traduction des dates, la
modification de la typo... et du coup ça revient à fabriquer des
"localisations" pour chaque langue (des localisations très réduites,
mais où l'on commence déjà à traduire le nom des mois et des jours de
la semaine...).

Oui, enfin c'est deux choses différentes : internationalisation
d'un site et internationalisation de SPIP lui-même. Le coup des
dates, c'est assez accessoire, en tout cas de façon exhaustive :
on peut faire anglais et français, et rester en chiffres (20-12-1998)
pour les autres. Heu, quant à la typo, oui, faut juste espérer que
ça aille plus vite à fignoler que la typo française :wink:

Ce que j'appelle "Headers corrects" c'est quelque chose qui 1) permet de
trier tout ce qui provient d'un site (n'importe quel entete de type X-SPIP:
votre spip, discussion numero tant, etc.) et 2) comporte des champs
Message-Id: et In-Reply-To: cohérents, qui permettent à mon système de mail
de m'afficher l'arborescence de la discussion.

Franchement, pour moi, le seul intérêt de la messagerie interne
de SPIP peut justement être de communiquer hors mail (pour diverses
raisons : meilleur cloisonnement, messages plus éphémères...). Si
c'est pour fournir une passerelle et transformer SPIP en client mail
(encore des tas de lignes de code en plus ;-)), bofffff.....
Donc forwarder des notifications, pourquoi pas, mais commencer
à se faire chier à créer les headers de façon à ce que l'arborescence
soit gérée convenablement ! (de plus, QUI utilise un client mail
en mode arborescence ? jamais vu personne, personnellement....)
D'autre part si la messagerie ne te plaît pas tu peux la désactiver
pour toi-même, donc dans ce cas ça force les autres à te contacter
autrement.

Sur miel, qui est une machine rapide, une passe sur 1130 rubriques prend
0.60s. S'il y a trois passes, cela peut mener à une grosse seconde. Et quand
un robot-fou passe sur le site, mieux vaut ne pas perdre trop de secondes :wink:
Expérience faite, avec un index posé sur le champ statut cela ne va pas plus
vite : puisque presque tous les articles sont de statut 'publie', le calcul
le plus important est probablement DISTINCT. (Pour ce que j'en comprends.)

Bon, si on veut optimiser ça radicalement, la meilleure chose à faire
est peut-être d'ajouter une colonne dans spip_rubriques pour stocker
qu'une rubrique est publique ou non. Ou optimiser le calcul, mais je
ne vois pas trop comment....

Cependant le problème de cacher ce calcul est que ça interfère avec les
articles post-datés (chiant hein ;-)). On dira qu'on ignore cette légère
incohérence potentielle ?

> Sinon il y a une demande qui revient très très souvent : gestion
> d'un site multilingue. Sans aller jusqu'à pouvoir avoir plusieurs
> versions d'un même article, on pourrait régler la langue des articles

Je préférerais avoir un champ "technique" qui pourrait servir à plein de
choses, dont la langue.

oh non oh non.... la langue, c'est une fonctionnalité par défaut, pas
une bidouille hardcodée par le webmaster.....

> - variable lang dans l'URL d'appel ($HTTP_GET_VARS['lang'])
> - si pas, variable lang en cookie ($HTTP_COOKIE_VARS['lang'])
> - si pas, langues acceptées par le navigateur ($HTTP_ACCEPT_LANGUAGE)

Je déteste ces deux dernières propositions : quasi personne ne règle son
navigateur, et souvent il est mal réglé :wink:

Heu... Un navigateur est réglé pour la langue dans laquelle il a été
choisi (français pour un navigateur français, etc.). De plus c'est
une proposition par défaut, prise en compte sur de nombreux sites
(cf. debian), et que le webmestre peut remplacer par une variable
d'URL ou un cookie s'il a envie de proposer un choix explicite.
Mieux vaut proposer ça que de ne rien proposer, non ?

a+

Antoine.

Hello,

filtre selon la langue, calculée de façon un peu particulière en
examinant dans l'ordre :

- variable lang dans l'URL d'appel ($HTTP_GET_VARS['lang'])
- si pas, variable lang en cookie ($HTTP_COOKIE_VARS['lang'])
- si pas, langues acceptées par le navigateur ($HTTP_ACCEPT_LANGUAGE)

Tout le code PHP correspondant exactement à cette séquence se trouve
déjà dans phpLang (http://www.phpheaven.net/projects/phpLang/) donc
n'hésitez pas à vous servir ... :wink:

-Nicolas

@ Antoine Pitrou (pitrou@free.fr) :

> - j'ai pas testé, mais d'après ce que le code de inc-calcul, il me
> semble qu'on ne peut pas faire de sélection du genre
> {id_article<>23}. Non?

Non, faudra que j'ajoute.

Il vaudrait mieux ajouter un opérateur de négation générique (NOT ou !), de
manière à pouvoir faire "!=" : différent; "!==" : ne matche pas la regexp,
etc.

Donc forwarder des notifications, pourquoi pas, mais commencer
à se faire chier à créer les headers de façon à ce que l'arborescence
soit gérée convenablement ! (de plus, QUI utilise un client mail
en mode arborescence ? jamais vu personne, personnellement....)

Les utilisateurs de 'mutt' au moins. M'enfin, une autre solution est en
effet d'envoyer un mail chaque (jour, semaine) disant "eh! vous avez des
nouveaux messages dans le site machin".

D'autre part si la messagerie ne te plaît pas tu peux la désactiver
pour toi-même, donc dans ce cas ça force les autres à te contacter
autrement.

J'avais cru comprendre qu'on ne pouvait que désactiver la fonction qui nous
fait apparaître quand on se connecte sur ecrire/ ? Mais cette réponse
renvoit finalement à la question de l'utilité même de cette messagerie. Une
discussion à laquelle je n'ai rien à apporter de plus. :wink:

Bon, si on veut optimiser ça radicalement, la meilleure chose à faire
est peut-être d'ajouter une colonne dans spip_rubriques pour stocker
qu'une rubrique est publique ou non. Ou optimiser le calcul, mais je
ne vois pas trop comment....

Cependant le problème de cacher ce calcul est que ça interfère avec les
articles post-datés (chiant hein ;-)). On dira qu'on ignore cette légère
incohérence potentielle ?

Non, bonne idée ce cache. Et si l'on décide qu'il dure (une heure, 12
heures) maximum, pas de problème avec les post-datés ! J'ai aussi un peu
réfléchi à l'idée de cacher les propre(texte) et #NOTES, et ça paraît un peu
difficilement faisable, vu le calcul actuel de #NOTES (qui prend en compte
tout ce qui passe pas propre(), par exemple le chapo ou les notes
elles-mêmes). A moins qu'on s'autorise à modifier le calcul de #NOTES, qu'on
le calcule en fait systématiquement à chaque modif dans la base, à partir
des champs chapo, texte (et notes) ; du coup on peut installer dans la base
spip_articles des champs cache_date, cache_chapo, cache_texte et
cache_notes. De manière optionnelle, à l'instar du moteur de recherches ?

Heu... Un navigateur est réglé pour la langue dans laquelle il a été
choisi (français pour un navigateur français, etc.). De plus c'est
une proposition par défaut, prise en compte sur de nombreux sites
(cf. debian), et que le webmestre peut remplacer par une variable
d'URL ou un cookie s'il a envie de proposer un choix explicite.
Mieux vaut proposer ça que de ne rien proposer, non ?

Personnellement, jamais vu personne qui utilisait ces choses-là :wink:

-- Fil

Heu... Un navigateur est réglé pour la langue dans laquelle il a
été choisi (français pour un navigateur français, etc.). De plus
c'est une proposition par défaut, prise en compte sur de nombreux
sites (cf. debian), et que le webmestre peut remplacer par une
variable d'URL ou un cookie s'il a envie de proposer un choix
explicite.

Personnellement, jamais vu personne qui utilisait ces choses-là :wink:

Je l'utilise. Mes browsers sont configurés avec l'anglais comme langue
principale et le français comme seconde langue. La plupart des sites
multilingues sont anglophones, et les versions traduites qu'ils
proposent sont souvent déplorables, donc je préfère la version
d'origine. Par contre, sur mon site bilingue phpHeaven, le consulte
plutôt la partie francophone, grace à un cookie placé par phpLang.

-Nicolas