diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index f58adcba84b..0d7c1946abe 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -20,11 +20,11 @@ */ /** - \file htdocs/comm/action/index.php - \ingroup agenda - \brief Page accueil des rapports des actions - \version $Id$ -*/ + \file htdocs/comm/action/index.php + \ingroup agenda + \brief Page accueil des rapports des actions + \version $Id$ + */ require_once("./pre.inc.php"); require_once(DOL_DOCUMENT_ROOT."/contact.class.php"); @@ -141,7 +141,7 @@ if ($_GET["type"]) $param.="&type=".$_REQUEST["type"]; // Show navigation bar $nav ="".img_previous($langs->trans("Previous"))."\n"; $nav.=" ".dolibarr_print_date(dolibarr_mktime(0,0,0,$month,1,$year),"%b"); -$nav.=" $year"; +$nav.=" ".$year; $nav.=" \n"; $nav.="".img_next($langs->trans("Next"))."\n"; @@ -178,7 +178,7 @@ if ($canedit) print ''; print $form->select_users($filtert,'usertodo',1,'',!$canedit); print ''; - + print ''; print ''; //print ' '; @@ -200,9 +200,14 @@ $sql.= ' '.$db->pdate('a.datea').' as datea,'; $sql.= ' '.$db->pdate('a.datea2').' as datea2,'; $sql.= ' a.percent,'; $sql.= ' a.fk_user_author,a.fk_user_action,a.fk_user_done'; -$sql.= ' FROM '.MAIN_DB_PREFIX.'actioncomm as a'; +$sql.= ' FROM '.MAIN_DB_PREFIX.'actioncomm as a'; $sql.= ' WHERE 1=1'; -if ($filtera > 0 || $filtert > 0 || $filterd > 0) +if ($_GET["action"] == 'show_day') +{ + $sql.= ' AND datep BETWEEN '.$db->idate(dolibarr_mktime(0,0,0,$month,$_GET["day"],$year)); + $sql.= ' AND '.$db->idate(dolibarr_mktime(23,59,59,$month,$_GET["day"],$year)); +} +if ($filtera > 0 || $filtert > 0 || $filterd > 0) { $sql.= " AND ("; if ($filtera > 0) $sql.= " a.fk_user_author = ".$filtera; @@ -212,11 +217,12 @@ if ($filtera > 0 || $filtert > 0 || $filterd > 0) } if ($status == 'done') { $sql.= " AND a.percent = 100"; } if ($status == 'todo') { $sql.= " AND a.percent < 100"; } +$sql .= ' ORDER BY datep'; // \TODO Add filters on dates //print $sql; $actionarray=array(); -$resql=$db->query($sql); +$resql=$db->query($sql); if ($resql) { $num = $db->num_rows($resql); @@ -234,8 +240,10 @@ if ($resql) $action->author->id=$obj->fk_user_author; $action->usertodo->id=$obj->fk_user_action; $action->userdone->id=$obj->fk_user_done; - + // Defined date_start_in_calendar and date_end_in_calendar property + // They are date start and end of action but modified to not be outside + // calendar view. if ($action->percentage <= 0) { $action->date_start_in_calendar=$action->datep; @@ -248,20 +256,20 @@ if ($resql) if ($action->datef != '' && $action->datef >= $action->datep) $action->date_end_in_calendar=$action->datef; else $action->date_end_in_calendar=$action->datep; } - // Define ponctuel property + // Define ponctual property if ($action->date_start_in_calendar == $action->date_end_in_calendar) { $action->ponctuel=1; } // Add an entry in actionarray for each day - // \TODO $daycursor=$action->date_start_in_calendar; $annee = date('Y',$daycursor); $mois = date('m',$daycursor); $jour = date('d',$daycursor); - $daykey=dolibarr_mktime(0,0,0,$mois,$jour,$annee); + $loop=true; + $daykey=dolibarr_mktime(0,0,0,$mois,$jour,$annee); do { $actionarray[$daykey][]=$action; @@ -285,60 +293,80 @@ if (is_readable($color_file)) } if (! is_array($theme_datacolor)) $theme_datacolor=array(array(120,130,150), array(200,160,180), array(190,190,220)); -echo ''; -echo ' '; -echo ' \n"; -echo ' \n"; -echo ' \n"; -echo ' \n"; -echo ' \n"; -echo ' \n"; -echo ' \n"; -echo " \n"; - -for($iter_week = 0; $iter_week < 6 ; $iter_week++) +if ($_GET["action"] != 'show_day') { - echo " \n"; - for($iter_day = 0; $iter_day < 7; $iter_day++) - { - /* Show days before the beginning of the current month - (previous month) */ - if($day <= 0) - { - $style='cal_other_month'; - echo ' \n"; - } - /* Show days of the current month */ - elseif(($day <= $max_day_in_month)) - { - $curtime = dolibarr_mktime (0, 0, 0, $month, $day, $year); - - if ($curtime < $now) - $style='cal_current_month'; - else if($curtime == $now) - $style='cal_today'; - else - $style='cal_current_month'; - - echo ' \n"; - } - /* Show days after the current month (next month) */ - else - { - $style='cal_other_month'; - echo ' \n"; - } - $day++; - } + echo '
'.$langs->trans("Monday")."'.$langs->trans("Tuesday")."'.$langs->trans("Wednesday")."'.$langs->trans("Thursday")."'.$langs->trans("Friday")."'.$langs->trans("Saturday")."'.$langs->trans("Sunday")."
'; - show_day_events ($db, $max_day_in_prev_month + $day, $prev_month, $prev_year, $style, $actionarray); - echo " '; - show_day_events ($db, $day, $month, $year, $style, $actionarray); - echo " '; - show_day_events ($db, $day - $max_day_in_month, $next_month, $next_year, $style, $actionarray); - echo "
'; + echo ' '; + echo ' \n"; + echo ' \n"; + echo ' \n"; + echo ' \n"; + echo ' \n"; + echo ' \n"; + echo ' \n"; echo " \n"; + for($iter_week = 0; $iter_week < 6 ; $iter_week++) + { + echo " \n"; + for($iter_day = 0; $iter_day < 7; $iter_day++) + { + /* Show days before the beginning of the current month + (previous month) */ + if($day <= 0) + { + $style='cal_other_month'; + echo ' \n"; + } + /* Show days of the current month */ + elseif(($day <= $max_day_in_month)) + { + $curtime = dolibarr_mktime (0, 0, 0, $month, $day, $year); + + if ($curtime < $now) + $style='cal_current_month'; + else if($curtime == $now) + $style='cal_today'; + else + $style='cal_current_month'; + + echo ' \n"; + } + /* Show days after the current month (next month) */ + else + { + $style='cal_other_month'; + echo ' \n"; + } + $day++; + } + echo " \n"; + } + echo "
'.$langs->trans("Monday")."'.$langs->trans("Tuesday")."'.$langs->trans("Wednesday")."'.$langs->trans("Thursday")."'.$langs->trans("Friday")."'.$langs->trans("Saturday")."'.$langs->trans("Sunday")."
'; + show_day_events ($db, $max_day_in_prev_month + $day, $prev_month, $prev_year, $style, $actionarray,3); + echo " '; + show_day_events($db, $day, $month, $year, $style, $actionarray, 3); + echo " '; + show_day_events($db, $day - $max_day_in_month, $next_month, $next_year, $style, $actionarray, 3); + echo "
\n"; +} +else +{ + + $style='cal_current_month'; + $timestamp=dolibarr_mktime(12,0,0,$month,$_GET["day"],$year); + $arraytimestamp=adodb_getdate(dolibarr_mktime(12,0,0,$month,$_GET["day"],$year)); + $dayname=array('0'=>'Sunday','1'=>'Monday','2'=>'Tuesday','3'=>'Wednesday','4'=>'Thursday','5'=>'Friday','6'=>'Saturday'); + echo ''; + echo ' '; + echo ' \n"; + echo " \n"; + echo " \n"; + echo ' \n"; + echo " \n"; + echo '
'.$langs->trans($dayname[$arraytimestamp['wday']])."
'; + show_day_events ($db, $_GET["day"], $month, $year, $style, $actionarray); + echo "
'; } -echo "\n"; $db->close(); @@ -346,20 +374,31 @@ $db->close(); llxFooter('$Date$ - $Revision$'); - -/** \brief Show event of a particular day -*/ -function show_day_events($db, $day, $month, $year, $style, $actionarray) +/** + * \brief Show event of a particular day + * + * @param unknown_type $db Database handler + * @param unknown_type $day Day + * @param unknown_type $month Month + * @param unknown_type $year Year + * @param unknown_type $style Style to use for this day + * @param unknown_type $actionarray Array of actions + * @param unknown_type $maxPrint Nb of actions to show each day on month view + */ +function show_day_events($db, $day, $month, $year, $style, $actionarray, $maxPrint=-1) { global $user, $conf, $langs; global $filtera, $filtert, $filted; global $theme_datacolor; - + if ($_GET["action"] == 'maxPrint') + { + $maxPrint=-1; + } $curtime = dolibarr_mktime (0, 0, 0, $month, $day, $year); print ''; print '
'; - print dolibarr_print_date($curtime,'%a %d'); + print ''.dolibarr_print_date($curtime,'%a %d').''; print ''; print ''; print img_picto($langs->trans("NewAction"),'edit_add.png'); @@ -369,6 +408,8 @@ function show_day_events($db, $day, $month, $year, $style, $actionarray) //$curtime = dolibarr_mktime (0, 0, 0, $month, $day, $year); $i=0; + $ok=true; + foreach ($actionarray as $daykey => $notused) { $annee = date('Y',$daykey); @@ -378,51 +419,60 @@ function show_day_events($db, $day, $month, $year, $style, $actionarray) { foreach ($actionarray[$daykey] as $index => $action) { - $ponct=($action->date_start_in_calendar == $action->date_end_in_calendar); - // Show rect of event - $colorindex=0; - if ($action->author->id == $user->id || $action->usertodo->id == $user->id || $action->userdone->id == $user->id) $colorindex=1; - $color=sprintf("%02x%02x%02x",$theme_datacolor[$colorindex][0],$theme_datacolor[$colorindex][1],$theme_datacolor[$colorindex][2]); - //print "x".$color; - print ''; - print ''; - print '
'; - $tmpyearstart = date('Y',$action->date_start_in_calendar); - $tmpmonthstart = date('m',$action->date_start_in_calendar); - $tmpdaystart = date('d',$action->date_start_in_calendar); - $tmpyearend = date('Y',$action->date_end_in_calendar); - $tmpmonthend = date('m',$action->date_end_in_calendar); - $tmpdayend = date('d',$action->date_end_in_calendar); - // Hour start - if ($tmpyearstart == $annee && $tmpmonthstart == $mois && $tmpdaystart == $jour) + + if ($i < $maxPrint || $maxPrint == -1) { - print dolibarr_print_date($action->date_start_in_calendar,'%H:%M'); + $ponct=($action->date_start_in_calendar == $action->date_end_in_calendar); + // Show rect of event + $colorindex=0; + if ($action->author->id == $user->id || $action->usertodo->id == $user->id || $action->userdone->id == $user->id) $colorindex=1; + $color=sprintf("%02x%02x%02x",$theme_datacolor[$colorindex][0],$theme_datacolor[$colorindex][1],$theme_datacolor[$colorindex][2]); + //print "x".$color; + print ''; + print ''; + print '
'; + $tmpyearstart = date('Y',$action->date_start_in_calendar); + $tmpmonthstart = date('m',$action->date_start_in_calendar); + $tmpdaystart = date('d',$action->date_start_in_calendar); + $tmpyearend = date('Y',$action->date_end_in_calendar); + $tmpmonthend = date('m',$action->date_end_in_calendar); + $tmpdayend = date('d',$action->date_end_in_calendar); + // Hour start + if ($tmpyearstart == $annee && $tmpmonthstart == $mois && $tmpdaystart == $jour) + { + print dolibarr_print_date($action->date_start_in_calendar,'%H:%M'); + if ($action->date_end_in_calendar && $action->date_start_in_calendar != $action->date_end_in_calendar) + { + if ($tmpyearstart == $tmpyearend && $tmpmonthstart == $tmpmonthend && $tmpdaystart == $tmpdayend) + print '-'; + //else + //print '...'; + } + } if ($action->date_end_in_calendar && $action->date_start_in_calendar != $action->date_end_in_calendar) { - if ($tmpyearstart == $tmpyearend && $tmpmonthstart == $tmpmonthend && $tmpdaystart == $tmpdayend) - print '-'; - //else - //print '...'; + if ($tmpyearstart != $tmpyearend || $tmpmonthstart != $tmpmonthend || $tmpdaystart != $tmpdayend) + { + print '...'; + } } - } - if ($action->date_end_in_calendar && $action->date_start_in_calendar != $action->date_end_in_calendar) - { - if ($tmpyearstart != $tmpyearend || $tmpmonthstart != $tmpmonthend || $tmpdaystart != $tmpdayend) + // Hour end + if ($action->date_end_in_calendar && $action->date_start_in_calendar != $action->date_end_in_calendar) { - print '...'; - } - } - // Hour end - if ($action->date_end_in_calendar && $action->date_start_in_calendar != $action->date_end_in_calendar) - { - if ($tmpyearend == $annee && $tmpmonthend == $mois && $tmpdayend == $jour) + if ($tmpyearend == $annee && $tmpmonthend == $mois && $tmpdayend == $jour) print dolibarr_print_date($action->date_end_in_calendar,'%H:%M'); + } + print '
'; + print $action->getNomUrl(0,14,'cal_event'); + print '
'.$action->getLibStatut(3); + print '
'; + $i++; + } + else if($ok) + { + print ''.img_picto("all","1downarrow_selected.png").''; + $ok=false; } - print '
'; - print $action->getNomUrl(0,14,'cal_event'); - print '
'.$action->getLibStatut(3); - print '
'; - $i++; } } }