1.7 vers 1.8

Elgg 1.8 est le plus grand bond en avant dans le développement de Elgg depuis la version 1.0. Pour cette raison, cela demande plus de travail pour mettre à jour le noyau et les plugins qu’avec les mises à niveau précédentes. Il y a eu un petit nombre de changements d’API et, suivant notre pratique standard, les méthodes que nous avons dépréciées ont été mises à jour pour travailler avec la nouvelle API. Les plus grands changements sont dans la normalisation des plugins et dans le système de vues.

Mettre à niveau le cœur

Supprimez les répertoires du noyau suivants (même niveau que _graphics et engine) :

  • _css

  • account

  • admin

  • dashboard

  • entités

  • friends

  • search

  • settings

  • simplecache

  • views

Avertissement

Si vous ne supprimez pas ces répertoires avant une mise à niveau, vous allez avoir des ennuis !

Mettre à jour les plugins

Utilisez le routage standard avec vos gestionnaires de pages

  • Tout : /page_handler/all

  • Publications de l’utilisateur : /page_handler/owner/:username

  • Publications des contacts de l’utilisateur : /page_handler/friends/:username

  • Entité seule : /page_handler/view/:guid/:title

  • Ajout : /page_handler/add/:container_guid

  • Modification : /page_handler/edit/:guid

  • Liste des groupes : /page_handler/group/:guid/all

Incluez les scripts des gestionnaires de page à partir du gestionnaire de page

Presque tous les gestionnaires de page doivent avoir un script de gestionnaire de page. (Exemple : bookmarks/all => mod/bookmarks/pages/bookmarks/all.php)

  • Appelez set_input() pour les guids d’entité dans le gestionnaire de page et utilisez get_input() dans les scripts du gestionnaire de page.

  • Appelez gatekeeper() et admin_gatekeeper() dans la fonction du gestionnaire de page si nécessaire.

  • L’URL d’un groupe doit utiliser le script pages/:handler/owner.php.

  • Les gestionnaires de pages ne devraient pas contenir de HTML.

  • Mettez à jour les URLs dans tout le plugin. (N’oubliez pas d’enlever /pg/ !)

Utilisez les gestionnaires de pages standardisés et les scripts

  • Stockez les scripts du gestionnaire de page dans mod/:plugin/pages/:page_handler/:page_name.php

  • Utilisez la disposition de page de contenu - content - dans les scripts du gestionnaire de pages :

    $content = elgg_view_layout('content', $options);
    
  • Les scripts des gestionnaires de pages ne devraient pas contenir de HTML.

  • Appelez elgg_push_breadcrumb() dans les scripts du gestionnaire de pages.

  • Inutile de définir le propriétaire de la page si les URLs sont au format standard.

  • Pour le contenu du groupe, vérifiez le conteneur container_guid en utilisant elgg_get_page_owner_entity().

La vue object/:subtype

  • Assurez-vous qu’il existe bien des vues pour $vars['full_view'] == true et $vars['full_view'] == false. $vars['full_view'] a remplacé $vars['full].

  • Vérifiez l’objet dans $vars['entity']. Utilisez elgg_instance_of() pour vous assurer qu’il s’agit du type d’entité que vous voulez.

  • Renvoyez true pour court-circuiter la vue si l’entité est manquante ou erronée.

  • Utilisez elgg_view('object/elements/summary', array('entity' => $entity)); et elgg_view_menu('entity', array('entity' => $entity)); pour faciliter le formatage. Vous devriez utiliser très peu de balisage dans ces vues.

Mettez à jour la structure de l’action

  • Fichiers d’action et noms d’action de l’espace de noms (exemple : mod/blog/actions/blog/save.php => action/blog/save)

  • Utilisez les URLs d’action suivantes :

    • Ajoutez : action/:plugin/save

    • Modifiez : action/:plugin/save

    • Supprimez : action/:plugin/delete

  • Faites que l’action de suppression accepte action/:handler/delete?guid=:guid de sorte que le menu des métadonnées de l’entité ait la bonne URL par défaut.

Mettez à jour les fonctions obsolètes

  • Les fonctions dépréciées en 1.7 produiront des erreurs visibles en 1.8.

  • Vous pouvez également mettre à jour les fonctions dépréciées dans 1.8.

    • De nombreuses fonctions d’enregistrement ont simplement ajouté un préfixe elgg_ pour la cohérence, et devraient être faciles à mettre à jour.

    • Voyez /engine/lib/deprecated-1.8.php pour la liste complète.

    • Vous pouvez définir le niveau de débogage sur “warning” pour obtenir des rappels visuels des fonctions obsolètes.

Mettez à jour les vues widget

Voyez les widgets des plugins blog ou file pour des exemples.

Mettez à jour le module de profil de groupe

Utilisez les plugins blog ou file pour des exemples. Cela vous aidera à pouvoir appliquer un thème à votre plugin avec le nouveau framework CSS.

Mettez à jour les formulaires

  • Déplacez les corps de formulaire vers la vue forms/:action pour utiliser le nouveau elgg_view_form d’Evan.

  • Utilisez les vues d’entrée dans les corps de formulaire plutôt que du html. Cela aide à utiliser des thèmes et permet de préparer l’avenir.

  • Ajoutez une fonction qui prépare le formulaire (voyez mod/file/lib/file.php pour un exemple)

  • Rendez vos formulaires persistants (voir l’action de téléchargement du plugin file et la fonction de préparation du formulaire).

L’API des formulaires est discutée plus en détail dans Formulaires + Actions.

Nettoyez le CSS/HTML

Nous avons ajouté de nombreux modèles CSS au fichier CSS du noyau (modules, bloc avec une image, primitives d’espacement). Nous vous encourageons à utiliser ces modèles et ces classes dans la mesure du possible. Faire cela devrait :

  1. Réduire les coûts de maintenance, car vous pouvez supprimer la plupart des CSS personnalisés.

  2. Rendre votre plugin mieux compatible avec les thèmes de la communauté.

Recherchez des motifs qui peuvent être déplacés dans le noyau si vous avez besoin de CSS significatif.

Nous utilisons des traits d’union plutôt que des soulignements dans les classes/ids et vous encourageons à faire de même pour maintenir la cohérence globale.

Si vous avez besoin de votre propre CSS, vous devez utiliser votre propre espace de noms, plutôt que elgg-.

Mettez à jour manifest.xml

  • Utilisez http://el.gg/manifest17to18 pour automatiser cette étape.

  • N’utilisez pas la catégorie bundled avec vos plugins. Elle est réservée aux plugins distribués avec Elgg.

Mettez à jour les paramètres et les vues des paramètres utilisateur

  • La vue pour les paramètres est maintenant plugins/:plugin/settings (auparavant settings/:plugin/edit).

  • La vue pour les paramètres utilisateur est maintenant plugins/:plugin/usersettings (auparavant usersettings/:plugin/edit).