Carnet Wiki

Ma-Premiere-Application-SPIP-3

Version 6 — Mars 2012 YannX

Pour ré-organiser le fonctionnement de son etablissement, ma moman doit refaire et distribuer des fiches « métier », pour l’ensemble des intervenants.

Commençant à réfléchir au problème, nous l’avons très vite modélisé, puis maquetté, et un prototype opérationnel était disponible en moins de trois heures...

Cette expérience nous a tellement surpris, qu’il m’a paru interessant de vous faire découvrir un autre usage de SPIP, d’autant qu’il met en oeuvre plusieurs facilités méconnues de spip

Mots -clés : secteurs et variantes, articles virtuels, mots-clés et groupes pièces jointes, boucles et récursivité, ré-emploi de noisettes, paramètres par défaut, critères optionnels, surcharge de formulaires, mots sur mots...

Analyse de la structuration des données

Commençons par analyser le contenu à gérer[Nous n’avons pas effectué de modélisation Merise par un MCD, mais vous devinerez sans doute le schéma possible...]] : la fiche Metier se compose par sélection de plusieurs Taches et Activités, une Activité étant définie comme regroupant plusieurs Activités ou Taches élémentaires.
Il s’agit donc de descriptions textuelles libres (articles rubriques),qui seront communes au cadre d’emplois de l’etablissement, valables pour toutes les fiches qui seront définies ou modifiées ulterieurement.

Mais ces fiches font aussi appel à des Savoirs, savoir-etre ou savoir-faire, à choisir dans des listes de mots-expressions : dans chacun de ces deux groupes de mots, qui recouvrent des notions différentes, il peut y en avoir jusqu’à une cinquantaine ; on pense immédiatement à gérer ces éléments avec la gestion avancée des groupes de mots-clés, souvent oubliés dans SPIP.

Enfin, on voudrait définir les fiches Métiers par type (emploi sanitaire, administratif, routier...), en leur adjoignant l’utilisation de plusieurs activités et taches, autour d’une Mission Principale : de la même façon qu’un mot-clé établit un lien de la fiche avec un savoir, le lien d’une fiche avec ses activités (et taches associées), sera marqué par un mot-clé portant sur les rubriques (et/ou articles) : ceci demande simplement de créer un mot-clé marqueur associé à chaque métier [1], que nous devrons ensuite associer à chaque enregistrement à adjoindre à la fiche Metier.

Saisir des structures de données

Précisons que l’ensemble des manipulations ci-après a été réalisé par l’interface privée du nouveau SPIP3 sans aucune modification...
Les premières pages écrites sur le nouveau site [2] n’étaient que des articles traditionnels, mis dans une première rubrique, nommée Documentation, prévue pour faciliter la réflexion collaborative : ce n’est qu’après que nous sommes passés à la modélisation d’un prototype opérationnel.

