New: Nouvelle regle de nommage des triggers pour rendre dev plus simple

This commit is contained in:
Laurent Destailleur 2007-12-27 21:18:24 +00:00
parent a7a3f52788
commit 696eb14515
17 changed files with 215 additions and 162 deletions

View File

@ -39,6 +39,13 @@ print_fiche_titre("Dolibarr",'','setup');
print "<br>\n";
print $langs->trans("Version").':';
print '<ul>';
print '<li>'.DOL_VERSION.'</li>';
print '</ul>';
print "<br>\n";
print $langs->trans("DolibarrLicense").':';
print '<ul>';
print '<li>GNU/GPL</li>';
@ -108,7 +115,7 @@ if (eregi('^fr_',$langs->getDefaultLang()))
print 'Vente / Support';
print '<ul>';
print '<li>';
print 'Contactez Rodolphe Quiédeville sur <a target="blank" href="http://www.dolibarr.com/">www.dolibarr.com</a>';
print 'Contactez Rodolphe Quiédeville sur <a target="blank" href="http://rodolphe.quiedeville.org">www.dolibarr.com</a>';
print '</li>';
print '</ul>';
}

View File

@ -25,6 +25,7 @@
*/
require("./pre.inc.php");
include_once(DOL_DOCUMENT_ROOT ."/interfaces.class.php");
if (!$user->admin)
accessforbidden();
@ -61,7 +62,7 @@ function Activate($value)
if ($modName)
{
$file = $modName . ".class.php";
include_once("../includes/modules/$file");
include_once("../includes/modules/".$file);
$objMod = new $modName($db);
$objMod->init();
}
@ -88,7 +89,7 @@ function UnActivate($value)
if ($modName)
{
$file = $modName . ".class.php";
include_once("../includes/modules/$file");
include_once("../includes/modules/".$file);
$objMod = new $modName($db);
$objMod->remove();
}
@ -107,24 +108,26 @@ function UnActivate($value)
llxHeader("","");
$html = new Form($db);
print_fiche_titre($langs->trans("TriggersAvailable"),'','setup');
print "<br>\n";
print $langs->trans("TriggersDesc")."<br>";
print "<br>\n";
print "<table class=\"noborder\" width=\"100%\">\n";
print "<tr class=\"liste_titre\">\n";
print " <td colspan=\"2\">".$langs->trans("File")."</td>\n";
print " <td>".$langs->trans("Description")."</td>\n";
//print " <td>".$langs->trans("Description")."</td>\n";
print " <td align=\"center\">".$langs->trans("Version")."</td>\n";
print " <td align=\"center\">".$langs->trans("Activated")."</td>\n";
//print " <td align=\"center\">".$langs->trans("Action")."</td>\n";
print " <td align=\"center\">".$langs->trans("Active")."</td>\n";
print " <td align=\"center\">&nbsp;</td>\n";
print "</tr>\n";
$dir = DOL_DOCUMENT_ROOT . "/includes/triggers/";
// Define dir directory
$interfaces=new Interfaces($db);
$dir = $interfaces->dir;
$handle=opendir($dir);
$files = array();
@ -133,39 +136,38 @@ $orders = array();
$i = 0;
while (($file = readdir($handle))!==false)
{
if (is_readable($dir.$file) && ereg('^interface_(.*)\.class\.php',$file,$reg))
if (is_readable($dir.'/'.$file) && ereg('^interface_([^_]+)_(.+)\.class\.php',$file,$reg))
{
$modName = 'Interface'.ucfirst($reg[1]);
if ($modName)
{
if (in_array($modName,$modules))
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").' : '.$langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/includes/triggers/").'</div>';
$objMod = new $modName($db);
$modules[$i] = $modName;
$files[$i] = $file;
$orders[$i] = "$objMod->family"; // Tri par famille
$i++;
}
else
{
include_once($dir.$file);
$objMod = new $modName($db);
$modules[$i] = $modName;
$files[$i] = $file;
$orders[$i] = "$objMod->family"; // Tri par famille
$i++;
}
}
$modName = 'Interface'.ucfirst($reg[2]);
//print "file=$file"; print "modName=$modName"; exit;
if (in_array($modName,$modules))
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").' : '.$langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/includes/triggers/").'</div>';
$objMod = new $modName($db);
$modules[$i] = $modName;
$files[$i] = $file;
$orders[$i] = $objMod->family; // Tri par famille
$i++;
}
else
{
include_once($dir.'/'.$file);
$objMod = new $modName($db);
$modules[$i] = $modName;
$files[$i] = $file;
$orders[$i] = $objMod->family; // Tri par famille
$i++;
}
}
}
asort($orders);
$var=True;
// Loop on each trigger
foreach ($orders as $key => $value)
{
$tab=split('_',$value);
@ -180,46 +182,61 @@ foreach ($orders as $key => $value)
$const_name = $objMod->const_name;
$var=!$var;
// Define disabledbyname and disabledbymodule
$disabledbyname=0;
$disabledbymodule=1;
$module='';
if (eregi('NORUN$',$files[$key])) $disabledbyname=1;
if (eregi('^interface_([^_]+)_(.+)\.class\.php',$files[$key],$reg))
{
// Check if trigger file is for a particular module
$module=eregi_replace('^mod','',$reg[1]);
$constparam='MAIN_MODULE_'.strtoupper($module);
if (strtolower($reg[1]) == 'all') $disabledbymodule=0;
else if (empty($conf->global->$constparam)) $disabledbymodule=2;
}
// Show line for trigger file
print "<tr $bc[$var]>\n";
print '<td valign="top" width="14" align="center">';
print $objMod->picto?img_object('',$objMod->picto):img_object('','generic');
print '</td>';
print '<td valign="top">'.$files[$key]."</td>\n";
print '<td valign="top">'.$objMod->getDesc()."</td>\n";
//print '<td valign="top">'.$objMod->getDesc()."</td>\n";
print "<td valign=\"top\" align=\"center\">".$objMod->getVersion()."</td>\n";
// \todo Activation trigger
// Etat trigger
print "<td valign=\"top\" align=\"center\">";
$statut_trigger=1;
if (eregi('NORUN$',$files[$key])) $statut_trigger=0;
if ($statut_trigger == 1)
{
print img_tick();
}
else
if ($disabledbyname > 0 || $disabledbymodule > 1)
{
print "&nbsp;";
}
else
{
print img_tick();
}
print "</td>\n";
/*
print "<td valign=\"top\" align=\"center\">";
if ($const_value == 1)
{
// Module actif
print "<a href=\"modules.php?id=".$objMod->numero."&amp;action=reset&amp;value=" . $modName . "&amp;spe=" . $_GET["spe"] . "\">" . $langs->trans("Disable") . "</a></td>\n";
}
else
{
// Module non actif
print "<a href=\"modules.php?id=".$objMod->numero."&amp;action=set&amp;value=" . $modName . "&amp;spe=" . $_GET["spe"] . "\">" . $langs->trans("Activate") . "</a></td>\n";
}
*/
print "<td>&nbsp;</td>\n";
print '<td valign="top">';
$text ='<b>'.$langs->trans("Description").':</b><br>';
$text.=$objMod->getDesc().'<br>';
$text.='<br><b>'.$langs->trans("Status").':</b><br>';
if ($disabledbyname == 1)
{
$text.=$langs->trans("TriggerDisabledByName").'<br>';
if ($disabledbymodule == 2) $text.=$langs->trans("TriggerDisabledAsModuleDisabled",$module).'<br>';
}
else
{
if ($disabledbymodule == 0) $text.=$langs->trans("TriggerAlwaysActive").'<br>';
if ($disabledbymodule == 1) $text.=$langs->trans("TriggerActiveAsModuleActive",$module).'<br>';
if ($disabledbymodule == 2) $text.=$langs->trans("TriggerDisabledAsModuleDisabled",$module).'<br>';
}
print $html->textwithhelp('',$text);
print "</td>\n";
print "</tr>\n";
}

