forked from extern/egroupware
included other timed events (eg. phonecalls) and (untimed) todo's into the calendar dayview
This commit is contained in:
parent
ef850c835b
commit
3a5d9ed79f
@ -1276,6 +1276,7 @@
|
|||||||
$p->set_block('day_t','day','day');
|
$p->set_block('day_t','day','day');
|
||||||
$p->set_block('day_t','day_event','day_event');
|
$p->set_block('day_t','day_event','day_event');
|
||||||
|
|
||||||
|
$todos = $this->get_todos($todo_label);
|
||||||
$var = Array(
|
$var = Array(
|
||||||
'printer_friendly' => $printer,
|
'printer_friendly' => $printer,
|
||||||
'bg_text' => $this->theme['bg_text'],
|
'bg_text' => $this->theme['bg_text'],
|
||||||
@ -1289,7 +1290,10 @@
|
|||||||
'small_calendar' => $minical,
|
'small_calendar' => $minical,
|
||||||
'date' => $this->bo->long_date($now),
|
'date' => $this->bo->long_date($now),
|
||||||
'username' => $GLOBALS['phpgw']->common->grab_owner_name($this->bo->owner),
|
'username' => $GLOBALS['phpgw']->common->grab_owner_name($this->bo->owner),
|
||||||
'print' => $print
|
'print' => $print,
|
||||||
|
'lang_todos' => $todo_label,
|
||||||
|
'todos' => $this->bo->printer_friendly ? $todos :
|
||||||
|
"<div style=\"overflow: auto; height: 200px\">\n$todos</div>\n"
|
||||||
);
|
);
|
||||||
|
|
||||||
$p->set_var($var);
|
$p->set_var($var);
|
||||||
@ -1297,6 +1301,52 @@
|
|||||||
echo $this->printer_friendly($p->fp('out','day'),lang('Dayview'));
|
echo $this->printer_friendly($p->fp('out','day'),lang('Dayview'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_todos(&$todo_label)
|
||||||
|
{
|
||||||
|
$todos_from_hook = $GLOBALS['phpgw']->hooks->process(array(
|
||||||
|
'location' => 'calendar_include_todos',
|
||||||
|
'year' => $this->bo->year,
|
||||||
|
'month' => $this->bo->month,
|
||||||
|
'day' => $this->bo->day,
|
||||||
|
'owner' => $this->bo->owner // num. id of the user, not necessary current user
|
||||||
|
));
|
||||||
|
|
||||||
|
$content = $todo_label = '';
|
||||||
|
if (is_array($todos_from_hook))
|
||||||
|
{
|
||||||
|
foreach($todos_from_hook as $todos)
|
||||||
|
{
|
||||||
|
if (is_array($todos) && count($todos))
|
||||||
|
{
|
||||||
|
$todo_label = lang("open ToDo's:");
|
||||||
|
|
||||||
|
if (!is_object($GLOBALS['phpgw']->html))
|
||||||
|
{
|
||||||
|
$GLOBALS['phpgw']->html = CreateObject('calendar.html');
|
||||||
|
}
|
||||||
|
foreach($todos as $todo)
|
||||||
|
{
|
||||||
|
$icons = '';
|
||||||
|
foreach($todo['icons'] as $name => $app)
|
||||||
|
{
|
||||||
|
$icons .= ($icons?' ':'').$GLOBALS['phpgw']->html->image($app,$name,lang($name),'border="0" width="15" height="15"');
|
||||||
|
}
|
||||||
|
$content .= " <tr>\n <td valign=\"top\" nowrap>".
|
||||||
|
($this->bo->printer_friendly?$icons:$GLOBALS['phpgw']->html->a_href($icons,$todo['view'])).
|
||||||
|
"</td>\n <td>".($this->bo->printer_friendly?$todo['title']:
|
||||||
|
$GLOBALS['phpgw']->html->a_href($todo['title'],$todo['view']))."</td>\n </tr>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!empty($content))
|
||||||
|
{
|
||||||
|
//echo "todos=<table border=\"0\">\n$content</table>\n";
|
||||||
|
return "<table border=\"0\">\n$content</table>\n";
|
||||||
|
}
|
||||||
|
return False;
|
||||||
|
}
|
||||||
|
|
||||||
function edit_status()
|
function edit_status()
|
||||||
{
|
{
|
||||||
unset($GLOBALS['phpgw_info']['flags']['noheader']);
|
unset($GLOBALS['phpgw_info']['flags']['noheader']);
|
||||||
@ -2492,18 +2542,18 @@
|
|||||||
$time_width = (intval($this->bo->prefs['common']['time_format']) == 12?10:7);
|
$time_width = (intval($this->bo->prefs['common']['time_format']) == 12?10:7);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 'A.minicalendar { color: #000000; font: xx-small '.$this->theme['font'].' }'."\n"
|
return 'A.minicalendar { color: #000000; font: x-small '.$this->theme['font'].' }'."\n"
|
||||||
. ' A.bminicalendar { color: #336699; font: italic bold xx-small '.$this->theme['font'].' }'."\n"
|
. ' A.bminicalendar { color: #336699; font: italic bold x-small '.$this->theme['font'].' }'."\n"
|
||||||
. ' A.minicalendargrey { color: #999999; font: xx-small '.$this->theme['font'].' }'."\n"
|
. ' A.minicalendargrey { color: #999999; font: x-small '.$this->theme['font'].' }'."\n"
|
||||||
. ' A.bminicalendargrey { color: #336699; font: italic bold xx-small '.$this->theme['font'].' }'."\n"
|
. ' A.bminicalendargrey { color: #336699; font: italic bold x-small '.$this->theme['font'].' }'."\n"
|
||||||
. ' A.minicalhol { padding-left:3px; padding-right:3px; background: '.$this->holiday_color.'; color: #000000; font: xx-small '.$this->theme['font'].' }'."\n"
|
. ' A.minicalhol { padding-left:3px; padding-right:3px; background: '.$this->holiday_color.'; color: #000000; font: x-small '.$this->theme['font'].' }'."\n"
|
||||||
. ' A.bminicalhol { padding-left:3px; padding-right:3px; background: '.$this->holiday_color.'; color: #336699; font: italic bold xx-small '.$this->theme['font'].' }'."\n"
|
. ' A.bminicalhol { padding-left:3px; padding-right:3px; background: '.$this->holiday_color.'; color: #336699; font: italic bold x-small '.$this->theme['font'].' }'."\n"
|
||||||
. ' A.minicalgreyhol { padding-left:3px; padding-right:3px; background: '.$this->holiday_color.'; color: #999999; font: xx-small '.$this->theme['font'].' }'."\n"
|
. ' A.minicalgreyhol { padding-left:3px; padding-right:3px; background: '.$this->holiday_color.'; color: #999999; font: x-small '.$this->theme['font'].' }'."\n"
|
||||||
. ' A.bminicalgreyhol { padding-left:3px; padding-right:3px; background: '.$this->holiday_color.'; color: #999999; font: italic bold xx-small '.$this->theme['font'].' }'."\n"
|
. ' A.bminicalgreyhol { padding-left:3px; padding-right:3px; background: '.$this->holiday_color.'; color: #999999; font: italic bold x-small '.$this->theme['font'].' }'."\n"
|
||||||
. ' .event-on { background: '.$this->theme['row_on'].'; color: '.$this->theme['bg_text'].'; font: 100 80%/110% '.$this->theme['font'].'; vertical-align: middle }'."\n"
|
. ' .event-on { background: '.$this->theme['row_on'].'; color: '.$this->theme['bg_text'].'; font: 100% '.$this->theme['font'].'; vertical-align: middle }'."\n"
|
||||||
. ' .event-off { background: '.$this->theme['row_off'].'; color: '.$this->theme['bg_text'].'; font: 100 80%/110% '.$this->theme['font'].'; vertical-align: middle }'."\n"
|
. ' .event-off { background: '.$this->theme['row_off'].'; color: '.$this->theme['bg_text'].'; font: 100% '.$this->theme['font'].'; vertical-align: middle }'."\n"
|
||||||
. ' .event-holiday { background: '.$this->theme['bg04'].'; color: '.$this->theme['bg_text'].'; font: 100 80%/110% '.$this->theme['font'].'; vertical-align: middle }'."\n"
|
. ' .event-holiday { background: '.$this->theme['bg04'].'; color: '.$this->theme['bg_text'].'; font: 100% '.$this->theme['font'].'; vertical-align: middle }'."\n"
|
||||||
. ' .time { background: '.$this->theme['navbar_bg'].'; color: '.$this->theme['bg_text'].'; font: 80%/110% '.$this->theme['font'].'; width: '.$time_width.'%; border: 1px '.$this->theme['navbar_text'].'; vertical-align: middle }'."\n"
|
. ' .time { background: '.$this->theme['row_on'].'; color: '.$this->theme['bg_text'].'; font: bold 100% '.$this->theme['font'].'; width: '.$time_width.'%; vertical-align: middle; text-align: center; }'."\n"
|
||||||
. ' .tablecell { width: 80px; height: 80px }'."\n"
|
. ' .tablecell { width: 80px; height: 80px }'."\n"
|
||||||
. ' .planner-cell { cursor:pointer; cursor:hand; border: thin solid black; }';
|
. ' .planner-cell { cursor:pointer; cursor:hand; border: thin solid black; }';
|
||||||
}
|
}
|
||||||
@ -2572,7 +2622,7 @@
|
|||||||
{
|
{
|
||||||
$text .= $this->bo->display_status($event['users_status']);
|
$text .= $this->bo->display_status($event['users_status']);
|
||||||
}
|
}
|
||||||
$text = '<font size="-2" face="'.$this->theme['font'].'"><nobr> '.$time.' </nobr> '.$this->bo->get_short_field($event,$is_private,'title').$text.': <I>'.$this->bo->get_short_field($event,$is_private,'description').'</I></font>'.$GLOBALS['phpgw']->browser->br;
|
$text = '<nobr> '.$time.' </nobr> '.$this->bo->get_short_field($event,$is_private,'title').$text.': <I>'.$this->bo->get_short_field($event,$is_private,'description').'</I>'.$GLOBALS['phpgw']->browser->br;
|
||||||
|
|
||||||
if ($editable)
|
if ($editable)
|
||||||
{
|
{
|
||||||
@ -3230,7 +3280,7 @@
|
|||||||
$p->set_block('day_cal','day_event_off','day_event_off');
|
$p->set_block('day_cal','day_event_off','day_event_off');
|
||||||
$p->set_block('day_cal','day_event_holiday','day_event_holiday');
|
$p->set_block('day_cal','day_event_holiday','day_event_holiday');
|
||||||
$p->set_block('day_cal','day_time','day_time');
|
$p->set_block('day_cal','day_time','day_time');
|
||||||
|
|
||||||
$date_to_eval = sprintf("%04d%02d%02d",$params['year'],$params['month'],$params['day']);
|
$date_to_eval = sprintf("%04d%02d%02d",$params['year'],$params['month'],$params['day']);
|
||||||
|
|
||||||
$day_start = mktime(intval($this->bo->prefs['calendar']['workdaystarts']),0,0,$params['month'],$params['day'],$params['year']);
|
$day_start = mktime(intval($this->bo->prefs['calendar']['workdaystarts']),0,0,$params['month'],$params['day'],$params['year']);
|
||||||
@ -3242,7 +3292,7 @@
|
|||||||
$events = $this->bo->cached_events[$date_to_eval];
|
$events = $this->bo->cached_events[$date_to_eval];
|
||||||
print_debug('Date',$date_to_eval);
|
print_debug('Date',$date_to_eval);
|
||||||
print_debug('Count',count($events));
|
print_debug('Count',count($events));
|
||||||
$last_slot_end = -1;
|
$events_to_show = array();
|
||||||
foreach($events as $event)
|
foreach($events as $event)
|
||||||
{
|
{
|
||||||
if ($this->bo->rejected_no_show($event))
|
if ($this->bo->rejected_no_show($event))
|
||||||
@ -3253,23 +3303,52 @@
|
|||||||
{
|
{
|
||||||
$this->bo->set_recur_date($event,$date_to_eval);
|
$this->bo->set_recur_date($event,$date_to_eval);
|
||||||
}
|
}
|
||||||
$starttime = $this->bo->maketime($event['start']);
|
$events_to_show[] = array(
|
||||||
$endtime = $this->bo->maketime($event['end']);
|
'starttime' => $this->bo->maketime($event['start']),
|
||||||
$slot = $this->slot_num($starttime,$day_start,$day_end);
|
'endtime' => $this->bo->maketime($event['end']),
|
||||||
$slot_end = $this->slot_num($endtime-1); // -1 to no occupy eg. the 18.00 slot for a 17-18h date
|
'content' => $this->link_to_entry($event,$params['month'],$params['day'],$params['year'])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
//echo "events_to_show=<pre>"; print_r($events_to_show); echo "</pre>\n";
|
||||||
|
$other = $GLOBALS['phpgw']->hooks->process(array(
|
||||||
|
'location' => 'calendar_include_events',
|
||||||
|
'year' => $params['year'],
|
||||||
|
'month' => $params['month'],
|
||||||
|
'day' => $params['day'],
|
||||||
|
'owner' => $this->bo->owner // num. id of the user, not necessary current user
|
||||||
|
));
|
||||||
|
|
||||||
|
if (is_array($other))
|
||||||
|
{
|
||||||
|
foreach($other as $evts)
|
||||||
|
{
|
||||||
|
if (is_array($evts))
|
||||||
|
{
|
||||||
|
$events_to_show = array_merge($events_to_show,$evts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
usort($events_to_show,create_function('$a,$b','return $a[\'starttime\']-$b[\'starttime\'];'));
|
||||||
|
//echo "events_to_show=<pre>"; print_r($events_to_show); echo "</pre>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$last_slot_end = -1;
|
||||||
|
foreach($events_to_show as $event)
|
||||||
|
{
|
||||||
|
$slot = $this->slot_num($event['starttime'],$day_start,$day_end);
|
||||||
|
$slot_end = isset($event['endtime']) ? $this->slot_num($event['endtime']-1) : $slot; // -1 to not occupy eg. the 18.00 slot for a 17-18h date
|
||||||
|
|
||||||
if ($slot <= $last_slot_end)
|
if ($slot <= $last_slot_end)
|
||||||
{
|
{
|
||||||
$slot = $last_slot;
|
$slot = $last_slot;
|
||||||
$slot_end = max($last_slot_end,$slot_end);
|
$slot_end = max($last_slot_end,$slot_end);
|
||||||
}
|
}
|
||||||
$rows[$slot] .= $this->link_to_entry($event,$params['month'],$params['day'],$params['year']);
|
$rows[$slot] .= $event['content'];
|
||||||
|
|
||||||
print_debug('slot',$slot);
|
print_debug('slot',$slot);
|
||||||
print_debug('row',$rows[$slot]);
|
print_debug('row',$rows[$slot]);
|
||||||
|
|
||||||
$row_span[$slot] = 1 + $slot_end - $slot;
|
$row_span[$slot] = 1 + $slot_end - $slot;
|
||||||
|
|
||||||
$last_slot = $slot;
|
$last_slot = $slot;
|
||||||
$last_slot_end = $slot_end;
|
$last_slot_end = $slot_end;
|
||||||
print_debug('Time',$GLOBALS['phpgw']->common->show_date($this->bo->maketime($events[$i]['start']) - $GLOBALS['phpgw']->datetime->tz_offset).' - '.$GLOBALS['phpgw']->common->show_date($this->bo->maketime($events[$i]['end']) - $GLOBALS['phpgw']->datetime->tz_offset));
|
print_debug('Time',$GLOBALS['phpgw']->common->show_date($this->bo->maketime($events[$i]['start']) - $GLOBALS['phpgw']->datetime->tz_offset).' - '.$GLOBALS['phpgw']->common->show_date($this->bo->maketime($events[$i]['end']) - $GLOBALS['phpgw']->datetime->tz_offset));
|
||||||
@ -3297,14 +3376,14 @@
|
|||||||
$p->set_var('extras','');
|
$p->set_var('extras','');
|
||||||
if ($rowspan > 1)
|
if ($rowspan > 1)
|
||||||
{
|
{
|
||||||
$p->set_var('item','');
|
$p->set_var('event','');
|
||||||
$rowspan--;
|
$rowspan--;
|
||||||
}
|
}
|
||||||
elseif (!isset($rows[$slot]))
|
elseif (!isset($rows[$slot]))
|
||||||
{
|
{
|
||||||
$p->set_var('event',' ');
|
$p->set_var('event',' ');
|
||||||
$row_to_print = $this->nm_on_off();
|
$row_to_print = $this->nm_on_off();
|
||||||
$p->parse('item','day_event'.$row_to_print,False);
|
$p->parse('event','day_event'.$row_to_print);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3315,7 +3394,7 @@
|
|||||||
}
|
}
|
||||||
$p->set_var('event',$rows[$slot]);
|
$p->set_var('event',$rows[$slot]);
|
||||||
$row_to_print = $this->nm_on_off();
|
$row_to_print = $this->nm_on_off();
|
||||||
$p->parse('item','day_event'.$row_to_print,False);
|
$p->parse('event','day_event'.$row_to_print);
|
||||||
}
|
}
|
||||||
$open_link = $close_link = '';
|
$open_link = $close_link = '';
|
||||||
$time = ' ';
|
$time = ' ';
|
||||||
@ -3327,21 +3406,20 @@
|
|||||||
$min = date('i',$time);
|
$min = date('i',$time);
|
||||||
$time = $GLOBALS['phpgw']->common->formattime($hour,$min);
|
$time = $GLOBALS['phpgw']->common->formattime($hour,$min);
|
||||||
|
|
||||||
$open_link = ' - ';
|
|
||||||
if(!$this->bo->printer_friendly && $this->bo->check_perms(PHPGW_ACL_ADD))
|
if(!$this->bo->printer_friendly && $this->bo->check_perms(PHPGW_ACL_ADD))
|
||||||
{
|
{
|
||||||
$open_link .= '<a href="'.$this->page('add',"&date=$date_to_eval&hour=$hour&minute=$min").'">';
|
$open_link = ' <a href="'.$this->page('add',"&date=$date_to_eval&hour=$hour&minute=$min").'">';
|
||||||
$close_link = '</a>';
|
$close_link = '</a> ';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$var = Array(
|
$p->set_var(Array(
|
||||||
'open_link' => $open_link,
|
'open_link' => $open_link,
|
||||||
'time' => $time,
|
'time' => $time,
|
||||||
'close_link' => $close_link,
|
'close_link' => $close_link,
|
||||||
'tr_color' => '' // dummy to stop output_template_array to set it
|
'tr_color' => '' // dummy to stop output_template_array to set it
|
||||||
);
|
));
|
||||||
$this->output_template_array($p,'item','day_time',$var);
|
$p->parse('time','day_time');
|
||||||
|
|
||||||
$p->parse('row','day_row',True);
|
$p->parse('row','day_row',True);
|
||||||
}
|
}
|
||||||
return $p->fp('out','day');
|
return $p->fp('out','day');
|
||||||
|
@ -180,6 +180,7 @@ on participant responses too calendar de auch bei Antworten der Teilnehmer
|
|||||||
on time change of more than 4 hours too calendar de bei zeitlichen Änderungen größer als 4 Stunden
|
on time change of more than 4 hours too calendar de bei zeitlichen Änderungen größer als 4 Stunden
|
||||||
on time change of time of more than 4 hours (and above options) calendar de wenn der Termin sich um mehr als 4 Stunde verschiebt (und obige Optionen)
|
on time change of time of more than 4 hours (and above options) calendar de wenn der Termin sich um mehr als 4 Stunde verschiebt (und obige Optionen)
|
||||||
on time-changes >= 4 hours too calendar de
|
on time-changes >= 4 hours too calendar de
|
||||||
|
open todo's: calendar de unerledigte Aufgaben:
|
||||||
order calendar de Reihenfolge
|
order calendar de Reihenfolge
|
||||||
overlap holiday calendar de überlappender Feiertag
|
overlap holiday calendar de überlappender Feiertag
|
||||||
participant calendar de Teilnehmer
|
participant calendar de Teilnehmer
|
||||||
|
@ -164,6 +164,7 @@ on any time change too calendar en on any time change too
|
|||||||
on invitation / cancelation only calendar en on invitation / cancelation only
|
on invitation / cancelation only calendar en on invitation / cancelation only
|
||||||
on participant responses too calendar en on participant responses too
|
on participant responses too calendar en on participant responses too
|
||||||
on time change of more than 4 hours too calendar en on time change of more than 4 hours too
|
on time change of more than 4 hours too calendar en on time change of more than 4 hours too
|
||||||
|
open todo's: calendar en open ToDo's:
|
||||||
order calendar en Order
|
order calendar en Order
|
||||||
overlap holiday calendar en overlap holiday
|
overlap holiday calendar en overlap holiday
|
||||||
participant calendar en Participant
|
participant calendar en Participant
|
||||||
|
@ -4,34 +4,40 @@
|
|||||||
<table border="0" width="100%">
|
<table border="0" width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="top" width="70%">
|
<td valign="top" width="70%">
|
||||||
<tr>
|
<table border="0" width=100%>
|
||||||
<td>
|
<tr>
|
||||||
<table border="0" width=100%>
|
<td align="middle">
|
||||||
<tr>
|
<font size="+2" color="{bg_text}"><b>{date}</b></font><br>
|
||||||
<td align="middle">
|
<font size="+1" color="{bg_text}">{username}</font><br>
|
||||||
<font size="+2" color="{bg_text}"><b>{date}</b></font><br>
|
</td>
|
||||||
<font size="+1" color="{bg_text}">{username}</font>
|
</tr>
|
||||||
</td>
|
{day_events}
|
||||||
</tr>
|
</table>
|
||||||
</table>
|
<p align="center">{print}</p>
|
||||||
<table border="0" width="100%" cellspacing="0" cellpadding="0" bgcolor="{bg_text}">
|
</td>
|
||||||
{day_events}
|
<td align="center" valign="top">
|
||||||
</table>
|
<table width="100%">
|
||||||
</td>
|
<tr>
|
||||||
<td align="right">
|
<td align="center">
|
||||||
{small_calendar}
|
{small_calendar}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<b>{lang_todos}</b>
|
||||||
|
{todos}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
{print}
|
|
||||||
<!-- END day -->
|
<!-- END day -->
|
||||||
<!-- BEGIN day_event -->
|
<!-- BEGIN day_event -->
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{daily_events}
|
{daily_events}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- END day_event -->
|
<!-- END day_event -->
|
||||||
|
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
<!-- $Id$ -->
|
<!-- $Id$ -->
|
||||||
<!-- BEGIN day -->
|
<!-- BEGIN day -->
|
||||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
<table width="100%" cellspacing="0" cellpadding="0">
|
||||||
{row}
|
{row}
|
||||||
</table>
|
</table>
|
||||||
<!-- END day -->
|
<!-- END day -->
|
||||||
<!-- BEGIN day_row -->
|
<!-- BEGIN day_row -->
|
||||||
<tr>{item}
|
<tr>{time}{event}
|
||||||
</tr>
|
</tr>
|
||||||
<!-- END day_row -->
|
<!-- END day_row -->
|
||||||
<!-- BEGIN day_event_on -->
|
<!-- BEGIN day_event_on -->
|
||||||
<td class="event-on"{extras}>{event}</td>
|
<td class="event-on"{extras}> {event}</td>
|
||||||
<!-- END day_event_on -->
|
<!-- END day_event_on -->
|
||||||
<!-- BEGIN day_event_off -->
|
<!-- BEGIN day_event_off -->
|
||||||
<td class="event-off"{extras}>{event}</td>
|
<td class="event-off"{extras}> {event}</td>
|
||||||
<!-- END day_event_off -->
|
<!-- END day_event_off -->
|
||||||
<!-- BEGIN day_event_holiday -->
|
<!-- BEGIN day_event_holiday -->
|
||||||
<td class="event-holiday"{extras}>{event}</td>
|
<td class="event-holiday"{extras}> {event}</td>
|
||||||
<!-- END day_event_holiday -->
|
<!-- END day_event_holiday -->
|
||||||
<!-- BEGIN day_time -->
|
<!-- BEGIN day_time -->
|
||||||
<td class="time" nowrap>{open_link}{time}{close_link}</td>
|
<td class="time" nowrap>{open_link}{time}{close_link}</td>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
<!-- $Id$ -->
|
<!-- $Id$ -->
|
||||||
<!-- BEGIN footer_table -->
|
<!-- BEGIN footer_table -->
|
||||||
<br clear="all">
|
|
||||||
<hr clear="all">
|
<hr clear="all">
|
||||||
<font size="-1">
|
<font size="-1">
|
||||||
<table border="0" width="100%" cellpadding="0" cellspacing="0">
|
<table border="0" width="100%" cellpadding="0" cellspacing="0">
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
<!-- $Id$ -->
|
|
||||||
<!-- BEGIN day -->
|
|
||||||
{printer_friendly}
|
|
||||||
<table border="0" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td valign="top" width="70%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table border="0" width=100%>
|
|
||||||
<tr>
|
|
||||||
<td align="middle">
|
|
||||||
<font size="+2" color="{bg_text}"><b>{date}</b></font><br>
|
|
||||||
<font size="+1" color="{bg_text}">{username}</font>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<table border="0" width="100%" cellspacing="0" cellpadding="0">
|
|
||||||
<!-- <table border="0" width="100%" cellspacing="0" cellpadding="0" bgcolor="{bg_text}">-->
|
|
||||||
{day_events}
|
|
||||||
</table
|
|
||||||
</td>
|
|
||||||
<td valign="top" align="right">
|
|
||||||
{small_calendar}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
{print}
|
|
||||||
<!-- END day -->
|
|
||||||
<!-- BEGIN day_event -->
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
{daily_events}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<!-- END day_event -->
|
|
||||||
|
|
@ -27,7 +27,8 @@
|
|||||||
'get_rows' => True,
|
'get_rows' => True,
|
||||||
'link_title' => True,
|
'link_title' => True,
|
||||||
'link_query' => True,
|
'link_query' => True,
|
||||||
'link_id2from' => True
|
'link_id2from' => True,
|
||||||
|
'cal_to_include' => True
|
||||||
);
|
);
|
||||||
var $enums;
|
var $enums;
|
||||||
var $so;
|
var $so;
|
||||||
@ -272,4 +273,73 @@
|
|||||||
}
|
}
|
||||||
return $content;
|
return $content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
@function cal_to_include
|
||||||
|
@syntax cal_to_include( $args )
|
||||||
|
@author ralfbecker
|
||||||
|
@abstract hook called be calendar to include events or todos in the cal-dayview
|
||||||
|
@param $args[year], $args[month], $args[day] date of the events
|
||||||
|
@param $args[owner] owner of the events
|
||||||
|
@param $args[location] calendar_include_{events|todos}
|
||||||
|
@returns array of events (array with keys starttime, endtime, title, view, icon, content)
|
||||||
|
*/
|
||||||
|
function cal_to_include($args)
|
||||||
|
{
|
||||||
|
//echo "<p>cal_to_include("; print_r($args); echo ")</p>\n";
|
||||||
|
$user = intval($args['owner']);
|
||||||
|
if ($user <= 0 && !checkdate($args['month'],$args['day'],$args['year']))
|
||||||
|
{
|
||||||
|
return False;
|
||||||
|
}
|
||||||
|
$do_events = $args['location'] == 'calendar_include_events';
|
||||||
|
$start = 0;
|
||||||
|
$to_include = array();
|
||||||
|
$date_wanted = sprintf('%04d/%02d/%02d',$args['year'],$args['month'],$args['day']);
|
||||||
|
while ($infos = $this->search('info_startdate','',"user$user".($do_events?'date':'opentoday').$date_wanted,'','','','','',$start,$total))
|
||||||
|
{
|
||||||
|
foreach($infos as $info)
|
||||||
|
{
|
||||||
|
$time = intval(date('Hi',$info['info_startdate']));
|
||||||
|
$date = date('Y/m/d',$info['info_startdate']);
|
||||||
|
if ($do_events && !$time ||
|
||||||
|
!$do_events && $time && $date == $date_wanted)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!is_object($GLOBALS['phpgw']->html)) // only once and only if thers something to report
|
||||||
|
{
|
||||||
|
$GLOBALS['phpgw']->html = CreateObject('etemplate.html');
|
||||||
|
$GLOBALS['phpgw']->translation->add_app('infolog');
|
||||||
|
}
|
||||||
|
$title = ($do_events?$GLOBALS['phpgw']->common->formattime(date('H',$info['info_startdate']),date('i',$info['info_startdate'])).' ':'').
|
||||||
|
$info['info_subject'];
|
||||||
|
$view = $this->link->view('infolog',$info['info_id']);
|
||||||
|
$content = '';
|
||||||
|
foreach($icons = array(
|
||||||
|
$info['info_type'] => 'infolog',
|
||||||
|
$info['info_status'] => 'infolog'
|
||||||
|
) as $name => $app)
|
||||||
|
{
|
||||||
|
$content .= $GLOBALS['phpgw']->html->image($app,$name,lang($name),'border="0" width="15" height="15"').' ';
|
||||||
|
}
|
||||||
|
$content = '<p style="margin: 0px">'.$GLOBALS['phpgw']->html->a_href($content.' '.$title,$view).'</p>';
|
||||||
|
|
||||||
|
$to_include[] = array(
|
||||||
|
'starttime' => $info['info_startdate'],
|
||||||
|
'endtime' => $info['info_enddate'] ? $info['info_enddate'] : $info['info_startdate'],
|
||||||
|
'title' => $title,
|
||||||
|
'view' => $view,
|
||||||
|
'icons' => $icons,
|
||||||
|
'content' => $content
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($total <= $start+count($infos))
|
||||||
|
{
|
||||||
|
break; // no more availible
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//echo "boinfolog::cal_to_include("; print_r($args); echo ")<pre>"; print_r($to_include); echo "</pre>\n";
|
||||||
|
return $to_include;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,15 +88,16 @@
|
|||||||
@param $filter: none|all - list all entrys user have rights to see<br>
|
@param $filter: none|all - list all entrys user have rights to see<br>
|
||||||
private|own - list only his personal entrys (incl. those he is responsible for !!!)
|
private|own - list only his personal entrys (incl. those he is responsible for !!!)
|
||||||
@returns the necesary sql
|
@returns the necesary sql
|
||||||
*/
|
*/
|
||||||
function aclFilter($filter = 'none')
|
function aclFilter($filter = 'none')
|
||||||
{
|
{
|
||||||
ereg('.*(own|privat|all|none).*',$filter,$vars);
|
ereg('.*(own|privat|all|none|user)([0-9]*).*',$filter,$vars);
|
||||||
$filter = $vars[1];
|
$filter = $vars[1];
|
||||||
|
$f_user = intval($vars[2]);
|
||||||
|
|
||||||
if (isset($this->acl_filter[$filter]))
|
if (isset($this->acl_filter[$filter.$user]))
|
||||||
{
|
{
|
||||||
return $this->acl_filter[$filter]; // used cached filter if found
|
return $this->acl_filter[$filter.$user]; // used cached filter if found
|
||||||
}
|
}
|
||||||
if (is_array($this->grants))
|
if (is_array($this->grants))
|
||||||
{
|
{
|
||||||
@ -113,13 +114,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (count($private_user_list))
|
if (count($private_user_list))
|
||||||
{
|
{
|
||||||
$has_private_access = 'info_owner IN ('.implode(',',$private_user_list).')';
|
$has_private_access = 'info_owner IN ('.implode(',',$private_user_list).')';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$filtermethod = " (info_owner=$this->user"; // user has all rights
|
$filtermethod = " (info_owner=$this->user"; // user has all rights
|
||||||
|
|
||||||
// private: own entries plus the one user is responsible for
|
// private: own entries plus the one user is responsible for
|
||||||
if ($filter == 'private' || $filter == 'own')
|
if ($filter == 'private' || $filter == 'own')
|
||||||
{
|
{
|
||||||
$filtermethod .= " OR (info_responsible=$this->user OR info_status = 'offer')".
|
$filtermethod .= " OR (info_responsible=$this->user OR info_status = 'offer')".
|
||||||
@ -132,14 +133,18 @@
|
|||||||
$filtermethod .= " OR $has_private_access";
|
$filtermethod .= " OR $has_private_access";
|
||||||
}
|
}
|
||||||
if (count($public_user_list))
|
if (count($public_user_list))
|
||||||
{
|
{
|
||||||
$filtermethod .= " OR (info_access='public' AND info_owner IN(" . implode(',',$public_user_list) . '))';
|
$filtermethod .= " OR (info_access='public' AND info_owner IN(" . implode(',',$public_user_list) . '))';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$filtermethod .= ') ';
|
$filtermethod .= ') ';
|
||||||
|
|
||||||
return $this->acl_filter[$filter] = $filtermethod; // cache the filter
|
if ($filter == 'user' && $f_user > 0)
|
||||||
}
|
{
|
||||||
|
$filtermethod = " ((info_owner=$f_user AND info_responsible=0 OR info_responsible=$f_user) AND $filtermethod)";
|
||||||
|
}
|
||||||
|
return $this->acl_filter[$filter.$user] = $filtermethod; // cache the filter
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@function statusFilter
|
@function statusFilter
|
||||||
@ -173,12 +178,19 @@
|
|||||||
*/
|
*/
|
||||||
function dateFilter($filter = '')
|
function dateFilter($filter = '')
|
||||||
{
|
{
|
||||||
ereg('.*(upcoming|today|overdue).*',$filter,$vars);
|
ereg('.*(upcoming|today|overdue|date)([-/.0-9]*).*',$filter,$vars);
|
||||||
$filter = $vars[1];
|
$filter = $vars[1];
|
||||||
|
|
||||||
$now = getdate(time());
|
if (isset($vars[2]) && !empty($vars[2]) && ($date = split('[-/.]',$vars[2])))
|
||||||
$tomorrow = mktime(0,0,0,$now['mon'],$now['mday']+1,$now['year']);
|
{
|
||||||
|
$today = mktime(0,0,0,intval($date[1]),intval($date[2]),intval($date[0]));
|
||||||
|
$tomorrow = mktime(0,0,0,intval($date[1]),intval($date[2])+1,intval($date[0]));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$now = getdate(time());
|
||||||
|
$tomorrow = mktime(0,0,0,$now['mon'],$now['mday']+1,$now['year']);
|
||||||
|
}
|
||||||
switch ($filter)
|
switch ($filter)
|
||||||
{
|
{
|
||||||
case 'upcoming':
|
case 'upcoming':
|
||||||
@ -187,6 +199,12 @@
|
|||||||
return " AND info_startdate < '$tomorrow'";
|
return " AND info_startdate < '$tomorrow'";
|
||||||
case 'overdue':
|
case 'overdue':
|
||||||
return " AND (info_enddate != 0 AND info_enddate < '$tomorrow')";
|
return " AND (info_enddate != 0 AND info_enddate < '$tomorrow')";
|
||||||
|
case 'date':
|
||||||
|
if (!$today || !$tomorrow)
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return " AND ($today <= info_startdate AND info_startdate < $tomorrow)";
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
@ -438,7 +456,7 @@
|
|||||||
*/
|
*/
|
||||||
function search($order,$sort,$filter,$cat_id,$query,$action,$action_id,$ordermethod,&$start,&$total)
|
function search($order,$sort,$filter,$cat_id,$query,$action,$action_id,$ordermethod,&$start,&$total)
|
||||||
{
|
{
|
||||||
//echo "<p>soinfolog.search(action='$action/$action_id')</p>\n";
|
//echo "<p>soinfolog.search(order='$order',,filter='$filter',,query='$query',action='$action/$action_id')</p>\n";
|
||||||
$action2app = array(
|
$action2app = array(
|
||||||
'addr' => 'addressbook',
|
'addr' => 'addressbook',
|
||||||
'proj' => 'projects',
|
'proj' => 'projects',
|
||||||
@ -468,7 +486,7 @@
|
|||||||
$filtermethod = $this->aclFilter($filter);
|
$filtermethod = $this->aclFilter($filter);
|
||||||
$filtermethod .= $this->statusFilter($filter);
|
$filtermethod .= $this->statusFilter($filter);
|
||||||
$filtermethod .= $this->dateFilter($filter);
|
$filtermethod .= $this->dateFilter($filter);
|
||||||
// echo "<p>filtermethod='$filtermethod'</p>";
|
//echo "<p>filtermethod='$filtermethod'</p>";
|
||||||
|
|
||||||
if (intval($cat_id))
|
if (intval($cat_id))
|
||||||
{
|
{
|
||||||
@ -501,6 +519,7 @@
|
|||||||
$start = 0;
|
$start = 0;
|
||||||
}
|
}
|
||||||
$this->db->limit_query($sql="SELECT DISTINCT phpgw_infolog.* $query $ordermethod",$start,__LINE__,__FILE__);
|
$this->db->limit_query($sql="SELECT DISTINCT phpgw_infolog.* $query $ordermethod",$start,__LINE__,__FILE__);
|
||||||
|
|
||||||
while ($this->db->next_record())
|
while ($this->db->next_record())
|
||||||
{
|
{
|
||||||
$this->db2data(&$info);
|
$this->db2data(&$info);
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
The entries may be viewed or added from InfoLog direct or from within
|
The entries may be viewed or added from InfoLog direct or from within
|
||||||
the contact/address, project or calendar view.<p>
|
the contact/address, project or calendar view.<p>
|
||||||
Other documents / files can be linked to InfoLog entries and are store in the VFS
|
Other documents / files can be linked to InfoLog entries and are store in the VFS
|
||||||
(phpGroupWare\'s virtual file system). An extension of the VFS allows to symlink
|
(eGroupWare\'s virtual file system). An extension of the VFS allows to symlink
|
||||||
the files to a fileserver, instead of placeing a copy in the VFS
|
the files to a fileserver, instead of placeing a copy in the VFS
|
||||||
(<i>need to be configured in the admin-section</i>).
|
(<i>need to be configured in the admin-section</i>).
|
||||||
It is planed to include emails and faxes into InfoLog in the future.';
|
It is planed to include emails and faxes into InfoLog in the future.';
|
||||||
@ -44,7 +44,7 @@
|
|||||||
expressions and direct calls to php-functions (e.g. to link the phone calls
|
expressions and direct calls to php-functions (e.g. to link the phone calls
|
||||||
(again) to the addressbook entrys).<p>
|
(again) to the addressbook entrys).<p>
|
||||||
<b>More information</b> about InfoLog and the current development-status can be found on the
|
<b>More information</b> about InfoLog and the current development-status can be found on the
|
||||||
<a href="http://www.phpgroupware.org/wiki/InfoLog" target="_blank">InfoLog page in our Wiki</a>.';
|
<a href="http://www.egroupware.org/wiki/InfoLog" target="_blank">InfoLog page in our Wiki</a>.';
|
||||||
|
|
||||||
/* The hooks this app includes, needed for hooks registration */
|
/* The hooks this app includes, needed for hooks registration */
|
||||||
$setup_info['infolog']['hooks'][] = 'preferences';
|
$setup_info['infolog']['hooks'][] = 'preferences';
|
||||||
@ -57,6 +57,8 @@
|
|||||||
$setup_info['infolog']['hooks']['projects_view'] = 'infolog.uiinfolog.hook_view';
|
$setup_info['infolog']['hooks']['projects_view'] = 'infolog.uiinfolog.hook_view';
|
||||||
$setup_info['infolog']['hooks']['calendar_view'] = 'infolog.uiinfolog.hook_view';
|
$setup_info['infolog']['hooks']['calendar_view'] = 'infolog.uiinfolog.hook_view';
|
||||||
$setup_info['infolog']['hooks']['infolog'] = 'infolog.uiinfolog.hook_view';
|
$setup_info['infolog']['hooks']['infolog'] = 'infolog.uiinfolog.hook_view';
|
||||||
|
$setup_info['infolog']['hooks']['calendar_include_events'] = 'infolog.boinfolog.cal_to_include';
|
||||||
|
$setup_info['infolog']['hooks']['calendar_include_todos'] = 'infolog.boinfolog.cal_to_include';
|
||||||
|
|
||||||
/* Dependencies for this app to work */
|
/* Dependencies for this app to work */
|
||||||
$setup_info['infolog']['depends'][] = array(
|
$setup_info['infolog']['depends'][] = array(
|
||||||
|
Loading…
Reference in New Issue
Block a user