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 »

Kaze a écrit :Là je crois qu'on va atteindre les limites de ce qu'on peut éditer avec Nvu.
Effectivement, d'ailleurs mon code php m'oblige à utiliser scite, filezilla et crimson editor (qui reste mon editeur préféré), et le gestionnaire de site de nvu+handcoder.
Kaze a écrit :...des moteurs de templates tels que Smarty ou FastTemplates. ...mon squelette PHP reste un document conforme XML.
Là j'avoue mon ignorance totale, j'ai jamais travailé avec un squelette. Le xml c'est encore du chinois pour moi. Je me debrouille avec le html et le php. En ce moment je me forme au css (strict), ca occuppe deja 150% de mes capacités neuronales.
Kaze a écrit :Là par contre, ce n'est pas conforme XML.
Tu peux éventuellement utiliser une forme : <body onLoad="<?php if ($condition) print 'vazy()'; ?>">
Ok, je vais séparer le html et le php. Include c'est conforme ? Ok, je ne massacrerai plus le body, il existe d'autres solutions. Je fais en fonction de mes compétances et de mes capacités limités pour faire du code le plus propre possible. (on a à coup sur pas la meme conception d'un code propre).

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é »

Crimson Editor, jamais entendu parler, mais ça a l'air pas mal... ça me rappelle ConTEXT, que j'ai beaucoup utilisé sous Windows.
Do-IT a écrit :on a à coup sur pas la meme conception d'un code propre
Vas-y, dis que le code de HandCoder est pourri ! :evil: :evil:

Je fais essentiellement du développement d'applications (C/C++/C# et autres outils plus spécifiques), où la règle d'or consiste à séparer la logique, l'interface et les données. Pour mes confrères et moi-même, le gros reproche que l'on fait à PHP est justement de mélanger la logique et l'interface (contrairement à Java ou Python par exemple). Pour les webmestres au contraire, ça paraît logique d'utiliser PHP pour compléter un document HTML.

Pour le développement de HandCoder, je ne prends pas mes propres templates en exemple (je peux quasiment tous les ouvrir avec Nvu), mais plutôt ceux de DotClear ou Mambo/Joomla : ce sont deux solutions éprouvées, fiables et performantes, qui mélangent intelligemment HTML et PHP dans leurs templates, mais dont les templates ne sont pas éditables par Nvu :
  • parce que Nvu n'accepte rien avant le DOCTYPE (ni après la fin du document HTML) ;
  • parce que Nvu reformatte le contenu de certaines balises comme <title> et <pre> (notamment).
Ce sont essentiellement ces deux points que HandCoder essayer de corriger (en incluant, au passage, la possibilité d'éditer des documents ASP/JSP qui utilisent les balises courtes <% ... %>). Et sur ces deux points, il me reste encore des bugs (cf. les "?" et "%>" qui plantent le découpage du document)...
Do-IT a écrit :Ok, je vais séparer le html et le php. Include c'est conforme ? Ok, je ne massacrerai plus le body, il existe d'autres solutions. Je fais en fonction de mes compétances et de mes capacités limités pour faire du code le plus propre possible.
Je crois qu'on peut résumer l'essentiel en disant qu'un script PHP devrait fournir :
  • soit un ou plusieurs éléments HTML complets (noeuds), c'est-à-dire avec une balise ouvrante et une balise fermante ;
  • soit le contenu d'un attribut.
En procédant ainsi, le fichier HTML/PHP conserve une structure type XML, et est éditable par une application WYSIWYG comme Nvu. Voilà ce que j'appellerais du code "propre" -- mais encore une fois, c'est l'appréciation personnelle de quelqu'un qui n'est même pas webmestre.

Le problème (et là aussi ton aide m'est précieuse), c'est qu'il y a un paquet de scripts PHP qui sont parfaitement fonctionnels, qui produisent même des pages xHTML strict, mais qui ne respectent pas ce principe de "document conforme XML", et sont donc lamentablement dégradés quand ils sont édités avec Nvu.
Evidemment, si on démarre un projet PHP de zéro, c'est simple de faire des documents HTML/PHP qui soient "conformes XML" ; mais pour les documents existants, Nvu est dangereux.
Le but de la fenêtre "Open with" est justement de déterminer si le script est éditable ou non avec Nvu. Là encore, il me reste du pain sur la planche... je ferai des tests à tête reposée ce soir.

PS: je viens de me relire et je me demande si je n'ai pas (encore) noyé le poisson en essayant de clarifier :oops:
Tant pis c'est posté. Ca finira peut-être dans la FAQ de 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. »
JujuLand
Lézard à collerette
Messages : 378
Inscription : 21 juil. 2004, 19:24

Message par JujuLand »

Crimson Editor, jamais entendu parler, mais ça a l'air pas mal...
Oui, il est pas mal, mais il a une limitation qui m'a parfois causé des problèmes avec des fichiers contenant du Javascript: il plie les lignes un peu courtes à mon gout, 'à la visualisation, c'est pas génant, mais aussi à la sauvegarde, ce qui est franchement casse-c....

Aussi, je lui préfère maintenant, et depuis pas mal de temps PsPad 4.3.2 (je n'aime pas la 4.3.3).

A+

PS Honte à moi, je n'ai pas encore trouvé le temps de tester Handcoder, et j'en suis reste à NsmContext :oops:
J'ai probablement du rater un épisode, car je n'ai pas trop compris l'intéret de HandCoder par rapport à NsmContext.
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

JujuLand a écrit :Aussi, je lui préfère maintenant, et depuis pas mal de temps PsPad 4.3.2 (je n'aime pas la 4.3.3).
Oui, on m'en parle beaucoup.
Mais étant assez satisfait de SciTE, je crois que si je devais changer d'éditeur, ce serait pour repasser à l'artillerie lourde : Vim ou Emacs. Je les ai pas mal utilisés à l'époque où j'étais sous Unix, ils sont vraiment impressionnants. Seul gros défaut : une ergonomie à ch*** !!! Il parait que quand on s'y est fait, on trouve ça génial...

SciTE a surtout (pour moi) l'avantage d'être léger, open-source et dispo sous Linux ; je peux donc le joindre à Nvu + HandCoder pour faire des versions de démo...
JujuLand a écrit :PS Honte à moi, je n'ai pas encore trouvé le temps de tester Handcoder, et j'en suis reste à NsmContext :oops:
J'ai probablement du rater un épisode, car je n'ai pas trop compris l'intéret de HandCoder par rapport à NsmContext.
Bah en fait l'intérêt, c'est surtout pour moi :P

NsmConText devenait très lourd à maintenir (va jeter un coup d'oeil au source...), et faisait trop de choses : je finissais par avoir du mal à expliquer à quoi ça servait !

J'ai donc scindé NsmConText en deux :
  • une extension "HandCoder" qui fonctionne sur le fichier courant (la page en cours d'édition) ;
  • une extension "NsmConText 0.3" qui fonctionne uniquement sur les fichiers externes (gestionnaires de sites, liens et images).
Tu es bien placé pour savoir que l'intégration de Launchy me causait pas mal de problèmes. En supprimant Launchy de HandCoder, j'ai pu améliorer facilement tout un tas de choses qui merdouillaient avec NsmConText .

La prochaine version de NsmConText sera débarassée des fonctionnalités de HandCoder ; elle sera compatible avec HandCoder, ce qui devrait te permettre de profiter des dernier progrès : meilleure utilisation de Tidy, support PHP, détection des modifications apportées par l'éditeur externe...

Je poursuivrai le développement de NsmConText, notamment pour inclure deux fonctionnalités qui me manquent par rapport à DW :
  • synchronisation FTP (je crois que je vais utiliser SiteCopy pour ça)
  • mise à jour des liens quand on déplace un fichier
Je n'ai pas encore compté, mais Do-IT va finir par trouver autant de bugs sur HandCoder que tu en as trouvés sur NsmConText ;)
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Je crois que je me suis fourvoyé... :oops: :oops: :oops:

Le déclenchement de la fenêtre "Open with" n'est pas fiable : la méthode actuelle ne peut déterminer si un fichier est éditable par Nvu. Deux raisons à cela :
  • le découpage des fichiers est basé sur des regexp ; il faudrait quelque chose de beaucoup plus évolué ;
  • les bouts de scripts PHP du type :

    Code : Tout sélectionner

    <body <?php if ($condition) print ' onLoad="vazy()"'; ?>>
    sont très fréquents, y compris sur des fichiers de template Dotclear que je trouve très "propres" ; or ça n'est pas éditable par Nvu, et Tidy n'y voit qu'un warning.
Une façon de remplacer cette fenêtre serait de marquer soi-même les fichiers (templates / fragments) que l'on veut éditer avec Nvu, par exemple avec un "Nvu" ou "http://nvu.com" en commentaire dans la première ligne : si HandCoder trouve la marque, il l'ouvre dans un onglet, sinon il l'envoie à l'éditeur texte.

HandCoder doit se limiter à :
  • éditer des fragments de code HTML, pour faciliter l'utilisation de include() (ça compenserait les carences de Nvu en matière de modèles et de cadres) ;
  • pouvoir ajouter un script avant le DOCTYPE (session_start(), etc.) ;
  • créer des pages ASP/JSP, en transformant les <?php...?> en <%...%> à la sauvegarde.
Dans tous les cas, HandCoder ne sera réellement utile que pour des projets PHP créés avec (ou pour) Nvu ; sur des projets existants, c'est dangereux.
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 sans ses cookies

Message par Do-IT sans ses cookies »

Des options à cocher dans hancoder ? :
  • ouvrir directement avec nvu les fichiers html 'purs' (sans code php asp, etc...)
  • ouvrir directement dans l'editeur si le code est 'pourri' (pas de doctype, pas de html, body bizarre, etc...)
  • toujours afficher la fenetre 'open with'. (Luxe : dans la fenetre 'open with', une case a cocher : se souvenir du choix pour ce fichier.)
j'aime pas trop l'idée de mettre une balise 'nvu' dans les fichiers.

Rudy
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Merci pour tes suggestions, à terme il faudra effectivement faire quelque chose dans cette idée. Peut-être des préférences dans le style :
  • trois cases à cocher :
    • éditer les fragments de code HTML avec Nvu
    • éditer les fragments de code ASP/JSP/PHP avec Nvu
    • editer les squelettes de page ASP/JSP/PHP avec Nvu
  • deux zones de texte :
    • extensions de fichiers à toujours ouvrir avec Nvu
    • extensions de fichiers à toujours ouvrir avec l'éditeur texte
Do-IT a écrit :Luxe : dans la fenetre 'open with', une case a cocher : se souvenir du choix pour ce fichier.
Très bonne suggestion. Dans tous les cas, je crois qu'il n'y a que l'utilisateur qui puisse décider si le fichier est éditable avec Nvu ou pas.
Ca pourrait être fait en insérant un "editable with Nvu" dans la première ligne :P
Ca pourrait aussi être fait en stockant la liste des fichiers éditables par Nvu dans les préférences de l'utilisateur... mais c'est plus lourd.
Do-IT a écrit :j'aime pas trop l'idée de mettre une balise 'nvu' dans les fichiers.
Moi non plus :(
C'est un aveu d'échec ; ça ne peut être qu'une solution temporaire, en attendant de trouver mieux.
Mais ça me semble plus fiable, et après tout Nvu ajoute un "generated with CaScadeS" dans la première ligne des feuilles CSS externes, qui est visible sur les pages que l'on publie (contrairement à un "Nvu" dans un commentaire PHP qui n'est visible que par le webmestre)
L'autre gros avantage de cette méthode concerne les performances : plutôt que de vérifier l'intégralité du document avant de l'ouvrir avec Nvu ou l'éditeur texte, il n'y a qu'à lire la première ligne (ou les 256 premiers octets) et faire un test ultra-simple.

Sinon, il y a peut-être une alternative pour détecter proprement les squelettes et fragments, en se fiant au DOCTYPE :
  • page HTML <=> le fichier commence par <!DOCTYPE ou <html ;
  • squelette ASP/JSP/PHP <=> le fichier commence par une pseudo-instruction (<?, <% ou <#) et contient un DOCTYPE
  • fragment ASP/JSP/PHP <=> le fichier commence par une pseudo-instruction et ne contient aucun DOCTYPE, <html>, <head> ou <body>
  • fragment HTML <=> le fichier commence par une balise html et ne contient aucune pseudo-instruction, ni DOCTYPE, <html>, <head> ou <body>
Qu'en penses-tu ?

L'avantage, c'est que le DOCTYPE fait un bon séparateur entre le document HTML éditable par Nvu et l'en-tête PHP (fichier temporaire ~*.part).
Evidemment, ça va boguer si le DOCTYPE est généré par PHP, ou si le fichier contient du PHP après le document <html />.
Ca ne résoud pas non plus le problème de ce genre de balise :

Code : Tout sélectionner

<div <?php if ($test) echo"onLoad='show()'"; ?> >
Mais bon, on s'en tient aux pages générées par/pour Nvu ! ;)

PS: ça serait pas mal de tester si le document contient la balise <frameset>, pour envoyer la page à l'éditeur texte...
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
lerouxjul
Salamandre
Messages : 35
Inscription : 16 nov. 2005, 11:24

Message par lerouxjul »

Suite a mon sujet:
http://www.geckozone.org/forum/viewtopi ... 680#210680

Je viens ici car Handcoder pourrait etre la solution a mon probléme qui est l'édition de fichier php avec nvu.

J'ai donc installée l'exention handcoder pour nvu Français.
Mon but est de pouvoir editer et enregistrer le fichier php ci dessous sans qu'il soit ruiné (modifié par NVu oui tan qu'il fonctionne encore aprés)

Voici le fichier que je souhaite editer:
http://lerouxjul.free.fr/test/index.zip

(le fichier php est zippé)

Pour l'instant, quand j'installe l'extension Handcoder et que j'ouvre mon fichier php, il est totalement détruit, encore pire que sans l'extention: il n'y a plus rien

Voici le seul code qui reste:

Code : Tout sélectionner

<!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">
<head><meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type" /> <title></title></head>
<body><br /></body></html>
J'ai pas du fairece qu'il fallait ou mal installé ou configuré tidy, je pense...
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Tidy n'a rien à voir là-dedans... le problème c'est la structure bizarre de ton fichier index.php :

Code : Tout sélectionner

<?php [...] ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head> [...] </head>
    <body>
        <html><head> [...] </head>
        <body> [...]           
    </body>
</html>
Ni Nvu, ni HandCoder ne pourront jamais éditer un tel fichier (tu l'as fait avec DW ? Ou est-ce un template Mambo / Joomla ???).

Ré-essaye après avoir corrigé ton fichier "index.php" (notamment les lignes 45 à 55) : HandCoder devrait le reconnaitre comme un squelette PHP, et tu pourras éditer le contenu HTML avec Nvu.

PS: assure-toi que c'est bien ton fichier "index.php" d'origine que tu as posté, non le fichier modifié par Tidy, HandCoder ou Nvu.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
lerouxjul
Salamandre
Messages : 35
Inscription : 16 nov. 2005, 11:24

Message par lerouxjul »

Pourtant, le fichier s'ouvre bien mieux dans NVU sans Handcoder que dans NVU avec...
et il s'ouvre parfaitement avec dreamweaver...
et pourtant, il n'a pas été fait avec.

Ce fichier est un fichier php d'un template Joomla!, créé avec DevPHP.

PS: J'ai installé Handcoder mais je n'ai pas paramétré ses option & même pas rentré le chemin de tidy, il le faut?
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Detection :
1) page HTML <=> le fichier commence par <!DOCTYPE ou <html et ne contient aucun code ASP/JSP/PHP ni de balise (<?, <% ou <#);
2) squelette ASP/JSP/PHP <=> le fichier commence par une pseudo-instruction (<?, <% ou <#) et contient un <!DOCTYPE ou <html et contient du code ASP/JSP/PHP ou des balises (<?, <% ou <#);
3) fragment ASP/JSP/PHP <=> le fichier commence par une pseudo-instruction et ne contient aucun DOCTYPE, <html>, <head> ou <body> et contient du code ASP/JSP/PHP ou des balises (<?, <% ou <#);
4) fragment HTML <=> le fichier commence par une balise html et ne contient aucune pseudo-instruction, ni DOCTYPE, <html>, <head> ou <body>
5) le fichier contient une balise html qui contient du code ASP/JSP/PHP ou des balises (<?, <% ou <#) ex: <div <?php if ($test) echo"onLoad='show()'"; ?> >

Action :
1) ouvrir directement avec nvu
2) 'open with'
3) ouvrir directement avec l'editeur
4) ouvrir directement avec l'editeur ?
5) ouvrir directement avec l'editeur ! (avec un message d'erreur : fichier non editable dans nvu, et une case a cocher 'ne plus afficher')

Fenetre 'open with' (deux cases à cocher) :
- se souvenir du choix pour ce fichier
- se souvenir du choix pour tous les fichiers ayant la meme extension

Dans les options :
- deux zones de texte :
--- extensions de fichiers à toujours ouvrir avec Nvu
--- extensions de fichiers à toujours ouvrir avec l'éditeur
- une liste des fichiers dont un choix a été mémorisé (pour suppression du choix)
--- Luxe : ajouter un fichier (et le choix qui va avec)
- une case pour ne plus afficher le message d'erreur du cas 5
Kaze a écrit :en stockant la liste des fichiers éditables par Nvu dans les préférences de l'utilisateur
Je prefere. Je n'aime pas les insertions de balises, que se soit cascade ou tidy ou autres.

Les choix dans les options etant prioritaires aux actions 1) 2) 3) 4)

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é »

