Guide d'utilisation de CMS Made Simple   
L'objectif de ce document est de présenter les fonctionnalité essentielles de CMS Made Simple, le système de gestion de contenu qui sert de plate-forme aux Presses de la République.

Préambule
Afin d'écrire une page sur le site internet, il est nécessaire de disposer d'un compte utilisateur. Grâce aux nuits blanches de , les Presses de la République disposent d'un système de gestion des utilisateurs unifié, permettant aux différentes applications web hébergées par Nautia de partager une seule et même base d'authentification. Les explications techniques concernant cette base feront l'objet d'une autre publication.
Cependant, l'écriture de pages web est réservée aux citoyens nautiens. Ainsi, si vous êtes citoyen nautien et que vous ne disposez pas d'un compte vous permettant de vous connecter sur l'interface d'administration, faites une demande de compte à .

Du bon usage de l'éditeur
WYSIWYG, ou comment faire n'importe quoi avec un outil formidable
Avant d'entrer dans les détails de l'éditeur, commençons par donner quelques règles de bon usage. Il convient pour celà d'expliquer en quoi consiste ce fameux éditeur. Avant CMS Made Simple, les Nautiens utilisaient le système de publication XML, et avaient besoin d'une connaissance minimale du HTML pour écrire des pages. Avec CMSMS, tout ceci fait partie du passé : ce système dipose d'un éditeur WYSIWYG (What You See Is What You Get), c'est-à-dire un éditeur graphique imitant les fonctionnalités de votre traitement de texte favori (non , Emacs n'est pas un traitement de texte !).
Comme tout éditeur WYSIWYG, il est extrêment pratique, mais permet aussi de faire tout et n'importe quoi. Aussi cette partie à pour objectif de donner quelques règles de bon usage, permettant de conserver une cohérence graphique entre les pages.

Les styles
La première et principale recommandation, c'est d'utiliser au maximum les styles. Vous constaterez que l'éditeur dispose d'une barre d'outils permettant de choisir style, mais aussi format, police, taille et autres réjouissances classiques telles que le gras, l'italique, ... La principale recommandation, et la plus importante à comprendre, c'est celle-ci : tant que vous le pouvez, utilisez un style prédéfini avant de commencer à utiliser les formats et autres changement de taille. Les mauvaises langues diront que dans ma phrase précédente, je viens de faire l'inverse de ce que j'ai dis en appliquant le style gras sur une partie de ma phrase. Oui et non : le gras permet ici de trouver une solution élégante au fait qu'un style s'applique, en règle générale, sur un paragraphe. Changer de style sur une partie d'un paragraphe n'est possible que si le style a été conçu pour ne pas s'appliquer précisemment à un paragraphe. Le gras était donc dans ce cas parfaitement légitime.

Réclamer de nouveaux styles
A l'heure où j'écris ces lignes, seuls trois styles sont définis : titre, soustitre et intro. Il existe un style non disponible dans l'éditeur, appelé auteur, qui sert pour les signatures de bas de page. Il est clair que ce nombre de style est bien insuffisant pour rendre compte du nombre de situations différentes auxquelles le nautien motivé devra faire face. Ainsi, je vois d'ici me demander de lui créer un style pour écrire des requêtes SQL, pour son musée des requêtes SQL.
Il aura parfaitement raison ! En l'occurrence, à chaque fois que vous verrez que vous voulez changer une police, sa taille, son alignement, et que cette opération se reproduit plusieurs fois, il y a une très forte chance pour que vous ayez besoin d'un nouveau style. Demandez-le !

Je n'arrive pas à virer ce p@&~#!! de style !
Il vous arrivera sûrement (n'est-ce pas ), comme ça m'est arrivé, de ne pas parvenir à supprimer un style appliqué à un paragraphe. Dans ce cas, n'ayez pas peur d'avoir recours à l'exploitation du code source (HTML) de la page. Il est disponible en cliquant sur le bouton code source. Essayez de supprimer les balises <div>, <span> ou <font> qui entourent votre texte (n'oubliez pas les balises fermantes). L'autre solution, élégante mais sans garantie (en général ça fonctionne), c'est de couper le texte (CTRL+X), puis d'utiliser le bouton coller comme texte (coller comme texte) en s'assurant de n'avoir aucun style ou police de défini.

Je suis prêt, je veux créer une page
Une page perdue est une page morte
Le CMS est un formidable outil, qui permet de créer facilement des pages web. Cette facilité peut nous conduire à des travers communs : ne pas organiser ses publications. C'est une grave erreur : la création d'une page web doit commencer par la connaissance de l'endroit où elle doit se situer. L'administration du CMS permet de voir la hiérarchie des pages du site. Si vous ne savez pas précisemment où placer une page, c'est que vous devez vous arrêter là, et commencer par trouver la réponse à cette simple question. Si vous ne le faites pas, vous rencontrerez un sérieux problème : votre page sera probablement introuvable...

Comment créer une nouvelle page ?

Voici donc la question tant attendue. Il faut d'abord s'être connecté sur l'interface d'administration du CMS. Dès lors, vous disposez de deux solutions :
Pour être plus précis, dans le premier cas, vous aurez accès à deux icônes :
Si vous choisissez la seconde solution, vous devrez choisir vous même où placer la page dans la hiérarchie, en choisissant dans la liste déroulante indiquée "Parent:". Il est clair que la première solution est la plus simple.

Renseigner les informations de création de page
Lorsque vous créez ou modifiez une page, il n'y a pas que le simple éditeur à remplir. Vous devez impérativement remplir un certain nombre de champs afin de garantir que votre page est correctement renseignée. Voici la description des principaux champs à renseigner :
D'autres champs sont disponibles dans l'onglet "options". L'une de ces options est particulièrement importante lorsque vous créez une page (l'alias). Les principales options que vous aurez à manipuler :
Les autres options n'ont pas d'intérêt dans la grande majorité des cas.

