Valider e7c9aa7f rédigé par tcharlss's avatar tcharlss
Parcourir les fichiers

Menu ménage : logo en png aussi / description et readme révisés, compat 3.3,...

Menu ménage : logo en png aussi / description et readme révisés, compat 3.3, crédits déplacés dans le paquet.xml
parent 204c236e
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours

CREDITS.md

supprimé100644 → 0
+0 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
# Crédits

Icône : Made by [Freepik](https://www.flaticon.com/authors/freepik" title="Freepik) from [www.flaticon.com](https://www.flaticon.com/)
 No newline at end of file
+38 −29
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
# Plugin Tunnels

![](images/plugin-tunnels.svg)
![](images/plugin-tunnels-xx.svg)

> Un plugin pour implémenter facilement des tunnels

## Principe

Un tunnel est une série d’étapes à faire dans un ordre précis. C’est en  quelque sorte l’équivalent d’un formulaire multi-étapes, mais découpé en plusieurs  formulaires indépendants sur plusieurs pages. Il peut s’agir de tunnels pour passer une commande, pour s’abonner, etc.
Un tunnel est une série d’étapes à faire dans un ordre précis.
On peut avoir des tunnels pour passer une commande, pour souscrire à un abonnement, etc.

Ce plugin fournit un mécansime pour décrire les tunnels et leurs étapes, ainsi qu'un squelette pour l'affichage avec tous les automatismes nécessaires (menu de navigation, gestion des autorisations, redirections éventuelles, etc).
Typiquement, chaque page comporte un formulaire qui une fois validé mène à l’étape suivante.
Par analogie, on peut voir ça comme l’équivalent d’un formulaire multi-étapes, mais découpé en plusieurs  formulaires indépendants répartis sur plusieurs pages.

Ce plugin fournit un mécanisme pour décrire les tunnels et leurs étapes, ainsi qu'un squelette pour l'affichage avec tous les automatismes nécessaires (menu de navigation, gestion des autorisations, redirections éventuelles, etc).

L’implémentation d’un tunnel au moyen de ce plugin est normalisée et erelativement simple :

1. On crée un squelette pour chaque étape.
2. On décrit les tunnels et leurs étapes au moyen d’un pipeline.
3. On crée les autorisations pour chaque étape.
4. Enfin, il ne reste qu'à inclure un squelette générique sur la page souhaitée, et le tunnel est prêt, avec tous les mécanismes nécessaires : menu de navigation, vérifications des autorisations, etc. 

Les règles :

* Les étapes se font dans un ordre précis
* On peut revenir en arrière à tout moment
* Les étapes se font dans un ordre précis.
* On peut revenir en arrière à tout moment.
* Pour accéder à une étape, il faut avoir le droit d'accéder à toutes les étapes antérieures.
* Lorsqu'on essaie d'accéder à une étape interdite, on est redirigé vers la dernière étape autorisée
* Lorsqu'on essaie d'accéder à une étape interdite, on est redirigé vers la dernière étape autorisée.


## Mise en oeuvre
@@ -31,22 +42,24 @@ inclure
     |- muche.html
```

Dans ces squelettes, vous avez à disposition ces variables d'environnement :
Dans ces squelettes, vous avez à disposition ces variables denvironnement :

* tunnel : identifiant du tunnel
* etape : identifiant de l'étape
* etapes : tableau de toutes les étapes avec leurs titres et leurs URLs
* etape_precedente : identifiant de l'étape précédente
* etape_suivante : identifiant de l'étape suivante
* url_etape_suivante : URL de l'étape suivante
* url_etape_precedente : URL de l'étape précédente
| Paramètres | Fonction |
|----|----|
| `tunnel` | Identifiant du tunnel |
| `etape` | Identifiant de l'étape |
| `etapes` | Tableau de toutes les étapes avec leurs titres et leurs URLs |
| `etape_precedente` | Identifiant de l'étape précédente |
| `etape_suivante` | Identifiant de l'étape suivante |
| `url_etape_suivante` | URL de l'étape suivante |
| `url_etape_precedente` | URL de l'étape précédente |

La plus importante étant `url_etape_suivante` qu’il faut passer en paramètre aux différents formulaire, pour la redirection.
La plus importante étant `url_etape_suivante` qu’il faut passer en redirection des différents formulaires.

### 2) Déclarer les tunnels et leurs étapes

Les tunnels se déclarent au moyen du pipeline `decrire_tunnels`.
Celui-ci doit renvoyer un tableau avec l'identifiant du tunnel, son titre et la liste de ses étapes, sous la forme `nom du squelette => titre`.
Celui-ci doit renvoyer un tableau avec en clés les identifiants des tunnels, et des sous-tableau contenant leur titre et la liste des étapes, sous la forme `nom du squelette => titre`.

```php
array(
@@ -57,7 +70,7 @@ array(
			'muche' => 'Titre de l’étape Muche',
		),
	),
	'tunnelB' => array(...),
	'tunnelB' => array(),
);
```

@@ -84,7 +97,7 @@ Il suffit d'inclure un squelette en précisant l'identifiant du tunnel souhaité

## Exemple

Un exemple pour un tunnel de commande se reposant sur les plugins [Commandes](https://contrib.spip.net/Commandes-4527), [Paniers](https://plugins.spip.net/paniers.html), [Bank](http://contrib.spip.net/4627), et [Profils](https://contrib.spip.net/5124) pour les informations utilisateur.
Un exemple minimal pour un tunnel de commande se reposant sur les plugins [Commandes](https://contrib.spip.net/Commandes-4527), [Paniers](https://plugins.spip.net/paniers.html), [Bank](http://contrib.spip.net/4627), et [Profils](https://contrib.spip.net/5124) pour les informations utilisateur.

Il y aurait 3 étapes :

@@ -109,7 +122,9 @@ Il y aurait 3 étapes :
]

[(#REM) Pour les anonymes : connexion ou inscription ]
	<h2>S’inscrire</h2>
	#FORMULAIRE_INSCRIPTION{6forum, 0, #ENV{url_etape_suivante}}
	<h2>Déjà inscrit ? Se connecter</h2>
	#FORMULAIRE_LOGIN{#SELF}
]
```
@@ -159,20 +174,14 @@ function autoriser_tunnelcommandepanier_voir($faire, $quoi, $id, $qui, $options)
	return $autoriser;
}

