From b1ff004e6f0ec6b243862ce26e095833cfaad5cf Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Sat, 8 Aug 2009 16:26:06 +0000
Subject: [PATCH] Enhancement of install/upgrade process: If database version
 differs from programs version, the install page is automatically called.

---
 htdocs/admin/company.php        |   3 +-
 htdocs/admin/index.php          |   6 +-
 htdocs/admin/modules.php        |   3 +-
 htdocs/install/background.png   | Bin 0 -> 229 bytes
 htdocs/install/check.php        |  17 +++---
 htdocs/install/default.css      | 104 ++++++++++++++++----------------
 htdocs/install/etape0.php       |  14 ++---
 htdocs/install/etape5.php       |   8 +--
 htdocs/install/fileconf.php     |   4 +-
 htdocs/install/headbg.jpg       | Bin 0 -> 7881 bytes
 htdocs/install/upgrade.php      |   8 +--
 htdocs/install/upgrade2.php     |   2 +-
 htdocs/langs/en_US/admin.lang   |   7 ++-
 htdocs/langs/en_US/install.lang |   2 +-
 htdocs/langs/fr_FR/admin.lang   |   5 +-
 htdocs/langs/fr_FR/install.lang |   2 +-
 htdocs/main.inc.php             |  37 ++++++++----
 htdocs/support/default.css      |  45 ++------------
 18 files changed, 127 insertions(+), 140 deletions(-)
 create mode 100644 htdocs/install/background.png
 create mode 100644 htdocs/install/headbg.jpg

diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php
index 190d040c6c7..e32596ba6cb 100644
--- a/htdocs/admin/company.php
+++ b/htdocs/admin/company.php
@@ -191,7 +191,8 @@ if ($_GET["action"] == 'removelogo')
  * Affichage page
  */
 
-llxHeader();
+$wikihelp='EN:First_setup|FR:Premiers_paramétrages|ES:Primeras_configuraciones';
+llxHeader($langs->trans("Setup"),'',$wikihelp);
 
 $form = new Form($db);
 $formcompany = new FormCompany($db);
diff --git a/htdocs/admin/index.php b/htdocs/admin/index.php
index a97e70d7bd4..b4f263ca191 100644
--- a/htdocs/admin/index.php
+++ b/htdocs/admin/index.php
@@ -51,16 +51,18 @@ print_fiche_titre($langs->trans("SetupArea"),'','setup');
 
 if ($mesg) print $mesg.'<br>';
 
-print $langs->trans("SetupDescription1").'<br>';
+print $langs->trans("SetupDescription1").' ';
 print $langs->trans("AreaForAdminOnly").'<br>';
 
 print "<br>";
 print $langs->trans("SetupDescription2")."<br>";
 print "<br>";
 print img_picto('','puce').' '.$langs->trans("SetupDescription3")."<br>";
-//print "<br>";
+print "<br>";
 print img_picto('','puce').' '.$langs->trans("SetupDescription4")."<br>";
 print "<br>";
+print img_picto('','puce').' '.$langs->trans("SetupDescription5")."<br>";
+print "<br>";
 
 print '<br>';
 print info_admin($langs->trans("OnceSetupFinishedCreateUsers")).'<br>';
diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index e4d3c5ce545..2dd77d01c66 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -185,7 +185,8 @@ function UnActivate($value,$requiredby=1)
  */
 $_SESSION["mode"]=$mode;
 
-llxHeader("","");
+$wikihelp='EN:First_setup|FR:Premiers_paramétrages|ES:Primeras_configuraciones';
+llxHeader($langs->trans("Setup"),'',$wikihelp);
 
 print_fiche_titre($langs->trans("ModulesSetup"),'','setup');
 