Types de contenus
Les types de documents suivant sont disponibles :

Je veux aller plus loin
Créer des liens entre les pages
Un des intérêts d'un site internet, c'est quand même de pouvoir lier les pages entre elles. J'oserai même affirmer que c'est indispensable : plus votre page aura de liens, plus être paraîtra intégrée à son environnement. Le CMS permet de gérer ces liens de deux façons :
Le premier type de lien convient parfaitement à tous les liens externes au site de Nautia. Pour tous les autres liens, internes, il est rigoureusement indispensable d'utiliser le deuxième type. Ce dernier permettra en effet, d'ici peu, de gérer les renommages de pages (alias), et donc de changer automatiquement tous les liens dans les autres pages lorsqu'un alias est modifié (travaux en cours).
Les liens externes peuvent être créés en sélectionnant le texte sur lequel portera le lien, et en cliquant sur l'icône Lien. Les liens internes peuvent être créés en cliquant sur l'icône cmscontent(notez qu'il ne faut pas, dans ce cas, sélectionner de texte). Il suffit alors de se laisser guider par l'interface graphique.

Créer un lien interne à la main
Je vous ai parlé de la notion de fonction interne au CMS. Rien ne vous empêche d'écrire à la main les appels à cette fonction. Si vous connaissez l'alias d'une page, celà sera même probablement plus rapide que d'aller sélectionner la page à lier via l'interface graphique précédemment citée.

Pour se faire, vous devez écrire votre lien selon le modèle suivant :

{cms_selflink page="alias_de_la_page_destination" text="texte du lien" target="cible html"}

Les paramètres de la fonction cms_selflink sont les suivants :
Ainsi, {cms_selflink page="droit" texte="Exemple de lien vers la section Droit du site"} devient Droit Nautien
Simple, non ?

Et les personnes ? Et les fonctions ?
Je vous vois venir : vous avez remarqué, notamment sur cette même page, que certains termes étaient surlignés, et renvoyaient vers des personnes. C'est là encore l'un des avantages de ce CMS : il permet de créer ses propres fonctions internes (tags), dont la liste est affichée ici. Nous avons donc reproduit sous CMS Made Simple les mécanismes qui avaient été écrits sur le précédent système des Presses de la République. En l'occurrence, deux fonctions sont intéressantes :
Le comportement de ces fonctions est défini par du code PHP. Il est donc entièrement paramétrable.

Créer un lien de type personne
Des exemples valant mieux que de longs discours, voici comment utiliser cette fonction :

Exemples d'utilisation du tag rfvpersonne
Code Résulat produit
{rfvpersonne from="Duclos"} est le fondateur de Nautia est le fondateur de Nautia
M. {rfvpersonne from="Duclos" show="nom"} est le fondateur de Nautia M. est le fondateur de Nautia
{rfvpersonne from="Duclos" show="prenom"} est le fondateur de Nautia est le fondateur de Nautia
Les citoyens vivants de Nautia sont :
{rfvpersonne show="liste" etat="vivant" nation="rfv"}
Les citoyens vivants de Nautia sont :

L'avantage de cette méthode est qu'il est possible de changer les données des personnes sur toutes les pages en changeant simplement la description de la personne en base de données (une table SQL a été créee spécifiquement pour celà, et une interface web est en cours d'élaboration pour pouvoir la modifier). Ainsi, changer l'adresse e-mail d'un nautien dans la base permet de la modifer instantannément sur l'ensemble du site !

Créer un lien de type fonction
De la même façon, les liens de type fonction permettent de modifer dynamiquement, sur l'ensemble du site, les personnes et les fonctions associées. Le meilleur exemple, c'est le Consul. Le Consul est une fonction, associée à une personne. En l'occurrence, à ce jour, le Consul est . Les fonctions ne se limitent pas aux personnes, elles servent aussi à décrire les entités, par exemple le Consulat.
A la différence des personnes, la liste des fonctions n'est pas encore stockée en base de données, dans l'attente des discussions sur le sujet à la commission RFVNet. Les discussions portent sur la modélisation, chère à et , mais que a du mal à concevoir.
Bref, voici là encore quelques exemples d'utilisation :

Exemples d'utilisation du tag rfvfonction
Code Résulat produit
Le meilleur exemple, c'est le {rfvfonction from="consul"}. Le meilleur exemple, c'est le Consul.
A ce jour, le {rfvfonction from="consul"} est {rfvfonction from="consul" show="nom"}. A ce jour, le Consul est .
{rfvpersonne from="Duclos" show="prenom"} est le fondateur de Nautia est le fondateur de Nautia
La RFV de Nautia est une démocratie directe, où chaque citoyen est aussi un membre du {rfvfonction show="entite" from="parlement"}, et dont le chef de l'état est appelé {rfvfonction from="consul"} (travaillant au {rfvfonction show="entite" from="consul"}). Lla RFV de Nautia est une démocratie directe, où chaque citoyen est aussi un membre du Parlement, et dont le chef de l'état est appelé Consul (travaillant au Consulat).

Créer ses propres fonctions
CMS Made Simple permet donc de créer ses propres fonctions. Le plus simple, pour commencer, consiste à créer des tags utilisateur, qui sont des fonctions personnalisées ne prenant pas de paramètres. Ils présentent l'avantage de pouvoir être créés directement via l'interface d'administration, mais ne peuvent donc pas posséder de paramètres. Ils répondent donc uniquement à des problèmes simples. La conception de ces tags requiert généralement la connaissance du CMS, mais surtout de PHP. Certains tags peuvent en effet être totalement indépendants du CMS (par exemple, un tag {hello_world} pourrait ne contenir que le code suivant : echo "Hello World !";
Si les tags personnalisés ne vous suffisent pas, il y a de grandes chances pour que vous ayez besoin d'écrire une fonction PHP, ce qui dépasse le cadre de ce tutoriel.
Voici donc, à titre informatif, le contenu du tag personnalisé qui affiche la signature que vous verrez en bas de ce document. En espérant que ce tutoriel vous ait été utile !

global $gCms;
$hm = &$gCms->GetHierarchyManager();
$thispage = $gCms->variables['content_id'];
$node = $hm->sureGetNodeById($thispage);
if (isset($node)) {
$page = $node->getContent();
$owner = $page->Owner();
$date = $page->mCreationDate;
$date = strftime("%e %B %Y", strtotime($date));
echo "Le $date, ";
if (isset($owner) && ($owner!=7)) {
   $user = UserOperations::LoadUserById($owner);
   echo "$user->firstname $user->lastname<br/>";
   $mdate = $page->mModifiedDate;
   $mdate = strftime("%e %B %Y", strtotime($mdate));
   if (($mdate!="") && ($date!=$mdate)) {
       echo "Derni&egrave;re modification ";
       echo "le $mdate";
       $owner = $page->LastModifiedBy();
       if (isset($owner) && ($owner!=7)) {
          $user = UserOperations::LoadUserById($owner);
          echo " par $user->firstname $user->lastname<br/>";
       }      
   }
}


La balise {literal}

Vous remarquerez que j'ai réussi à écrire dans cette page le code des fonctions sans qu'elles ne soient interprétées par le moteur. Pour se faire, il faut utiliser la balise spéciale {literal}. Si vous ne le faites pas, vous rencontrerez deux cas :
Votre code source devra donc être entouré par les balises {literal} et {/literal} pour être affiché correctement !

<< Retour à Le site web de Nautia : L'administration du site web et son fonctionnement
Le 9 mars 2006, Cédric Petitchamp
Dernière modification le 10 mars 2006 par Cédric Petitchamp
Les Presses de la République sont motorisées par CMS Made Simple