HandCoder : extension Nvu pour Tidy et PHP

Le premier forum francophone sur l'éditeur de pages Web multiplateforme (Linux, Mac OS X, Windows) qui monte… KompoZer, héritier de Nvu, permet de créer vos pages Web graphiquement (wysiwyg) sans aucune connaissance du langage HTML.

Modérateur : chinon37

Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Non, ca a pas l'air de le géner plus que ca.
Pour tidy justement ce serait pas mieux de mettre l'option --drop-empty-paras no , par defaut ? C'est pas que j'en ai besoin, mais ca me parait plus logique.

Rudy
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

2 bugs:

- Pour avoir la fenêtre 'Accepter / Annuler les modifications', après une modification dans l'editeur externe, il faut que le document modifié soit dans l'onglet actif. Sinon il se passe rien dans nvu, si on est passé a un autre onglet.

- Apres avoir eu la fenetre 'Accepter / Annuler les modifications', tu attends un certain temps, puis tu cliques sur accepter, ca provoque un crash de nvu. Evidement ca me l'a fait 3 fois et depuis plus rien ! Grrr ! Ah si ca me le refait, bon on va dire que c'est aleatoire.

Rudy
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Do-IT a écrit :Pour avoir la fenêtre 'Accepter / Annuler les modifications', après une modification dans l'editeur externe, il faut que le document modifié soit dans l'onglet actif. Sinon il se passe rien dans nvu, si on est passé a un autre onglet.
Oui, et c'est le plus gros reproche que je fasse à HandCoder actuellement.

