CRX - CMS

CRX-CMS est sous licence GPL, merci de me contacter si vous êtes interressé par les sources.
Je travaille sur ce projet depuis 3 ans et j'essaye de concentrer mes connaissances PHP sur cet outil
ainsi que sur le framework PHP sur lesquel il s'appuie. L'intégralité du code est écrit en PHP5.
Vous pouvez trouver ici toute la documentation pour vous permettre d'administrer votre site basé sur le CMS CRX-CMS.

Sommaire

0) Setup du site


1) Structure du site internet


2) Gestion des publications
- Ajouter une publication (page,article,news)
- Ajouter une image dans une publication

3) Gestion des utilisateurs
- Groupes d'utilisateurs utilisés par le moteur du site
- Ajouter un utilisateur
- Lier un utilisateur à un groupe

4) Gestion de la newsletter
- Association d'utilisateurs/groupe
- Création et envoi d'une newsletter à un groupe

5) Utilisation avancé
- Les ACLs
- L'arborescence du CMS
- Structure d'un module
- Utilisation des packages

 

 

 

 

0. Installation du site -   menu

L'installation se veut intuitive, pour la lancer exécutez simplement le fichier setup.php depuis votre navigateur :
Dans un premier temps le setup va contrôler que les extensions utilisées par le site sont disponibles :


La configuration principale du site se fait en remplissant une série de champs à savoir
l'adresse du site, son nom, ses métas mais aussi les infos pour la base de données.



Les modules que l'on souhaite installer doivent être copiés dans le dossier setup à la racine du site.


1. Structure du site internet -   menu

Le site internet est divisé en module, chaque module représente une fonctionnalité du site ex :

Le module lien est "administrable" par tous les utilisateurs membres du groupe " G_ADMIN_link "
La partie publication peut être gérée par les utilisateurs membres du groupe " G_ADMIN_PUBLICATION "
Tous les utilisateurs membres du groupe G_ROOT_USERS ont accès à tous les modules.

Il comporte égagelement un ensemble de "plugins" qui sont utilisés par les modules.

Au niveau de l'arborescence tous les modules se trouve dans core/modules et toutes les librairies
"dynamiques" dans core/classes/class.crx.libs/

Pour plus d'infos 'technique rendez vous dans la partie

 

2. Gestion des publications -   menu

Après avoir installé le site, je vous propose de découvrir la gestion des news et articles j'ai réfléchi ici à
un système de version :
- L'idée première était de faire un site "multilingue" et donc un système multilingues pour tous les contenus du site
- J'ai donc pensé à un système de version.

- Une version est associée à un ou plusieurs articles,news, parties et à une date de mise en ligne et une date de fin de mise en ligne.
(online-offline).

- Le système dispose d'un système d'archives pour conserver les anciennes publications.


2.1 Comment ajouter un article ?

Pour ajouter un article vous devez disposer des droits d'administration sur le site
(faire parti du groupe G_ADMINISTRATORS_USERS mais également du groupe G_ADMIN_publication)

Si vous disposez de ces droits vous devez voir l'icone des publications dans la partie administration du site.

1) Accèdez à la partie administration :

- Rendez vous dans la partie administration du site :

- Cliquez sur l'icone publication :


2) Choissisez tout d'abord sur quelle "type" de publication à savoir un article

Une fois selectionnez celle-ci doit se mettre en gras ici : articles
Par défault vous allez voir tous les articles disponibles.

Dans le menu de gauche cliquez sur "Ajouter" :
Il apparait ensuite un formulaire de saisie complet :

Saissisez un titre, le language de votre publication et le ou les auteurs

- Astuce : Maitenez la touche CTRL enfoncée et cliquer dans les utilisateurs de la liste pour selectionner plusieurs.

- Si vous n'avez pas encore de version associé à cet article ( cas d'une nouvelle publication)
cliquez sur : "Ajouter une version".

- Enfin entrez le contenu du chapeau puis du contenu principal.

- Pour sauvegardez l'article cliquez sur le bouton qui se trouve en haut :

