Skip to content
Snippets Groups Projects
user avatar
Yassin Siouda authored
1c295c57
History

Le site Erasme

Installer un espace de travail de développement

On part du principe que la machine sera une Ubuntu 18.04.2

Pré-requis

sudo apt-get install apache2 php7.2 mysql-server php-mysql php-xml php-gd php-xml-htmlsax3 sqlite php-sqlite3 libsqlite3-dev

Crééz votre répertoire de travail sur apache.

sudo mkdir /var/www/html/erasme

Connexion à la base de données

Créez un utilisateur mysql avec des droits admin et qui sera dédié à l'utilisation de spip. Faites-le soit par phpmyadmin (recommandé) soit en ligne de commande.

En ligne de commande :

sudo mysql
CREATE USER 'spip'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mot_de_passe_spip';
GRANT ALL ON *.* TO 'spip'@'localhost';
exit

Quelque soit la méthode choisie, vous pourrez restreindre cet utilisateur aux tables de spip lorsque, un peu plus tard, elles seront créées.

Installation de SPIP

Allez sur le site de SPIP et récupérez l'installateur. En ligne de commande :

sudo wget -P /var/www/html/erasme/ https://www.spip.net/spip-dev/INSTALL/spip_loader.php

Mettez apache en propriétaire du dossier erasme :

sudo chown -R www-data:www-data /var/www/html/erasme

Ouvrez votre navigateur à cette adresse et laissez-vous porter par les instructions.

Image d'accueil installation de SPIP

Vous aurez à renseigner votre utilisateur mySQL, puis créer un utilisateur SPIP qui sera l'admin.

À la toute fin, il est possible que vous ayez une erreur sur le htaccess (Voir).

Installation du site erasme

À présent que SPIP est installé, deux étapes sont à suivre pour installer le site ERASME :

  • installer le squelette
  • importer le dump

Installer le squelette

Avant toute chose

À noter que pour récupérer le code proprement, il est recommandé d'utiliser git.

sudo apt-get install git
Récupérer le code

Déplacez-vous dans votre répertoire de travail.

# Pensez à remplecer votre nom d'utilisateur.
cd /home/votreNomUtilisateur/Projets

Crééz votre dossier correspondant au site de SPIP. Déplacez-vous dedans.

mkdir erasme
cd erasme

Vous n'avez plus qu'à récupérer les données depuis le git (vous devez avoir git !).

# Cette commande vous demandera votre pseudo et mot de passe du site gitlab.erasme.org .
git clone https://gitlab.erasme.org/erasme/plugin_site_erasme.git
(Optionnel) Préparer son espace de travail

Soyons paresseux : déplaçons directement ces fichiers dans apache :

sudo mv /home/nomUtilisateur/Projets/erasme/plugin_site_erasme /var/www/html/erasme/plugins

Et créons un lien symbolique vers notre espace de travail :

sudo ln -s /var/www/html/erasme/plugins/plugin_site_erasme /home/nomUtilisateur/Projets

Félicitations, vous pouvez dès à présent modifier le code directement dans notre espace de travail et cela sera immédiatement impacté sur le site en local.

Activez le squelette (plugin)

Ouvrez l'application dans votre navigateur et connectez-vous avec les pseudo et mot de passe que vous avez choisi durant l'installation de SPIP.

Une fois connecté, allez dans Configuration -> Gestion des plugins -> Ajouter des plugins

Vous devriez avoir un dépôt principal connu mais non importé, il s'agit du dépôt officiel des plugins de SPIP, il est capital de l'activer pour récupérer automatiquement les dépendances de notre plugin erasme.

Activation du dépôt oficiel de SPIP

Vérifiez que le champ Fichier XML du dépôt contienne bien l'url du dépôt et cliquez sur Ajouter

Revenez dans la catégorie Mes plugins -> Inactifs, vous devriez y voir le plugin du site erasme qui n'est pas activé. Activez-le. Il vous demandera si il faut bien récupérer les dépendances, choisissez oui : Valider.

Après la fin du téléchargement, vous atterrirez sur une page blanche. Retournez sur la page des plugins.

Voilà, le module est installé, configuré et activé mais le site est vide et si on importait les données ?

En cas d'impossibilité d'activer le plugin, assurez-vous qu'un dossier plugins/auto/ existe et qu'il est correctement accessible en écriture.

Importer un dump

Procurez-vous un dump du site courant. Récupérez-le directement sur le site si vous le pouvez (-> Maintenance-> Sauvegarder la base).

Au final, vous devriez avoir un fichier sqlite. Placez-le dans votre /var/www/html/erasme/tmp/dump . Crééz ce dossier si celui-ci n'existe pas.

sudo mkdir /var/www/html/erasme/tmp/dump/

Et pensez bien à lui mettre comme propriétaire apache :

sudo chown -R www-data:www-data /var/www/html/erasme/tmp/dump/www_erasme_org_YYYYMMJJ.sqlite