lerouxjul a écrit :Ce fichier est un fichier php d'un template Joomla!, créé avec DevPHP.
Je viens de télécharger la version 1.0.3 complète de Joomla (j'ai utilisé Mambo 4.5.x) ; elle est livrée avec deux templates :
  • un template "rhuk_solarflare_ii" qui est correct :

    Code : Tout sélectionner

    <?php [...] ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head> [...] </head>
        <body> [...] </body>
    </html>
  • un template "madeyourweb" qui est presque correct :

    Code : Tout sélectionner

    <?php [...] ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <?php $iso = split( '=', _ISO );
    echo '<?xml version="1.0" encoding="'. $iso[1] .'"?' .'>';
    ?>
        <head> [...] </head>
        <body> [...] </body>
    </html>
Ces templates sont éditables par Nvu+HandCoder ; avec Nvu sans HandCoder, tout le code qui précède le DOCTYPE est décalé par Nvu dans le <head>. Le deuxième template peut poser un petit problème à cause du PHP entre le DOCTYPE et <html> ; mais ce code PHP ne sert à rien, tu peux aussi bien le supprimer (ou le déplacer avant le DOCTYPE).

Quoiqu'il en soit, ces deux templates ont bel et bien une structure HTML correcte, contrairement au fichier index.php que tu as posté. Soit tu as téléchargé un template pourri, sois tu l'as pourri toi-même avec DevPHP ;)

