Proposition : Création d'une action permettant d'afficher les tags d'un document

Proposition : Création d'une action permettant d'afficher les tags d'un document

But de ce document

Le but de ce document est de créer une action permettant d'afficher les tags associés à un document.

Les tags sont stockés dans la table 'docutag' de la base 'freedom'. Par exemple, le tag 'VIEWED' donne la date et l'heure de la dernière consultation pour chaque document et pour chaque utilisateur.

Le but de cette action est donc d'afficher la liste de ces tags car à ce jour ces informations ne sont pas accessibles.

Installation de l'action

Enregistrez ce code dans le fichier “liste_tags.php” dans l'application de votre choix (ex : MONAPPLI) :

<?php
include_once('FDL/FDL_external.php');
 
function liste_tags(&$action) {
	$dbaccess=getParam("FREEDOM_DB");
	$docid=GetHttpVars("docid", 0);
	$doc=new_Doc($dbaccess,$docid);
	$ROWS=array();   
	if ($doc->isAlive()) {
		$err = $doc->control('view');
		if ($err=="") {
			$cnx=getDbid($dbaccess);
			$SQL = "select tag, uname, date from docutag where id=$docid ";
			$result   = pg_query($cnx, $SQL);
			$num_rows = pg_num_rows($result);
			$trodd=false; $lig=0; $tdodd=false;
			while ($row = pg_fetch_array($result)) {
				$ROWS[]=array(	"tag"=>$row[tag],
						"uname"=>$row[uname],
						"date"=>$row[date],
						"troddoreven"=>$trodd?"trodd":"treven");
				$trodd=!$trodd;
			}
		}
	}
	$action->lay->setBlockData("ROWS",$ROWS);  
	$action->lay->set("rsql_style", "standard1");
	$action->lay->set("title", "Liste des tags");
	$action->lay->set("titre", "Tags du document '$doc->title'");
}
 
?>

Voici le code à enregistrer dans le fichier “liste_tags.xml” et dans le dossier “Layout” de l'application de votre choix (ex : MONAPPLI) :

<html>
<head>
<title>[title]</title>
[CSS:REF]
<link rel="stylesheet" type="text/css" href="?sole=Y&app=FDL&action=FDL_CSS" >
<link rel="stylesheet" type="text/css" href="?sole=Y&&app=CORE&action=CORE_CSS&layout=FREEDOM:viewreport.css">
</head>
 
<body>
<h1>[titre]</h1>	
<table class="[rsql_style]" width="500px" cellspacing="0">
<thead>
	<tr><th align="left">Tag</th><th align="left">Nom</th><th align="left">Date</th></tr>
</thead>
 
<tbody >
[BLOCK ROWS]
	<tr class="[troddoreven]">
   		<td class="tdodd">[tag]</td>
   		<td class="tdodd">[uname]</td>
   		<td class="tdodd">[date]</td>
	</tr>
[ENDBLOCK ROWS]
</tbody>
</table>
</body>
</html>

Pour finir, il faut déclarer l'action dans le fichier .app de votre application :

array(
     "name"         => "LISTE_TAGS",
     "short_name"   => "Liste des tags d'un document",
     "acl"          => ""
)

Remarque : Il ne faut pas oublier d'actualiser l'application pour prendre en compte cette nouvelle action.

Résultat

Cette URL vous permet de tester cette action :

Voici le résultat :

Remarque : Vous pouvez ajouter un menu sur l'une de vos familles pour accèder à cette action plus facilement :

contribution/cookbook/liste_tags.txt · Dernière modification: 09/03/2010 11:55 (édition externe)