View File

@ -20,7 +20,7 @@
*/
/** \defgroup webcalendar Module Webcalendar
\brief Module to include Webcalendar into Dolibarr and
\brief Module to include Webcalendar GUI into Dolibarr menu and
add Dolibarr events directly inside a Webcalendar database.
*/
@ -60,11 +60,11 @@ class modWebcalendar extends DolibarrModules
$this->family = "projects";
// Module title used if translation string 'ModuleXXXName' not found (XXX is id value)
$this->name = "Webcalendar";
// Module descriptoin used translation string 'ModuleXXXDesc' not found (XXX is id value)
// Module description used if translation string 'ModuleXXXDesc' not found (XXX is id value)
$this->description = "Interfaçage avec le calendrier Webcalendar";
// Possible values for version are: 'experimental' or 'dolibarr' or version
// Possible values for version are: 'development', 'experimental', 'dolibarr' or version
$this->version = 'dolibarr';
// Id used in llx_const table to manage module status (enabled/disabled)
// Key used in llx_const table to save module status enabled/disabled (XXX is id value)
$this->const_name = 'MAIN_MODULE_WEBCALENDAR';
// Where to store the module in setup page (0=common,1=interface,2=other)
$this->special = 1;

View File

@ -1,8 +1,17 @@
Directory content
--------------------------------------------------------
This directory contains all available Dolibarr triggers.
Name of some triggers ends with -NORUN. This means that they are not enabled and will
never be launched.
If you want to use them, just rename the file name removing the -NORUN part in their name.
Trigger file name syntax is:
> interface_modModule_mytrigger.php[-NORUN]
where:
> modModule is part of module descriptor file name found in includes/modules
directory or value 'all' if not enabled by a particular module.
> Mytrigger is name of the trigger. The PHP class inside the trigger file
would be named InterfaceMytrigger.
> -NORUN is optionnal and disable completely a trigger file if set. To use
a trigger with such a name, rename file to remove the -NORUN part.
$Id$