Comprends que Nvu ne pourra jamais éditer un fichier qui contient plusieurs balises <html>, <head> et <body> !!!
lerouxjul a écrit :J'ai installé Handcoder mais je n'ai pas paramétré ses option & même pas rentré le chemin de tidy, il le faut?
Non, ce n'est pas nécessaire. Si Tidy n'est pas là, il n'est pas lancé, c'est tout.
Ca n'a pas d'incidence sur le support PHP de 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. »
lerouxjul
Salamandre
Messages : 35
Inscription : 16 nov. 2005, 11:24

Message par lerouxjul »

OK. Merci pour ton explication.
En effet, sa marche mieux avec les 2 templates de base de joomla.
Pourrait tu me dire si pour éditer du code php comme je le fais j'ai plus interet a instaler Handcoder ou nsmcontext?

PS:
Juste une question HS:
Quel est selon toi le meilleur editeur php car j'ai envie de changer de devphp2 que je trouve un peu lourd...
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

lerouxjul a écrit :Ce fichier est un fichier php d'un template Joomla!, créé avec DevPHP.
Mais tu l'as quand meme modifié avec DW. Probabkement que tu as inseré les lignes 46 à 55, soit tu as supprimé du php avec des conditions.

Kaze tu t'inquietes pour rien c'est pas possible qu'un cms puisse comprendre ce squelette.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
lerouxjul
Salamandre
Messages : 35
Inscription : 16 nov. 2005, 11:24

Message par lerouxjul »

Je n'ai pas touché au fichier...ni avec dreamweaver ni avec quoi que ce soit d'autre...
etle CMS comprends trés bien ce code puisque le template (certe complexe) fonctionne a la perfection sous la derniere version de joomla.

Ce template est téléchargeable ici:
http://www.joomlaos.de/Downloads/Joomla ... lazma.html

..et vous verrez que le fichier index.php qu'il contient n'a été en aucun cas modifié par moi même et surtout qu'il marche....
...et pourtant, il ne s'ouvre pas avec NVU+Handcoder.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité