Pour rendre CaMykS le plus flexible possible nous l'avons basé sur un système de plugins tant pour la partie visite du site que pour sa partie administrative. Les plugins sont des objets structurés plus ou moins complexes ajoutant des fonctionnalités autour du moteur de CaMykS.
Il existe 4 types de plugins :
Chaque template définit le squelette d'une page. Un thème sera appliqué sur cette structure. Il détermine aussi les emplacements des modules qui seront insérés.
Chaque thème définit un aspect graphique à appliquer sur votre site et vos modules. Il prend en compte l'aspect général (avec des fichiers de style CSS) puis permet d'insérer des éléments graphiques prédéfinis (boîtes, barres, boutons, etc...).
Chaque module est un sous-système à part entière. Parmi les modules, nous distinguons 3 catégories de modules.
Les modules dédiés à l'administration du site, qui proposent des fonctionnalités supplémentaires lors du management du site ou permettent la gestion de bases de données spécifiques.
Les modules de contenu permettent l'intégration et l'édition du contenu dans les pages du site.
La dernière catégorie de modules représente tous les modules utilitaires qui ne sont ni utilisables directement pour insérer du contenu, ni accessibles en tant qu'outil administratif. On peut, par exemple, citer les modules d'identification, de menu et de déconnexion pour l'administration du site.
Chaque input est un autre type de sous-système. Un peu particulier, il permet d'insérer, d'afficher des données ou d'effectuer toute autre tâche "générique" factorisable. Plutôt que de re-développer toujours les mêmes fonctionnalités dans les modules, nous les avons séparées et reconstruites sous forme de plugin. Les modules sont simplifiés, et lors de la mise à jour de ces fonctionnalités, ce sont tous les modules les utilisant qui sont aussi mis à jour.
Les plugins peuvent être installés directement dans CaMykS, ils seront alors accessibles dans tous les sites liés au moteur ou alors, directement dans le site pour n'être utilisables que dans celui-ci. Il est possible d'activer ( ou de désactiver ) les plugins via l'administration des sites. Ainsi vous optimisez les plugins à charger par le moteur.
Le système est assez ouvert pour imaginer dans le futur de nouveaux types de plugins.
Un système de surcharge simple mais efficace qui permet d'apporter de légères modifications aux plugins pour un site donné sans avoir à modifier le core du module original. Les développeurs auront la possibilité d'adapter le design à travers les layouts et les styles CSS des plugins. Cette réécriture sera majoritairement utilisée pour les modules, et ainsi les personnaliser sans gros effort de développement. Certains modules fournis avec le moteur du CMS possèdent déjà un choix de layouts. Les templates aussi pourront subir ce lifting personnalisé pour répondre aux besoins de votre site.
Lors de l'installation d'un site, un thème et un template par défaut sont indiqués dans sa configuration. Ces informations sont utilisées pour créer un nouvelle page. L'éditeur de page vous permet de customiser une page en particulier en surchargeant ces valeurs. Votre page aura un aspect graphique et une structure différents des autres pages de votre site.
Dans un souci de facilité d'évolution et d'extension, nous avons construit CaMykS de telle sorte qu'il soit unique pour tous les sites installés sur le même serveur. Lorsque vous mettez à jour le moteur ou un plugin, il est à jour sur tous les sites l'utilisant. De la même manière, si vous ajoutez un plugin dans CaMykS, il sera accessible dans tous les sites. L'installation d'un nouveau site est ainsi facilitée par le fait que le CMS soit déjà fonctionnel pour d'autres sites.
Cela permet de regrouper certains éléments de configuration tels que les informations de connexion à la base de données, ou les coordonnées du serveur d'envoi d'e-mails, informations sensibles normalement connues par l'administrateur du serveur. Il est, bien sûr, possible de surcharger ces valeurs dans le fichier de configuration pour chaque site.
Pour l'interface d'administration comme pour la visite du site, plusieurs langues sont activables. Dans la partie administrative, elles seront simplement accessibles dans la barre de menus ou à l'identification. Dans la partie visite, il faudra inclure le changement de langue dans l'un de vos modules.
Vous aurez la possibilité de mettre des langues supplémentaires en "édition", vous permettant de construire les pages pour ces nouvelles localisations sans qu'elles soient, pour le moment, visibles sur le site.
A noter que si le système supporte parfaitement de gérer plusieurs langues, les plugins que vous développerez devront, de la même manière, gérer plusieurs langues pour son interface administrative et, si besoin, pour la gestion de ses données.
Cet outil est destiné aux développeurs qui s'aventurent dans la création de modules. Un "pseudo" framework de gestion des données vous permet de gagner du temps lors du développement de nouveaux modules. Vous créez votre librairie en décrivant vos données. Vous n'avez qu'à utiliser les fonctions de récupération ou de sauvegarde, le framework s'occupe de tout, mettre à jour les tables de la base de données, ranger les fichiers uploadés, vous renvoyer toutes les valeurs.
Nous avons essayé de l'optimiser au maximum, surtout au niveau des requêtes SQL. Il créé automatiquement les jointures dont il aurait besoin plutôt que de multiplier les requêtes. Basé sur les propriétés d'héritage des objets PHP, vous aurez tout le loisir de surcharger les méthodes qui ne vous conviendraient pas et d'ajouter celles dont vous pourriez avoir besoin.
Ce framework n'est pas obligatoire, il est une aide optionnelle. A vous de décider si vous préférez vous en servir ou vous en passer pour créer votre librairie de toutes pièces avec des fonctionnalités plus poussées.
Vous trouverez plus d'informations sur ce framework dans la partie "Création d'un module".
Nous avons axé une bonne partie de notre travail sur l'ergonomie de la partie administrative : il fallait que le système soit si simple que n'importe quelle personne sachant se servir d'une souris puisse s'y retrouver sans avoir à se poser de questions fondamentales. L'interface se rapproche de ce que l'on trouve dans les systèmes d'exploitation en ne gardant que le strict nécessaire. Les éléments habituels de navigation et d'interaction ont été gardés pour mettre les administrateurs en confiance : icônes, menus, onglets dynamiques ...
Un système d'aide interne par modules permet de répondre aux questions les plus précises.
L'édition de contenu HTML peut se faire à travers un éditeur web simple d'utilisation et performant, sur lequel CaMykS ajoute ses propres fonctionnalités : styles CSS importés du thème courant, liens inter-pages ou encore gestionnaire de fichiers pour l'insertion d'images ou d'éléments multimédia. Pour l'instant, CaMykS ne propose qu'un seul éditeur HTML, en tant qu'input configurable et utilisable dans tous les modules qui pourraient en avoir besoin. Il est assez simple à intégrer dans vos propres modules. Vous pourrez aussi développer vos propres inputs basés sur d'autres éditeurs HTML existants.
Comme la plupart des CMS actuels, CaMykS possède un système collaboratif pour l'administration du site. Une gestion des droits a donc été implémentée pour satisfaire les besoins habituels en sécurité. Il y a des droits d'accès à 2 niveaux :
Par défaut, seuls les droits de lecture et d'écriture sont activés. Chaque module d'administration peut déterminer ses propres droits, et simplifier à la seule lecture ou au contraire, ajouter autant de niveaux de complexité que requiert le module. Chaque contributeur possède des droits sur chacun des modules d'administration. Les modules sensibles seront donc réservés aux webmasters. Quant aux modules généraux, vous pourrez décider des éditeurs qui y ont accès.
Un peu à la manière des fichiers d'un système d'exploitation, chacune des pages de votre site possède un propriétaire ainsi qu'un groupe de contributeurs habilités à modifier cette page.
De par sa flexibilité, si votre site est principalement basé sur du contenu structuré ( news, FAQs, ... ) et que vous choisissez de limiter l'action de vos contributeurs au seul contenu. Il est conseillé de désolidariser vos données et l'affichage en deux modules distincts. Un module d'administration sera développé sous la forme d'un gestionnaire de données, accessibles par les administrateurs. Ce module possédera tous les droits nécessaires à la sécurisation de votre site. Un second module sera développé et inséré dans la page de votre choix. Ce module aura pour seule fonctionnalité d'aller lire les informations dans votre gestionnaire de données et de les afficher.
Comme tous les sites dynamiques, il y a deux points d'accès principaux. Le premier, le plus classique permet aux visiteurs de parcourir votre site. Le second, permet l'édition et l'administration du site après identification. Ce point d'entrée peut être modifié pour plus de sécurité.
Un troisième point d'accès plus inhabituel est disponible pour la gestion de requêtes externes qui n'aurait pas comme résultat une page administrative ou une page du site. Il permet par exemple de créer des pop-ups spécifiques, de renvoyer du contenu autre que du xhtml (xml, CSV, ... ). Par extension, ce mode "requête" permet le dialogue entre le site et des systèmes de flash dynamique, en AJAX ou encore des flux RSS.
CaMykS est toujours en développement actif. Il reste quelques fonctionnalités, et non des moindres, que nous voudrions développer :
Le workflow sera l'évolution directe du système collaboratif, une validation plus poussée. Un contrôle des versions des pages sera activé. La modification d'une page par un contributeur passera par la validation d'un administrateur avant d'être validée (ou rejetée) puis mise en ligne.
Pour les sites les plus simples, dont le contenu est statique, un système de cache des pages sera implémenté. Les pages calculées une fois sont mises en cache pour les fois suivantes. Le cache est renouvelé selon un cycle décidé par le webmaster du site. Ce système permettrait de soulager les serveurs dont les sites développés à partir de CaMykS subiraient les assauts d'une grande quantité de visiteurs.
Cette fonctionnalité permettrait de faciliter le travail du webmaster lors de l'activation d'un plugin. De par le principe des modules, ceux-ci peuvent avoir besoin d'un ou plusieurs inputs, ou sont peut-être liés à d'autres modules. Cela permettrait d'activer en un clic un package de plugins définis par le module.
Dédié aux webmasters gérant plusieurs sites. Il s'agira d'un outil intégré au CMS hors-site, il proposera des fonctionnalités comme l'installation de nouveaux sites, la mise à jour du moteur ainsi que des plugins installés directement grâce à son interface.
Ensuite, ce sont surtout de nouveaux plugins et les mises à jours des existants qui feront évoluer le CMS.