diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a603fd242cc..304924fe150 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -4,15 +4,14 @@ How to contribute to Dolibarr
Bug reports and feature requests
--------------------------------
-*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](http://www.dolibarr.org/forum).
+*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](http://www.dolibarr.org/forum).
-**NEW**
-
-Issues are now managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues).
+Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues).
1. Please [use the search engine](https://help.github.com/articles/searching-issues) to check if nobody's already reported your problem.
2. [Create an issue](https://help.github.com/articles/creating-an-issue). Choose an appropriate title. Prepend appropriately with Bug or Feature Request.
-3. Report with as much detail as possible ([Use screenshots or even screencasts whenever possible](https://help.github.com/articles/issue-attachments)).
+4. Tell us the version you are using!
+3. Write a report with as much detail as possible (Use [screenshots](https://help.github.com/articles/issue-attachments) or even screencasts and provide logging and debugging informations whenever possible).
We're still figuring out how to migrate old issues to GitHub. In the meantime, they are still available at [Doliforge](https://doliforge.org/projects/dolibarr).
@@ -41,9 +40,45 @@ Choose your base branch accordingly.
### General rules
Please don't edit the ChangeLog file. A project manager will update it from your commit messages.
-### Commits
+### Commits
Use clear commit messages with the following structure:
+```
+[KEYWORD] [ISSUENUM] DESC
+
+LONGDESC
+```
+
+#### Keyword
+In uppercase to appear in ChangeLog when generated.
+
+The keyword can be ommitted if your commit does not fit in any of the following categories:
+- Fix: for a bug fix
+- Close: for closing a referenced feature request
+- New: for an unreferenced new feature (Opening a feature request and using close is prefered)
+
+#### Issuenum
+If your commit fixes a referenced bug or feature request.
+
+In the form of a # followed by the GitHub issue number.
+
+#### Desc
+A short description of the commit content.
+
+This should ideally be less than 50 characters.
+
+#### LongDesc
+A long description of the commit content.
+
+You can really go to town here and explain in depth what you've been doing.
+
+Feel free to express technical details, use cases or anything relevant to the current commit.
+
+This section can span multiple lines.
+
+Try to keep lines under 72 characters.
+
+#### Samples
FIX|Fix #456 Short description (where #456 is number of bug fix, if it exists. In upper case to appear into ChangeLog)
or
@@ -57,8 +92,10 @@ Long description (Can span accross multiple lines).
### Pull Requests
-When submitting a pull request, use same rule than Commits. With upper case keyword to appear into ChangeLog.
+When submitting a pull request, use same rule as [Commits](#commits) for the message.
+If your pull request only contains one commit, GitHub will be smart enough to fill it for you.
+Otherwise, please be a bit verbose about what you're providing.
### Resources
[Developer documentation](http://wiki.dolibarr.org/index.php/Developer_documentation)
@@ -67,18 +104,18 @@ Translations
------------
The source language (en_US) is maintained in the repository. See the [Code](#code) section above.
-All other translations are managed online at [Transifex](https://www.transifex.com/projects/p/dolibarr).
+All other translations are managed online at [Transifex](https://www.transifex.com/dolibarr-association/dolibarr/).
Join an existing translation team or create your own and translate into the interface.
Your translations will be available in the next major release.
### Resources
-[Translator documentation](http://wiki.dolibarr.org/index.php/Developer_documentation)
+[Translator documentation](http://wiki.dolibarr.org/index.php/Translator_documentation)
Documentation
-------------
The project's documentation is maintained on the [Wiki](http://wiki.dolibarr.org/index.php).
-*You need to create an account before being able to edit.*
+*Note*: to help prevent spam, you need to create an account before being able to edit.
diff --git a/dev/skeletons/skeleton_page.php b/dev/skeletons/skeleton_page.php
index 0eb3b01589c..c1e12c2f93c 100644
--- a/dev/skeletons/skeleton_page.php
+++ b/dev/skeletons/skeleton_page.php
@@ -282,7 +282,7 @@ if ($action == 'list' || (empty($id) && $action != 'create'))
if (! empty($moreforfilter))
{
- print '
';
+ print '
';
print $moreforfilter;
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
@@ -290,7 +290,7 @@ if ($action == 'list' || (empty($id) && $action != 'create'))
print '
';
}
- print '
'."\n";
+ print '
'."\n";
// Fields title
print '
';
diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php
index 4ffbbf33fb6..2f495e60bf7 100644
--- a/htdocs/adherents/list.php
+++ b/htdocs/adherents/list.php
@@ -201,7 +201,7 @@ if ($resql)
}
if (! empty($moreforfilter))
{
- print '
';
+ print '
';
print $moreforfilter;
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
@@ -209,7 +209,7 @@ if ($resql)
print '
';
}
- print "
";
+ print '
';
print '
';
print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"d.rowid",$param,"","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Name")." / ".$langs->trans("Company"),$_SERVER["PHP_SELF"],"d.lastname",$param,"","",$sortfield,$sortorder);
diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index cf974990f01..6530e41c3c1 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -43,6 +43,21 @@ if (! $user->admin)
$specialtostring=array(0=>'common', 1=>'interfaces', 2=>'other', 3=>'functional', 4=>'marketplace');
+$familyinfo=array(
+ 'hr'=>array('position'=>'001', 'label'=>$langs->trans("ModuleFamilyHr")),
+ 'crm'=>array('position'=>'006', 'label'=>$langs->trans("ModuleFamilyCrm")),
+ 'financial'=>array('position'=>'009', 'label'=>$langs->trans("ModuleFamilyFinancial")),
+ 'products'=>array('position'=>'012', 'label'=>$langs->trans("ModuleFamilyProducts")),
+ 'projects'=>array('position'=>'015', 'label'=>$langs->trans("ModuleFamilyProjects")),
+ 'ecm'=>array('position'=>'018', 'label'=>$langs->trans("ModuleFamilyECM")),
+ 'technic'=>array('position'=>'021', 'label'=>$langs->trans("ModuleFamilyTechnic")),
+ 'portal'=>array('position'=>'040', 'label'=>$langs->trans("ModuleFamilyPortal")),
+ 'interface'=>array('position'=>'050', 'label'=>$langs->trans("ModuleFamilyInterface")),
+ 'base'=>array('position'=>'060', 'label'=>$langs->trans("ModuleFamilyBase")),
+ 'other'=>array('position'=>'100', 'label'=>$langs->trans("ModuleFamilyOther")),
+);
+
+
/*
* Actions
@@ -124,22 +139,20 @@ foreach ($modulesdir as $dir)
$objMod = new $modName($db);
$modNameLoaded[$modName]=$dir;
- if ($objMod->numero > 0)
+ if (! $objMod->numero > 0)
{
- $j = $objMod->numero;
+ dol_syslog('a module descriptor must have a numero property', LOG_ERR);
}
- else
- {
- $j = 1000 + $i;
- }
-
+ $j = $objMod->numero;
+
$modulequalified=1;
// We discard modules according to features level (PS: if module is activated we always show it)
$const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',get_class($objMod)));
if ($objMod->version == 'development' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 2))) $modulequalified=0;
if ($objMod->version == 'experimental' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 1))) $modulequalified=0;
- // We discard modules according to property disabled
+ if (preg_match('/deprecated/', $objMod->version) && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL >= 0))) $modulequalified=0;
+ // We discard modules according to property disabled
if (! empty($objMod->hidden)) $modulequalified=false;
// Define array $categ with categ with at least one qualified module
@@ -147,13 +160,19 @@ foreach ($modulesdir as $dir)
{
$modules[$i] = $objMod;
$filename[$i]= $modName;
- $orders[$i] = $objMod->family."_".$j; // Sort by family, then by module number
+
+ $special = $objMod->special;
+ $familykey = $objMod->family;
+
+ if ($special == 1) $familykey='interface';
+
+ $orders[$i] = $familyinfo[$familykey]['position']."_".$familykey."_".$j; // Sort by family, then by module number
$dirmod[$i] = $dir;
// Set categ[$i]
- $special = isset($specialtostring[$objMod->special])?$specialtostring[$objMod->special]:'unknown';
- if ($objMod->version == 'development' || $objMod->version == 'experimental') $special='expdev';
- if (isset($categ[$special])) $categ[$special]++; // Array of all different modules categories
- else $categ[$special]=1;
+ $specialstring = isset($specialtostring[$special])?$specialtostring[$special]:'unknown';
+ if ($objMod->version == 'development' || $objMod->version == 'experimental') $specialstring='expdev';
+ if (isset($categ[$specialstring])) $categ[$specialstring]++; // Array of all different modules categories
+ else $categ[$specialstring]=1;
$j++;
$i++;
}
@@ -197,9 +216,9 @@ print load_fiche_titre($langs->trans("ModulesSetup"),$moreinfo,'title_setup');
// Start to show page
if (empty($mode)) $mode='common';
if ($mode==='common') print $langs->trans("ModulesDesc")." \n";
-if ($mode==='other') print $langs->trans("ModulesSpecialDesc")." \n";
-if ($mode==='interfaces') print $langs->trans("ModulesInterfaceDesc")." \n";
-if ($mode==='functional') print $langs->trans("ModulesJobDesc")." \n";
+//if ($mode==='other') print $langs->trans("ModulesSpecialDesc")." \n";
+//if ($mode==='interfaces') print $langs->trans("ModulesInterfaceDesc")." \n";
+//if ($mode==='functional') print $langs->trans("ModulesJobDesc")." \n";
if ($mode==='marketplace') print $langs->trans("ModulesMarketPlaceDesc")." \n";
if ($mode==='expdev') print $langs->trans("ModuleFamilyExperimental")." \n";
@@ -213,11 +232,12 @@ $categidx='common'; // Main
if (! empty($categ[$categidx]))
{
$head[$h][0] = DOL_URL_ROOT."/admin/modules.php?mode=".$categidx;
- $head[$h][1] = $langs->trans("ModulesCommon");
+ $head[$h][1] = $langs->trans("AvailableModules");
$head[$h][2] = 'common';
$h++;
}
+/*
$categidx='other'; // Other
if (! empty($categ[$categidx]))
{
@@ -244,6 +264,7 @@ if (! empty($categ[$categidx]))
$head[$h][2] = 'functional';
$h++;
}
+*/
$categidx='expdev';
if (! empty($categ[$categidx]))
@@ -287,28 +308,19 @@ if ($mode != 'marketplace')
$oldfamily='';
- $familylib=array(
- 'base'=>$langs->trans("ModuleFamilyBase"),
- 'crm'=>$langs->trans("ModuleFamilyCrm"),
- 'products'=>$langs->trans("ModuleFamilyProducts"),
- 'hr'=>$langs->trans("ModuleFamilyHr"),
- 'projects'=>$langs->trans("ModuleFamilyProjects"),
- 'financial'=>$langs->trans("ModuleFamilyFinancial"),
- 'ecm'=>$langs->trans("ModuleFamilyECM"),
- 'technic'=>$langs->trans("ModuleFamilyTechnic"),
- 'other'=>$langs->trans("ModuleFamilyOther")
- );
-
foreach ($orders as $key => $value)
{
$tab=explode('_',$value);
- $family=$tab[0]; $numero=$tab[1];
+ $familypos=$tab[0]; $familykey=$tab[1]; $numero=$tab[2];
$modName = $filename[$key];
$objMod = $modules[$key];
+ $special = $objMod->special;
+
//print $objMod->name." - ".$key." - ".$objMod->special.' - '.$objMod->version." ";
- if (($mode != (isset($specialtostring[$objMod->special])?$specialtostring[$objMod->special]:'unknown') && $mode != 'expdev')
+ //if (($mode != (isset($specialtostring[$special])?$specialtostring[$special]:'unknown') && $mode != 'expdev')
+ if (($special >= 4 && $mode != 'expdev')
|| ($mode == 'expdev' && $objMod->version != 'development' && $objMod->version != 'experimental')) continue; // Discard if not for current tab
if (! $objMod->getName())
@@ -329,28 +341,27 @@ if ($mode != 'marketplace')
}
// Print a separator if we change family
- //print "
";
}
$atleastoneforfamily++;
- if ($family!=$oldfamily)
+ if ($familykey!=$oldfamily)
{
- $familytext=empty($familylib[$family])?$family:$familylib[$family];
- //print $familytext;
- $oldfamily=$family;
+ $familytext=empty($familyinfo[$familykey]['label'])?$familykey:$familyinfo[$familykey]['label'];
+ $oldfamily=$familykey;
}
$var=!$var;
diff --git a/htdocs/comm/list.php b/htdocs/comm/list.php
index 91f30d30887..fcc1783daf5 100644
--- a/htdocs/comm/list.php
+++ b/htdocs/comm/list.php
@@ -205,7 +205,7 @@ if ($result)
}
if ($moreforfilter)
{
- print '
';
+ print '
';
print $moreforfilter;
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
@@ -213,7 +213,7 @@ if ($result)
print '
';
diff --git a/htdocs/comm/prospect/list.php b/htdocs/comm/prospect/list.php
index f629aafef29..670d170de97 100644
--- a/htdocs/comm/prospect/list.php
+++ b/htdocs/comm/prospect/list.php
@@ -371,7 +371,7 @@ if ($resql)
}
if ($moreforfilter)
{
- print '
';
+ print '
';
print $moreforfilter;
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
@@ -379,13 +379,13 @@ if ($resql)
print '
';
-
$moreforfilter='';
// If the user can view prospects other than his'
@@ -295,7 +293,7 @@ if ($resql)
}
if (! empty($moreforfilter))
{
- print '
';
+ print '
';
print $moreforfilter;
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
@@ -303,6 +301,7 @@ if ($resql)
print '
';
}
+ print '
';
print '
';
print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'c.ref','',$param,'width="25%"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans('RefCustomerOrder'),$_SERVER["PHP_SELF"],'c.ref_client','',$param,'',$sortfield,$sortorder);
diff --git a/htdocs/compta/bank/search.php b/htdocs/compta/bank/search.php
index 80befe3d433..b585f48565f 100644
--- a/htdocs/compta/bank/search.php
+++ b/htdocs/compta/bank/search.php
@@ -186,12 +186,12 @@ if ($resql)
if ($moreforfilter) {
- print '
';
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 5591847ddc1..61afec22569 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -484,9 +484,10 @@ class Form
* @param string $htmlname Name of html select object
* @param string $htmloption Options html on select object
* @param integer $maxlength Max length for labels (0=no limit)
+ * @param string $morecss More css class
* @return string HTML string with select
*/
- function select_country($selected='',$htmlname='country_id',$htmloption='',$maxlength=0)
+ function select_country($selected='',$htmlname='country_id',$htmloption='',$maxlength=0,$morecss='minwidth300')
{
global $conf,$langs;
@@ -507,7 +508,7 @@ class Form
$resql=$this->db->query($sql);
if ($resql)
{
- $out.= '
';
if ($user->rights->cron->delete)
{
print "id."&status=".$status."&action=delete\" title=\"".dol_escape_htmltag($langs->trans('CronDelete'))."\">".img_picto($langs->trans('CronDelete'),'delete')." ";
diff --git a/htdocs/fourn/list.php b/htdocs/fourn/list.php
index 14bd6298ea8..5693031c630 100644
--- a/htdocs/fourn/list.php
+++ b/htdocs/fourn/list.php
@@ -1,6 +1,6 @@
- * Copyright (C) 2004-2012 Laurent Destailleur
+ * Copyright (C) 2004-2015 Laurent Destailleur
* Copyright (C) 2005-2012 Regis Houssin
* Copyright (C) 2011 Philippe Grand
* Copyright (C) 2013 Cédric Salvador
@@ -201,7 +201,7 @@ if ($resql)
}
if ($moreforfilter)
{
- print '
';
+ print '
';
print $moreforfilter;
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
@@ -209,7 +209,7 @@ if ($resql)
print '
';
}
- print '
';
+ print '
';
print '
';
print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,'valign="middle"',$sortfield,$sortorder);
@@ -238,7 +238,7 @@ if ($resql)
print '
';
diff --git a/htdocs/install/mysql/data/llx_const.sql b/htdocs/install/mysql/data/llx_const.sql
index 13604638f01..2c25765223e 100644
--- a/htdocs/install/mysql/data/llx_const.sql
+++ b/htdocs/install/mysql/data/llx_const.sql
@@ -32,7 +32,7 @@
-- Visible in misc page
insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_NOT_INSTALLED','1','chaine','Setup is running',1,0);
-insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_FEATURES_LEVEL','0','chaine','Level of features to show (0=stable only, 1=stable+experimental, 2=stable+experimental+development',1,0);
+insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_FEATURES_LEVEL','0','chaine','Level of features to show: -1=stable+deprecated, 0=stable only (default), 1=stable+experimental, 2=stable+experimental+development',1,0);
insert into llx_const (name, value, type, note, visible, entity) values ('MAILING_LIMIT_SENDBYWEB','25','chaine','Number of targets to defined packet size when sending mass email',1,0);
-- Hidden and common to all entities
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index e06553afd89..0f267bd0520 100755
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -285,14 +285,16 @@ ModuleSetup=Module setup
ModulesSetup=Modules setup
ModuleFamilyBase=System
ModuleFamilyCrm=Customer Relation Management (CRM)
-ModuleFamilyProducts=Products Management
-ModuleFamilyHr=Human Resource Management
+ModuleFamilyProducts=Products Management (PM)
+ModuleFamilyHr=Human Resource Management (HR)
ModuleFamilyProjects=Projects/Collaborative work
ModuleFamilyOther=Other
ModuleFamilyTechnic=Multi-modules tools
ModuleFamilyExperimental=Experimental modules
ModuleFamilyFinancial=Financial Modules (Accounting/Treasury)
ModuleFamilyECM=Electronic Content Management (ECM)
+ModuleFamilyPortal=Web sites and other frontal application
+ModuleFamilyInterface=Interfaces with external systems
MenuHandlers=Menu handlers
MenuAdmin=Menu editor
DoNotUseInProduction=Do not use in production
@@ -524,12 +526,12 @@ Module2400Name=Agenda
Module2400Desc=Events/tasks and agenda management
Module2500Name=Electronic Content Management
Module2500Desc=Save and share documents
-Module2600Name=API services (Web services SOAP)
+Module2600Name=API/Web services (SOAP server)
Module2600Desc=Enable the Dolibarr SOAP server providing API services
-Module2610Name=API services (Web services REST)
+Module2610Name=API/Web services (REST server)
Module2610Desc=Enable the Dolibarr REST server providing API services
-Module2650Name=WebServices (client)
-Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment)
+Module2660Name=Call WebServices (SOAP client)
+Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment)
Module2700Name=Gravatar
Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access
Module2800Desc=FTP Client
@@ -802,7 +804,7 @@ Permission59003=Read every user margin
DictionaryCompanyType=Thirdparties type
DictionaryCompanyJuridicalType=Juridical kinds of thirdparties
DictionaryProspectLevel=Prospect potential level
-DictionaryCanton=State/Cantons
+DictionaryCanton=State/Province
DictionaryRegion=Regions
DictionaryCountry=Countries
DictionaryCurrency=Currencies
@@ -1001,6 +1003,7 @@ SystemAreaForAdminOnly=This area is available for administrator users only. None
CompanyFundationDesc=Edit on this page all known information of the company or foundation you need to manage (For this, click on "Modify" button at bottom of page)
DisplayDesc=You can choose each parameter related to the Dolibarr look and feel here
AvailableModules=Available modules
+DeprecatedModules=Deprecated modules
ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules).
SessionTimeOut=Time out for session
SessionExplanation=This number guarantee that session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guaranty that session will expire just after this delay. It will expire, after this delay, and when the session cleaner is ran, so every %s/%s access, but only during access made by other sessions. Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by the default session.gc_maxlifetime, no matter what the value entered here.
@@ -1689,3 +1692,4 @@ MailToSendSupplierRequestForQuotation=To send quotation request to supplier
MailToSendSupplierOrder=To send supplier order
MailToSendSupplierInvoice=To send supplier invoice
MailToThirdparty=To send email from thirdparty page
+ByDefaultInList=Show by default on list view
\ No newline at end of file
diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang
index 3bd16069036..a73ed322cba 100644
--- a/htdocs/langs/en_US/companies.lang
+++ b/htdocs/langs/en_US/companies.lang
@@ -64,6 +64,7 @@ UserTitle=Title
Surname=Surname/Pseudo
Address=Address
State=State/Province
+StateShort=State
Region=Region
Country=Country
CountryCode=Country code
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 826d4e77b2a..fcef513130f 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -163,9 +163,9 @@ if (! defined('NOSCANPOSTFORINJECTION'))
}
// This is to make Dolibarr working with Plesk
-if (! empty($_SERVER['DOCUMENT_ROOT']) && substr($_SERVER['DOCUMENT_ROOT'], -6) !== 'htdocs') {
- set_include_path($_SERVER['DOCUMENT_ROOT'] . '/htdocs');
- }
+if (! empty($_SERVER['DOCUMENT_ROOT']) && substr($_SERVER['DOCUMENT_ROOT'], -6) !== 'htdocs')
+{
+ set_include_path($_SERVER['DOCUMENT_ROOT'] . '/htdocs');
}
// Include the conf.php and functions.lib.php
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index f46c6562ae7..8e98bf9e93f 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -281,7 +281,7 @@ if ($resql)
print '';
}
- print '