Refactor du bootstrap avec des composants Symfony

TL;DR

Nous souhaitons nous rapprocher du comportement de symfony pour sa gestion des requêtes HTTP, des réponses retournées, des configurations de conteneur, de gestion d’événements (équivalent à nos pipelines), système de routage (partiellement).

Dans un premier temps, on ne demande pas une revue particulière sur le code, mais surtout de pouvoir s’assurer que l’ensemble fonctionne a peu près correctement.

Pour se faire :

git clone -b plugin_config git@git.spip.net:spip/spip refactor
cd refactor
composer update

Démarrer votre server web dessus, vérifier l’installation de SPIP.

Tout le détail de la démarche, de toutes les PRs et des vérifications à effectuer :

Merci à vous !

3 « J'aime »

Bonsoir,
Alors, déjà, un grand merci à vous pour ce chantier titanesque !

Je viens de cloner le dépôt, l’installation des dépendances se fait sans accroc, l’installation itou, et les quelques manipulations éditoriales de base que j’ai faites ne font remonter aucune erreur.

J’ai cependant noté que des boutons de soumission de formulaire de configuration manquaient : Configurer les URLs, quasiment tous les formulaire de Contenus du site, quelques manques aussi dans Fonctions avancées, dans Interactivité, et les deux configurations liées aux langues.

Quels autres aspects souhaiteriez-vous voir testés plus particulièrement ?

1 « J'aime »

Je ne reproduis pas ; j’ai bien tous les boutons « Enregistrer ». Y a t’il des erreurs en console javascript ?

Grumph… Nope, aucune erreur dans la console…
Et dans tmp/log/spip.log, je ne vois que passer des 581 │ 2026-05-01 21:41:20 192.168.97.5 (pid 521) :Pub:!INFO: Serializer:unserialize utilisation de unserialize() sur des données legacy, mettez à jour vos données.
Aucun autre type de message.

La bonne nouvelle si je puis dire c’est que cela ne semble pas lié à votre refactor, j’ai le même souci sur une install fraîche depuis master…

Et en désactivant mon AdBlocker, ça revient… Bon, vais essayer de trouver la règle problématique ! Désolé pour le bruit… --"

Mais du coup, je relance ma question sur les tests éventuellement plus poussés que vous pensez nécessaires ?

Merci encore à vous !

