diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php
index c2dc7f6b2a6..615ebd24f01 100644
--- a/htdocs/comm/action/class/actioncomm.class.php
+++ b/htdocs/comm/action/class/actioncomm.class.php
@@ -85,6 +85,11 @@ class ActionComm extends CommonObject
*/
public $type_id;
+ /**
+ * @var string Calendar of event (Type of type of event). 'system'=Default calendar, 'systemauto'=Auto calendar, 'birthdate', 'holiday', 'module'=Calendar specific to a module
+ */
+ public $type;
+
/**
* @var string Code into parent table llx_c_actioncomm (used only if option to use type is set). With default setup, should be AC_OTH_AUTO or AC_OTH.
*/
@@ -95,16 +100,16 @@ class ActionComm extends CommonObject
*/
public $type_label;
- /**
- * @var string Label into parent table llx_c_actioncomm (used only if option to use type is set)
- */
- public $type;
-
/**
* @var string Color into parent table llx_c_actioncomm (used only if option to use type is set)
*/
public $type_color;
+ /**
+ * @var string Picto for type of event (used only if option to use type is set)
+ */
+ public $type_picto;
+
/**
* @var string Free code to identify action. Ie: Agenda trigger add here AC_TRIGGERNAME ('AC_COMPANY_CREATE', 'AC_PROPAL_VALIDATE', ...)
*/
@@ -1376,7 +1381,7 @@ class ActionComm extends CommonObject
* @param int $maxlength Max number of charaters into label. If negative, use the ref as label.
* @param string $classname Force style class on a link
* @param string $option '' = Link to action, 'birthday'= Link to contact, 'holiday' = Link to leave
- * @param int $overwritepicto 1 = Overwrite picto
+ * @param int $overwritepicto 1 = Overwrite picto with this one
* @param int $notooltip 1 = Disable tooltip
* @param int $save_lastsearch_value -1 = Auto, 0 = No save of lastsearch_values when clicking, 1 = Save lastsearch_values whenclicking
* @return string Chaine avec URL
@@ -1426,8 +1431,8 @@ class ActionComm extends CommonObject
if (!empty($this->note_private))
$tooltip .= '
'.$langs->trans('Note').': '.(dol_textishtml($this->note_private) ? str_replace(array("\r", "\n"), "", $this->note_private) : str_replace(array("\r", "\n"), '
', $this->note_private));
$linkclose = '';
- if (!empty($conf->global->AGENDA_USE_EVENT_TYPE) && $this->type_color)
- $linkclose = ' style="background-color:#'.$this->type_color.'"';
+ //if (!empty($conf->global->AGENDA_USE_EVENT_TYPE) && $this->type_color)
+ // $linkclose = ' style="background-color:#'.$this->type_color.'"';
if (empty($notooltip))
{
@@ -1453,6 +1458,7 @@ class ActionComm extends CommonObject
elseif ($option == 'holiday')
$url = DOL_URL_ROOT.'/holiday/card.php?id='.$this->id;
else $url = DOL_URL_ROOT.'/comm/action/card.php?id='.$this->id;
+
if ($option !== 'nolink')
{
// Add param to save lastsearch_values or not
@@ -1494,7 +1500,7 @@ class ActionComm extends CommonObject
}
$result .= $linkstart;
- if ($withpicto) $result .= img_object(($notooltip ? '' : $langs->trans("ShowAction").': '.$libelle), ($overwritepicto ? $overwritepicto : 'action'), ($notooltip ? 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'"' : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
+ if ($withpicto) $result .= img_object(($notooltip ? '' : $langs->trans("ShowAction").': '.$libelle), ($overwritepicto ? $overwritepicto : 'action'), ($this->type_color ? 'style="color: #'.$this->type_color.' !important;" ' : '').($notooltip ? 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'"' : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
$result .= $libelleshort;
$result .= $linkend;
@@ -1520,21 +1526,25 @@ class ActionComm extends CommonObject
$imgpicto = '';
if (!empty($conf->global->AGENDA_USE_EVENT_TYPE))
{
+ $color = '';
+ if ($this->type_color) {
+ $color = 'style="color: #'.$this->type_color.' !important;"';
+ }
if ($this->type_picto) {
$imgpicto = img_picto('', $this->type_picto, 'class="paddingright"');
} else {
- if ($this->type_code == 'AC_RDV') $imgpicto = img_picto('', 'meeting', '', false, 0, 0, '', 'paddingright');
- elseif ($this->type_code == 'AC_TEL') $imgpicto = img_picto('', 'object_phoning', '', false, 0, 0, '', 'paddingright');
- elseif ($this->type_code == 'AC_FAX') $imgpicto = img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'paddingright');
- elseif ($this->type_code == 'AC_EMAIL' || $this->type_code == 'AC_EMAIL_IN') $imgpicto = img_picto('', 'object_email', '', false, 0, 0, '', 'paddingright');
- elseif ($this->type_code == 'AC_INT') $imgpicto = img_picto('', 'object_intervention', '', false, 0, 0, '', 'paddingright');
- elseif ($this->type_code == 'AC_OTH' && $this->code == 'TICKET_MSG') $imgpicto = img_picto('', 'object_conversation', '', false, 0, 0, '', 'paddingright');
- elseif (!preg_match('/_AUTO/', $this->type_code)) $imgpicto = img_picto('', 'user-cog', '', false, 0, 0, '', 'paddingright');
- else $imgpicto = img_picto('', 'cog', '', false, 0, 0, '', 'paddingright');
+ if ($this->type_code == 'AC_RDV') $imgpicto = img_picto('', 'meeting', $color, false, 0, 0, '', 'paddingright');
+ elseif ($this->type_code == 'AC_TEL') $imgpicto = img_picto('', 'object_phoning', $color, false, 0, 0, '', 'paddingright');
+ elseif ($this->type_code == 'AC_FAX') $imgpicto = img_picto('', 'object_phoning_fax', $color, false, 0, 0, '', 'paddingright');
+ elseif ($this->type_code == 'AC_EMAIL' || $this->type_code == 'AC_EMAIL_IN') $imgpicto = img_picto('', 'object_email', $color, false, 0, 0, '', 'paddingright');
+ elseif ($this->type_code == 'AC_INT') $imgpicto = img_picto('', 'object_intervention', $color, false, 0, 0, '', 'paddingright');
+ elseif ($this->type_code == 'AC_OTH' && $this->code == 'TICKET_MSG') $imgpicto = img_picto('', 'object_conversation', $color, false, 0, 0, '', 'paddingright');
+ elseif ($this->type != 'systemauto') $imgpicto = img_picto('', 'user-cog', $color, false, 0, 0, '', 'paddingright');
+ else $imgpicto = img_picto('', 'cog', $color, false, 0, 0, '', 'paddingright');
}
} else {
// 2 picto: 1 for auto, 1 for manual
- if (!preg_match('/_AUTO/', $this->type_code)) $imgpicto = img_picto('', 'user-cog', '', false, 0, 0, '', 'paddingright');
+ if ($this->type != 'systemauto') $imgpicto = img_picto('', 'user-cog', '', false, 0, 0, '', 'paddingright');
else $imgpicto = img_picto('', 'cog', '', false, 0, 0, '', 'paddingright');
}
return $imgpicto;
diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php
index 870bb8c109e..6b02c026575 100644
--- a/htdocs/comm/action/class/cactioncomm.class.php
+++ b/htdocs/comm/action/class/cactioncomm.class.php
@@ -142,7 +142,7 @@ class CActionComm
* Return list of event types: array(id=>label) or array(code=>label)
*
* @param string|int $active 1 or 0 to filter on event state active or not ('' by default = no filter)
- * @param string $idorcode 'id' or 'code'
+ * @param string $idorcode 'id' or 'code' or 'all'
* @param string $excludetype Type to exclude ('system' or 'systemauto')
* @param int $onlyautoornot 1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type, -1=Keep details and add a combined line per calendar (Default, Auto, BoothConf, ...)
* @param string $morefilter Add more SQL filter
@@ -157,6 +157,7 @@ class CActionComm
$repid = array();
$repcode = array();
+ $repall = array();
$sql = "SELECT id, code, libelle as label, module, type, color, picto";
$sql .= " FROM ".MAIN_DB_PREFIX."c_actioncomm";
@@ -175,6 +176,7 @@ class CActionComm
$nump = $this->db->num_rows($resql);
if ($nump)
{
+ $idforallfornewmodule = 97;
$i = 0;
while ($i < $nump)
{
@@ -220,25 +222,40 @@ class CActionComm
if ($onlyautoornot == -1 && !empty($conf->global->AGENDA_USE_EVENT_TYPE))
{
if ($typecalendar == 'system') {
- $label = ' '.$label;
+ $label = ' '.$label;
$repid[-99] = $langs->trans("ActionAC_MANUAL");
$repcode['AC_NON_AUTO'] = '-- '.$langs->trans("ActionAC_MANUAL");
}
if ($typecalendar == 'systemauto') {
- $label = ' '.$label;
+ $label = ' '.$label;
$repid[-98] = $langs->trans("ActionAC_AUTO");
$repcode['AC_ALL_AUTO'] = '-- '.$langs->trans("ActionAC_AUTO");
}
+ if ($typecalendar == 'module') {
+ $label = ' '.$label;
+ if (!isset($repcode['AC_ALL_'.strtoupper($obj->module)])) { // If first time for this module
+ $idforallfornewmodule--;
+ }
+ $repid[$idforallfornewmodule] = $langs->trans("ActionAC_ALL_".strtoupper($obj->module));
+ $repcode['AC_ALL_'.strtoupper($obj->module)] = '-- '.$langs->trans("Module").' '.ucfirst($obj->module);
+ }
}
$repid[$obj->id] = $label;
$repcode[$obj->code] = $label;
- if ($onlyautoornot > 0 && preg_match('/^module/', $obj->type) && $obj->module) $repcode[$obj->code] .= ' ('.$langs->trans("Module").': '.$obj->module.')';
+ $repall[$obj->code] = array('id' => $label, 'label' => $label, 'type' => $typecalendar, 'color' => $obj->color, 'picto' => $obj->picto);
+ if ($onlyautoornot > 0 && preg_match('/^module/', $obj->type) && $obj->module) {
+ $repcode[$obj->code] .= ' ('.$langs->trans("Module").': '.$obj->module.')';
+ $repall[$obj->code]['label'] .= ' ('.$langs->trans("Module").': '.$obj->module.')';
+ }
}
$i++;
}
}
+
if ($idorcode == 'id') $this->liste_array = $repid;
- if ($idorcode == 'code') $this->liste_array = $repcode;
+ elseif ($idorcode == 'code') $this->liste_array = $repcode;
+ else $this->liste_array = $repall;
+
return $this->liste_array;
} else {
$this->error = $this->db->lasterror();
diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php
index 10c95f0b64b..0b3e2f7223a 100644
--- a/htdocs/comm/action/index.php
+++ b/htdocs/comm/action/index.php
@@ -557,10 +557,11 @@ if (!empty($conf->use_javascript_ajax)) // If javascript on
}
-// DEFAULT CALENDAR + AUTOEVENT CALENDAR + CONFERENCEBOOTH CALENDAR
// Load events from database into $eventarray
$eventarray = array();
+
+// DEFAULT CALENDAR + AUTOEVENT CALENDAR + CONFERENCEBOOTH CALENDAR
$sql = 'SELECT ';
if ($usergroup > 0) $sql .= " DISTINCT";
$sql .= ' a.id, a.label,';
@@ -571,7 +572,7 @@ $sql .= ' a.fk_user_author,a.fk_user_action,';
$sql .= ' a.transparency, a.priority, a.fulldayevent, a.location,';
$sql .= ' a.fk_soc, a.fk_contact, a.fk_project,';
$sql .= ' a.fk_element, a.elementtype,';
-$sql .= ' ca.code as type_code, ca.libelle as type_label, ca.color as type_color';
+$sql .= ' ca.code as type_code, ca.libelle as type_label, ca.color as type_color, ca.type as type_type, ca.picto as type_picto';
$sql .= ' FROM '.MAIN_DB_PREFIX.'c_actioncomm as ca, '.MAIN_DB_PREFIX."actioncomm as a";
if (!$user->rights->societe->client->voir && !$socid) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON a.fk_soc = sc.fk_soc";
// We must filter on resource table
@@ -689,13 +690,17 @@ if ($resql)
$event->type_code = $obj->type_code;
$event->type_label = $obj->type_label;
$event->type_color = $obj->type_color;
+ $event->type = $obj->type_type;
+ $event->type_picto = $obj->type_picto;
$event->libelle = $obj->label; // deprecated
$event->label = $obj->label;
$event->percentage = $obj->percent;
+
$event->authorid = $obj->fk_user_author; // user id of creator
$event->userownerid = $obj->fk_user_action; // user id of owner
$event->fetch_userassigned(); // This load $event->userassigned
+
$event->priority = $obj->priority;
$event->fulldayevent = $obj->fulldayevent;
$event->location = $obj->location;
@@ -793,7 +798,13 @@ if ($showbirthday)
$datearray = dol_getdate($datebirth, true);
$event->datep = dol_mktime(0, 0, 0, $datearray['mon'], $datearray['mday'], $year, true); // For full day events, date are also GMT but they wont but converted during output
$event->datef = $event->datep;
+
$event->type_code = 'BIRTHDAY';
+ $event->type_label = '';
+ $event->type_color = '';
+ $event->type = 'birthdate';
+ $event->type_picto = 'birthdate';
+
$event->label = $langs->trans("Birthday").' '.dolGetFirstLastname($obj->firstname, $obj->lastname);
$event->percentage = 100;
$event->fulldayevent = 1;
@@ -862,7 +873,12 @@ if ($conf->global->AGENDA_SHOW_HOLIDAYS)
$event->id = $obj->rowid;
$event->ref = $event->id;
- $event->type_code = 'HOLIDAY';
+ $event->type_code = 'HOLIDAY';
+ $event->type_label = '';
+ $event->type_color = '';
+ $event->type = 'holiday';
+ $event->type_picto = 'holiday';
+
$event->datep = dol_mktime(0, 0, 0, $dateStartArray['mon'], $dateStartArray['mday'], $dateStartArray['year'], true);
$event->datef = dol_mktime(0, 0, 0, $dateEndArray['mon'], $dateEndArray['mday'], $dateEndArray['year'], true);
$event->date_start_in_calendar = $event->datep;
@@ -1095,9 +1111,12 @@ if (count($listofextcals))
$event->userassigned[$userId] = $userId;
$event->percentage = -1;
}
- else {
- $event->type_code = "ICALEVENT";
- }
+
+ $event->type_code = "ICALEVENT";
+ $event->type_label = $namecal;
+ $event->type_color = $colorcal;
+ $event->type = 'icalevent';
+ $event->type_picto = 'rss';
$event->icalname = $namecal;
$event->icalcolor = $colorcal;
@@ -1660,7 +1679,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
// Show rect of event
print "\n";
print ''."\n";
- print '