diff --git a/htdocs/install/background.png b/htdocs/install/background.png
new file mode 100644
index 0000000000000000000000000000000000000000..b264649fcbc26d7774496d1d9c308841c69c769f
GIT binary patch
literal 229
zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU`XL$W?*0___PWnkPzS#;`#vwK7zp~F!&4x
zU%=oi7<>bR?_lr)41R*aFEIEG27kcdFBtp-ga7~kZxISP!oa}b;OXKRQZYyOV5g8%
z00V<Vcu~upkT3u1GvDmF`$GP%KYxAQ-yOSKS9fooytsMq`wg47eoW0x%@njdTRUUs
dED7lt%~UqVsnf2$Vqjok@O1TaS?83{1ONi`jQ;=t

literal 0
HcmV?d00001

diff --git a/htdocs/install/check.php b/htdocs/install/check.php
index f8c4cae085a..34e10e472e7 100644
--- a/htdocs/install/check.php
+++ b/htdocs/install/check.php
@@ -48,16 +48,15 @@ dolibarr_install_syslog("check: Dolibarr install/upgrade process started");
  *	View
  */
 
-pHeader($langs->trans("DolibarrWelcome"),"");   // Etape suivante = license
+pHeader('',"");   // Etape suivante = license
 
 print '<center>';
 print '<img src="../theme/dolibarr_logo.png" alt="Dolibarr logo"><br>';
 print DOL_VERSION.'<br><br>';
 print '</center>';
-print "<br>\n";
-
 
-print $langs->trans("InstallEasy")."<br><br>\n";
+//print "<br>\n";
+//print $langs->trans("InstallEasy")."<br><br>\n";
 
 print '<b>'.$langs->trans("MiscellanousChecks")."</b>:<br>\n";
 
@@ -293,14 +292,15 @@ else
 		# Show title
 		if (! empty($conf->global->MAIN_VERSION_LAST_UPGRADE))
 		{
-			print $langs->trans("VersionLastUpgrade").": ".$conf->global->MAIN_VERSION_LAST_UPGRADE.'<br>';
-			print $langs->trans("VersionProgram").": ".DOL_VERSION;
+			print $langs->trans("VersionLastUpgrade").': <b><font class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</font></b><br>';
+			print $langs->trans("VersionProgram").': <b><font class="ok">'.DOL_VERSION.'</font></b>';
 			//print ' '.img_warning($langs->trans("RunningUpdateProcessMayBeRequired"));
 			print '<br>';
 			print '<br>';
 		}
 		else print "<br />\n";
 
+		print $langs->trans("InstallEasy")." ";
 		print $langs->trans("ChooseYourSetupMode");
 
 		print '<table width="100%" cellspacing="1" cellpadding="4" border="1">';
@@ -325,6 +325,7 @@ else
 
 		# Show upgrade lines
 		$allowupgrade=true;
+		if (defined("MAIN_NOT_INSTALLED")) $allowupgrade=false;
 		$migrationscript=array( //array('from'=>'2.0.0', 'to'=>'2.1.0'),
 								//array('from'=>'2.1.0', 'to'=>'2.2.0'),
 								array('from'=>'2.2.0', 'to'=>'2.4.0'),
@@ -352,11 +353,11 @@ else
 					// If last upgrade was an alpha or beta, we increase target version to 1 to select this one.
 					if (isset($conf->global->MAIN_VERSION_LAST_UPGRADE) && eregi('beta|alpha',$conf->global->MAIN_VERSION_LAST_UPGRADE)) $dolibarrversiontoarray[2]=(isset($dolibarrversiontoarray[2]) ? ($dolibarrversiontoarray[2]+1) : 1);
 					// Now we check if this is the first qualified choice
-					if (empty($foundrecommandedchoice) && versioncompare($dolibarrversiontoarray,$dolibarrlastupgradeversionarray) > 0)
+					if ($allowupgrade && empty($foundrecommandedchoice) && versioncompare($dolibarrversiontoarray,$dolibarrlastupgradeversionarray) > 0)
 					{
 						print '<br>';
 						//print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE);
-						print '<center><div class="warning">'.$langs->trans("InstallChoiceSuggested").'</div></center>';
+						print '<center><div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div></center>';
 						// <img src="../theme/eldy/img/tick.png" alt="Ok"> ';
 						$foundrecommandedchoice=1;	// To show only once
 					}
diff --git a/htdocs/install/default.css b/htdocs/install/default.css
index 85865238376..b8535283898 100644
--- a/htdocs/install/default.css
+++ b/htdocs/install/default.css
@@ -1,4 +1,5 @@
 /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> 
+ * Copyright (C) 2009 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
@@ -18,98 +19,102 @@
  */
 
 body {
-	font-size:13px;
-	font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif;
-	background-color: #F4F4F4;
-	margin-left: 20px;
-	margin-right: 20px;
-	margin-top: 20px;
-	margin-bottom: 20px;
+font-size:13px;
+font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif;
+background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
+/* background-color: #F4F4F4; */
+margin-left: 20px;
+margin-right: 20px;
+margin-top: 20px;
+margin-bottom: 10px;
 }
 
-span.titre {
-	font-size:1.1em;
-	font-weight: bold;
-	background: #dcdcd3;
-	color: #4965B3;
-	border: 1px solid #8CACBB;
-	padding: 5px 5px 5px 5px;
-	margin: 0em 0em 0em 0em;
+div.titre {
+padding: 5px 5px 5px 5px;
+margin: 0em 0em 0em 0em;
 }
 
-div.titre {
-	padding: 5px 5px 5px 5px;
-	margin: 0em 0em 0em 0em;
+span.titre {
+font-size: 1.1em;
+font-weight: bold;
+background: #FFFFFF;
+color: #4965B3;
+border: 1px solid #8CACBB;
+padding: 5px 5px 5px 5px;
+margin: 0em 0em 0em 0em;
 }
 
 div.soustitre {
-	font-size: 15px;
-	font-weight: bold;
-	color: #4965B3;
-	padding: 0em 1.2em 0.5em 2em;
-	margin: 1.2em 1.2em 1.2em 1.2em;
-	border-bottom: 1px solid #8CACBB;
-	border-right: 1px solid #8CACBB;
-	text-align: right;
+font-size: 15px;
+font-weight: bold;
+color: #4965B3;
+padding: 0em 1.2em 0.5em 2em;
+margin: 1.2em 1.2em 1.2em 1.2em;
+border-bottom: 1px solid #8CACBB;
+border-right: 1px solid #8CACBB;
+text-align: right;
 }
 
 inputdisabled
 {
-    background: #FDFDFD;
-    border: 1px solid #ACBCBB;
-    padding: 0px 0px 0px 0px;
-    margin: 0px 0px 0px 0px;
+background: #FDFDFD;
+border: 1px solid #ACBCBB;
+padding: 0px 0px 0px 0px;
+margin: 0px 0px 0px 0px;
 }
 
 table.main {
-background: #dcdcd3;
+background: #F0F0F0 url(background.png) repeat-x; 
 text-align: left;
 border: 1px solid #8CACBB;
+color: #000000;
 }
 
 table.main-inside {
 padding-left: 10px;
 padding-right: 10px;
-margin-bottom: 20px;
+margin-bottom: 10px;
 margin-top: 10px;
+color: #000000;
 }
 
+/* OK */
 div.ok {
 color: #114466;
 }
+font.ok {
+color: #114466;
+}
 
+/* Warning */
 div.warning {
 color: #777711;
 }
+font.warning {
+color: #777711;
+}
 
+/* Error */
 div.error {
 color: #550000; font-weight: bold;
 padding: 0.2em 0.2em 0.2em 0.2em;
 margin: 0.5em 0em 0.5em 0em;
 border: 1px solid #6C7C8B;
 }
-
 font.error {
-color: #550000;
+color: #550000; font-weight: bold;
 }
 
+/* Next button */
 div.barrebottom {
 text-align: right;
 margin-top: 10px;
-padding-top: 10px;
-padding-bottom: 10px;
+padding-top: 5px;
+padding-bottom: 5px;
 padding-right: 10px;
 }
 
 
-div.footer {
-background-color: #dcdff4;
-font-size: 10px;
-border-top: solid black 1px;
-padding-left: 5px;
-text-align: center;
-}
-
 div.header {
 background-color: #dcdff4;
 border-bottom: solid black 1px;
@@ -117,10 +122,6 @@ padding-left: 5px;
 text-align: center;
 }
 
-div.footer p {
-margin: 0px;
-}
-
 a:link,a:visited,a:active {
 text-decoration:none;
 }
@@ -139,7 +140,8 @@ color:black;
 font-size: 13px;
 }
 
-div.main-inside h2 {
+h3 {
+margin-top: 10px;
 font-size:18px;
 font-weight: bold;
 color: #4965B3;
@@ -153,16 +155,16 @@ tr.bg2 {
 background-color: #B5C5C5;
 }
 
+/* Class for parameters key and value */
 td.label {
-background: #dcdcd3;
 color: #5945A3;
 padding: 5px 5px 5px 5px;
 margin: 0em 0em 0em 0em;
 border-bottom: 1px solid #8CACBB;
 }
 
+/* Class for parameters example */
 td.comment {
-background: #dcdcd3;
 color: black;
 padding: 5px 5px 5px 5px;
 margin: 0em 0em 0em 0em;
diff --git a/htdocs/install/etape0.php b/htdocs/install/etape0.php
index 1cc31844d6d..44867a7f99f 100644
--- a/htdocs/install/etape0.php
+++ b/htdocs/install/etape0.php
@@ -18,10 +18,10 @@
  */
 
 /**
- \file       htdocs/install/etape0.php
- \ingroup	install
- \brief      Permet d'afficher et de confirmer le charset par rapport aux informations pr�c�dentes -> s�lection suite � connexion'
- \version    $Id$
+ *	\file       htdocs/install/etape0.php
+ *	\ingroup	install
+ *	\brief      Permet d'afficher et de confirmer le charset par rapport aux informations pr�c�dentes -> s�lection suite � connexion'
+ *	\version    $Id$
  */
 
 define('DONOTLOADCONF',1);	// To avoid loading conf by file inc.php
@@ -233,7 +233,7 @@ if (! $error && $db->connected)
 	?>
 	<tr>
 		<td valign="top" class="label"><?php echo $langs->trans("CharacterSetDatabase"); ?></td>
-		<td valign="top" class="label"><?php 
+		<td valign="top" class="label"><?php
 		if (sizeof($listOfCharacterSet))
 		{
 			print '<select name="dolibarr_main_db_character_set" '.$disabled.'>';
@@ -243,7 +243,7 @@ if (! $error && $db->connected)
 				// We keep only utf8 and iso
 				$linedisabled=false;
 				if (! eregi('(utf8|latin1)',$characterSet['charset'])) $linedisabled=true;
-				
+
 				if ($defaultCharacterSet == $characterSet['charset'] )
 				{
 					$selected="selected";
@@ -286,7 +286,7 @@ if (! $error && $db->connected)
 				// We keep only utf8 and iso
 				$linedisabled=false;
 				if (! eregi('(utf8_general|latin1_swedish)',$collation['collation'])) $linedisabled=true;
-				
+
 				if ($defaultCollationConnection == $collation['collation'])
 				{
 					$selected="selected";
diff --git a/htdocs/install/etape5.php b/htdocs/install/etape5.php
index 3e490170051..12244ec1921 100644
--- a/htdocs/install/etape5.php
+++ b/htdocs/install/etape5.php
@@ -242,15 +242,15 @@ if ($_POST["action"] == "upgrade")
 
 if ($_POST["action"] == "upgrade")
 {
-	print '<a href="'.$dolibarr_main_url_root .'/index.php?mainmenu=home'.(isset($_POST["login"])?'&username='.urlencode($_POST["login"]):'').'">';
+	print '<center><a href="'.$dolibarr_main_url_root .'/index.php?mainmenu=home'.(isset($_POST["login"])?'&username='.urlencode($_POST["login"]):'').'">';
 	print $langs->trans("GoToDolibarr");
-	print '</a>';
+	print '</a></center>';
 }
 else
 {
-	print '<a href="'.$dolibarr_main_url_root .'/admin/index.php?mainmenu=home&leftmenu=setup'.(isset($_POST["login"])?'&username='.urlencode($_POST["login"]):'').'">';
+	print '<center><a href="'.$dolibarr_main_url_root .'/admin/index.php?mainmenu=home&leftmenu=setup'.(isset($_POST["login"])?'&username='.urlencode($_POST["login"]):'').'">';
 	print $langs->trans("GoToSetupArea");
-	print '</a>';
+	print '</a></center>';
 }
 
 
diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php
index b65a9a1e25d..d045067e2f2 100644
--- a/htdocs/install/fileconf.php
+++ b/htdocs/install/fileconf.php
@@ -66,7 +66,7 @@ if (! empty($force_install_message_doliwamp))
 
 <tr>
 <td colspan="3" class="label" align="center"><h3>
-<?php echo $langs->trans("Main"); ?>
+<?php echo $langs->trans("WebServer"); ?>
 </h3></td></tr>
 
 <tr>
@@ -314,7 +314,7 @@ while (($file = readdir($handle))!==false)
 </td>
 </tr>
 
-<tr class="bg1">
+<tr>
 <td class="label" valign="top">
 <b><?php echo $langs->trans("Login"); ?></b>
 </td>
diff --git a/htdocs/install/headbg.jpg b/htdocs/install/headbg.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5491c6e4acbc576eb5397d1091fdd7ea7e03de00
GIT binary patch
literal 7881
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
WBBllg295<B$bwM0!A9}_zX<?o;gi|`

literal 0
HcmV?d00001

diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php
index b893364223a..1e7b92c3b1c 100644
--- a/htdocs/install/upgrade.php
+++ b/htdocs/install/upgrade.php
@@ -65,7 +65,7 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial
  * View
  */
 
-pHeader($langs->trans("DatabaseMigration"),"upgrade2","upgrade");
+pHeader('',"upgrade2","upgrade");
 
 $actiondone=0;
 
@@ -74,7 +74,7 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade" || $_GET["action"]
 {
 	$actiondone=1;
 
-	print '<h3>'.$langs->trans("DatabaseMigration").'<h3>';
+	print '<h3>'.$langs->trans("DatabaseMigration").'</h3>';
 
 	if ($_GET["action"] != "repair" && ! $versionfrom && ! $versionto)
 	{
@@ -103,7 +103,7 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade" || $_GET["action"]
 	$db = new DoliDb($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port);
 	if ($db->connected == 1)
 	{
-		print "<tr><td nowrap>";
+		print '<tr><td nowrap="nowrap">';
 		print $langs->trans("ServerConnection")." : $dolibarr_main_db_host</td><td align=\"right\">".$langs->trans("OK")."</td></tr>";
 		dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ServerConnection")." : $dolibarr_main_db_host ".$langs->transnoentities("OK"));
 		$ok = 1;
@@ -119,7 +119,7 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade" || $_GET["action"]
 	{
 		if($db->database_selected == 1)
 		{
-			print "<tr><td nowrap>";
+			print '<tr><td nowrap="nowrap">';
 			print $langs->trans("DatabaseConnection")." : ".$dolibarr_main_db_name."</td><td align=\"right\">".$langs->trans("OK")."</td></tr>";
 			dolibarr_install_syslog("upgrade: Database connection successfull : $dolibarr_main_db_name");
 			$ok=1;
diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php
index 03058374bc6..cc10370a473 100644
--- a/htdocs/install/upgrade2.php
+++ b/htdocs/install/upgrade2.php
@@ -65,7 +65,7 @@ dolibarr_install_syslog("upgrade2: Entering upgrade2.php page");
 if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initialized",LOG_ERR);
 
 
-pHeader($langs->trans('DataMigration'),'etape5','upgrade');
+pHeader('','etape5','upgrade');
 
 
 if (isset($_POST['action']) && $_POST['action'] == 'upgrade')
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 6914d32b7ff..c7b0e2fa583 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -597,7 +597,7 @@ SummarySystem=System information summary
 SummaryConst=List of all Dolibarr setup parameters
 SystemUpdate=System update
 SystemSuccessfulyUpdate=Your system has been updated successfuly
-MenuCompanySetup=Company/Fundation
+MenuCompanySetup=Company/Foundation
 MenuNewUser=New user
 MenuTopManager=Top menu manager
 MenuLeftManager=Left menu manager
@@ -647,8 +647,9 @@ DelaysOfToleranceMembers=Tolerance delay (in days) before alert on delayed adher
 DelaysOfToleranceChequesToDeposit=Tolerance delay (in days) before alert for cheques deposit to do
 SetupDescription1=All parameters available in the setup area allow you to setup Dolibarr before starting using it.
 SetupDescription2=The 2 most important setup steps are the 2 first ones in the left setup menu, this means Company/foundation setup page and Modules setup page:
-SetupDescription3=<b>Company/fundation</b> setup is required because input information is used on Dolibarr displays and to modify Dolibarr behaviour (for example for features related to your country).
-SetupDescription4=<b>Modules</b> setup is required because Dolibarr is not a simple ERP/CRM but a sum of several modules, all more or less independant. It's only after activating modules you're interesting in that you will see features appeared in Dolibarr menu.
+SetupDescription3=Parameters in menu <b>Setup -> Company/foundation</b> are required because input information is used on Dolibarr displays and to modify Dolibarr behaviour (for example for features related to your country).
+SetupDescription4=Parameters in menu <b>Setup -> Modules</b> are required because Dolibarr is not a fixed ERP/CRM but a sum of several modules, all more or less independant. It's only after activating modules you're interesting in that you will see features appeared in menus.
+SetupDescription5=Other menu entries manage optionnal parameters.
 EventsSetup=Setup for events logs
 LogEvents=Security audit events
 Audit=Audit
diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang
index ce5f3a1c366..9de3e0ac17c 100644
--- a/htdocs/langs/en_US/install.lang
+++ b/htdocs/langs/en_US/install.lang
@@ -1,6 +1,6 @@
 # Dolibarr language file - en_US - install
 CHARSET=UTF-8
-InstallEasy=We tried to make the Dolibarr setup as easy as possible. Just follow the instructions step by step.
+InstallEasy=Just follow the instructions step by step.
 MiscellanousChecks=Prerequisites check
 DolibarrWelcome=Welcome to Dolibarr
 ConfFileExists=Configuration file <b>%s</b> exists.
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 69167d2ac11..da6b68a894e 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -647,8 +647,9 @@ DelaysOfToleranceMembers = Tolérance de retard avant alerte (en jours) sur coti
 DelaysOfToleranceChequesToDeposit = Tolérance de retard avant alerte (en jours) sur chèques à déposer
 SetupDescription1 = Toutes les options de l'espace configuration sont des options permettant de configurer Dolibarr avant de commencer son utilisation.
 SetupDescription2 = Les 2 étapes indispensables de configuration sont les 2 premières dans le menu gauche, à savoir, la configuration de la société/institution et la configuration des modules:
-SetupDescription3 = La configuration <b>Société/institution</b> à gérer est requise car les informations saisies sont utilisées dans la plupart des écrans, en affichage, ou pour modifier le comportement de Dolibarr (comme par exemple des fonctions qui dépendent de votre pays).
-SetupDescription4 = La configuration <b>Modules</b> est indispensable car Dolibarr n'est pas un ERP/CRM monolithique mais un ensemble de modules tous plus ou moins indépendant. C'est après avoir activé les modules qui vous intéressent que vous verrez apparaitre les fonctionnalités dans les menus de Dolibarr.
+SetupDescription3 = Les données du menu <b>Configuration -> Société/institution</b> sont requises car les informations saisies sont utilisées dans la plupart des écrans, en affichage, ou pour modifier le comportement de Dolibarr (comme par exemple des fonctions qui dépendent de votre pays).
+SetupDescription4 = Les données du menu <b>Configuration -> Modules</b> sont indispensables car Dolibarr ERP/CRM est constitué d'un ensemble de modules tous plus ou moins indépendant. C'est après avoir activé les modules qui vous intéressent que vous verrez apparaitre les fonctionnalités dans les menus.
+SetupDescription5 = Les autres entrées de configuration gèrent des paramètres facultatifs.
 EventsSetup = Configuration du traçage des évenements
 LogEvents = Evènements d'audit de sécurité
 Audit = Audit
diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang
index 7c1391596fc..e95b8ea70d7 100644
--- a/htdocs/langs/fr_FR/install.lang
+++ b/htdocs/langs/fr_FR/install.lang
@@ -1,6 +1,6 @@
 # Dolibarr language file - fr_FR - install
 CHARSET=UTF-8
-InstallEasy=Nous avons fait en sorte que l'installation soit le plus simple possible, vous n'avez qu'à suivre les étapes une à une.
+InstallEasy=Veuillez suivre les étapes une à une.
 MiscellanousChecks=Vérification de prérequis
 DolibarrWelcome=Bienvenue sur Dolibarr
 ConfFileExists=Le fichier de configuration <b>%s</b> existe.
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 4de3eb60fa9..0159788e605 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -139,7 +139,7 @@ if ($conf->file->main_force_https)
 		{
 			$newurl=eregi_replace('^http:','https:',$_SERVER["SCRIPT_URI"]);
 
-			dol_syslog("dolibarr_main_force_https is on, we make a redirect to ".$newurl);
+			dol_syslog("main.inc: dolibarr_main_force_https is on, we make a redirect to ".$newurl);
 			header("Location: ".$newurl);
 			exit;
 		}
@@ -155,7 +155,7 @@ if ($conf->file->main_force_https)
 
 			$newurl='https://'.$domaineport.$_SERVER["REQUEST_URI"];
 			//print 'eee'.$newurl; 	exit;
-			dol_syslog("dolibarr_main_force_https is on, we make a redirect to ".$newurl);
+			dol_syslog("main.inc: dolibarr_main_force_https is on, we make a redirect to ".$newurl);
 			header("Location: ".$newurl);
 			exit;
 		}
@@ -169,6 +169,27 @@ if (! defined('NOREQUIREHTML')) require_once(DOL_DOCUMENT_ROOT ."/html.form.clas
 if (! defined('NOREQUIREAJAX') && $conf->use_javascript_ajax) require_once(DOL_DOCUMENT_ROOT.'/lib/ajax.lib.php');	// Need 20ko memory
 //stopwithmem();
 
+// If install or upgrade process not done or not completely finished, we call the install page.
+if (! empty($conf->global->MAIN_NOT_INSTALLED) || ! empty($conf->global->MAIN_NOT_UPGRADED))
+{
+	dol_syslog("main.inc: A previous install or upgrade was not complete. Redirect to install page.", LOG_WARNING);
+	Header("Location: ".DOL_URL_ROOT."/install/index.php");
+	exit;
+}
+// If an upgrade process is required, we call the install page.
+if (! empty($conf->global->MAIN_VERSION_LAST_UPGRADE) && ($conf->global->MAIN_VERSION_LAST_UPGRADE != DOL_VERSION))
+{
+	require_once(DOL_DOCUMENT_ROOT ."/lib/admin.lib.php");
+	$dolibarrversionlastupgrade=split('[\.-]',$conf->global->MAIN_VERSION_LAST_UPGRADE);
+	$dolibarrversionprogram=split('[\.-]',DOL_VERSION);
+	if (versioncompare($dolibarrversionprogram,$dolibarrversionlastupgrade) > 0)	// Programs have a version higher than database
+	{
+		dol_syslog("main.inc: database version ".$conf->global->MAIN_VERSION_LAST_UPGRADE." is lower than programs version ".DOL_VERSION.". Redirect to install page.", LOG_WARNING);
+		Header("Location: ".DOL_URL_ROOT."/install/index.php");
+		exit;
+	}
+}
+
 // Creation d'un jeton contre les failles CSRF
 if (! defined('NOTOKENRENEWAL'))
 {
@@ -599,12 +620,12 @@ if (sizeof($conf->need_smarty) > 0)
 // Tentative de hacking ?
 if (! $user->login) accessforbidden();
 
-// Verifie si user actif
+// Check if user is active
 if ($user->statut < 1)
 {
 	// Si non actif, on delogue le user
 	$langs->load("other");
-	dol_syslog ("Authentification ko car login desactive");
+	dol_syslog ("Authentification ko as login is disbaled");
 	accessforbidden($langs->trans("ErrorLoginDisabled"));
 	exit;
 }
@@ -615,14 +636,6 @@ dol_syslog("Access to ".$_SERVER["PHP_SELF"],LOG_INFO);
 // For backward compatibility
 if (! defined('MAIN_INFO_SOCIETE_PAYS')) define('MAIN_INFO_SOCIETE_PAYS','1');
 
-// If install not finished, we start again.
-if (defined("MAIN_NOT_INSTALLED"))
-{
-	Header("Location: ".DOL_URL_ROOT."/install/index.php");
-	exit;
-}
-
-
 // On charge les fichiers lang principaux
 $langs->load("main");
 $langs->load("dict");
diff --git a/htdocs/support/default.css b/htdocs/support/default.css
index acc7ed481c1..9e34b137ac6 100644
--- a/htdocs/support/default.css
+++ b/htdocs/support/default.css
@@ -44,7 +44,6 @@ margin: 0em 0em 0em 0em;
 border: 1px solid #AAAAAA;
 }
 
-
 div.soustitre {
 font-size: 15px;
 font-weight: bold;
@@ -58,10 +57,10 @@ text-align: right;
 
 inputdisabled
 {
-    background: #FDFDFD;
-    border: 1px solid #ACBCBB;
-    padding: 0px 0px 0px 0px;
-    margin: 0px 0px 0px 0px;
+background: #FDFDFD;
+border: 1px solid #ACBCBB;
+padding: 0px 0px 0px 0px;
+margin: 0px 0px 0px 0px;
 }
 
 table.main {
@@ -70,13 +69,6 @@ text-align: left;
 border: 1px solid #8CACBB;
 }
 
-table.main-inside {
-padding-left: 10px;
-padding-right: 10px;
-margin-bottom: 20px;
-margin-top: 10px;
-}
-
 div.ok {
 color: #114466;
 }
@@ -96,23 +88,6 @@ font.error {
 color: #550000;
 }
 
-div.barrebottom {
-text-align: right;
-margin-top: 10px;
-padding-top: 10px;
-padding-bottom: 10px;
-padding-right: 10px;
-}
-
-
-div.footer {
-background-color: #dcdff4;
-font-size: 10px;
-border-top: solid black 1px;
-padding-left: 5px;
-text-align: center;
-}
-
 div.header {
 background-color: #dcdff4;
 border-bottom: solid black 1px;
@@ -120,10 +95,6 @@ padding-left: 5px;
 text-align: center;
 }
 
-div.footer p {
-margin: 0px;
-}
-
 a:link,a:visited,a:active {
 	color: #2266DD;
 	text-decoration:none;
@@ -138,12 +109,6 @@ text-decoration:none;
 }
 
 
-div.comment {
-text-decoration:none;
-color:black;
-font-size: 13px;
-}
-
 div.main-inside h2 {
 font-size:18px;
 font-weight: bold;
@@ -188,4 +153,4 @@ background: #DDDFDD;
 }
 
 table { font-size: 12px; }
-table.login {  border: 1px solid #C0C0C0; background: #F0F0F0 url(background.png) repeat-x;font-size: 12px; }
+table.login {  border: 1px solid #C0C0C0; background: #F0F0F0 url(background.png) repeat-x; font-size: 12px; }
-- 
GitLab