Et donc, pour documenter la chose : l’adblock utilisé est AdGuard Adblocker avec pas mal de listes activées dont la Dandelion Sprout’s Annoyances List qui contient notamment la règle *,~[barter.vg](http://barter.vg)#?#p:contains(/^\xA0$/):not(:contains(/\S/)):not(:has(img)) qui n’apprécie pas trop le <span class="image_loading">&nbsp;</span> dans le <p class="boutons">

1 « J'aime »

Coucou @bricebou

Merci pour tes premiers retours,

Pour info, on avance encore un peu, donc, une fois l’installation vérifiée, il faut penser à mettre à jour de temps en temps :

# cd refactor
git pull
composer update

Je ne sais pas trop ce que font les personnes qui testent les releases en dehors de la mise à jour elle-même, mais J’ai quelques idées qui me viennent en vrac :

L’ensemble fonctionne a peu près correctement

  • affichage de la page sommaire, plan, contact
  • logout, login
  • création de rubriques, d’articles, workflow de publication
  • édition d’articles, déplacement d’articles
  • cron (voir que la job queue s’exécute)

La page d’administration des plugins de SVP fonctionne

  • activation de dépôt, recherche de plugin, installation en fonction de la compat’
  • activation/désactivation/désinstallation
  • suppression de dépôt aussi, au cas où

mots-clés, médias, auteurs

  • créer du contenu de base (doc joints, group de mots, mots clé, auteurs)
  • associer, désassocier, supprimer
  • :warning: on a un bug connu sur mediabox, comme l’a expliqué @marcimat dans le ticket, donc, à voir

Pour l’instant, nous n’avons pas vraiment touché aux stats, aux dumps, aux urls, aux sites etc … ça viendra peut-être bientôt

Doc

Facultatif :

Pour celleux qui auraient du temps, nous avons poussé quelques markdowns.

CLI

Totalement facultatif :

# cd refactor
bin/spip list

bin/spip help cache:warmup 

bin/spip cache:warmup --clear

Doc

Fort intéressant tout ça, hâte de voir sur quoi ça va déboucher.
J’avais justement commencé à m’intéresser et à faire mumuse avec les évènements de symfony pour compléter voir remplacer les pipelines. C’est donc maintenant entre de bonnes mains :slight_smile:

Je teste dès que possible.

1 « J'aime »

Bonjour,

Merci pour ce travail formidable, j’ai mis à jour ma version local sur la branche indiquer et j’ai ceci dans le BO

Cela vient du fait qu’il me manque le plugins modèles mais dois on modifier une variable pour la compatibilité des plugins ?

Oui, la constante _DEV_VERSION_SPIP_COMPAT - SPIP

Ça @pierretux c’est déjà un problème dans la version SPIP 5-dev sans nos travaux : c’est dû à une sécu appliquée plus sévèrement qui nécessite de reprendre le javascript associé à ces boutons. @placido est au courant, mais ceci dit on n’a peut être pas de tickets dessus.

ah oui, j’avais mal compris la question, désolé.

Boutons d’ajouts de modèles d’images dans les textes, cassés (#5042) · Issues · spip / medias · GitLab du coup.

Au logout, on se retrouve avec ceci


le chargement se poursuivant ; fermer cette fenêtre aboutissant à une erreur 500.

Hormis cela, mes tests sur une base vierge ne remontent aucun souci.

Je ne reproduis pas non plus.

Notons qu’on a fait quelques évolutions internes encore et git pull + composer up ne fera pas de mal :wink:

Je suis reparti d’une install fraîche et je reproduis : sous Firefox comme sous Safari, j’ai bien cette alerte à la déconnexion…


Mais je me retrouve avec cette page d’erreur 500 que sous Firefox, sous Safari, je me retrouve bien sur la page de login…

Mais, cela semble dépendre du type de serveur web utilisé : un petit ddev config --webserver-type apache-fpm && ddev restart et le problème ne se présente plus…

Je poste donc ici la config Nginx utilisée par DDEV a priori :

# ddev php default (PHP project type) config

#ddev-generated
# If you want to take over this file and customize it, remove the line above
# and ddev will respect it and won't overwrite the file.
# See https://docs.ddev.com/en/stable/users/extend/customization-extendibility/#custom-nginx-configuration

server {
    listen 80 default_server;
    listen 443 ssl default_server;

    root /var/www/html;

    ssl_certificate /etc/ssl/certs/master.crt;
    ssl_certificate_key /etc/ssl/certs/master.key;

    include /etc/nginx/monitoring.conf;

    index index.php index.htm index.html;

    # Disable sendfile as per https://docs.vagrantup.com/v2/synced-folders/virtualbox.html
    sendfile off;
    error_log /dev/stdout info;
    access_log /var/log/nginx/access.log;

    location / {
        absolute_redirect off;
        try_files $uri $uri/ /index.php?$query_string;
    }

    location @rewrite {
        # For D7 and above:
        # Clean URLs are handled in drupal_environment_initialize().
        rewrite ^ /index.php;
    }

    # pass the PHP scripts to FastCGI server listening on socket
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php-fpm.sock;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_intercept_errors off;
        # fastcgi_read_timeout should match max_execution_time in php.ini
        fastcgi_read_timeout 10m;
        fastcgi_param SERVER_NAME $host;
        fastcgi_param HTTPS $fcgi_https;
        # Pass the X-Accel-* headers to facilitate testing.
        fastcgi_pass_header "X-Accel-Buffering";
        fastcgi_pass_header "X-Accel-Charset";
        fastcgi_pass_header "X-Accel-Expires";
        fastcgi_pass_header "X-Accel-Limit-Rate";
        fastcgi_pass_header "X-Accel-Redirect";
    }

    # Prevent clients from accessing hidden files (starting with a dot)
    # This is particularly important if you store .htpasswd files in the site hierarchy
    # Access to `/.well-known/` is allowed.
    # https://www.mnot.net/blog/2010/04/07/well-known
    # https://tools.ietf.org/html/rfc5785
    location ~* /\.(?!well-known\/) {
        deny all;
    }

    # Prevent clients from accessing to backup/config/source files
    location ~* (?:\.(?:bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$ {
        deny all;
    }

    include /etc/nginx/common.d/*.conf;
    include /mnt/ddev_config/nginx/*.conf;
}
1 « J'aime »

Effectivement, je reproduis avec nginx ; ça faisait un moment qu’on n’avait pas regardé avec lui. Bon. Merci, on va étudier…

Et bien figures toi que le bug est présent aussi en SPIP 4.4, aka « cépasnous »

J’ai ouvert le ticket suivant, et vu le problème

1 « J'aime »

12% des SPIP ^^