Et voilà vous avez créé votre premier article !

Une fois créer on va vérifier que tout marche bien, normallement vous devez être redirigé sur
Tout afficher.

- Pour cela dans le menu : publication cliquez sur "Tout afficher"

- Vérifier également que une version s'est ajoutée dans la version "version" pour cela dans le menu version cliquez sur "Tout afficher"

- Vérifiez en cliquant dessus que l'article que vous avez créer est bien dans liste des contenus liés aux versions.
-
Pour cela cliquez sur l'icone : pour éditer la version, de la même façon vous pouvez éditer vos articles.


- Revenez à l'affichage des versions , et vérifiez que dans la collonne "état" l'icone est vert cela signifi que la publication est en ligne"

Pour que votre info soit visible tout de suite rendez vous dans le module HTML, cliquez sur le lien "Reconstruire le cache", enfin rechargez
la page d'acceuil.

2.2 Ajout d'images dans les publications

Lorsque vous êtes en mode édition (en cliquant sur) d'une publication , un panneau apparaît sur la droite, il permet d'ajouter des images.

 

 

1) Charger l'image sur le serveur

- En cliquant sur parcourir, choissisez un fichier jpeg ou gif

- Il est conseillé d'optimiser votre image avec de la mettre sur le serveur ( > 1Mo ).

- Rentrez ensuite la taille finale : ex : 500

- Eventuellement une petite description.

- Une fois chargé le fichier apparait dans la liste vous pouvez venir l'éditer avec l'icone :

 

2) Insertion dans votre publication :

pour l'insérer dans votre article utiliser le tag suivant : [pic=6]

 

 

 

 

 

3. Gestion des utilisateurs et des groupes -   menu

- Nous allons ici comment gérer les utilisateurs et les groupes.

- Seul les utilisateurs membres du groupe " G_ADMIN_ROOT " peuvent gérer les utilisateurs.

- Tous les utilisateurs enregistrés sur le site sont ajoutés automatiquement dans : G_REGISTERED_USERS

- Les groupes G_CONTRIB permettent aux utilisateurs membres de poster des informations sans attendre de validation de la part des administrateurs

- Les administrateurs des modules font parti des groupes : G_ADMIN_[nom du module]

Par exemple les utilisateurs qui gère les publications font parties du groupe G_ADMIN_publication

- Après avoir accéder à la partie administration cliquez sur le module users :


3.1 Ajouter un utilisateur

- Dans la partie gauche du menu cliquez sur " Ajouter "
- Remplissez les différents champs et sauvegarder le tout.
- L'opération est la même pour un groupe d'utilisateur.

3.2 Lier un utilisateur à un groupe

- Dans le menu "Les groupes" cliquez sur "afficher "

- Cliquez sur le bouton d'édition :

- Dans la liste des "membres du groupe" maintenez la touche SHIFT enfoncée et cliquez sur les noms pour les ajouter.

 

 

4. Gestion de la newsletter -   menu

 

4.1 Créer la newsletter :
P our gérer la newsletter rendez - vous dans le module : mail

Une fois rédigée cliquez sur "Poster" , le message suivant doit apparaitre : "La newsletter a bien été ajoutée"

4.2 Mettre à jour le groupe d'utilisateurs voulant recevoir la newsletter et l'envoyer -   menu

Pour l'envoyer cliquez sur "Gérer l'envoi", vous devez préalablement choisir un groupe d'utilisateur
Ici le groupe : G_USERS_newsletter vous permet "par défaut" de poster une newsletter à tous les
utilsateurs ayant cocher la case "je veut recevoir le courrier d'information" dans la partie mon compte.

- Avant d'envoyer la newsletter :

- cliquer sur : Groupe newsletter dans le menu de gauche

- Puis sur "Lancer la mise a jour du groupe"

Si tout se passe bien vous devez obtenir ce message :

- Envoyer votre newsletter :

Choisissez le groupe de destination puis cliquer sur envoi ! et voila votre newsletter est partie.