Le corollaire, c'est qu'on ne peut pas garder SciTE et Nvu ouverts sur le même document. SciTE gère très bien les modifications apportées par Nvu sur le fichier (on peut même le configurer pour l'auto-reload), l'inverse est encore loin d'être vrai.

J'y travaille activement. Pour mon usage personnel, je voudrais pouvoir garder une fenêtre de Nvu + une fenêtre de SciTE, chacune ouverte sur plusieurs fichiers (onglets), et modifier mes pages web indifféremment depuis SciTE ou Nvu. Je dois être tordu...
Do-IT a écrit :Apres avoir eu la fenetre 'Accepter / Annuler les modifications', tu attends un certain temps, puis tu cliques sur accepter, ca provoque un crash de nvu. Evidement ca me l'a fait 3 fois et depuis plus rien ! Grrr ! Ah si ca me le refait, bon on va dire que c'est aleatoire.
Il y a quelques situations où on arrive très bien à faire crasher Nvu, parfois avec un taux de réussite de 100%. J'en avais rapporté quelques-unes, mais n'ayant jamais eu ni de réponse, ni de "merci", ni de correction (évidemment), je me suis lassé de les recenser.

Parmi ces situations "à risque", j'en ai repéré une autre (difficile à reproduire), avec NsmConText : dans la fenêtre d'édition, clic droit sur une image ou un lien, aller dans le menu "Ouvrir l'image/le lien avec...", attendre, et cliquer dans la fenêtre => crash.

La situation que tu me décris ressemble fortement à celle-ci.

Malheureusement je n'ai pas moyen d'intervenir directement sur ce bug, que j'attribue à la gestion événementielle de Nvu. Je trouverai peut-être une façon de contourner ce bug.
Do-IT a écrit :Pour tidy justement ce serait pas mieux de mettre l'option --drop-empty-paras no , par defaut ? C'est pas que j'en ai besoin, mais ca me parait plus logique.
Peut-être, mais pas sûr. En utilisant un éditeur WYSIWYG, l'utilisateur lambda a tôt fait d'avoir tout un tas de balises <p /> et <span /> vides, juste parce qu'il a sélectionné par erreur un style dans le menu déroulant.

Les options de Tidy sont très nombreuses, je voudrais ne garder "par défaut" que celles qui sont vraiment importantes, afin d'éviter de noyer les utilisateurs dans une soupe d'arguments...
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Grrr, chaque fois que je te trouve un bug tu le connais déjà !
J'ai effectivement perdu 400 lignes de code php. (Vive les sauvegardes)
En voilà un beau. J'ai essayé de simplifier au maximum un exemple. J'utilise beaucoup die(); dans mes tests de securité.
Apparement la multiplication des </body></html> posent problemes.

Code : Tout sélectionner

<?php 
$grosbug=true;
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
<head><meta content="text/html; charset=ISO-8859-15" http-equiv="content-type" />
  <title>test</title>
</head>
<body>
<p>1</p>
<?php 
if (!$grosbug) { 
	print "<p>2</p></body></html>";
	die();
	}
if (!$grosbug) { 
	print "<p>3</p></body></html>";
	die();
	}
?>
<p>4</p>
</body>
</html>
Apres un open with nvu :
- il y a un retour a la ligne apres le 1er </html>
- le fichier est tronqué apres le 2eme </body>

Sans le php avant le doctype, aucun soucis. (Dans cet exemple le code php avant le doctype c'est pour forcer l'ouverture via l'extension)

Rudy
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Kaze a écrit :J'y travaille activement. Pour mon usage personnel, je voudrais pouvoir garder une fenêtre de Nvu + une fenêtre de SciTE, chacune ouverte sur plusieurs fichiers (onglets), et modifier mes pages web indifféremment depuis SciTE ou Nvu. Je dois être tordu...
C'est les mauvaises habitudes qu'on prend avec DW. Je le fais aussi (travailler avec plusieurs documents a la fois, simultanement sur le code et le wysiwyg).

Tu n'arrives pas a detecter la modification d'un fichier qui est dans un onglet inactif ou c'est l'actualisation qui pose probleme ?

2 idées ? :
- Forcer la fermeture du fichier avant d'ouvrir l'editeur externe ? Puis on le reouvre manuellement ?
ou
- lorsque nvu devient actif (en 1er plan), fermer et réouvrir les fichiers plus recents ? Ou les fichiers ouverts via la fonction Editeur.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Do-IT a écrit :Grrr, chaque fois que je te trouve un bug tu le connais déjà !
N'exagérons rien ! Mais c'est vrai que je suis fautif dans la mesure où je ne poste pas tous les bugs que je trouve...
Do-IT a écrit :J'ai effectivement perdu 400 lignes de code php. (Vive les sauvegardes)
En voilà un beau. J'ai essayé de simplifier au maximum un exemple. J'utilise beaucoup die(); dans mes tests de securité.
Apparement la multiplication des </body></html> posent problemes
Très joli bug, effectivement.
Ca remet en question une bonne partie du fonctionnement de HandCoder sur les fichiers PHP.

Je vois bien d'où vient ce bug. HandCoder tronque le fichier courant après </html>, pour le cas où quelqu'un ferait une page du type :

Code : Tout sélectionner

<?php [code quelconque] ?>
<html>
    <head> ... </head>
    <body> ... </body>
</html>
<?php [quelque chose] ?>
mais ça doit être idiot, dans la mesure où il n'y a aucun intérêt à mettre du code PHP après la fin du document HTML (je me trompe ?)...
Ceci dit, le problème reste entier si une balise PHP contient une chaîne "<html>". Il faut que je regarde ça plus attentivement.
Do-IT a écrit :C'est les mauvaises habitudes qu'on prend avec DW. Je le fais aussi (travailler avec plusieurs documents a la fois, simultanement sur le code et le wysiwyg).
Oui, en effet. Pas seulement avec DW d'ailleurs : j'utilise beaucoup SciTE en parallèle avec Visual Studio.
Do-IT a écrit :Forcer la fermeture du fichier avant d'ouvrir l'editeur externe ? Puis on le reouvre manuellement ?
Efficace mais pas très pratique.
Surtout, on perdrait la possibilité d'annuler les modifications faites dans l'éditeur externe.
Do-IT a écrit :lorsque nvu devient actif (en 1er plan), fermer et réouvrir les fichiers plus recents ? Ou les fichiers ouverts via la fonction Editeur.
Je pense essayer de faire en sorte que HandCoder :
  • mémorise la date de modification de tous les fichiers ouverts par Nvu dans un tableau interne ;
  • actualise ce tableau à chaque fois qu'on enregistre une page sous Nvu ;
  • vérifie que la date de modification du fichier courant n'ait pas été modifiée lorsque Nvu redevient actif, ou lorsqu'on change d'onglet
Ca me paraît la solution la plus fiable.
La seule question que je me pose, c'est : "dois-je essayer de coder ça avant la première release ?"
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Kaze a écrit :mais ça doit être idiot, dans la mesure où il n'y a aucun intérêt à mettre du code PHP après la fin du document HTML
En fait, comme tu le sais (fait pas semblant), le php est executé sur le serveur donc meme s'il est apres le </html> il est quand meme executer avant !
Moi j'ai deux type de fichiers :
-ceux avec que du php
-ceux avec une structure html, et qui se termine effectivement par un </html>
Mais theoriquement (?) rien ne devrait empecher de mettre du php apres la fin d'un fichier html, meme si je ne le fait pas personnelement. J'ai déjà vu des structure html reparti sur plusieurs fichiers, avec du code php dans tous les sens. On trouve de tout sur internet. Humm !
Mais ce qu'on veut faire nous c'est du code html/php propre.
Kaze a écrit :"dois-je essayer de coder ça avant la première release ?"
Ca depend de la météo, et du couvre-feu, chez toi.
Sinon, en attendant forcer la fermeture du fichier ou limiter l'ouverture dans nvu d'un seul fichier à la fois. Humm !

Rudy
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

La beta du jour : HandCoder-20051111-fr.

Deux modifications principales :
  • le vilain bug qui supprime des lignes PHP semble résolu ;
  • la détection "fichier modifié" a été complètement refaite, elle permet maintenant de garder SciTE ouvert sur une page ouverte par Nvu ; j'ai décommenté une ligne dans les préférences de mon SciTE :

    Code : Tout sélectionner

    check.if.already.open=1
    ce qui me permet de visualiser le code de toutes mes pages web dans une seule fenêtre SciTE, que du bonheur !
Par contre, j'ai l'impression que la sauvegarde du document est devenu plus lente, voire que Nvu crashe plus souvent qu'avant... Je ne sais pas si ces deux points se sont dégradés, ou si c'est juste moi qui les remarque plus qu'avant. A tester plus précisément.

J'ai maintenant une version 0.3 de NsmConText qui est compatible avec la version courante de HandCoder, ainsi qu'une nouvelle page mozdev... reste (quand même !) à valider HandCoder.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

HandCoder-20051111-fr
A priori, plus moyen d'ouvrir un fichier avec nvu, ni php ni html
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

J'ai écrit récemment que je ne posterai plus d'extension après la poire...
Ben j'ai menti :oops:

La même extension avec la classe "phpIO" mise à jour, ça ira mieux : 20051111b-fr.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Pour les fichiers de tests c'est bon, mais mon gros fichier se fait toujours massacrer de la meme maniere. je voie pas trop d'ou ca peut venir. si je trouve pas je te filerai le code source.

mais vu l'heure tardive juste un petit pour la nuit:

Code : Tout sélectionner

<?php [code quelconque] ?>
<html>
    <head> ... </head>
    <body><table width=100%><tr><td>bla</td></tr></table></body>
</html>
open with nvu transforme le % en ?
Je sais il faut les "". Alors que sans php (et sans open with), nvu s'en sort mieux.
J'ai prevenu c'etait un petit pour la nuit.

Rudy
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Do-IT a écrit :Pour les fichiers de tests c'est bon, mais mon gros fichier se fait toujours massacrer de la meme maniere.
J'espère que ça n'est pas un cas trop tordu...
Do-IT a écrit :juste un petit pour la nuit [...]
Ah oui, effectivement ! :lol:
C'est le mode "compatibilité balises courtes" qui transforme tous les "%>" en "?>"... yakamettre les guillemets aux valeurs des attributs !
Faudra que j'affine ça, mais pas cette nuit ;)
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Kaze a écrit :J'espère que ça n'est pas un cas trop tordu...
J'ai simplifié au maximum

Code : Tout sélectionner

<?php [code quelconque] ?>
<html>
    <head> ... </head>
    <body><?php
//	print "</body></html>";
//	print "</body></html>";
//	print "?";
?>
</body>
</html> 
j'ai remplacer les if par des //
le "?" seul sans le print suffit a provoquer le bug
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Je l'invite pas, c'est du code que j'utilise !

Code : Tout sélectionner

<body <?php if ($condition) print ' onLoad="vazy()"'; ?>>
Ouvert directement par nvu donne

Code : Tout sélectionner

<body =""><?php if ($condition) print ' onLoad="vazy()"'; ?>>
Avec un open with nvu donne

Code : Tout sélectionner

<body =""><?php if ($condition) print ' onLoad="vazy()"'; ?>>
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Là je crois qu'on va atteindre les limites de ce qu'on peut éditer avec Nvu.
Do-IT a écrit :On trouve de tout sur internet. Humm !
Mais ce qu'on veut faire nous c'est du code html/php propre.
Il y aurait très long à discuter sur ce qu'on appelle du code HTML/PHP "propre".
Personellement, je considère "malpropre" de mélanger HTML et PHP dans un même fichier :?
Je recours donc à des moteurs de templates tels que Smarty ou FastTemplates. Mais il m'arrive quand même d'inclure une ligne de PHP de temps en temps, pour insérer une balise ou un attribut. Dans les deux cas, mon squelette PHP reste un document conforme XML.

Le but de HandCoder est de permettre l'édition de tout template PHP conforme XML...
Il est impossible d'utiliser Nvu sur des documents non-HTML et non-XML.
Do-IT a écrit :le "?" seul sans le print suffit a provoquer le bug
Effectivement.
C'est un gros bug qu'il faut que je corrige avant la release (le code étant "conforme XML").
Do-IT a écrit :Je l'[invente] pas, c'est du code que j'utilise !

Code : Tout sélectionner

<body <?php if ($condition) print ' onLoad="vazy()"'; ?>>
Ouvert directement par nvu donne

Code : Tout sélectionner

<body =""><?php if ($condition) print ' onLoad="vazy()"'; ?>>
Avec un open with nvu donne

Code : Tout sélectionner

<body =""><?php if ($condition) print ' onLoad="vazy()"'; ?>>
Là par contre, ce n'est pas conforme XML.
Tu peux éventuellement utiliser une forme :

Code : Tout sélectionner

<body onLoad="<?php if ($condition) print 'vazy()'; ?>">
L'alternative serait que j'utilise Tidy pour vérifier qu'un document est valide XML avant de l'éditer : s'il n'est pas conforme, on l'édite avec l'éditeur texte. Ca éviterait de corrompre des fichiers PHP fonctionnels.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Semrush [Bot] et 2 invités