Sur votre SPIP fraichement installé, connectez-vous dans l'interface et dirigez-vous vers la catégorie ->Maintenance -> Restaurer la base . Il devrait normalement apparaître :

Import du dump de SPIP

Cochez la checkbox correspondante et Restaurer la base .

Importer les images

Connectez-vous sur le serveur du site et récupérez le contenu du dossier IMG/ . Copiez ces images dans votre répertoire du site ce qui devrait être : /var/www/html/erasme/IMG/

Il est possible que vous ayez besoin, au préalable, de modifier les droits.

sudo chmod 777 -R /var/www/html/erasme/IMG/

Les images sont prêtes, à présent, il faut activer certaines optiones en admin. Allez dans Configuration->Fonctions avancées. Dans la catégorie Génération de miniatures des images, choisissez le mode GD2...

SPIP activation mode image GD2

... et choisissez une taille pour les redimensionnements d'image.

SPIP taille redimensionnement images

Enfin allez dans la catéorie Maintenance->Vider le cache. Videz-y les caches.

SPIP vider cacher images

Vous pouvez à présent retourner sur le site public et choisissez de Recalculer cette page. Attetion, ce sera long, SPIP est en train de créer à la volée toutes les miniatures.

Options et réglages

Réglage des liens

Lors de votre navigation sur votre version locale du site, vous vous rendrez bien vite compte que les liens ne fonctionnent pas. Pour les rendre fonctionnels en dev, vous aurez deux solutions :

  • écrire des règles apache
  • changer une option dans le panneau d'administration

Nous choisirons la solution de facilité et opterons pour le changement d'option. Direction le panneau admin ! Configuration -> Configurer les URLs. Dans la catégorie Type d’adresses URL, choisissez l'option URLs Simples.

Option des url de SPIP

Activer les articles virtuels

Les liens virtuels permettent d'assigner des urls particulières à des articles et de faire des redirections d'urls. Activez la redirection

Option des url de SPIP

Rendre les surtitres disponibles dans les articles

Dans Configuration -> Contenu du site, rendez les surtitres utilisables dans les articles.

Surtitres utilisables dans les artivles

Soucis techniques rencontrés

Page blanche durant l'installation

Vérifiez dans les logs d'apache situés en /var/log/apache2/error.log :

cat /var/log/apache2/error.log

Si vous avez l'erreur suivante, c'est que php-xml-htmlsax n'est pas installée. Il s'agit habituellement d'une dépendance de php-xml mais elle ne s'installe pas toujours en fonction du contexte.

Problème :

PHP Fatal error:  Uncaught Error: Call to undefined function xml_parser_create() in /var/www/html/erasme/ecrire/xml/sax.php

Solution :

sudo apt-get install php-xml-htmlsax3

htaccess inopérant

Problème :

Image d'erreur sur le .htaccess

Solution :

Renommez simplement le htaccess de l'application.

sudo mv /var/www/html/erasme/htaccess.txt /var/www/html/erasme/.htaccess 

Erreur lors de l'import du dump

Problème

Si vous avez une erreur du type :

Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.

Image d'erreur d'import du dump

Solution

Il vous manque le module sqlite de PHP, (ré)installez-le :

sudo apt-get install sqlite php-sqlite3 libsqlite3-dev

Notes importantes durant l'utilisation

Génération des miniatures d'images

Il suffit de d'acceder à la section Configuration => Fonctions avancées sous Génération de miniatures des images cliquer sur GD2 et selectioner en dessous Générer automatiquement les miniatures des images. que vous pouvez regler à votre guise (par defaut à 100)

Configuration du plugin notation

Sous Configuration => Gestion des plugins => Configuration notation régler la pondération de la note à 30 afin qu'une évalution seule sur un article aie de la valeur

Plugin Champ extra

Attention. Ces informations n'ont plus l'air bonnes -> à tester.

Dans le cas de la création d'un nouveau avec champs extra

Les champs une fois déclarés dans era_function.php vont bel et bien s'afficher dans l'interface BO mais ne seront pas crées en DB Pour cela il faut les déclarer dans era_administrations.php dans la fonction era_upgrade sous cette forme

$maj['numero_de_version'] = array( array('nom_du_champ'), );

Puis mettre à jour le numéro de version du schéma de db dans le fichier paquet.xml sous

schema="numero_de_version"

Condition spip

[A ALIMENTER] Les conditions spip avec sous conditions sur plusieurs lignes ne fonctionnent pas en général

Aide au développement

Mettre à jour le plugin

Si des champs extra ont été rajoutés, il est nécessaire d'en notifier le plugin du site en mettant à jour sa version et en déclarant ces nouveaux champs dans les fichiers internes du plugin.

Déclarez une nouvelle version du schema

Créer un nouveau champ extra implique une mise à jour de la base de données. Pour s'assurer qu'elle soit comprise par le plugin et installée automatiquement, il faut la déclarer convenablement. Cela requiert plusieurs étapes.

