[spip-dev] Métadonnées sous forme de fichier XML et chemin des squelettes dans méta

Salut à toutes et à tous,

Désolé, ce mel concerne une amélioration (?) pour les versions post 1.4.

- J'ai modifié inc_public.php3 pour qu'il lise le chemin des squelettes
avant de charger/regénérer les pages.
(il faut utiliser la méta "chemin_squelettes").

- J'ai réécrit inc_meta.php3 pour qu'il utilise uniquement un fichier XML.
Pour la lecture du fichier xml j'utilise expat (SAX : Simple Api for XML).

Le fichier XML est de la forme :

meta-dist.xml (1.79 KB)

inc-public.php3 (873 Bytes)

inc_meta.php3 (3.07 KB)

AARRRRG, ça ne marche pas avec les squelettes inclus.

Je tourne en rond dans inc-calcul-squel.php3 ...
Je commence à comprendre pourquoi le changement de squelettes à la volé
n'est pas implémenté :slight_smile:

En tout cas ce que j'ai remarqué, c'est que pour que ça fonctionne, il faut
un champ #CHEMIN_SQUELETTE qu'on puisse appeler depuis les squelettes.

ça permettra d'appeler le "bon" CSS ainsi que de faire des includes
correctes.

Je me reprend la tête demain sur le sujet, a moins que quelqu'un ait une
idée pour me sortir de là :slight_smile:

A+
Yves

- J'ai réécrit inc_meta.php3 pour qu'il utilise uniquement un fichier XML.
Pour la lecture du fichier xml j'utilise expat (SAX : Simple Api for XML).

Expat n'est pas dispo partout. Il faut le faire à la main en PHP.

L'AVANTAGE, c'est qu'on peut stocker dedans les paramètres de connexion à la
base MySQL.

Ayayay. Si après tu tapes http://machin.com/spip_meta.xml et que le serveur
ne bloque pas l'accès, c'est foutu.

L'avantage de stocker ça dans la base est que ça évite de disperser les
modes de configuration et de sauvegarde.

Expat n'est pas dispo partout. Il faut le faire à la main en PHP.

Il vaut mieux ne pas le faire alors ?
Car expat est écrit en C et il fait pas mal de boulot.

Ayayay. Si après tu tapes http://machin.com/spip_meta.xml et que le serveur
ne bloque pas l'accès, c'est foutu.

oui, mais meta.xml est dans le répertoire écrire qui est protégé, non ?

L'avantage de stocker ça dans la base est que ça évite de disperser les
modes de configuration et de sauvegarde.

Ok, mais actuellement il y a la table spip_meta et le fichier
inc_connect.php3

oui, mais meta.xml est dans le répertoire écrire qui est protégé, non ?

Non, le répertoire ecrire/ n'est pas protégé. (Sauf dans les anciennes
versions de spip, où on utilisait .htaccess) ; les scripts présents dans
ecrire/ vérifient eux-mêmes que le client est authentifié (pour ce faire ils
appellent inc_auth.php3).

-- Fil

A faire :
- virer la table spip_meta
- ajouter la sélection du squelette depuis l'interface d'admin

Pourquoi ne pas définir un fichier xml qui décrit le squelette ?
Il permettrai d'échanger/archiver facilement ceux-ci.

Voici les champs qu'il pourrai contenir :
nom,
description (+langue),
auteur(s),
langue supportées,
vignette,
version(s) de spip supportées

Est-ce que ça existe pour les nuke-like ?

Dans les nuke-like c'est un repertoires "Thèmes" qui contient un repertoire
avec toutes les infos du thème :
    - feuille CSS
    - images
    - fichier thème.php qui contient les définitions de fonctions graphiques
    - etc.
Ensuite le nuke va lister ce qu'il trouve dans le répertoire Thèmes et
propose le choix parmi cette liste. L'avantage c'est que ça permet d'en
avoir plein en même temps pour tester.

A+

David

Dans les nuke-like c'est un repertoires "Thèmes" qui contient un repertoire
avec toutes les infos du thème :
   - feuille CSS
   - images
   - fichier thème.php qui contient les définitions de fonctions

graphiques

   - etc.
Ensuite le nuke va lister ce qu'il trouve dans le répertoire Thèmes et
propose le choix parmi cette liste. L'avantage c'est que ça permet d'en
avoir plein en même temps pour tester.

Avec mes modifs, il est maintenant possible de faire ça.

Le fichier xml pour décrire un thème n'est pas nécessaire en soit, on peut
simplement mettre une image theme.png à la racine du squelette.

Mais ce que j'ai remarqué avec les squelettes spip, c'est qu'ils ne sont pas
forcément adaptés pour différentes versions de SPIP.
Surtout, ils sont TRES dépendants de la façon dont est géré le site sous
SPIP (utilisation ou non des chapeaux, utilisation du champ Post-scriptum de
façon détournée par exemple).

C'est pourquoi un fichier xml qui décrit au mieux un squelette me parait un
gros plus.

Yves

AARRRRG, ça ne marche pas avec les squelettes inclus.

En fait ça marche bien. 2 choses :
- dans inc-public.php, le "if" charge le squelette la première fois, et le
"else" charge tous les squelettes inclus (au fur et à mesure des appels)
Donc il faut "ajouter" le chemin au squelette dans les 2 cas

- la cause de mon mal de tête est que ce système marche bien uniquement avec
ma version XML des méta-données.

En tout cas ce que j'ai remarqué, c'est que pour que ça fonctionne, il faut
un champ #CHEMIN_SQUELETTE qu'on puisse appeler depuis les squelettes.
ça permettra d'appeler le "bon" CSS ainsi que de faire des includes
correctes.

J'ai fait les modifs dans "inc-calcul-squel.php3" :
- dans la fonction "parser", j'ai rajouté la définition de ce champ:

inc-public.php3 (838 Bytes)

squel.zip (4.55 KB)

inc-calcul-squel.zip (13.8 KB)

>ne bloque pas l'accès, c'est foutu.
oui, mais meta.xml est dans le répertoire écrire qui est protégé, non ?

Bah... admettons qu'il soit interdit aux non rédacteurs. Pour devenir
rédacteur, tu en convient, c'est simple. Un mail et c'est fait.

Si tu chope le fichier de conf. Tu as le compte root, le mot de passe
root (enfin.. root de la BDD de spip :wink:

Tu te logues, modifies les droits associés à ton copmpte, et tu est
admin du site.

Cool, non ?

Ok, mais actuellement il y a la table spip_meta et le fichier
inc_connect.php3

inc_connect n'est pas accessible directement... La base de données non
plus.

A+