diff --git a/ChangeLog b/ChangeLog
index 518acca1be4..9a5b69d433f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@ English Dolibarr ChangeLog
***** ChangeLog for 2.9 compared to 2.8 *****
For users:
+- New: Add Gant diagramm on project module.
- New: Can set a past delay to limit calendar export.
- New: Can join files on emailing campaigns.
- New: Add statistics on trips and expenses module.
diff --git a/htdocs/admin/syslog.php b/htdocs/admin/syslog.php
index e8a17e06b96..52c10117b4d 100644
--- a/htdocs/admin/syslog.php
+++ b/htdocs/admin/syslog.php
@@ -1,5 +1,5 @@
+/* Copyright (C) 2005-2010 Laurent Destailleur
* Copyright (C) 2005-2009 Regis Houssin
* Copyright (C) 2007 Rodolphe Quiedeville
*
@@ -63,7 +63,7 @@ if (! empty($_POST["action"]) && $_POST["action"] == 'set')
print ''.$langs->trans("ErrorUnknownSyslogConstant",$_POST["facility"]).'
';
}
}
-
+
if ($optionlogoutput == "file")
{
$filelog=$_POST["filename"];
@@ -119,7 +119,7 @@ print ' ';
print ' ';
print '';
print '';
-print ''.$langs->trans("Type").' '.$langs->trans("Parameter").' ';
+print ''.$langs->trans("Type").' '.$langs->trans("Value").' ';
print ' ';
print " \n";
$var=true;
@@ -145,7 +145,7 @@ print ' ';
print ' ';
print '";
}
- /*
- * Last linked projects
- */
- // TODO remplacer par une fonction
- if ($conf->projet->enabled && $user->rights->projet->lire)
- {
- print '';
-
- $sql = "SELECT p.rowid,p.title,p.ref,p.public, p.dateo as do";
- $sql .= " FROM ".MAIN_DB_PREFIX."projet as p";
- $sql .= " WHERE p.fk_soc = $objsoc->id";
- $sql .= " ORDER BY p.dateo DESC";
-
- $result=$db->query($sql);
- if ($result)
- {
- $num = $db->num_rows($result);
- if ($num > 0)
- {
- require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
-
- $projectstatic = new Project($db);
-
- print '';
- print ' ';
- print ' ';
-
- $var=true;
- $i = 0 ;
- while ($i < $num && $i < $MAXLIST)
- {
- $obj = $db->fetch_object($result);
- $projectstatic->fetch($obj->rowid);
-
- // To verify role of users
- $userAccess = $projectstatic->restrictedProjectArea($user,1);
-
- if ($user->rights->projet->lire && $userAccess > 0)
- {
- $var = !$var;
- print "";
-
- // Ref
- print ''.img_object($langs->trans("ShowProject"),($obj->public?'projectpub':'project'))." ".$obj->ref.' ';
- // Label
- print ''.$obj->title.' ';
- // Date
- print ''.dol_print_date($db->jdate($obj->do),"day").' ';
-
- print ' ';
- }
- $i++;
- }
- }
- $db->free($result);
- }
- else
- {
- dol_print_error($db);
- }
- print "
";
- }
-
/*
* Last linked chronodocs
*/
diff --git a/htdocs/compta/fiche.php b/htdocs/compta/fiche.php
index 2cd5387ae21..4925327e436 100644
--- a/htdocs/compta/fiche.php
+++ b/htdocs/compta/fiche.php
@@ -363,69 +363,6 @@ if ($socid > 0)
print "
";
}
- /*
- * Last linked projects
- */
- // TODO remplacer par une fonction
- if ($conf->projet->enabled && $user->rights->projet->lire)
- {
- print '';
-
- $sql = "SELECT p.rowid,p.title,p.ref,p.public, p.dateo as do";
- $sql .= " FROM ".MAIN_DB_PREFIX."projet as p";
- $sql .= " WHERE p.fk_soc = $societe->id";
- $sql .= " ORDER BY p.dateo DESC";
-
- $result=$db->query($sql);
- if ($result)
- {
- $num = $db->num_rows($result);
- if ($num > 0)
- {
- require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
-
- $projectstatic = new Project($db);
-
- print '';
- print ' ';
- print ' ';
-
- $var=true;
- $i = 0 ;
- while ($i < $num && $i < $MAXLIST)
- {
- $obj = $db->fetch_object($result);
- $projectstatic->fetch($obj->rowid);
-
- // To verify role of users
- $userAccess = $projectstatic->restrictedProjectArea($user,1);
-
- if ($user->rights->projet->lire && $userAccess > 0)
- {
- $var = !$var;
- print "";
-
- // Ref
- print ''.img_object($langs->trans("ShowProject"),($obj->public?'projectpub':'project'))." ".$obj->ref.' ';
- // Label
- print ''.$obj->title.' ';
- // Date
- print ''.dol_print_date($db->jdate($obj->do),"day").' ';
-
- print ' ';
- }
- $i++;
- }
- }
- $db->free($result);
- }
- else
- {
- dol_print_error($db);
- }
- print "
";
- }
-
print "";
print "";
diff --git a/htdocs/includes/jsgantt/jsgantt.js b/htdocs/includes/jsgantt/jsgantt.js
index ec6940fd844..7e675cebd3b 100644
--- a/htdocs/includes/jsgantt/jsgantt.js
+++ b/htdocs/includes/jsgantt/jsgantt.js
@@ -22,6 +22,9 @@ Copyright (c) 2009, Shlomy Gantz BlueBrick Inc. All rights reserved.
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*
+* LDR Modified to replace hard coded values by i18[key]
*/
/**
@@ -298,24 +301,24 @@ var vVisible = 1;
{
tmpPer = Math.ceil((this.getEnd() - this.getStart()) / ( 60 * 60 * 1000) );
if(tmpPer == 1)
- vDuration = '1 Hour';
+ vDuration = '1 '+i18n["sHour"];
else
- vDuration = tmpPer + ' Hours';
+ vDuration = tmpPer + ' '+i18n["sHours"];
}
else if (vFormat=='minute')
{
tmpPer = Math.ceil((this.getEnd() - this.getStart()) / ( 60 * 1000) );
if(tmpPer == 1)
- vDuration = '1 Minute';
+ vDuration = '1 '+i18n["sMinute"];
else
- vDuration = tmpPer + ' Minutes';
+ vDuration = tmpPer + ' '+i18n["sMinutes"];
}
else { //if(vFormat == 'day') {
tmpPer = Math.ceil((this.getEnd() - this.getStart()) / (24 * 60 * 60 * 1000) + 1);
- if(tmpPer == 1) vDuration = '1 Day';
- else vDuration = tmpPer + ' Days';
+ if(tmpPer == 1) vDuration = '1 '+i18n["sDay"];
+ else vDuration = tmpPer + ' '+i18n["sDays"];
}
//else if(vFormat == 'week') {
@@ -481,7 +484,7 @@ var vVisible = 1;
* @return {void}
*/ this.setVisible = function(pVisible) {vVisible = pVisible; };
- };
+};
/**
@@ -582,7 +585,9 @@ JSGantt.GanttChart = function(pGanttVar, pDiv, pFormat)
var vFormatArr = new Array("day","week","month","quarter");
var vQuarterArr = new Array(1,1,1,2,2,2,3,3,3,4,4,4);
var vMonthDaysArr = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
- var vMonthArr = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
+ var vMonthArr = new Array(i18n["January"],i18n["February"],i18n["March"],i18n["April"],i18n["May"],i18n["June"],i18n["July"],i18n["August"],i18n["September"],i18n["October"],i18n["November"],i18n["December"]);
+
+
/**
* Set current display format (minute/hour/day/week/month/quarter)
* Only the first 4 arguments are used, for example:
@@ -999,11 +1004,11 @@ Complete-Displays task percent complete
' ' +
' ' ;
- if(vShowRes ==1) vLeftTable += ' Resource ' ;
- if(vShowDur ==1) vLeftTable += ' Duration ' ;
- if(vShowComp==1) vLeftTable += ' % Comp. ' ;
- if(vShowStartDate==1) vLeftTable += ' Start Date ' ;
- if(vShowEndDate==1) vLeftTable += ' End Date ' ;
+ if(vShowRes ==1) vLeftTable += ' '+i18n["Resource"]+' ' ;
+ if(vShowDur ==1) vLeftTable += ' '+i18n["Duration"]+' ' ;
+ if(vShowComp==1) vLeftTable += ' % ' ;
+ if(vShowStartDate==1) vLeftTable += ' '+i18n["Start_Date"]+' ' ;
+ if(vShowEndDate==1) vLeftTable += ' '+i18n["End_Date"]+' ' ;
vLeftTable += '';
@@ -1063,33 +1068,33 @@ Complete-Displays task percent complete
' Powered by jsGantt Format:';
if (vFormatArr.join().indexOf("minute")!=-1) {
- if (vFormat=='minute') vLeftTable += ' Minute';
- else vLeftTable += ' Minute';
+ if (vFormat=='minute') vLeftTable += ' '+i18n["sMinute"];
+ else vLeftTable += ' '+i18n["sMinute"];
}
if (vFormatArr.join().indexOf("hour")!=-1) {
- if (vFormat=='hour') vLeftTable += ' Hour';
- else vLeftTable += ' Hour';
+ if (vFormat=='hour') vLeftTable += ' '+i18n["sHour"];
+ else vLeftTable += ' '+i18n["sHour"];
}
if (vFormatArr.join().indexOf("day")!=-1) {
- if (vFormat=='day') vLeftTable += ' Day';
- else vLeftTable += ' Day';
+ if (vFormat=='day') vLeftTable += ' '+i18n["sDay"];
+ else vLeftTable += ' '+i18n["sDay"];
}
if (vFormatArr.join().indexOf("week")!=-1) {
- if (vFormat=='week') vLeftTable += ' Week';
- else vLeftTable += ' Week';
+ if (vFormat=='week') vLeftTable += ' '+i18n["sWeek"];
+ else vLeftTable += ' '+i18n["sWeek"];
}
if (vFormatArr.join().indexOf("month")!=-1) {
- if (vFormat=='month') vLeftTable += ' Month';
- else vLeftTable += ' Month';
+ if (vFormat=='month') vLeftTable += ' '+i18n["sMonth"];
+ else vLeftTable += ' '+i18n["sMonth"];
}
if (vFormatArr.join().indexOf("quarter")!=-1) {
- if (vFormat=='quarter') vLeftTable += ' Quarter';
- else vLeftTable += ' Quarter';
+ if (vFormat=='quarter') vLeftTable += ' '+i18n["sQuarter"];
+ else vLeftTable += ' '+i18n["sQuarter"];
}
// vLeftTable += ' .';
diff --git a/htdocs/includes/menus/barre_left/eldy.lib.php b/htdocs/includes/menus/barre_left/eldy.lib.php
index 355d5880105..a0a06f930d6 100644
--- a/htdocs/includes/menus/barre_left/eldy.lib.php
+++ b/htdocs/includes/menus/barre_left/eldy.lib.php
@@ -704,7 +704,7 @@ function print_left_eldy_menu($db,$menu_array)
}
/*
- * Menu PROJETS
+ * Menu PROJECTS
*/
if ($mainmenu == 'project')
{
@@ -716,19 +716,19 @@ function print_left_eldy_menu($db,$menu_array)
$newmenu->add(DOL_URL_ROOT."/projet/fiche.php?leftmenu=projects&action=create&mode=mine", $langs->trans("NewProject"), 1, $user->rights->projet->creer);
$newmenu->add(DOL_URL_ROOT."/projet/liste.php?leftmenu=projects&mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire);
- $newmenu->add(DOL_URL_ROOT."/projet/index.php?leftmenu=projects", $langs->trans("Projects"), 0, $user->rights->projet->lire);
- $newmenu->add(DOL_URL_ROOT."/projet/fiche.php?leftmenu=projects&action=create", $langs->trans("NewProject"), 1, $user->rights->projet->creer);
- $newmenu->add(DOL_URL_ROOT."/projet/liste.php?leftmenu=projects", $langs->trans("List"), 1, $user->rights->projet->lire);
+ $newmenu->add(DOL_URL_ROOT."/projet/index.php?leftmenu=projects", $langs->trans("Projects"), 0, $user->rights->projet->lire && $user->rights->projet->all->lire);
+ $newmenu->add(DOL_URL_ROOT."/projet/fiche.php?leftmenu=projects&action=create", $langs->trans("NewProject"), 1, $user->rights->projet->creer && $user->rights->projet->all->creer);
+ $newmenu->add(DOL_URL_ROOT."/projet/liste.php?leftmenu=projects", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->all->lire);
$newmenu->add(DOL_URL_ROOT."/projet/activity/index.php?mode=mine", $langs->trans("MyActivities"), 0, $user->rights->projet->lire);
$newmenu->add(DOL_URL_ROOT."/projet/tasks/fiche.php?action=create&mode=mine", $langs->trans("NewTask"), 1, $user->rights->projet->creer);
$newmenu->add(DOL_URL_ROOT."/projet/tasks/index.php?mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire);
$newmenu->add(DOL_URL_ROOT."/projet/activity/list.php?mode=mine", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer);
- $newmenu->add(DOL_URL_ROOT."/projet/activity/index.php", $langs->trans("Activities"), 0, $user->rights->projet->lire);
- $newmenu->add(DOL_URL_ROOT."/projet/tasks/fiche.php?action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer);
- $newmenu->add(DOL_URL_ROOT."/projet/tasks/index.php", $langs->trans("List"), 1, $user->rights->projet->lire);
- $newmenu->add(DOL_URL_ROOT."/projet/activity/list.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer);
+ $newmenu->add(DOL_URL_ROOT."/projet/activity/index.php", $langs->trans("Activities"), 0, $user->rights->projet->lire && $user->rights->projet->all->lire);
+ $newmenu->add(DOL_URL_ROOT."/projet/tasks/fiche.php?action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer && $user->rights->projet->all->creer);
+ $newmenu->add(DOL_URL_ROOT."/projet/tasks/index.php", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->all->lire);
+ $newmenu->add(DOL_URL_ROOT."/projet/activity/list.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer && $user->rights->projet->all->creer);
}
}
diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang
index 7bd6d3f4894..db69bca7b3b 100755
--- a/htdocs/langs/en_US/projects.lang
+++ b/htdocs/langs/en_US/projects.lang
@@ -77,6 +77,7 @@ ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent ?
DoNotShowMyTasksOnly=See also tasks i am not affected to
ShowMyTasksOnly=View only tasks i am affected to
TaskRessourceLinks=Ressources
+ProjectsDedicatedToThisThirdParty=Projects dedicated to this third party
##### Types de contacts #####
TypeContact_project_internal_PROJECTLEADER=Project leader
TypeContact_project_external_PROJECTLEADER=Project leader
diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang
index 3e3a990d29b..097c6c4f3e3 100755
--- a/htdocs/langs/fr_FR/projects.lang
+++ b/htdocs/langs/fr_FR/projects.lang
@@ -77,6 +77,7 @@ ConfirmDeleteATimeSpent=Êtes-vous sûr de vouloir supprimer ce temps consommé
DoNotShowMyTasksOnly=Voir aussi les taches qui ne me sont pas affectées
ShowMyTasksOnly=Ne voir que les taches qui me sont affectées
TaskRessourceLinks=Affectation ressources
+ProjectsDedicatedToThisThirdParty=Projets dédiés à ce tiers
##### Types de contacts #####
TypeContact_project_internal_PROJECTLEADER=Chef de projet
TypeContact_project_external_PROJECTLEADER=Chef de projet
diff --git a/htdocs/lib/company.lib.php b/htdocs/lib/company.lib.php
index 2e00537b625..ff5ed758c87 100644
--- a/htdocs/lib/company.lib.php
+++ b/htdocs/lib/company.lib.php
@@ -286,6 +286,96 @@ function getFormeJuridiqueLabel($code)
}
+
+/**
+ * \brief Show html area for list of projects
+ * \param conf Object conf
+ * \param lang Object lang
+ * \param db Database handler
+ * \param objsoc Third party object
+ */
+function show_projects($conf,$langs,$db,$objsoc)
+{
+ global $user;
+
+ $i = -1 ;
+
+ if ($conf->projet->enabled && $user->rights->projet->lire)
+ {
+ $langs->load("projects");
+
+ print "\n";
+ print_titre($langs->trans("ProjectsDedicatedToThisThirdParty"));
+ print "\n".'';
+
+ $sql = "SELECT p.rowid,p.title,p.ref,p.public, p.dateo as do, p.datee as de";
+ $sql .= " FROM ".MAIN_DB_PREFIX."projet as p";
+ $sql .= " WHERE p.fk_soc = ".$objsoc->id;
+ $sql .= " ORDER BY p.dateo DESC";
+
+ $result=$db->query($sql);
+ if ($result)
+ {
+ $num = $db->num_rows($result);
+
+ print '';
+ print ''.$langs->trans("Ref").' '.$langs->trans("Name").' '.$langs->trans("DateStart").' '.$langs->trans("DateEnd").' ';
+ print ' ';
+
+ if ($num > 0)
+ {
+ require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
+
+ $projectstatic = new Project($db);
+
+ $i=0;
+ $var=true;
+ while ($i < $num)
+ {
+ $obj = $db->fetch_object($result);
+ $projectstatic->fetch($obj->rowid);
+
+ // To verify role of users
+ $userAccess = $projectstatic->restrictedProjectArea($user,1);
+
+ if ($user->rights->projet->lire && $userAccess > 0)
+ {
+ $var = !$var;
+ print "";
+
+ // Ref
+ print ''.img_object($langs->trans("ShowProject"),($obj->public?'projectpub':'project'))." ".$obj->ref.' ';
+ // Label
+ print ''.$obj->title.' ';
+ // Date start
+ print ''.dol_print_date($db->jdate($obj->do),"day").' ';
+ // Date end
+ print ''.dol_print_date($db->jdate($obj->de),"day").' ';
+
+ print ' ';
+ }
+ $i++;
+ }
+ }
+ else
+ {
+ print ''.$langs->trans("None").' ';
+ }
+ $db->free($result);
+ }
+ else
+ {
+ dol_print_error($db);
+ }
+ print "
";
+
+ print " \n";
+ }
+
+ return $i;
+}
+
+
/**
* \brief Show html area for list of contacts
* \param conf Object conf
@@ -298,6 +388,8 @@ function show_contacts($conf,$langs,$db,$objsoc)
global $user;
global $bc;
+ $i=-1;
+
$contactstatic = new Contact($db);
if ($conf->clicktodial->enabled)
@@ -325,12 +417,13 @@ function show_contacts($conf,$langs,$db,$objsoc)
$sql .= " ORDER by p.datec";
$result = $db->query($sql);
- $i = 0;
$num = $db->num_rows($result);
- $var=true;
if ($num)
{
+ $i=0;
+ $var=true;
+
while ($i < $num)
{
$obj = $db->fetch_object($result);
@@ -383,6 +476,8 @@ function show_contacts($conf,$langs,$db,$objsoc)
print "\n\n";
print " \n";
+
+ return $i;
}
diff --git a/htdocs/lib/project.lib.php b/htdocs/lib/project.lib.php
index b9371d419a3..66b7cc7a02b 100644
--- a/htdocs/lib/project.lib.php
+++ b/htdocs/lib/project.lib.php
@@ -92,13 +92,10 @@ function project_prepare_head($object)
$h++;
*/
- if ($conf->global->MAIN_FEATURES_LEVEL >= 1)
- {
- $head[$h][0] = DOL_URL_ROOT.'/projet/ganttview.php?id='.$object->id;
- $head[$h][1] = $langs->trans("Gantt");
- $head[$h][2] = 'gantt';
- $h++;
- }
+ $head[$h][0] = DOL_URL_ROOT.'/projet/ganttview.php?id='.$object->id;
+ $head[$h][1] = $langs->trans("Gantt");
+ $head[$h][2] = 'gantt';
+ $h++;
return $head;
}
diff --git a/htdocs/projet/ganttchart.php b/htdocs/projet/ganttchart.php
index 1a1e2724396..b479a5baf40 100644
--- a/htdocs/projet/ganttchart.php
+++ b/htdocs/projet/ganttchart.php
@@ -30,14 +30,6 @@