// Profil : avoir une commande en cours
// Étape profil : il faut avoir une commande en cours en session ou dans la db.
// La commande est créée après validation du panier ou suite à la connexion/inscription.
function autoriser_tunnelabonnementabonnementprofil_voir($faire, $quoi, $id, $qui, $options) {
	include_spip('inc/session');
    $has_commande = sql_countsel(
    	'spip_commandes',
    	array(
    		'statut=' . sql_quote('encours'),
    		'id_auteur=' . intval($qui['id_auteur']),
    	)
    );
	$autoriser = $has_commande;
	$id_commande_encours = commandes_id_commande_encours_visiteur();
	$autoriser = ($id_commande_encours > 0);
	return $autoriser;
}

// Paiement : avoir mis à jour son profil
// Étape paiement : il faut avoir mis à jour son profil
// TODO
```
 No newline at end of file
+1,77 ko
Chargement de la diff d'image…
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 0 96 96" width="128"><path d="M64.875 26.25h-33.75a2.812 2.812 0 0 1-2.813-2.813V2.812A2.812 2.812 0 0 1 31.125 0h33.75a2.812 2.812 0 0 1 2.812 2.812v20.625a2.812 2.812 0 0 1-2.812 2.813zm0 0" fill="#8add50"/><path d="M64.875 61.125h-33.75a2.812 2.812 0 0 1-2.813-2.813V37.687a2.812 2.812 0 0 1 2.813-2.812h33.75a2.812 2.812 0 0 1 2.812 2.812v20.625a2.812 2.812 0 0 1-2.812 2.813zm0 0" fill="#feef55"/><path d="M64.875 96h-33.75a2.812 2.812 0 0 1-2.813-2.813V72.562a2.812 2.812 0 0 1 2.813-2.812h33.75a2.812 2.812 0 0 1 2.812 2.812v20.625A2.812 2.812 0 0 1 64.875 96zm0 0" fill="#ff5036"/><path d="M64.875 0H48v26.25h16.875a2.812 2.812 0 0 0 2.812-2.813V2.812A2.812 2.812 0 0 0 64.875 0zm0 0" fill="#68d31e"/><path d="M64.875 34.875H48v26.25h16.875a2.812 2.812 0 0 0 2.812-2.813V37.687a2.812 2.812 0 0 0-2.812-2.812zm0 0" fill="#fedc00"/><path d="M64.875 69.75H48V96h16.875a2.812 2.812 0 0 0 2.812-2.813V72.562a2.812 2.812 0 0 0-2.812-2.812zm0 0" fill="#e62300"/><path d="M85.687 14.625h-11.25a2.812 2.812 0 1 0 0 5.625h11.25a4.693 4.693 0 0 1 4.688 4.687v11.25a4.693 4.693 0 0 1-4.688 4.688h-4.46l2.699-2.699a2.811 2.811 0 1 0-3.977-3.977l-7.5 7.5a2.811 2.811 0 0 0 0 3.977l7.5 7.5c.549.55 1.269.824 1.988.824a2.811 2.811 0 0 0 1.989-4.801L81.228 46.5h4.46C91.373 46.5 96 41.874 96 36.187v-11.25c0-5.686-4.626-10.312-10.313-10.312zm0 0" fill="#46465a"/><path d="M16.051 69.074a2.811 2.811 0 1 0-3.977 3.977l2.698 2.699h-4.46a4.693 4.693 0 0 1-4.687-4.688v-11.25a4.693 4.693 0 0 1 4.687-4.687h11.25a2.812 2.812 0 1 0 0-5.625h-11.25C4.626 49.5 0 54.126 0 59.812v11.25c0 5.687 4.626 10.313 10.312 10.313h4.46l-2.698 2.699a2.811 2.811 0 1 0 3.977 3.977l7.5-7.5a2.811 2.811 0 0 0 0-3.977zm0 0" fill="#5a5a6e"/></svg>
 No newline at end of file

images/plugin-tunnels.svg

supprimé100644 → 0
+0 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<svg height="512pt" viewBox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg"><path d="m346 140h-180c-8.285156 0-15-6.714844-15-15v-110c0-8.285156 6.714844-15 15-15h180c8.285156 0 15 6.714844 15 15v110c0 8.285156-6.714844 15-15 15zm0 0" fill="#8add50"/><path d="m346 326h-180c-8.285156 0-15-6.714844-15-15v-110c0-8.285156 6.714844-15 15-15h180c8.285156 0 15 6.714844 15 15v110c0 8.285156-6.714844 15-15 15zm0 0" fill="#feef55"/><path d="m346 512h-180c-8.285156 0-15-6.714844-15-15v-110c0-8.285156 6.714844-15 15-15h180c8.285156 0 15 6.714844 15 15v110c0 8.285156-6.714844 15-15 15zm0 0" fill="#ff5036"/><path d="m346 0h-90v140h90c8.285156 0 15-6.714844 15-15v-110c0-8.285156-6.714844-15-15-15zm0 0" fill="#68d31e"/><path d="m346 186h-90v140h90c8.285156 0 15-6.714844 15-15v-110c0-8.285156-6.714844-15-15-15zm0 0" fill="#fedc00"/><path d="m346 372h-90v140h90c8.285156 0 15-6.714844 15-15v-110c0-8.285156-6.714844-15-15-15zm0 0" fill="#e62300"/><path d="m457 78h-60c-8.285156 0-15 6.714844-15 15s6.714844 15 15 15h60c13.785156 0 25 11.214844 25 25v60c0 13.785156-11.214844 25-25 25h-23.785156l14.390625-14.394531c5.859375-5.855469 5.859375-15.355469 0-21.210938-5.855469-5.859375-15.355469-5.859375-21.210938 0l-40 40c-5.859375 5.855469-5.859375 15.351563 0 21.210938l40 40c2.925781 2.929687 6.765625 4.394531 10.605469 4.394531s7.679688-1.464844 10.605469-4.394531c5.859375-5.855469 5.859375-15.355469 0-21.210938l-14.390625-14.394531h23.785156c30.328125 0 55-24.671875 55-55v-60c0-30.328125-24.671875-55-55-55zm0 0" fill="#46465a"/><path d="m85.605469 368.394531c-5.855469-5.859375-15.355469-5.859375-21.210938 0-5.859375 5.855469-5.859375 15.355469 0 21.210938l14.390625 14.394531h-23.785156c-13.785156 0-25-11.214844-25-25v-60c0-13.785156 11.214844-25 25-25h60c8.285156 0 15-6.714844 15-15s-6.714844-15-15-15h-60c-30.328125 0-55 24.671875-55 55v60c0 30.328125 24.671875 55 55 55h23.785156l-14.390625 14.394531c-5.859375 5.855469-5.859375 15.355469 0 21.210938 2.925781 2.929687 6.765625 4.394531 10.605469 4.394531s7.679688-1.464844 10.605469-4.394531l40-40c5.859375-5.855469 5.859375-15.355469 0-21.210938zm0 0" fill="#5a5a6e"/></svg>
 No newline at end of file
Chargement en cours