5. Utilisation avancée -   menu

5.1 Les ACLs

- Dans cette partie, je vous propose de découvrir une fonctionnalitée très pratique du framework CRX qui est exploitée par le CMS à savoir les ACL.

- Pour gérer les ACL rendez vous dans le module "USERS", la dernière partie ACL nous concerne :

Par exemple ici l'acl ACL_CONTRIB_EVENTS donne des droits au groupe G_CONTRIB_events sur le module events qui permet de poster des évennements.

- Si l'utilisateur associé au groupe G_CONTRIB_EVENTS charge la partie "evennement" un tableau associatif contenant ses droits sera passé en argument à l'instance de ce module :

Un simple var_dump permet de le visualiser :


var_dump($this->ACL);

array(4) { ["read"]=> string(1) "1" ["delete"]=> string(1) "1" ["edit"]=> string(1) "1" ["create"]=> string(1) "1" }

Ainsi dans la methode qui gère l'ajout d'evennement on effectue un petit test sur le tableau ACL et si la valeur CREATE est à 1 on vient ajouter la valeur 1 dans
l'enregistrement qui concerne cet evennement.

function handle__purposeEvent(){

if($_POST['event_id']==0){

if($this->checkForm()){
// ACL_CONTRIB_EVENTS
if($this->ACL['create']==1){
$this->widget['valid_state']=1;

$this->_htmlOuput['mainBloc'] = ''.$this->showMiniWindowScreen(
$this->lng('LNG_ADD_SUCCESS'),
$link=$this->url['ViewAll']
);

}

$this->saveEventSqlData();

Il est donc assez simple si vous dévelloper un peu en PHP rien ne vous empêche d'ajouter vos propres fonctionnalités à partir de ces ACL.

5.2 L'arborescence du CMS -   menu

Le CMS est basé sur l'arborescence suivante :

 

- Tous les modules sont stockés dans le dossier core/modules

- Toutes les librairies sont stockés dans : core/classes/class.crx.libs/

- Les fichiers d'interfaces vous permettant de créer vos propres modules se trouve dans /core/classes/interfaces.crx

- Le répertoire /logs/ contient les logs du site qui sont accessible dans la partie administration : LOGS

- Le répertoire /html/__cache/ contient un ensemble de sous répertoire utilisé par le cache du site

 

 

5.3 Structure d'un module

Module "Configuration"

On peut l'éditer via l'icone :

Le dossier conf_files contient la configuration du module à savoir
un fichier XML : configuration_module.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<module>
<conf>
<param1>value1</param1>
</conf>
</module>

Lorsque le framework instancie le module on retrouve un tableau associatif contenant les valeurs de configuration_module
dans le controleur du module (utilisateur et administrateur) :

var_dump($this->_confXml);
array(1) { ["param1"]=> string(5) "value" }

La configuration de ce fichier peut se faire manuellement ou alors via le module CONFIGURATION.

 


5.4 Gérer le chargement de package

- A peu à la manière de JAVA il est possible de charger des packages (ensemble de classes)

- Les packages ou ensemble de librairies se trouvent dans : core\classes\class.crx.libs

- Ils sont défini dans un fichier XML : core\classes\class.crx.libs\load.order.xml

- Les packages sont chargé dans le contrôleur du module

Voila un exemple utilisé ici pour réaliser un serveur :

$this->loadPackages(array(
"netserver",
"generic",
"webservice",
"radioamator",
"network",
"data"
)
);

Il est également possible de charger une classe spécifique d'un package avec la méthode :

 

[nom du package] [nom de la classe
$this->loadPackage('network','mail');

Cela peut permettre une optimisation du script.

 

Un certain nombre de package sont utilisé par le moteur du CMS ils sont chargés automatiquement (voir le fichier index.php) :

$myCms -> loadPackages(array(

"system",

"files",

"tools",

"languages",

"users",

"logs",

"htmlInterface",

"data",

"webapps",

"module"
));

 

© Bastien Barbe 2008