Utiliser dans les pages publiques les formulaires CVT de l’espace privé

Les formulaires CVT de l’espace privé de SPIP sont aussi utilisables dans les squelettes publics. Ils permettent de créer ou de modifier des éléments comme les articles, les rubriques, etc.

  • Apparu en : SPIP 2.0

Ces formulaires sont construits à partir des fichiers disponibles dans le répertoire /prive/formulaires où, pour chaque formulaire, on dispose d’un couple de fichiers du type :

  • editer_xxx.html
  • editer_xxx.php

Pour plus d’informations sur le fonctionnement de ces balises lisez l’article Les formulaires CVT de SPIP.

Remarque : certains des formulaires présentés dans cet article utilisent le script /prive/javascript/layer.js, pensez à insérer celui-ci dans vos squelettes.

1 - FORMULAIRE_EDITER_ARTICLE

#FORMULAIRE_EDITER_ARTICLE{id_article, id_rubrique, retour, lier_trad}

Paramètres de la balise :

  • id_article détermine l’identifiant de l’article à modifier. S’il vaut « oui » le formulaire va créer un nouvel article.
  • id_rubrique détermine l’identifiant de la rubrique contenant l’article à éditer.
  • retour permet de définir l’URL vers laquelle l’utilisateur sera redirigé une fois le formulaire validé.
  • lier_trad permet d’indiquer que l’article créé est une traduction de celui passé dans le contexte.

2 - FORMULAIRE_EDITER_RUBRIQUE

#FORMULAIRE_EDITER_RUBRIQUE{id_rubrique, id_parent, retour, lier_trad}

Paramètres de la balise :

  • id_rubrique détermine l’identifiant de la rubrique à modifier. S’il vaut « oui » le formulaire va créer une nouvelle rubrique.
  • id_parent détermine l’identifiant de la rubrique contenant la rubrique à éditer.
  • retour permet de définir l’URL vers laquelle l’utilisateur sera redirigé une fois le formulaire validé.
  • lier_trad permet d’indiquer que la rubrique créée est une traduction de celle passée dans le contexte.

Par exemple, pour créer une rubrique depuis une page rubrique :

[(#FORMULAIRE_EDITER_RUBRIQUE{oui, #ID_RUBRIQUE, [(#SELF|parametre_url{id_rubrique, #ID_RUBRIQUE})]})]

3 - FORMULAIRE_EDITER_AUTEUR

#FORMULAIRE_EDITER_AUTEUR{id_auteur, retour, lier_id_article}

Paramètres de la balise :

  • id_auteur détermine l’identifiant de l’auteur à modifier. S’il vaut « oui » le formulaire va créer un nouvel auteur.
  • retour permet de définir l’URL vers laquelle l’utilisateur sera redirigé une fois le formulaire validé.
  • lier_id_article permet d’attacher l’auteur à un article lors de la création.

4 - FORMULAIRE_EDITER_GROUPE_MOT

#FORMULAIRE_EDITER_GROUPE_MOT{id_groupe, retour}

Paramètres de la balise :

  • id_groupe détermine l’identifiant du groupe de mots à modifier. S’il vaut « oui » le formulaire va créer un nouveau groupe.
  • retour permet de définir l’URL vers laquelle l’utilisateur sera redirigé une fois le formulaire validé.

5 - FORMULAIRE_EDITER_MOT

#FORMULAIRE_EDITER_MOT{id_mot, id_groupe, retour,  ajouter_id_article, table, table_id}

Paramètres de la balise :

  • id_mot détermine l’identifiant du mot à modifier. S’il vaut « oui » le formulaire va créer un nouveau mot.
  • id_groupe détermine l’identifiant du groupe contenant le mot à éditer.
  • retour permet de définir l’URL vers laquelle l’utilisateur sera redirigé une fois le formulaire validé.
  • ajouter_id_article permet d’attacher le mot à un objet lors de la création.
  • table permet d’indiquer le type d’objet auquel on va lier le mot lors de la création (« articles » pour un article).
  • table_id permet d’indiquer le nom du champ représentant l’id de l’objet auquel on va lier le mot lors de la création (« id_article » pour un article).

6 - FORMULAIRE_EDITER_SITE

#FORMULAIRE_EDITER_SITE{id_syndic, id_rubrique, retour, lier_trad}

Paramètres de la balise :

  • id_syndic détermine l’identifiant du site à modifier. S’il vaut « oui » le formulaire va créer un nouveau site.
  • id_rubrique détermine l’identifiant de la rubrique contenant le site à éditer.
  • retour permet de définir l’URL vers laquelle l’utilisateur sera redirigé une fois le formulaire validé.
  • lier_trad permet d’indiquer que le site créé est une traduction de celui passé dans le contexte.

7 - FORMULAIRE_EDITER_BREVE

#FORMULAIRE_EDITER_BREVE{id_breve, id_rubrique, retour, lier_trad}

Paramètres de la balise :

  • id_breve détermine l’identifiant de la brève à modifier. S’il vaut « oui » le formulaire va créer une nouvelle brève.
  • id_rubrique détermine l’identifiant de la rubrique contenant la brève à éditer.
  • retour permet de définir l’URL vers laquelle l’utilisateur sera redirigé une fois le formulaire validé.
  • lier_trad permet d’indiquer que la brève créée est une traduction de celle passée dans le contexte.

8 - Restreindre l’affichage des formulaires

Si les actions appelées lors du traitement du formulaire sont sécurisées par les mécanismes internes de SPIP, il est important de noter que ces formulaires sont accessibles à tout le monde à partir du moment où vous les placez dans un squelette public.

Pour restreindre l’affichage d’un formulaire dans un squelette vous pouvez utiliser les balises #AUTORISER ou #SESSION.

Par exemple, pour afficher un formulaire de création d’article uniquement aux administrateurs du site :

[(#SESSION{statut}|=={0minirezo}|oui)
	#FORMULAIRE_EDITER_ARTICLE{oui, #ID_RUBRIQUE}
]

 

9 - Personnalisation

Il est possible de personnaliser un formulaire par deux mécanismes :

Surcharge il faut créer une copie des fichiers…

  • editer_xxx.html
  • editer_xxx.php

…dans un répertoire /squelettes/formulaires/ et procéder aux changements voulus.

Attention toutefois : les formulaires ainsi surchargés seront désormais utilisés dans l’espace privé où ils remplaceront les originaux.

Pipeline : un pipeline permet de modifier le contenu du fichier editer_xxx.html ou le résultat par défaut des fonctions contenu dans editer_xxx.php de n’importe quel formulaire CVT.

C’est la méthode qu’il faut privilégier dans un plugin.

La fonction test_espace_prive() qui indique si l’on est dans l’espace privé ou pas peut aussi vous être utile.

10 - Voir aussi

Dans l’idée de personnaliser un formulaire existant, la lecture des trois articles suivants et plus particulièrement du paragraphe "Champs particuliers" vous sera très utile.

Sur Programmer.spip.net

puis au cas par cas…

Auteur b_b, Suske Publié le : Mis à jour : 14/07/23

Traductions : English, français, Nederlands