View File

@ -1,9 +1,20 @@
Ce répertoire contient tous les triggers Dolibarr disponibles.
Directory content
--------------------------------------------------------
Ce répertoire contient tous les triggers Dolibarr.
Le nom de certain trigger se termine par -NORUN ce qui signigie que ceux-ci
ne seront pas actifs et ne se seront jamais éxécutés.
Si vous souhiatez les utiliser il suffit de rennommer ceux-ci en supprimant
la partie -NORUN de leur nom.
La syntaxe d'un fichier Trigger est:
> interface_modModule_mytrigger.php[-NORUN]
where:
> modModule est la partie du nom du descripteur de module trouve dans le
repertoire includes/modules pour lequel le trigger doit etre.
actiff ou la valeure 'all' si ne doit pas etre actif pour un
module particulier.
> Mytrigger est le nom du trigger. La classe PHP dans le fichier trigger
aura pour nom InterfaceMytrigger.
> -NORUN est optionnel et desactive le fichier trigger si defini. Pour
utiliser un tel fichier trigger, renommer le fichier afin
d'enlever la partie -NORUN.
$Id$

View File

@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
/* Copyright (C) 2005-2007 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -16,17 +16,19 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
\file htdocs/includes/triggers/interface_demo.class.php
\file htdocs/includes/triggers/interface_all_Demo.class.php
\ingroup core
\brief Fichier de demo de personalisation des actions du workflow
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
- Le nom du fichier doit etre interface_xxx.class.php
- Le nom du fichier doit etre: interface_modMymodule_Mytrigger.class.php
ou: interface_all_Mytrigger.class.php
- Le fichier doit rester stocké dans includes/triggers
- Le nom de la classe doit etre InterfaceXxx
- Le nom de la classe doit etre InterfaceMytrigger
- Le nom de la methode constructeur doit etre InterfaceMytrigger
- Le nom de la propriete name doit etre Mytrigger
*/
@ -47,10 +49,10 @@ class InterfaceDemo
{
$this->db = $DB ;
$this->name = "Demo";
$this->name = "Demo"; // Put here same value than in file and class name
$this->family = "demo";
$this->description = "Les triggers de ce composant sont des fonctions vierges. Elles n'ont aucun effet. Ce composant est fourni à des fins de tutorial.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
$this->version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' or version
}
/**

View File

@ -16,17 +16,12 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
\file htdocs/includes/triggers/interface_ecotax.class.php
\file htdocs/includes/triggers/interface_modCommande_Ecotax.class.php
\ingroup core
\brief Ecotax ajoute
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
- Le nom du fichier doit etre interface_xxx.class.php
- Le fichier doit rester stocké dans includes/triggers
- Le nom de la classe doit etre InterfaceXxx
\brief Ajout Ecotax sur produit d'un certaine categorie
*/

View File

