Montrer comment développer de nouveaux service-portails en créant de nouvelles actions. Dans ce document, nous allons créer :
Pour suivre ce document, il est conseillé d'avoir lu la documentation concernant la :
Pour créer un nouveau service-portail, il faut créer une nouvelle action. Cette action doit être enregistrée dans le fichier .app d'une application Dynacase. Il serait assez logique d'ajouter ces actions au fichier “WEBDESK/WEBDESK.app” mais ce fichier sera remplacé lors la prochaine mise à jour de Dynacase et nos actions seront perdues. Nous allons donc créer une nouvelle application “MONAPPLI” qui ne sera pas visible dans le menu général de Dynacase mais servira à accueillir nos actions.
Pour installer cette nouvelle application et ses service-portails, voici la procédure :
Une fois l'installation effectuée, vous allez retrouver le dossier “Nouveaux service-portails” sous la racine de “Dynacase Master” et les nouveaux service-portails seront disponibles sur le portail :
Nous allons maintenant décrire le fonctionnement de chaque service-portail
Voici à quoi ressemble notre premier service-portail :
Ce dernier ne sert pas à grand chose car il se contente d'afficher “Bonjour le monde”. Cependant il nous permet de décrire les fichiers nécessaires à son fonctionnement. Pour faire fonctionner ce service-portail, nous avons crée ou modifié les fichiers suivants :
Voici le contenu de ce fichier :
<?php
include_once('FDL/Lib.Dir.php');
function action1(&$action) {
header('Content-type: text/xml; charset=utf-8');
$action->lay->setEncoding("utf-8");
return;
}
?>
Remarques :
Voici le contenu de ce fichier :
<?xml version="1.0" encoding="UTF-8"?><freedomsvc><![CDATA[ <div> Bonjour le monde </div> ]]></freedomsvc>
Remarque : Le contenu à afficher dans le service-portail doit obligatoirement être mis à l'intérieur d'un “div”.
Cette action est enregistrée dans le fichier “MONAPPLI.app”. Voici l'extrait du fichier “MONAPPLI.app” décrivant l'action “Action1” :
array(
"name" =>"ACTION1",
"short_name" =>"Action n°1",
"acl" =>"ONEFAM_READ"
),
Pour finir, nous avons importé le document service-portail “Test action1” grâce au fichier OOo “monappli.ods”. Voici un extrait de ce fichier :
| Service Portail | <specid> | <fldid> | Title | Consultation | |
|---|---|---|---|---|---|
| ORDER | PORTAL_SERVICE | psvc_title | psvc_vurl | ||
| DOC | PORTAL_SERVICE | MONAPPLISP01 | MONAPPLIDIR | Test action1 | [CORE_BASEURL]app=MONAPPLI&action=ACTION1 |
Voici comment est paramétré ce service-portail :
Ajouter copie d'écran
Ce deuxième exemple montre comment modifier le fichier .php pour définir le contenu du fichier .xml. Ce fichier permet de :
Le fichier .php permet de définir le contenu des variables du fichier .xml avec la fonction “lay→set”
$action->lay->set("uptime" , strftime("%H:%M %d/%m/%Y", time()));
$action->lay->set("titre" , "Ceci est mon nouveau titre");
$action->lay->set("contenu", "Contenu de mon service-portail");
Les variables (texte entre crochet) seront remplacées par les données envoyées par le fichier .php
<?xml version="1.0" encoding="UTF-8"?><freedomsvc uptime="[uptime]" title="[titre]"><![CDATA[ <div> [contenu] </div> ]]></freedomsvc>
Cette action permet de récupérer avec la fonction “GetHttpVars” le titre indiqué dans le document service-portail pour ensuite l'afficher. Si le titre n'est pas défini, un titre par défaut est indiqué. Voici un extrait du fichier “action3.php” :
$title = GetHttpVars("title", "Ceci est mon titre par défaut");
$action->lay->set("titre" , $title);
Et voici comment est paramétré le document service-portail :
Le but de cette action est de montrer qu'il est possible d'utiliser n'importe quel code HTML dans le service-portail. Le fichier .php de cette action est le même que le précédent par contre, le fichier .xml est différent. Voici un extrait du fichier “action4.xml” :
<h1><img src="/Images/freeeye.gif">[titre]</h1> <b>[contenu]</b><br> <small>Dernière mise à jour le : [uptime]</small><br> <a href="http://www.dynacase.org">www.dynacase.org</a>
Cette action permet de récupérer et d'afficher la liste des familles sous forme de lien. Chaque lien permet de créer un document de la famille correspondante. Voici un extrait du fichier “action5.php” permettant de récupérer la liste des familles :
$dbaccess = getParam("FREEDOM_DB");
$tclass = GetClassesDoc($dbaccess, $action->user->id, 0, "TABLE");
foreach($tclass as $k => $v) {
$contenu[] = array ( "id" => $v["id"],
"title" => $v["title"] );
}
$action->lay->SetBlockData("contenu", $contenu);
Voici un extrait du fichier “action5.xml” permettant d'afficher la liste des familles :
[BLOCK contenu]
<a title="[title]"
href="[CORE_STANDURL]app=GENERIC&action=GENERIC_EDIT&classid=[id]"
target="_blank">[title]
</a></br>
[ENDBLOCK contenu]
Cette action montre comment ajouter une liste déroulante permettant de sélectionner la famille à créer. Voici un extrait du fichier “action6.php” permettant de récupérer la liste des familles pour alimenter le champ “SELECT” :
$dbaccess = getParam("FREEDOM_DB");
$query = new QueryDb($dbaccess,"DocFam");
$query->AddQuery("doctype='C'");
$query->order_by="lower(title)";
$result=$query->Query(0,0,"TABLE");
$fam[] = array ( "value" => 0, "sel" => "", "label" => "(Sélectionnez une
famille)" );
foreach($result as $k => $v) {
$fam[] = array ( "value" => $v["initid"],
"sel" => ($idfam==$v["id"] ? "selected" : ""),
"label" => $v["title"] );
}
$action->lay->SetBlockData("fam", $fam);
$creer=false;
if ($idfam>0) $creer=true;
$action->lay->set("creer", $creer);
$action->lay->set("idfam", $idfam);
Voici un extrait du fichier “action6.xml” pour afficher le SELECT et afficher le lien seulement si une famille a été sélectionnée :
<select name="idfam" style="width:70%;" onchange="submitService(event)">
[BLOCK fam]
<option value="[value]" [sel]>[label]
[ENDBLOCK fam]
</select>
[IF creer]
<a title="Créer"
href="[CORE_STANDURL]app=GENERIC&action=GENERIC_EDIT&classid=[idfam]"
target="_blank">Créer</a></br>
[ENDIF creer]
Ce service-portail permet comme le précédent de sélectionner une famille et d'afficher un lien pour pouvoir créer des documents de cette famille. Cependant ce service portail utilise deux actions. La première action permet d'afficher le service-portail et le deuxième permet de le configurer.
Le document service-portail doit indiquer l'action permettant de configurer le service-portail :