Création de pages privées à 2 niveaux avec CMSms

Ce document est basée sur le document Hiding Private Content in CMS Made Simple de calguy1000

Le but est de créer des pages privées (réservées a certains utilisateurs) à 2 niveaux
- niveau 1 des pages réservées aux utilisateur Enregistrés de l'association
- niveau 2 des pages réservées aux utilisateur Administrateurs de l'association (auront aussi la possibilité de voir les pages niveau 1)


Les modules à télécharger ,
- soit directement sur le site dev.cmsmadesimple.org
- soit en installant le module ModuleManager (dans admin Extensions/Modules)
puis Extensions/Gestionnaire de Modules / Modules disponibles / chercher les modules


* FrontEndUsers
(Gestion des utilisateurs du site)
- Dépendances : CMSMailer [installé par défaut] et CGExtensions [obligatoire]

* CustomContent (Permet de créer une page différente selon la personne qui la regarde)
- Dépendances : FrontEndUser

* Éventuellement SelfRegistration (Enregistrement automatique des membres) NON traité ici

1 Configurer CMSMailer : Méthode d'envoi des emails : soit en SMTP ou Mail (tester)
2 Installer CGExtensions
3 Installer FrontEndUsers
4 Installer CustomContent

NOTE :
- Ce tuto à été rédigé à l'origine le 18/08/2010 avec CMSms 1.7.1 + Frontend Users 1.8.5 + CustomContent 1.5.3
- Puis modifié le 09/02/2013
- Il a été revalidé le 20/03/2015 avec CMSms 1.11.3 + GCextension 1.45+ CustomContent 1.10 + FrontEndUsers 1.26


Exemple (à titre indicatif) niveau 1 des pages réservées aux utilisateur Enregistrés de l'association

A Création de la page login

Titre : Login Réservé aux utilisateurs déjà enregistrés
Texte du menu : Accès réservé In/Out
Contenu * : {FrontEndUsers lang="fr_FR"}
Gabarit : Left simple navigation + 1 column
Alias de page : login


B Utilisateurs/Groupes (Gestion des utilisateurs du site-FrontEndUsers)

Utilisateurs/Groupes/Gestion des utilisateurs du site
1 Créer des propriétés dans l'onglet Propriétés de l'utilisateur / Ajouter une propriété
- Nom : nom Invite : Votre Nom Type : texte Longueur : 45 Longueur maximale : 50
- Nom : email Invite : Votre adresse email Type : texte Longueur : 50 Longueur maximale : 80
- Nom : prenom Invite : Votre Prénom Type : texte Longueur : 50 Longueur maximale : 50
- Nom : cp Invite : Code Postal Type : texte Longueur : 10 Longueur maximale : 10
- Nom : ville Invite : Votre ville Type : texte Longueur : 50 Longueur maximale : 80
- Nom : Civilit Invite : Civilité Type : boutons Radio
Label des boutons Radio : Femme=f <br />Homme=m<br />Demoiselle=d

2 Créer un groupe dans l'onglet groupe / Ajouter un groupe
- Nom : Enregistrés Description : Utilisateurs Enregistrés
ET cocher -> Statut du champ (requis sauf civilit) + Demande lors de la récupération de l'identifiant
groupe_enristr

3 Créer utilisateurs dans l'onglet Utilisateurs
Ajouter un utilisateur
- Adresse email : moi@moi.com Mot de passe=monpass ET Cocher Groupes "Enregistrés" à droite
faire Suivant et remplir les informations


C Gabarit

Dans le gabarit Left simple navigation + 1 column
En partant d'un gabarit standard
AJOUTER après la balise <body>
{page_attr key='extra1' assign='extra1'}
{if !$ccuser->memberof('Enregistrés') and $extra1 == 'restricted'}
{redirect_page page='login'}
{/if}

et après
<h2 class="accessibility">Navigation</h2>
{*menu template='simple_navigation.tpl' collapse='1'*} {* ligne à supprimer *}
{ menu template='simple_restric' collapse='1'} {* ligne à ajouter *}


D Menu

Dans - Disposition/Gestion de Menu Ajouter un gabarit

