| '.$langs->trans("MessageOfDay").' | ';
$doleditor = new DolEditor('main_motd', (isset($conf->global->MAIN_MOTD)?$conf->global->MAIN_MOTD:''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%');
$doleditor->Create();
@@ -345,14 +335,11 @@ if ($action == 'edit') // Edit
}
else // Show
{
- $var=true;
-
// Language
print '';
print '| '.$langs->trans("Parameters").' | '.$langs->trans("Value").' | | ';
- $var=!$var;
- print '| '.$langs->trans("DefaultLanguage").' | ';
+ print ' | | '.$langs->trans("DefaultLanguage").' | ';
$s=picto_from_langcode($conf->global->MAIN_LANG_DEFAULT);
print ($s?$s.' ':'');
print ($conf->global->MAIN_LANG_DEFAULT=='auto'?$langs->trans("AutoDetectLang"):$langs->trans("Language_".$conf->global->MAIN_LANG_DEFAULT));
@@ -361,9 +348,8 @@ else // Show
if ($user->admin && $conf->global->MAIN_LANG_DEFAULT!='auto') print info_admin($langs->trans("SubmitTranslation".($conf->global->MAIN_LANG_DEFAULT=='en_US'?'ENUS':''),$conf->global->MAIN_LANG_DEFAULT),1);
print ' | ';
print " ";
-
- $var=!$var;
- print '| '.$langs->trans("EnableMultilangInterface").' | ' . yn($conf->global->MAIN_MULTILANGS) . ' | ';
+
+ print ' | '.$langs->trans("EnableMultilangInterface").' | ' . yn($conf->global->MAIN_MULTILANGS) . ' | ';
print ' | ';
print " ";
@@ -380,11 +366,10 @@ else // Show
{
print '';
print '| '.$langs->trans("PermanentLeftSearchForm").' | '.$langs->trans("Activated").' | | ';
- $var=true;
foreach ($searchform as $key => $value)
{
- $var=!$var;
- print '| '.$searchformtitle[$key].' | '.yn($searchformconst[$key]).' | ';
+
+ print ' | '.$searchformtitle[$key].' | '.yn($searchformconst[$key]).' | ';
print '';
if (! empty($searchformmodule[$key])) print $langs->trans("IfModuleEnabled",$langs->transnoentitiesnoconv($searchformmodule[$key]));
print ' | ';
@@ -394,28 +379,20 @@ else // Show
}
// Other
- $var=true;
print '';
print '| '.$langs->trans("Parameters").' | '.$langs->trans("Value").' | ';
- $var=!$var;
- print '| '.$langs->trans("EnableShowLogo").' | ' . yn($conf->global->MAIN_SHOW_LOGO) . ' | ';
- print ' | ';
- print " ";
-
- $var=!$var;
- print '| '.$langs->trans("DefaultMaxSizeList").' | ' . $conf->global->MAIN_SIZE_LISTE_LIMIT . ' | ';
+ print ' | '.$langs->trans("DefaultMaxSizeList").' | ' . $conf->global->MAIN_SIZE_LISTE_LIMIT . ' | ';
print ' | ';
print " ";
- $var=!$var;
- print '| '.$langs->trans("DefaultMaxSizeShortList").' | ' . $conf->global->MAIN_SIZE_SHORTLIST_LIMIT . ' | ';
+ print ' | '.$langs->trans("DefaultMaxSizeShortList").' | ' . $conf->global->MAIN_SIZE_SHORTLIST_LIMIT . ' | ';
print ' | ';
print " ";
// Disable javascript/ajax
- $var=!$var;
- print '| '.$langs->trans("DisableJavascript").' | ';
+
+ print ' | | '.$langs->trans("DisableJavascript").' | ';
print yn($conf->global->MAIN_DISABLE_JAVASCRIPT)." | ";
print ' | ';
print " ";
@@ -423,40 +400,36 @@ else // Show
// Activate preview tab on element card
if (class_exists("Imagick"))
{
- $var=!$var;
- print '| '.$langs->trans("UsePreviewTabs").' | ';
+
+ print ' | | '.$langs->trans("UsePreviewTabs").' | ';
print yn(isset($conf->global->MAIN_USE_PREVIEW_TABS)?$conf->global->MAIN_USE_PREVIEW_TABS:0)." | ";
print ' | ';
print " ";
}
// First day for weeks
- $var=!$var;
- print '| '.$langs->trans("WeekStartOnDay").' | ';
+ print ' | | '.$langs->trans("WeekStartOnDay").' | ';
print $langs->trans("Day".(isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:'1'));
print ' | ';
print ' | ';
print ' ';
// DefaultWorkingDays
- $var=!$var;
- print '| '.$langs->trans("DefaultWorkingDays").' | ';
+ print ' | | '.$langs->trans("DefaultWorkingDays").' | ';
print isset($conf->global->MAIN_DEFAULT_WORKING_DAYS)?$conf->global->MAIN_DEFAULT_WORKING_DAYS:'1-5';
print ' | ';
print ' | ';
print ' ';
// DefaultWorkingHours
- $var=!$var;
- print '| '.$langs->trans("DefaultWorkingHours").' | ';
+ print ' | | '.$langs->trans("DefaultWorkingHours").' | ';
print isset($conf->global->MAIN_DEFAULT_WORKING_HOURS)?$conf->global->MAIN_DEFAULT_WORKING_HOURS:'9-18';
print ' | ';
print ' | ';
print ' ';
// Firstname / Name position
- $var=!$var;
- print '| '.$langs->trans("FirstnameNamePosition").' | ';
+ print ' | | '.$langs->trans("FirstnameNamePosition").' | ';
if (empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)) { print $langs->trans("Firstname").' '.$langs->trans("Lastname"); }
else { print $langs->trans("Lastname").' '.$langs->trans("Firstname"); }
print ' | ';
@@ -464,40 +437,48 @@ else // Show
print ' ';
// Hide unauthorized button
- $var=!$var;
- print '| '.$langs->trans("ButtonHideUnauthorized").' | ';
+ print ' | | '.$langs->trans("ButtonHideUnauthorized").' | ';
print yn((isset($conf->global->MAIN_BUTTON_HIDE_UNAUTHORIZED)?$conf->global->MAIN_BUTTON_HIDE_UNAUTHORIZED:0),1);
print ' | ';
- // Link to help center
- $var=!$var;
- print '| '.$langs->trans("DisableLinkToHelpCenter").' | ';
- print yn((isset($conf->global->MAIN_HELPCENTER_DISABLELINK)?$conf->global->MAIN_HELPCENTER_DISABLELINK:0),1);
- print ' | ';
+ // Show logo
+ print '| '.$langs->trans("EnableShowLogo").' | ' . yn($conf->global->MAIN_SHOW_LOGO) . ' | ';
+ print ' | ';
+ print " ";
- // Link to wiki help
- $var=!$var;
- print '| '.$langs->trans("DisableLinkToHelp",img_picto('',DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/helpdoc.png','',1)).' | ';
- print yn((isset($conf->global->MAIN_HELP_DISABLELINK)?$conf->global->MAIN_HELP_DISABLELINK:0),1);
- print ' | ';
-
- // Show bugtrack link
- $var=!$var;
- print '| '.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).' | ';
+ // Hide version link
+ /*
+ print ' | | '.$langs->trans("HideVersionLink").' | ';
+ print yn($conf->global->MAIN_HIDE_VERSION);
+ print ' | ';
+ print ' | ';
+ print ' ';
+ */
+
+ // Show bugtrack link
+ print '| '.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).' | ';
print yn($conf->global->MAIN_BUGTRACK_ENABLELINK)." | ";
print ' | ';
print " ";
- // Message login
- $var=!$var;
- print '| '.$langs->trans("MessageLogin").' | ';
+ // Link to wiki help
+ print ' | | '.$langs->trans("DisableLinkToHelp",img_picto('',DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/helpdoc.png','',1)).' | ';
+ print yn((isset($conf->global->MAIN_HELP_DISABLELINK)?$conf->global->MAIN_HELP_DISABLELINK:0),1);
+ print ' | ';
+
+ // Link to help center
+ print '| '.$langs->trans("DisableLinkToHelpCenter").' | ';
+ print yn((isset($conf->global->MAIN_HELPCENTER_DISABLELINK)?$conf->global->MAIN_HELPCENTER_DISABLELINK:0),1);
+ print ' | ';
+
+ // Message login
+ print '| '.$langs->trans("MessageLogin").' | ';
if (isset($conf->global->MAIN_HOME)) print dol_htmlcleanlastbr($conf->global->MAIN_HOME);
else print ' ';
print ' | '."\n";
// Message of the day
- $var=!$var;
- print '| '.$langs->trans("MessageOfDay").' | ';
+ print ' | | '.$langs->trans("MessageOfDay").' | ';
if (isset($conf->global->MAIN_MOTD)) print dol_htmlcleanlastbr($conf->global->MAIN_MOTD);
else print ' ';
print ' | '."\n";
diff --git a/htdocs/admin/modulehelp.php b/htdocs/admin/modulehelp.php
index 9ff7a4478ff..5b428443248 100644
--- a/htdocs/admin/modulehelp.php
+++ b/htdocs/admin/modulehelp.php
@@ -239,7 +239,7 @@ $head[$h][2] = 'desc';
$h++;
$head[$h][0] = DOL_URL_ROOT."/admin/modulehelp.php?id=".$id.'&mode=feature';
-$head[$h][1] = $langs->trans("Features");
+$head[$h][1] = $langs->trans("TechnicalServicesProvided");
$head[$h][2] = 'feature';
$h++;
@@ -251,45 +251,38 @@ foreach($orders as $tmpkey => $tmpvalue)
if ($objMod->numero == $id)
{
$key = $i;
+ $modName = $filename[$tmpkey];
+ $dirofmodule = $dirmod[$tmpkey];
break;
}
$i++;
}
$value = $orders[$key];
+$special = $objMod->special;
+$tab=explode('_',$value);
+$familyposition=$tab[0]; $familykey=$tab[1]; $module_position=$tab[2]; $numero=$tab[3];
+
+// Check filters
+$modulename=$objMod->getName();
+$moduledesc=$objMod->getDesc();
+$moduleauthor=$objMod->getPublisher();
+
print '';
-
-print load_fiche_titre($objMod->getDesc(),$moreinfo,'object_'.$objMod->picto);
+print load_fiche_titre(($modulename?$modulename:$moduledesc), $moreinfo, 'object_'.$objMod->picto);
print ' ';
-dol_fiche_head($head, $mode, $title);
+dol_fiche_head($head, $mode, $title, -1);
-
-
-$tab=explode('_',$value);
-$familyposition=$tab[0]; $familykey=$tab[1]; $module_position=$tab[2]; $numero=$tab[3];
-
-$modName = $filename[$key];
-$objMod = $modules[$key];
-$dirofmodule = $dirmod[$key];
-
-$special = $objMod->special;
-
-if (! $objMod->getName())
+if (! $modulename)
{
dol_syslog("Error for module ".$key." - Property name of module looks empty", LOG_WARNING);
}
$const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',get_class($objMod)));
-// Check filters
-$modulename=$objMod->getName();
-$moduledesc=$objMod->getDesc();
-$moduledesclong=$objMod->getDescLong();
-$moduleauthor=$objMod->getPublisher();
-
// Load all lang files of module
if (isset($objMod->langfiles) && is_array($objMod->langfiles))
{
@@ -322,6 +315,8 @@ $text='';
if ($mode == 'desc')
{
+ if ($moduledesc) $text.=$moduledesc.' ';
+
$text.=' '.$langs->trans("Version").': '.$version;
$textexternal='';
@@ -329,7 +324,7 @@ if ($mode == 'desc')
{
$textexternal.=' '.$langs->trans("Origin").': '.$langs->trans("ExternalModule",$dirofmodule);
if ($objMod->editor_name != 'dolibarr') $textexternal.=' '.$langs->trans("Publisher").': '.(empty($objMod->editor_name)?$langs->trans("Unknown"):$objMod->editor_name);
- if (! empty($objMod->editor_url) && ! preg_match('/dolibarr\.org/i',$objMod->editor_url)) $textexternal.=' '.$langs->trans("Url").': '.$objMod->editor_url;
+ if (! empty($objMod->editor_url) && ! preg_match('/dolibarr\.org/i',$objMod->editor_url)) $textexternal.=' '.$langs->trans("Url").': '.$objMod->editor_url.'';
$text.=$textexternal;
$text.=' ';
}
@@ -342,7 +337,8 @@ if ($mode == 'desc')
else $text.=$langs->trans("Disabled");
$text.=' ';
- if ($objMod->getDescLong()) $text.=$objMod->getDesc().' ';
+ $moduledesclong=$objMod->getDescLong();
+ if ($moduledesclong) $text.='
'.$moduledesclong.' ';
}
if ($mode == 'feature')
@@ -360,6 +356,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddDictionaries").': ';
if (isset($objMod->dictionaries) && isset($objMod->dictionaries['tablib']) && is_array($objMod->dictionaries['tablib']) && count($objMod->dictionaries['tablib']))
{
@@ -372,6 +370,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddBoxes").': ';
if (isset($objMod->boxes) && is_array($objMod->boxes) && count($objMod->boxes))
{
@@ -384,6 +384,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddModels").': ';
if (isset($objMod->module_parts) && isset($objMod->module_parts['models']) && $objMod->module_parts['models'])
{
@@ -391,6 +393,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddSubstitutions").': ';
if (isset($objMod->module_parts) && isset($objMod->module_parts['substitutions']) && $objMod->module_parts['substitutions'])
{
@@ -398,6 +402,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddSheduledJobs").': ';
if (isset($objMod->cronjobs) && is_array($objMod->cronjobs) && count($objMod->cronjobs))
{
@@ -410,6 +416,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddTriggers").': ';
if (isset($objMod->module_parts) && isset($objMod->module_parts['triggers']) && $objMod->module_parts['triggers'])
{
@@ -417,6 +425,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddHooks").': ';
if (isset($objMod->module_parts) && is_array($objMod->module_parts['hooks']) && count($objMod->module_parts['hooks']))
{
@@ -429,6 +439,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddPermissions").': ';
if (isset($objMod->rights) && is_array($objMod->rights) && count($objMod->rights))
{
@@ -441,6 +453,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddMenus").': ';
if (isset($objMod->menu) && ! empty($objMod->menu)) // objMod can be an array or just an int 1
{
@@ -448,6 +462,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddExportProfiles").': ';
if (isset($objMod->export_label) && is_array($objMod->export_label) && count($objMod->export_label))
{
@@ -460,6 +476,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddImportProfiles").': ';
if (isset($objMod->import_label) && is_array($objMod->import_label) && count($objMod->import_label))
{
@@ -472,6 +490,8 @@ if ($mode == 'feature')
}
else $text.=$langs->trans("No");
+ $text.=' ';
+
$text.=' '.$langs->trans("AddOtherPagesOrServices").': ';
$text.=$langs->trans("DetectionNotPossible");
}
diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index 107cffd8500..52b250e8cf0 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -440,7 +440,7 @@ if ($mode == 'common')
print ' ';
print ' ';
- dol_fiche_head($head, $mode, '');
+ dol_fiche_head($head, $mode, '', -1);
$moreforfilter = '';
$moreforfilter.=' ';
@@ -773,7 +773,7 @@ if ($mode == 'common')
if ($mode == 'marketplace')
{
- dol_fiche_head($head, $mode, '');
+ dol_fiche_head($head, $mode, '', -1);
// Marketplace
print " \n";
@@ -809,7 +809,7 @@ if ($mode == 'marketplace')
if ($mode == 'deploy')
{
- dol_fiche_head($head, $mode, '');
+ dol_fiche_head($head, $mode, '', -1);
$allowonlineinstall=true;
diff --git a/htdocs/core/boxes/box_project.php b/htdocs/core/boxes/box_project.php
index c2cc1cb041b..4277481499f 100644
--- a/htdocs/core/boxes/box_project.php
+++ b/htdocs/core/boxes/box_project.php
@@ -72,33 +72,46 @@ class box_project extends ModeleBoxes
$totalnb = 0;
$totalnbTask=0;
- $textHead = $langs->trans("Projects");
+ $textHead = $langs->trans("OpenedProjects");
$this->info_box_head = array('text' => $textHead, 'limit'=> dol_strlen($textHead));
// list the summary of the orders
if ($user->rights->projet->lire) {
-
- $sql = "SELECT p.rowid, p.ref, p.title, p.fk_statut ";
+
+ include_once(DOL_DOCUMENT_ROOT.'/projet/class/project.class.php');
+ $projectstatic = new Project($this->db);
+
+ $socid=$user->societe_id;
+
+ // Get list of project id allowed to user (in a string list separated by coma)
+ $projectsListId='';
+ if (! $user->rights->projet->all->lire) $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1,$socid);
+
+ $sql = "SELECT p.rowid, p.ref, p.title, p.fk_statut, p.public";
$sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
if($user->socid) $sql.= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid=p.fk_soc";
- $sql.= " WHERE p.entity = ".$conf->entity;
- if($user->socid) $sql.= " AND s.rowid = ".$user->socid;
+ $sql.= " WHERE p.entity IN (".getEntity('project',1).')';
+ if (! $user->rights->projet->all->lire) $sql.= " AND p.rowid IN (".$projectsListId.")"; // public and assigned to, or restricted to company for external users
+ if ($user->socid) $sql.= " AND s.rowid = ".$user->socid;
$sql.= " AND p.fk_statut = 1"; // Seulement les projets ouverts
- $sql.= " ORDER BY p.datec DESC";
- $sql.= $db->plimit($max, 0);
+ if ($socid) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")";
+ if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND ((s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id.") OR (s.rowid IS NULL))";
+
+ $sql.= " ORDER BY p.datec DESC";
+ //$sql.= $db->plimit($max, 0);
$result = $db->query($sql);
if ($result) {
$num = $db->num_rows($result);
$i = 0;
- while ($i < $num) {
+ while ($i < min($num, $max)) {
$objp = $db->fetch_object($result);
$tooltip = $langs->trans('Project') . ': ' . $objp->ref;
$this->info_box_contents[$i][0] = array(
'td' => 'align="left" width="16"',
- 'logo' => 'object_project',
+ 'logo' => 'object_project'.($objp->public?'pub':''),
'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/projet/card.php?id=".$objp->rowid,
);
@@ -117,30 +130,35 @@ class box_project extends ModeleBoxes
$sql ="SELECT count(*) as nb, sum(progress) as totprogress";
$sql.=" FROM ".MAIN_DB_PREFIX."projet as p LEFT JOIN ".MAIN_DB_PREFIX."projet_task as pt on pt.fk_projet = p.rowid";
- $sql.=" WHERE p.entity = ".$conf->entity;
- $sql.=" AND p.rowid = ".$objp->rowid;
+ $sql.= " WHERE p.entity IN (".getEntity('project',1).')';
+ $sql.=" AND p.rowid = ".$objp->rowid;
$resultTask = $db->query($sql);
if ($resultTask) {
$objTask = $db->fetch_object($resultTask);
$this->info_box_contents[$i][3] = array(
'td' => 'class="right"',
- 'text' => number_format($objTask->nb, 0, ',', ' ')." ".$langs->trans("Tasks"),
+ 'text' => $objTask->nb." ".$langs->trans("Tasks"),
);
if ($objTask->nb > 0 )
$this->info_box_contents[$i][4] = array(
'td' => 'class="right"',
- 'text' => number_format(($objTask->totprogress/$objTask->nb), 0, ',', ' ')."%",
+ 'text' => round($objTask->totprogress/$objTask->nb, 0)."%",
);
else
$this->info_box_contents[$i][4] = array('td' => 'class="right"', 'text' => "N/A ");
$totalnbTask += $objTask->nb;
} else {
- $this->info_box_contents[$i][3] = array('td' => 'class="right"', 'text' => number_format(0, 0, ',', ' '));
+ $this->info_box_contents[$i][3] = array('td' => 'class="right"', 'text' => round(0));
$this->info_box_contents[$i][4] = array('td' => 'class="right"', 'text' => "N/A ");
}
$i++;
}
+ if ($max < $num)
+ {
+ $this->info_box_contents[$i][0] = array('td' => 'colspan="5"', 'text' => '...');
+ $i++;
+ }
}
}
@@ -158,11 +176,11 @@ class box_project extends ModeleBoxes
);
$this->info_box_contents[$i][2] = array(
'td' => 'align="right" ',
- 'text' => number_format($num, 0, ',', ' ')." ".$langs->trans("Projects"),
+ 'text' => round($num, 0)." ".$langs->trans("Projects"),
);
$this->info_box_contents[$i][3] = array(
'td' => 'align="right" ',
- 'text' => number_format($totalnbTask, 0, ',', ' ')." ".$langs->trans("Tasks"),
+ 'text' => (($max < $num) ? '' : (round($totalnbTask, 0)." ".$langs->trans("Tasks"))),
);
$this->info_box_contents[$i][4] = array(
'td' => '',
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 1256732999a..40ebac6bec4 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -1070,11 +1070,10 @@ class Form
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$comboenhancement =ajax_combobox($htmlname, $events, $conf->global->COMPANY_USE_SEARCH_TO_SELECT);
$out.= $comboenhancement;
- $nodatarole=($comboenhancement?' data-role="none"':'');
}
// Construct $out and $outarray
- $out.= ' |