La gestion des Activités va s’élaborer dans un Secteur dédié : créons à la racine du site (le libellé correspondant n’apparait plus ?) une nouvelle rubrique, àl’interieur de laquelle sont immédiatement générées trois activités (leurs TITREs sont ecrits en Majsucule, de façon à mieux voir ce qui se passe, tant au niveau des données [3]que pour distinguer des détails pour l’utilisatrice.

Partant du principe que les Taches sont élémentaires, et qu’elle peuvent donner lieu à des détails de procédure, et d’outillage, assez complexe, nous créerons des Articles pour chaque tache identifiée : ceux-ci sont mis (et publiés immédiatement) dans chacune des trois activités saisies plus haut.

Comme une activité semble trop complexe, on la décompose en sous-activités, et d’ailleurs récursivement car même cette démarche connexe est à structurer en plusieurs activités de domaines différents ; à cette occasion, apparait la nécessite de ré-organiser les activités, par domaine d’abord, par catégorie-métier ensuite.
Après création de nouvelles têtes de chapitre dans le Secteur des Activités, l’interface privée permet facilement de modifier la rubrique de rattachement pour la descendre sous la tête de chapitre correspondante.

Regardons un peu ce qui a été saisi : c’est l’affichage traditionnel du Plan du site, et c’est l’occasion pour ma moman de découvrir la puissance des boucles récursives dans SPIP...
Avec toute notre catégorisation des activités et sous-activités, par activités types dans le secteur, visualiser les TITREs et ID de nos activités , sous-activités , sous-sous ..... sous-sous-activités, avec les taches qui y sont détaillées à tout niveau serait bien agréable : nous avons expurgé quelques enrichissements de style CSS, de la traditionnelle boucle[spippourlesnuls.fr/?Entre-rubrique-et-article,156" class="spip_out" rel="external">Pour une première approche de cette boucle récursive [Entre rubrique et article, voyez les [Boucles Récursives->http://www.spip.net/fr_article914.html] de la documentation officielle SPIP.]] plan (limité au secteur n°7 des Activités) ci-dessous, avec un paramètre par défaut, qui permettra ultérieurement de limiter l’édition à un seul domaine d’activité partiel.

<BOUCLE_depart(RUBRIQUES){id_parent = #ENV{id_rubrique,7}}>
<h2>#ID_RUBRIQUE. #TITRE   (# ID_SECTEUR)&lt;/h2 > 
 &lt;code  class="spip ">
 &lt;BOUCLE_depart(RUBRIQUES){id_parent  =  # ENV{id_rubrique,7 }}>
 <BOUCLE_rubriques(RUBRIQUES){id_parent}{tout}> 
	<li><strong><a href="#URL_RUBRIQUE"  [ title="(#DESCRIPTIF|supprimer_tags|attribut_html)"] >#TITRE*</a>
		</strong> [#ID_RUBRIQUE] &lt;span  class="rge">[#ID_RUBRIQUE]   &lt;/span >
						 :


<B_articles>
	   <ul>
	<BOUCLE_articles(ARTICLES) {id_rubrique} {tout}>
			<li>&lt;a href="#URL_ARTICLE"  
                               [title="(#DESCRIPTIF|supprimer_tags|attribut_html)"] >#TITRE*&lt;/a > 
                               #TITRE*&lt;/a >  &lt;span  class="violt ">   (#ID_ARTICLE) 
			&lt;/span > 
									 </li>
	</BOUCLE_articles>
		</ul>
	&lt;/B_articles>
							 &lt;BOUCLE_sous_rubriques(BOUCLE_rubriques) > &lt;/BOUCLE_sous_rubriques >


<BOUCLE_sous_rubriques(BOUCLE_rubriques)></BOUCLE_sous_rubriques> 
       [(#REM)     ######################################################]


</li>
       </BOUCLE_rubriques>
	&lt;/ul >
	 &lt;/B_rubriques > 


</BOUCLE_depart>


Nota Bene : Le parcours récursif souligné ci-dessus vous plait-il ?





Tiens, l'une des taches doit etre effectuée à l'identique dans deux activités qui n'ont rien a voir : acceptons les articles virtuels dans la configuration, et il suffit lors de la création dez l'article-tache dans la seconde Activité, d'indiquer le numéro du premier article dans le CHAPO, et le tour est joué.
_ Peut-etre que "polyHierarchie" dont on me disait du bien lundi, apporterait une autre solution, mais c'est de ce Dimanche que SPIP3[[SPIP3 est encore en phase de finalisation à cete date..]] accepte la mise-en-place automatique de quelques plugins immédiatement indispensables[[Crayons, Glossaire pour faciliter la définition d'un dictionnaire de données, Acces-Restreint car on pourrait vite avoir à protéger des  informations nominatives.]]... (voir ci-dessous).


Nous créons ensuite trois {{groupes de mots-clés}}, SAVOIR-etre et SAVOIR-faire, et le troisième pour enregistrer des SAVOIR-professionnels, que nous complétons avec une dizaine de mots ou de phrases chacun.


{{{Visualisation des codes}}}
Le problème de tous ces mots-clés et de leurs groupes, c'est qu'il faut se souvenir des numéros d'<code>#ID_

affectés à la création, pour pouvoir afficher les mots affectés dans le groupe SAVOIR-faire [4].
Vite fait, une page -très classique- va nous afficher tous les mots-clés definis, rangés par groupes de mots, avec leur intitulé #TITRE, et le code d’identification associé : foin de la présentation, un simple ?page=mots et le tour est joué, par le fichier ci-dessous placé en ./squelette/mots.html

<h1>Tous les mots-clés </h1><a href="#URL_PAGE{groupes_mots}"></a>
<BOUCLE_groupes(GROUPES_MOTS){par titre}{id_groupe?}>
    <h2> [  #ID_GROUPE ] <a href="#URL_MOT">[(#TITRE)]</a> [: (#TEXTE)]</h2>
      <BOUCLE_mots(MOTS)'{id_groupe}>
         #ID_MOT <a href="#URL_MOT">[(#TITRE)]</a>
      </BOUCLE_mots>
</BOUCLE_groupes>

Utilisation des données

Les Métiers vont être définis comme articles dans un autre secteur (N°4), organisés selon une arborescence de filières par autant de sous-rubriques : pour afficher chaque Metier, on prépare une variante du squelette article [5].

En fait, il faut admettre que cela a pris l’après-midi, mais tout compris !
Un espace Web php5-MySQL etait disponible sur un serveur Apache local : l’occasion a paru intéressante de se lancer avec la prochaine version....

-  téléchargement et installation de spip_loader, modifié pour chargé SPIP3 beta deux,
-  début d’adjonction de quelques plugins : impossible avec cette version.
( la version téléchargée étant incomplète, une réponse rapide sur IRC nous oriente vers la SVN : ree-installée en-cours de travail toujourspar spip_loader, sans meme aller chercher le spip_loader_dev qui nous a été indiqué : probable qu’une version finalisée de SPIP3 sera vite proposée.. en tous cas j’espere !
-  redaction de quelques textes précisant les choses, en particulier posant le vocabulaire utilisé

Pouvoir utiliser les mots-clés sur les mots-clés étaitl’idée initiale conduisant à choisir totu de suite SPIP3 : manque de pot, l’investigation des menus montre une batterie impressionnante d’objets pour recevoir les mots-clés.... sauf (!) les mots-clés : qu’a cela ne tienne, utilisons var_mode=inclure dans l’interface privée, qui nous oriente vers groupe_mots_edit, plus spécifiquement le FORMULAIRE inc-choisir_groupesmots_tables_liées. Retour aux codes de SPIP (SPIP3 est écrit en formulaires CVT de SPIP) à la première exploration des répertoires de extensions, on repère mots, on trouve le formulaire concerné, c’est un squelette, et la simple boucle commence par deux filtres {cle!=spip_mots}{cle!=spip_groupes_mots} ; supprimons ces trente caractères dans une copie de ce fichier en ./squelettes/formulaires, et la surcharge de SPIP nous permet désormais de .... poser des mots-clés sur les mots clés ! Bingo [6]