La première est de déclarer une nouvelle version du schema dans le fichier /paquet.xml :

<paquet
    prefix="era"
    categorie="squelette"
    version="2.0.0"
    etat="dev"
    logo="era.png"
    compatibilite="[3.0;["
    schema="1.1.2"
>   <!-- Incrémentez votre version du schema sur la ligne ci-dessus. -->

    <nom>Erasme - Plugin du site</nom>
    <auteur>Patrick Vincent, K&eacute;vin Vennitti</auteur>
    <licence>GNU/GPL</licence>

    <necessite nom="crayons" />
    <necessite nom="notation" />
    <necessite nom="cextras" compatibilite="[3.0.5;[" /> 
    <necessite nom="accesrestreint" compatibilite="[3.13.3;[" /> 
  
    <utilise nom="medias" />

    <pipeline nom="declarer_champs_extras" inclure="era_cextras.php" />
   
    <chemin path="sq-erasme" />
    <chemin path="" />    
</paquet>

Cette nouvelle valeur du schema sera lue par SPIP qui lira les informations nécessaires et actions à faire correspondant à cette version du plugin.

Déclarer les actions à faire

Lorsque SPIP aura lu la version du schema, il cherchera les actions à accomplir de ce schema. Ces actions peuvent être déclarées dans la fonction era_upgrade du fichier era_administrations.php .

function era_upgrade($nom_meta_base_version,$version_cible) {

    $maj = array();
    // La fonction cextras_api_upgrade se trouve dans le module « Champ extra ».
    cextras_api_upgrade(era_declarer_champs_extras(), $maj['create']);

    // Chaque màj nécessitant une action particulière est notifiée ici :
    $maj['1.0.1'] = array(
        array('era_ajouter_mots_cles'),
    );
    $maj['1.0.2'] = array(
        array('era_ajouter_mots_cles_champs'),
    );
    cextras_api_upgrade(era_declarer_champs_extras(), $maj['1.0.3']);
    $maj['1.0.4'] = array(
        array('era_update_couleurs_onglets'),
    );
    $maj['1.0.5'] = array(
        array('era_ajouter_mots_cles_champs'),
    );
    cextras_api_upgrade(era_declarer_champs_extras(), $maj['1.0.6']);
    cextras_api_upgrade(era_declarer_champs_extras(), $maj['1.0.7']);
    cextras_api_upgrade(era_declarer_champs_extras(), $maj['1.1.1']);
    // Ajoutez ici votre déclaration de nouveau champ extra.
    
    include_spip('base/upgrade');
    maj_plugin($nom_meta_base_version, $version_cible, $maj);
}

Il vous est conseillé de suivre la même manière de faire que les lignes précédentes. C'est à dire :

    cextras_api_upgrade(era_declarer_champs_extras(), $maj['X.X.X']);

Décrire explicitement les champs à rajouter

Une fois votre demande de mise à jour effectuée (vu dans le point précédent), vous pouvez décrire votre nouveau champ extra dans la fonction era_declarer_champs_extras du fichier era_cextras.php .

Inspirez-vous des déclarations déjà présentes pour décrire un nouveau champ extra :

// Exemple :
$champs['spip_articles']['description_title'] = array ( // Ici, nous avons un champ nommé « description_title »
                                                        // qui est créé et rattaché sur les articles.  
		  'saisie' => 'input',
		  'options' => 
		  array (
		    'nom' => 'description_title',
		    'label' => 'Titre de la description principale',
		    'type' => 'text',
		    'size' => '40',
		    'autocomplete' => 'defaut',
		    'sql' => 'text DEFAULT \'\' NOT NULL',
		    'rechercher' => 'on',
		    'rechercher_ponderation' => '8',
		    'defaut' => 'Ex. : Tous à table !'
		  ),
		);

Une fois le champs ajouter icrémenter le champ schéma dans paquet.xml de 1 puis dans la BO de spip acceder à l'ur suivante afin de mettre à jour la base de donnée /ecrire/?exec=upgrade

Erreur console js boutonEnvoi is null

Erreur relative a la section infolettre dans la page d'accueil Cette erreur intervient sur la page d'accueil dans deux situations (situations relevées du moins)

Des plugins nécessaires n'ont pas étés activés) Vérifiez que ces plugins ont bien étés activés

  • Facteurs
  • Mailshot
  • Mail Subscribers
  • Newsletterù

Soucis de cache Si après avoir vidé les caches spip (sous Maintenance > Vider le cache) ce problème persiste Dépubliez l'article RECEVEZ RÉGULIÈREMENTS NOS ACTUALITÉS  ! dans la rubrique Information > Home > page principale erasme > En ce moment et publiez le à nouveau

TODO

  • Vérifier que la liste des modules à importer est complète lorsque sortira la V2 du site.