Qu'est-ce qu'un paquet ?
Un paquet est un ensemble de blocs, contrôleurs et/ou pages de thèmes assemblés pour fournir à l'utilisateur un grand nombre de fonctions. C'est donc une règle très simple, voir basique, pour que l'utilisateur choisisse ou non d'utiliser le paquet. Si votre application n'en contient qu'un seul bloc, installez celui-ci en tant que bloc simple ! Mais la plupart des applications contiennent plusieurs blocs et pages (types).
Structure des répertoires
Un paquet à une structure similaire à celle de Concrete5. Aussi longtemps que vous suivrez les standards vous ne devriez pas avoir de soucis.
/concrete/packages/
controller.php – Contient les dérivés des classes utilisateur
/concrete/packages//blocks/
Contient tous les fichiers des blocs et leurs dépendances, comme pour des blocs standards
/concrete/packages//page_types – Contient les types de pages
/concrete/packages//single_pages – Contient les pages seules/spéciales (single pages)
Classe API d'un paquet
Tous ces attributs font partie des classes protégées et son considérées comme nécessaires.
- string $pkgName – Nom de l'application ou du paquet
- string $pkgDescription – Rapide description du paquet
- string $pkgHandle – Nom/ID du paquet
Méthodes
void public function install() - OVERRIDE – Cette méthode est celle qui réalise l'installation et celle des dépendances.
Je n'ai pour le moment, personnellement, qu'utiliser les routines d'installation de bloc. Un coup d'oeuil sur l'API révèle que beaucoups de méthodes différentes peuvent êtres utilisées pour ajouter des single_pages, pages types, et des thèmes.
Blocks – Appel BlockType::installBlockTypeFromPackage(string blocktype, object Package,0)
*note ici le type de bloc n'est PAS préfixé par 'bt' c'est le nom camelcase actuel du bloc. Pour certaine raisons, le noms du répertoire doit aussi être Camel cased ce qui va à l'encontre du standard de concrete5 en fait, peut être un bug du système?
Pages - vous devriez pouvoir appeler Page::add() (pour les types de pages? ) ou SinglePage::add() avec un tableau associatif contenant:
- "uID": User ID du propriétaire de la page
- "pkgID": Package ID à qui appartient la page
- "cName": Le nom de la page
- "cHandle": Le handle de la page qui est utilisé dans le chemin
- "cDatePublic": La date assignée à la page
Themes – Les spécifications de l'API nous disent que Theme:: contient et ajoute des fonctions comme suit:
void add ( $ptHandle, [ $pkg = null]) ne devrait pas être un problème à implémenter avec $this au lieu de $pkg.
A l'heure où j'écris je n'ai pas encore trouvé aucune méthode pour ajouter ces contrôleurs ou helpers personnalisés.
Désinstallation de Paquet
À ce jour je n'ai pas encore trouvé aucune doc ni API sur la méthode de désinstallation d'Applications/Paquets. Ce doit être pour cela que cette fonction n'est pas encore documentée. Dans tous les cas, vous devez enlever toutes les entrées dans la base de votre application et supprimer les blocs (non-internes) depuis l'interface utilisateur.
EXEMPLE
Cet exemple de paquet va installer tous les blocs de votre application dans votre répertoire bloc à la racine de votre site (/blocks)