@ -16,22 +16,17 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
\file htdocs/includes/triggers/interface_demo.class.php
\file htdocs/includes/triggers/interface_modCommande_fraisport.class.php
\ingroup core
\brief Fichier de demo de personalisation des actions du workflow
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
- Le nom du fichier doit etre interface_xxx.class.php
- Le fichier doit rester stocké dans includes/triggers
- Le nom de la classe doit etre InterfaceXxx
\brief Fichier trigger pour ajout frais port
*/
/**
\class InterfaceEditeur
\class InterfaceFraisport
\brief Classe des fonctions triggers des actions personalisées du workflow
*/
@ -48,7 +43,7 @@ class InterfaceFraisport
{
$this->db = $DB ;
$this->name = "Frais de port";
$this->name = "Fraisport";
$this->family = "facture";
$this->description = "Les triggers de ce composant calculent les frais de port.";
$this->revision = explode(' ','$Revision$');

View File

@ -16,17 +16,12 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
\file htdocs/includes/triggers/interface_demo.class.php
\file htdocs/includes/triggers/interface_modEditeur_editeur.class.php
\ingroup core
\brief Fichier de demo de personalisation des actions du workflow
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
- Le nom du fichier doit etre interface_xxx.class.php
- Le fichier doit rester stocké dans includes/triggers
- Le nom de la classe doit etre InterfaceXxx
*/
@ -50,7 +45,7 @@ class InterfaceEditeur
$this->name = "Editeur";
$this->family = "editeur";
$this->description = "Les triggers de ce composant s'appliquent sur les utilisateurs.";
$this->description = "Les triggers de ce composant tri les lignes commandes par stock_loc.";
$this->revision = explode(' ','$Revision$');
$this->version = $this->revision[1];
}

View File