*Nom du nouveau gabarit : simple_restric (Fichier à télécharger)
*Contenu du gabarit :
{*Modification pour pages privées (réservées a certains utilisateurs) à 2 niveaux *}
{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}
{if ($node->extra1 == 'restricted' and $ccuser->memberof('Enregistrés')) or $node->extra1== ''}
{if $node->parent == true or ($node->current == true and $node->haschildren == true)}
<li class="menuactive menuparent"><a class="menuactive menuparent" href="{$node->url}"><span>{$node->menutext}</span></a>
{elseif $node->haschildren == true and $node->type != 'sectionheader' and $node->type != 'separator'}
<li class="parent"><a class="parent" href="{$node->url}"><span>{$node->menutext}</span></a>
{elseif $node->current == true}
<li class="currentpage"><h3><span>{$node->menutext}</span></h3>
{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><span>{$node->menutext}</span>
{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />
{else}
<li><a href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}
{/if}{* node->extra1 *}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}
</li></ul>
{/if}


E Créer une Page Accès Restreint

Titre : Accès Restreint
Texte du menu : Accès Restreint
Contenu * : c'est une page réservée avec accès restreint .... réservée ....
Gabarit : Left simple navigation + 1 column
Alias de page : acces-restreint
Attribut supplémentaire 1 de la page : restricted
Nota : On se sert de Attribut supplémentaire 1 pour définir si l'accès est restreint ou Non

Il est bien sur possible de faire d'autres pages ou sous-pages mais il faut à chaque fois indiquer
Attribut supplémentaire 1 de la page : restricted


F Tester ....

je me logue ...
Si le lien "Accès Restreint" est visible, il renvoi vers la page de "Accès réservé In/Out"

login1
Et je peux voir la page Accès Restreint

page_restr1


La suite ....

- niveau 2 des pages réservées aux utilisateur Administrateurs de l'association (auront aussi la possibilité de voir les pages niveau 1)


G Modification gabarit

1- Dans le gabarit Left simple navigation + 1 column
Supprimer et remplacer
<h2 class="accessibility">Navigation</h2>
{menu template='simple_restric' collapse='1'} {* ligne à supprimer *}
{* lignes ci-desous à ajouter *}
{if $ccuser->loggedin() && $ccuser->memberof('admin')}
{menu template='simple_restric' collapse='1'}
{else}
{menu template='simple_restric' collapse='1' excludeprefix="admin_"} {* exclu les menus de page contenant l'alias admin_ pour niveau 2 *}
{/if}


2
- Faire la même modification DANS TOUS LES autres GABARITS affichant des menu


H Créer une Page réservée Admin réservées aux utilisateur Administrateurs de l'association

Titre : Réservé Admin
Texte du menu : Réservé Admin
Contenu * : Cette page est une simulation de ..... page réservée aux admin
Gabarit : Left simple navigation + 1 column
Alias de page : admin_0
Attribut supplémentaire 1 de la page : restricted

Nota :
Alias de page : admin_0 (ou admi=xxxx) ET Attribut supplémentaire 1 de la page : restricted
Cette page et le menu ne seront visible que par les membres du groupe admin qui seront ligués


I Utilisateurs/Groupes (Gestion des utilisateurs du site-FrontEndUsers)

1- Créer un groupe dans l'onglet groupe / Ajouter un groupe
- Nom : admin Description : les administrateurs de l'association
ET cocher -> Statut du champ (requis sauf civilit) + Demande lors de la récupération de l'identifiant
comme ci dessus


2- Créer utilisateurs dans l'onglet Utilisateurs
Ajouter un utilisateur
- Adresse email : admin@moi.com Mot de passe=adminpass Cocher Groupes "admin" ET "Enregistrés" à droite
faire Suivant et remplir les informations
ATTENTION bien cocher Cocher Groupes "admin" ET "Enregistrés". Sinon aucun menus réservés et admin sera visible !

J Tester ....


je me logue ...
le lien vers "Réservé Admin" est NON visible

login2
Et je peux voir la page Accès Restreint et la page Réservé Admin

page_admin1


Télécharger la page au format PDF (500 Ko) "229"


Document http://jc.etiemble.free.fr/abc/ JCE - version 2015-03-20-0 CC_licence




Page précédente : Github/Gitorious
Page suivante : Menu images