Astuces:Calendrier

Un article de Wiki CRM-France.

Jump to: navigation, search

Toutes les astuces correspondants au module Calendrier

Sommaire

FAQs

Q: SugarCRM m'alertera-t-il si je planifie plusieurs activités en même temps?

R: Non, on peut planifier autant d'activités que l'on veut dans les mêmes plages horaires.

Modification Des Plages Horaires

La modification d'une plage horaire de travail s'effectue sur la page modules/Calendar/Calendar.php :

  • Concernant la plage de début : rechercher la function get_start_slice_idx()
  • Modifier la valeur de la variable $start_at (valeur par défaut : 8)
  • Concernant la plage de fin : rechercher la function get_start_slice_idx() concernant la plage de début
  • Modifier la valeur de la variable $end_at (valeur par défaut : 18)

Toutefois, il est nécessaire d'apporter une autre modification à la fonction get_start_slice_idx().

function get_start_slice_idx()
{
 if($this->view == 'day')
 {
  $start_at = 8;
  for($i=0;$i < 8; $i++)
  {
   if(count($this->slice_hash[$this->slices_arr[$i]]->acts_arr) > 0)
   {
    $start_at = $i;
    break;
   }
  }
  return $start_at;
 }
 else
 {
  return 0;
 }
}

Si vous modifiez la variable $start_at, modifier la boucle

for($i=0;$i < 8; $i++)

par

for($i=0;$i <$start_at; $i++)

Changer le début de la semaine à lundi

La modification s'effectuera sur 2 fichiers (fichier qui créé le calendrier + le template html)

  • La première modification s'effectuera donc sur le fichier modules/Calendar/Calendar.php :
  • Rechercher la fonction create_slices() (ligne 175)
function create_slices()
{
global $current_user;
if ( $this->view == 'month')
{
 $days_in_month = $this->date_time->days_in_month;
 $first_day_of_month = $this->date_time->get_day_by_index_this_month(0);
 $num_of_prev_days = $first_day_of_month->day_of_week;
 // do 42 slices (6x7 grid)
 for($i=0;$i < 42;$i++)
 {
  $slice = new Slice('day',$this->date_time->get_day_by_index_this_month($i-$num_of_prev_days));
  $this->slice_hash[$slice->start_time->get_mysql_date()] = $slice;
  array_push($this->slices_arr,  $slice->start_time->get_mysql_date());
 }
}
............
............
............
Ajouter le code suivant if ($num_of_prev_days == 0) $num_of_prev_days = 7; avant la boucle for($i=0;$i<42;$i++)
Modifier la boucle for($i=0;$i<42;$i++) par for($i=1;$i <43;$i++)

Ensuite, la deuxième modification s'effectuera sur le fichier modules/Calendar/templates/templates_calendar.php (couleur de la colonne week-end) :

  • Rechercher le code suivant (ligne 684)
<td  valign=top <?php if($j==0)echo "scope='row' ";?> class="<?php if($j==0 || $j==6) { ?>monthCalBody
 <?php if (get_current_day($args) == true) {echo "Today"; } ?>WeekEnd
 <?php } else { ?>monthCalBody<?php if (get_current_day($args) == true) {echo "Today"; } ?>WeekDay
 <?php } ?>"><?php  template_cal_day_slice($args); ?></td>
 

Modifier le test if($j==0 || $j==6) par if($j==5 || $j==6)