@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2005-2006 Laurent Destailleur <eldy@users.sourceforge.net>
/* Copyright (C) 2005-2007 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -16,11 +16,10 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
\file htdocs/includes/triggers/interface_ldap.class.php
\file htdocs/includes/triggers/interface_modLdap_Ldapsynchro.class.php
\ingroup core
\brief Fichier de gestion des triggers LDAP
*/
@ -29,11 +28,11 @@ require_once (DOL_DOCUMENT_ROOT."/lib/ldap.class.php");
/**
\class InterfaceLdap
\class InterfaceLdapsynchro
\brief Classe des fonctions triggers des actions de synchro LDAP
*/
class InterfaceLdap
class InterfaceLdapsynchro
{
var $db;
var $error;
@ -43,11 +42,11 @@ class InterfaceLdap
* \brief Constructeur.
* \param DB Handler d'accès base
*/
function InterfaceLdap($DB)
function InterfaceLdapsynchro($DB)
{
$this->db = $DB ;
$this->name = "Ldap";
$this->name = "Ldapsynchro";
$this->family = "ldap";
$this->description = "Les triggers de ce composant permettent d'effectuer les synchro de Dolibarr vers un annuaire LDAP.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version

View File

@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2006 Laurent Destailleur <eldy@users.sourceforge.net>
/* Copyright (C) 2006-2007 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -16,11 +16,10 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
\file htdocs/includes/triggers/interface_notification.class.php
\file htdocs/includes/triggers/interface_modNotification_notification.class.php
\ingroup notification
\brief Fichier de gestion des notifications sur evenement Dolibarr
*/
@ -45,7 +44,7 @@ class InterfaceNotification
$this->name = "Notification";
$this->family = "notification";
$this->description = "Les triggers de ce composant sont les fonctions qui gèrent les notifications par mail du module Notification.";
$this->description = "Les triggers de ce composant envoie les notifications par mail selon configuration du module Notification.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
}

View File

@ -16,28 +16,23 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
\file htdocs/includes/triggers/interface_webcal.class.php
\file htdocs/includes/triggers/interface_modWebcalendar_webcalsynchro.class.php
\ingroup webcalendar
\brief Fichier de demo de personalisation des actions du workflow
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
- Le nom du fichier doit etre interface_xxx.class.php
- Le fichier doit rester stocké dans includes/triggers
- Le nom de la classe doit etre InterfaceXxx
\brief Fichier de gestion des triggers webcalendar
*/
include_once(DOL_DOCUMENT_ROOT.'/lib/webcal.class.php');
/**
\class InterfaceWebCal
\class InterfaceWebcalsynchro
\brief Classe des fonctions triggers des actions webcalendar
*/
class InterfaceWebCal
class InterfaceWebcalsynchro
{
var $db;
var $error;
@ -51,11 +46,11 @@ class InterfaceWebCal
* \brief Constructeur.
* \param DB Handler d'accès base
*/
function InterfaceWebCal($DB)
function InterfaceWebcalsynchro($DB)
{
$this->db = $DB ;
$this->name = "WebCal";
$this->name = "Webcalsynchro";
$this->family = "webcal";
$this->description = "Les triggers de ce composant permettent d'insérer un évênement dans le calendrier webcalendar pour chaque grand évênement Dolibarr.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version

View File

@ -54,67 +54,86 @@ class Interfaces
* \param user Objet user
* \param lang Objet lang
* \param conf Objet conf
* \return int Nb triggers déclenchés si pas d'erreurs, -Nb en erreur sinon.
* \return int Nb triggers ayant agit si pas d'erreurs, -Nb en erreur sinon.
*/
function run_triggers($action,$object,$user,$lang,$conf)
{
$handle=opendir($this->dir);
$modules = array();
$nbtotal = $nbok = $nbko = 0;
$nbfile = $nbtotal = $nbok = $nbko = 0;
while (($file = readdir($handle))!==false)
{
if (is_readable($this->dir."/".$file) && eregi('interface_(.*).class.php$',$file,$reg))
if (is_readable($this->dir."/".$file) && eregi('^interface_([^_]+)_(.+)\.class\.php',$file,$reg))
{
$modName = "Interface".ucfirst($reg[1]);
$nbfile++;
$modName = "Interface".ucfirst($reg[2]);
//print "file=$file"; print "modName=$modName"; exit;
if ($modName)
if (in_array($modName,$modules))
{
if (in_array($modName,$modules))
$langs->load("errors");
dolibarr_syslog("Interface::run_triggers ".$langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/includes/triggers/"),LOG_ERR);
continue;
}
// Check if trigger file is disabled by name
if (eregi('NORUN$',$file))
{
continue;
}
// Check if trigger file is for a particular module
$qualified=true;
if (strtolower($reg[1]) != 'all')
{
$module=eregi_replace('^mod','',$reg[1]);
$constparam='MAIN_MODULE_'.strtoupper($module);
if (empty($conf->global->$constparam)) $qualified=false;
}
if (! $qualified)
{
dolibarr_syslog("Interfaces::run_triggers Triggers for file '".$file."' need module to be enabled",LOG_INFO);
continue;
}
include_once($this->dir."/".$file);
$objMod = new $modName($this->db);
if ($objMod)
{
$modules[$i] = $modName;
//dolibarr_syslog("Interfaces::run_triggers Launch triggers for file '".$file."'",LOG_INFO);
$result=$objMod->run_trigger($action,$object,$user,$lang,$conf);
if ($result > 0)
{
$langs->load("errors");
dolibarr_syslog($langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/includes/triggers/"),LOG_ERR);
// Action OK
$nbtotal++;
$nbok++;
}
else
if ($result == 0)
{
include_once($this->dir."/".$file);
$objMod = new $modName($this->db);
if ($objMod)
{
$modules[$i] = $modName;
$result=$objMod->run_trigger($action,$object,$user,$lang,$conf);
if ($result > 0)
{
// Action OK
$nbtotal++;
$nbok++;
}
if ($result == 0)
{
// Aucune action faite
$nbtotal++;
}
if ($result < 0)
{
// Action KO
$nbtotal++;
$nbko++;
$this->errors[]=$objMod->error;
}
$i++;
}
// Aucune action faite
$nbtotal++;
}
if ($result < 0)
{
// Action KO
$nbtotal++;
$nbko++;
$this->errors[]=$objMod->error;
}
$i++;
}
}
}
if ($nbko)
{
dolibarr_syslog("Interfaces::run_triggers Found: ".$nbtotal.", Done: ".$nbok.", Failed: ".$nbko);
dolibarr_syslog("Interfaces::run_triggers Files found: ".$nbfile.", Files launched: ".$nbtotal.", Done: ".$nbok.", Failed: ".$nbko, LOG_ERR);
return -$nbko;
}
else
{
//dolibarr_syslog("Interfaces::run_triggers Files found: ".$nbfile.", Files launched: ".$nbtotal.", Done: ".$nbok.", Failed: ".$nbko, LOG_DEBUG);
return $nbok;
}
}

View File

@ -48,6 +48,7 @@ MenuLimits=Limits and accuracy
NotConfigured=Not configured
Setup=Setup
Activation=Activation
Active=Active
SetupShort=Setup
OtherOptions=Other options
OtherSetup=Other setup
@ -480,6 +481,10 @@ CompanyFundationDesc=Edit on this page all known information of the company or f
DisplayDesc=You can choose here all parameters related to the Dolibarr look and feel
TriggersAvailable=Triggers available
TriggersDesc=Triggers are files that, once copied into directory <b>htdocs/includes/triggers</b>, modify the behaviour of Dolibarr workflow. They realised new actions, activated on Dolibarr events (new company creation, invoice validation, ...).
TriggerDisabledByName=Triggers in this file are disabled by <b>-NORUN</b> suffix in name.
TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module <b>%s</b> is disabled.
TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules.
TriggerActiveAsModuleActive=Triggers in this file are active as module <b>%s</b> is enabled.
GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password
DictionnaryDesc=Define here all reference datas. You can complete predefined value with yours
ConstDesc=All other parameters not available in previous pages

View File

@ -1,5 +1,5 @@
# Dolibarr language file - en_US - errors
ErrorDuplicateTrigger=A trigger file named '<b>%s</b>' is already loaded. Remove duplicate trigger file in directory '<b>%s</b>'.
ErrorDuplicateTrigger=A trigger file with class nam '<b>%s</b>' is present sevaral times. Remove duplicate trigger file in directory '<b>%s</b>'.
ErrorFailToDeleteFile=Failed to remove file '<b>%s</b>'.
ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type.
ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only.

View File

@ -48,6 +48,7 @@ MenuLimits=Limites et pr
NotConfigured=Non configuré
Setup=Configuration
Activation=Activation
Active=Actif
SetupShort=Config
OtherOptions=Autres options
OtherSetup=Divers
@ -479,6 +480,10 @@ CompanyFundationDesc=
DisplayDesc=Vous pouvez choisir ici tous les paramètres liés à l'apparence de Dolibarr
TriggersAvailable=Triggers disponibles
TriggersDesc=Les triggers sont des fichiers qui, une fois déposés dans le répertoire <b>htdocs/includes/triggers</b>, modifient le comportement du workflow de Dolibarr. Ils réalisent des actions supplémentaires, déclenchées par les événements Dolibarr (création société, validation facture, clôture contrat...).
TriggerDisabledByName=Triggers de ce fichier désactivés par le suffix <b>-NORUN</b> dans le nom du fichier.
TriggerDisabledAsModuleDisabled=Triggers de ce fichier désactivés car le module <b>%s</b> n'est pas actif.
TriggerAlwaysActive=Triggers de ce fichier toujours actifs, quelque soient les modules Dolibarr activés.
TriggerActiveAsModuleActive=Triggers de ce fichier actifs car le module <b>%s</b> est actif.
GeneratedPasswordDesc=Definissez ici quelle règle vous voulez utilisez pour générer les mots de passe quand vous demander à fabriquer un nouveau mot de passe
DictionnaryDesc=Definissez ici les données de référence. Vous pouvez compléter/modifier les données prédéfinies avec les votres
ConstDesc=Tout autre parametre non editable dans les pages précédentes

View File

@ -1,5 +1,5 @@
# Dolibarr language file - fr_FR - errors
ErrorDuplicateTrigger=Un fichier trigger du nom de '<b>%s</b>' est deja chargé. Supprimer le doublon du répertoire '<b>%s</b>'.
ErrorDuplicateTrigger=Un fichier trigger de classe '<b>%s</b>' est present plusieurs fois. Supprimer le doublon du répertoire '<b>%s</b>'.
ErrorFailToDeleteFile=Echec de l'effacement du fichier '<b>%s</b>'.
ErrorThisContactIsAlreadyDefinedAsThisType=Ce contact est déjà défini comme contact pour ce type.
ErrorCashAccountAcceptsOnlyCashMoney=Ce compte bancaire est de type caisse et n'accepte que les mode de réglement de type <b>espèce</b>.