Les multiples possibilités du #LOGIN_PUBLIC

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Comment utiliser le #LOGIN_PUBLIC pour offrir des options aux utilisateurs authentifiés

D’après la documentation officielle, le #LOGIN_PUBLIC a été mis en place pour les forums sur abonnement. Depuis, cette option a souvent été assimilée à un moyen de restreindre l’accès à certaines parties “publiques” du contenu d’un site.

L’utilisation qui sera présentée ici est totalement différente et a eu comme point de départ la possibilité d’offrir des services à des utilisateurs authentifiés. C’est vrai, le fait de s’enregistrer permet au webmestre de suivre un peu ce qui se passe, mais il y a aussi l’autre aspect qui donne la possibilité de conserver certaines données dans les tables, restituées à leur auteur, sur demande.

Le test d’authentification est très bien expliqué dans la section formulaires de la documentation de SPIP, en particulier pour le test sur la variable $auteur_session.

Voyons un exemple concret. Dans mon cas, il s’agir d’un site universitaire qui offre des outils en complément du polycopié et des notes de cours. Un étudiant authentifié peut annoter les pages du cours (des articles au sens de SPIP), il peut se constituer son espace personnel avec des articles favoris, lui permettant d’accéder dès sa connexion à une sélection de quelques articles sur les centaines qui sont disponibles. C’est une troisième option qui fera l’objet du tutorial.

Nous voulons mettre en place un système qui permet aux étudiants d’accéder à une série de sujets d’examens, dits de rédaction courte.
L’ensemble des sujets appartiennent à une rubrique spéciale, disons la no 13. Le sujet est dans le titre, l’énoncé dans le texte et la réponse attendue dans le chapo. Les liens sont accessibles sur l’espace personnel du visiteur. Une boucle (ARTICLES)(id_rubrique=13) donne la liste les sujets, avec un lien répondre qui n’est que le forum attaché à l’article. Vous l’avez compris, c’est le fonctionnement classique du forum sur abonnement, détourné pour simuler un examen.

Sur cette page de contrôle, une requête SQL teste en permanence dans la table spip_forum, l’existence de message posté par l’auteur_session et correspondant à l’article (sujet) en cours. S’il existe une réponse, le texte vient s’afficher sous l’énoncé et ce pour chaque sujet. Si les mêmes conditions sont réunies, un lien “Voir la réponse” permet d’accéder à la réponse type dans une fenêtre popup.

Ces pages contiennent un peu de SPIP, aussi du php et du SQL. En voici un extrait :

 
((<BOUCLE_cc(ARTICLES){id_rubrique=13}{id_article!=23}{par num surtitre}>
	<div style="float:left;width:auto;"><span class="textegras"><a name="art#ID_ARTICLE">#TITRE</a></span><a href="forum.php3?#PARAMETRES_FORUM&choix_div=control" class="admin"> 
		<img src="ecrire/img_pack/icon_latest_reply.gif" width="24" height="18" align="absmiddle" border="0" hspace ="3">R&eacute;pondre</a></div>
		<div style="float:right;clear:right;width:20px;"><a href="#Top"><img src="biopics/haut.png" border="0" title="Haut de la page"></a></div>
		<div class="petitexte" style="clear:both">[(#TEXTE)]</div>

<?	
		// requête SQL : extrait la ligne de la table spip_forum correspondant à l utilisateur connecté
		// et à l article de la boucle
		$query = "SELECT * FROM spip_forum WHERE id_article = '#ID_ARTICLE' AND auteur = '$nom_user'";
		// exécute la requête
		$result = spip_query($query);
	if (spip_num_rows($result) != 0) {
?>
		<a href="response.php3id_article=#ID_ARTICLE" class="texte">Voir la correction</a>
<?		while ($row=spip_fetch_array($result)){
		$texte=$row[texte];
		$auteur=$row[auteur];
		$statut=$row[statut];
		print ("<div class=\"notes\"><font color=\"red\"><li><strong>Ma réponse : </strong>$texte</li></font></div><br>");
			}
	}
 ?>
 <hr size=1>
</BOUCLE_cc>))

On se retrouve donc avec des contributions des étudiants qui répondent à des sujets rédactionnels, qui peuvent comparer leur réponse avec celle qui est attendue.

Vous pouvez voir l’exemple du fonctionnement sur la page de mon site,
en choisissant l’option Contrôle continu. Deux améliorations ont été apportées depuis :
-  Pour chaque sujet il y a des mots-clés définis par l’examinateur, dont la présence est recherchée dans le texte de la réponse. S’ils figurent ils sont surlignés. Sinon, ils sont listés comme absents.
-  L’examinateur, qui a des droits d’administrateur, peut répondre au forum de l’article (id_parent). De cette façon, l’étudiant peut disposer de remarques personnalisées sur sa réponse.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom