From 366f1641831a75add07f232144bcf1ae24b2a783 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Fri, 2 Jun 2006 19:38:08 +0000 Subject: [PATCH] - reworked display of events: + no more redundant information in header and body + header shows left start-time plus duration and right the icons + short events show title + in mozilla events are displayed with nice rounded corners --> IE display is broken at the moment :-( - added (next) Four day view - re-added "classic" 1.0 view with no fixed time intervals (4-day, week & month), configurable via prefs - restructured prefs to show notification stuff at the end --- calendar/inc/class.uical.inc.php | 7 +- calendar/inc/class.uiviews.inc.php | 243 +++++++++++++------- calendar/inc/hook_settings.inc.php | 6 +- calendar/setup/phpgw_ca.lang | 1 + calendar/setup/phpgw_de.lang | 2 + calendar/setup/phpgw_en.lang | 2 + calendar/setup/phpgw_es-es.lang | 1 + calendar/setup/phpgw_eu.lang | 1 + calendar/setup/phpgw_fr.lang | 1 + calendar/setup/phpgw_hu.lang | 1 + calendar/setup/phpgw_it.lang | 1 + calendar/setup/phpgw_lv.lang | 1 + calendar/setup/phpgw_nl.lang | 1 + calendar/setup/phpgw_no.lang | 1 + calendar/setup/phpgw_pt-br.lang | 1 + calendar/setup/phpgw_sl.lang | 1 + calendar/setup/phpgw_zh-tw.lang | 1 + calendar/templates/default/app.css | 35 ++- calendar/templates/default/event_widget.tpl | 52 ++--- 19 files changed, 239 insertions(+), 120 deletions(-) diff --git a/calendar/inc/class.uical.inc.php b/calendar/inc/class.uical.inc.php index f10b1cfcb9..4b78df4de3 100644 --- a/calendar/inc/class.uical.inc.php +++ b/calendar/inc/class.uical.inc.php @@ -516,6 +516,11 @@ class uical 'value' => 'menuaction=calendar.uiviews.day', 'selected' => $this->view == 'day', ), + array( + 'text' => lang('four days view'), + 'value' => 'menuaction=calendar.uiviews.day4', + 'selected' => $this->view == 'day4', + ), array( 'text' => lang('weekview with weekend'), 'value' => 'menuaction=calendar.uiviews.week&days=7', @@ -582,7 +587,7 @@ class uical } $link_vars['menuaction'] = $this->view_menuaction; // stay in the planner } - elseif ($this->view == 'listview') + elseif ($this->view == 'listview' || $view == 'day' && $this->view == 'day4') { $link_vars['menuaction'] = $this->view_menuaction; // stay in the listview } diff --git a/calendar/inc/class.uiviews.inc.php b/calendar/inc/class.uiviews.inc.php index 906accb25d..c41f558d44 100644 --- a/calendar/inc/class.uiviews.inc.php +++ b/calendar/inc/class.uiviews.inc.php @@ -26,47 +26,69 @@ class uiviews extends uical { var $public_functions = array( 'day' => True, + 'day4' => True, 'week' => True, 'month' => True, 'planner' => True, ); + /** - * @var $debug mixed integer level or string function- or widget-name + * integer level or string function- or widget-name + * + * @var mixed $debug */ var $debug=false; /** - * @var minimum width for an event + * minimum width for an event + * + * @var int $eventCol_min_width */ var $eventCol_min_width = 80; /** - * @var int $extraRows extra rows above and below the workday + * extra rows above and below the workday + * + * @var int $extraRows */ var $extraRows = 1; var $timeRow_width = 40; /** - * @var int $rowsToDisplay how many rows per day get displayed, gets set be the timeGridWidget + * how many rows per day get displayed, gets set be the timeGridWidget + * + * @var int $rowsToDisplay */ var $rowsToDisplay; /** - * @var int $rowHeight height in percent of one row, gets set be the timeGridWidget + * height in percent of one row, gets set be the timeGridWidget + * + * @var int $rowHeight */ var $rowHeight; /** - * @var array $search_params standard params for calling bocal::search for all views, set by the constructor + * standard params for calling bocal::search for all views, set by the constructor + * + * @var array $search_params */ var $search_params; /** - * @var boolean $use_time_grid=true should we use a time grid, - * can be set for week- and month-view to false by the cal_pref no_time_grid + * should we use a time grid, can be set for week- and month-view to false by the cal_pref no_time_grid + * + * @var boolean $use_time_grid=true */ var $use_time_grid=true; + + /** + * Can we display the whole day in a timeGrid of the size of the workday and just scroll to workday start + * + * @var boolean $scroll_to_wdstart; + */ + var $scroll_to_wdstart=false; /** * Constructor @@ -80,6 +102,7 @@ class uiviews extends uical $GLOBALS['egw_info']['flags']['nonavbar'] = False; $app_header = array( 'day' => lang('Dayview'), + '4day' => lang('Four days view'), 'week' => lang('Weekview'), 'month' => lang('Monthview'), 'planner' => lang('Group planner'), @@ -274,7 +297,7 @@ class uiviews extends uical $title = lang('Wk').' '.adodb_date('W',$week_start); $title = $this->html->a_href($title,$week_view,'',' title="'.lang('Weekview').'"'); - $content .= $this->timeGridWidget($week,60,200,'',$title); + $content .= $this->timeGridWidget($week,60,200,'',$title,0,$week_start+WEEK_s >= $this->last); } if (!$home) { @@ -313,6 +336,17 @@ class uiviews extends uical unset($last['raw']); // otherwise date2ts does not calc raw new, but uses it $last = $this->bo->date2ts($last); } + + /** + * Four days view, everythings done by the week-view code ... + * + * @param boolean $home=false if true return content suitable for home-page + * @return string + */ + function day4($home=false) + { + return $this->week(4,$home); + } /** * Displays the weekview, with 5 or 7 days @@ -322,7 +356,8 @@ class uiviews extends uical */ function week($days=0,$home=false) { - $this->use_time_grid = $this->cal_prefs['use_time_grid'] != 'day'; + $this->use_time_grid = $days != 4 && !in_array($this->cal_prefs['use_time_grid'],array('day','day4')) || + $days == 4 && $this->cal_prefs['use_time_grid'] != 'day'; if (!$days) { @@ -337,23 +372,31 @@ class uiviews extends uical } if ($this->debug > 0) $this->bo->debug_message('uiviews::week(days=%1) date=%2',True,$days,$this->date); - $wd_start = $this->first = $this->datetime->get_weekday_start($this->year,$this->month,$this->day); - if ($days == 5) // no weekend-days + if ($days == 4) // next 4 days view { - switch($this->cal_prefs['weekdaystarts']) + $wd_start = $this->first = $this->bo->date2ts($this->date); + $this->last = $this->first + $days * DAY_s - 1; + $GLOBALS['egw_info']['flags']['app_header'] .= ': '.lang('Four days view').' '.$this->bo->long_date($this->first,$this->last); + } + else + { + $wd_start = $this->first = $this->datetime->get_weekday_start($this->year,$this->month,$this->day); + if ($days == 5) // no weekend-days { - case 'Saturday': - $this->first += DAY_s; - // fall through - case 'Sunday': - $this->first += DAY_s; - break; + switch($this->cal_prefs['weekdaystarts']) + { + case 'Saturday': + $this->first += DAY_s; + // fall through + case 'Sunday': + $this->first += DAY_s; + break; + } } + $this->last = $this->first + $days * DAY_s - 1; + $GLOBALS['egw_info']['flags']['app_header'] .= ': '.lang('Week').' '.adodb_date('W',$this->first).': '.$this->bo->long_date($this->first,$this->last); } //echo "

weekdaystarts='".$this->cal_prefs['weekdaystarts']."', get_weekday_start($this->year,$this->month,$this->day)=".date('l Y-m-d',$wd_start).", first=".date('l Y-m-d',$this->first)."

\n"; - $this->last = $this->first + $days * DAY_s - 1; - - $GLOBALS['egw_info']['flags']['app_header'] .= ': '.lang('Week').' '.adodb_date('W',$this->first).': '.$this->bo->long_date($this->first,$this->last); $search_params = array( 'start' => $this->first, @@ -410,8 +453,8 @@ class uiviews extends uical $users = $this->search_params['users']; if (!is_array($users)) $users = array($users); - // for more then 3 users, show all in one row - if (count($users) == 1 || count($users) > 3) + // for more then 5 users, show all in one row + if (count($users) == 1 || count($users) > 5) { $dayEvents =& $this->bo->search($this->search_params); $owner = 0; @@ -430,7 +473,8 @@ class uiviews extends uical $cols = array(); $cols[0] =& $this->timeGridWidget($dayEvents,$this->cal_prefs['interval'],450,'','',$owner); - if (($todos = $this->get_todos($todo_label)) !== false) + // only show todo's for a single user + if (count($users) == 1 && ($todos = $this->get_todos($todo_label)) !== false) { if ($GLOBALS['egw_info']['user']['apps']['infolog']) { @@ -546,6 +590,10 @@ class uiviews extends uical */ function time2pos($time) { + if ($this->scroll_to_wdstart) // we display the complete day - thought only workday is visible without scrolling + { + return $this->rowHeight * (1 + $this->extraRows + $time/$this->granularity_m); + } // time before workday => condensed in the first $this->extraRows rows if ($this->wd_start > 0 && $time < $this->wd_start) { @@ -599,17 +647,30 @@ class uiviews extends uical * @param string $indent='' string for correct indention * @param string $title='' title of the time-grid * @param int/array $owner=0 owner of the calendar (default 0 = $this->owner) or array with owner for each column + * @param boolean $last=true last timeGrid displayed, default true */ - function &timeGridWidget($daysEvents,$granularity_m=30,$height=400,$indent='',$title='',$owner=0) + function &timeGridWidget($daysEvents,$granularity_m=30,$height=400,$indent='',$title='',$owner=0,$last=true) { if ($this->debug > 1 || $this->debug==='timeGridWidget') $this->bo->debug_message('uiviews::timeGridWidget(events=%1,granularity_m=%2,height=%3,,title=%4)',True,$daysEvents,$granularity_m,$height,$title); + // determine if the browser supports scrollIntoView: IE4+, firefox1.0+ and safari2.0+ does + // then show all hours in a div of the size of the workday and scroll to the workday start + // still disabled, as things need to be re-aranged first, to that the column headers are not scrolled + $this->scroll_to_wdstart = false;/*$this->use_time_grid && ($this->html->user_agent == 'msie' || + $this->html->user_agent == 'mozilla' && $this->html->ua_version >= 5.0 || + $this->html->user_agent == 'safari' && $this->html->ua_version >= 2.0);*/ + + if ($this->scroll_to_wdstart) + { + $this->extraRows = 0; // no extra rows necessary + $overflow = 'overflow: scroll;'; + } $this->granularity_m = $granularity_m; $this->display_start = $this->wd_start - ($this->extraRows * $this->granularity_m); $this->display_end = $this->wd_end + ($this->extraRows * $this->granularity_m); - $wd_end = ($this->wd_end === 0 ? 1440 : $this->wd_end); - $totalDisplayMinutes = $wd_end - $this->wd_start; + if (!$this->wd_end) $this->wd_end = 1440; + $totalDisplayMinutes = $this->wd_end - $this->wd_start; $this->rowsToDisplay = ($totalDisplayMinutes/$granularity_m)+2+2*$this->extraRows; $this->rowHeight = round(100/$this->rowsToDisplay,1); @@ -618,7 +679,7 @@ class uiviews extends uical { $height = ($this->rowsToDisplay+1) * 12; } - $html = $indent.'
'."\n"; + $html = $indent.'
'."\n"; $html .= $indent."\t".'
'.$title."
\n"; @@ -629,19 +690,35 @@ class uiviews extends uical $add_links = count($daysEvents) == 1; // the hour rows - for($i=1; $i < $this->rowsToDisplay; $i++) + for($t = $this->scroll_to_wdstart ? 0 : $this->wd_start,$i = 1+$this->extraRows; + $t <= $this->wd_end || $this->scroll_to_wdstart && $t < 24*60; + $t += $this->granularity_m,++$i) { - $currentTime = $this->display_start + (($i-1) * $this->granularity_m); - if($this->wd_start <= $currentTime && $this->wd_end >= $currentTime) + $set_id = ''; + if ($t == $this->wd_start) { - $html .= $indent."\t".'
'."\n"; - $time = $GLOBALS['egw']->common->formattime(sprintf('%02d',$currentTime/60),sprintf('%02d',$currentTime%60)); - if ($add_links) $time = $this->add_link($time,$this->date,(int) ($currentTime/60),$currentTime%60); - $html .= $indent."\t\t".'
'.$time."
\n"; - $html .= $indent."\t
\n"; // calTimeRow - $off = !$off; + list($id) = @each($daysEvents); + $id = 'wd_start_'.$id; + $set_id = ' id="'.$id.'"'; } + $html .= $indent."\t".''."\n"; + // show time for full hours, allways for 45min interval and at least on every 3 row + $time = ''; + static $show = array( + 5 => array(0,15,30,45), + 10 => array(0,30), + 15 => array(0,30), + 45 => array(0,15,30,45), + ); + if (!isset($show[$this->granularity_m]) ? $t % 60 == 0 : in_array($t % 60,$show[$this->granularity_m])) + { + $time = $GLOBALS['egw']->common->formattime(sprintf('%02d',$t/60),sprintf('%02d',$t%60)); + } + if ($add_links) $time = $this->add_link($time,$this->date,(int) ($t/60),$t%60); + $html .= $indent."\t\t".'
'.$time."
\n"; + $html .= $indent."\t
\n"; // calTimeRow + $off = !$off; } } if (is_array($daysEvents) && count($daysEvents)) @@ -657,7 +734,7 @@ class uiviews extends uical // style="left: 50px; right: 0px;" $html .= $indent."\t".'
'."\n"; + '">
'."\n"; $dayCol_width = $dayCols_width / count($daysEvents); $n = 0; foreach($daysEvents as $day => $events) @@ -677,7 +754,16 @@ class uiviews extends uical $html .= $indent."\t
\n"; // calDayCols } $html .= $indent."
\n"; // calTimeGrid - + + if ($this->scroll_to_wdstart) + { + $html .= "\n"; + } return $html; } @@ -730,22 +816,6 @@ class uiviews extends uical $eventCols[$c][] = $event; } - if (count($eventCols)) - { - /* code to overlay the column, not used at the moment - $eventCol_dist = $eventCol_width = round($width / count($eventCols)); - $eventCol_min_width = 80; - if ($eventCol_width < $eventCol_min_width) - { - $eventCol_width = $eventCol_dist = $eventCol_min_width; - if (count($eventCols) > 1) - { - $eventCol_dist = round(($width - $eventCol_min_width) / (count($eventCols)-1)); - } - }*/ - $eventCol_dist = $eventCol_width = round(100 / count($eventCols)); - } - $html = $indent.'
'."\n"; @@ -771,31 +841,33 @@ class uiviews extends uical } $this->_day_class_holiday($day_ymd,$class,$holidays); // the weekday and date - $html .= $indent."\t".'
'. + $html .= $indent."\t".'
'. $title.(!$short_title && $holidays ? ': '.$holidays : '')."
\n"; if ($this->use_time_grid) { // adding divs to click on for each row / time-span - for($counter = 1; $counter < $this->rowsToDisplay; $counter++) + for($t = $this->scroll_to_wdstart ? 0 : $this->wd_start,$i = 1+$this->extraRows; + $t <= $this->wd_end || $this->scroll_to_wdstart && $t < 24*60; + $t += $this->granularity_m,++$i) { - //print "$counter - ". $counter*$this->rowHeight ."
"; $linkData = array( 'menuaction' =>'calendar.uiforms.edit', 'date' => $day_ymd, - 'hour' => floor(($this->wd_start + (($counter-$this->extraRows-1)*$this->granularity_m))/60), - 'minute' => floor(($this->wd_start + (($counter-$this->extraRows-1)*$this->granularity_m))%60), + 'hour' => floor($t / 60), + 'minute' => floor($t % 60), ); if ($owner) $linkData['owner'] = $owner; - $html .= $indent."\t".'
'."\n"; } } // displaying all event columns of the day foreach($eventCols as $n => $eventCol) { - $html .= $this->eventColWidget($eventCol,$n*$eventCol_dist,$eventCol_width,$indent."\t"); + $html .= $this->eventColWidget($eventCol,!$n ? 0 : 60-10*(count($eventCols)-$n), + count($eventCols) == 1 ? 100 : (!$n ? 80 : 50),$indent."\t"); } $html .= $indent."
\n"; // calDayCol @@ -911,11 +983,11 @@ class uiviews extends uical } else { - foreach(array($event['start_m'],$event['end_m']) as $minutes) - { - $timespan[] = $GLOBALS['egw']->common->formattime(sprintf('%02d',$minutes/60),sprintf('%02d',$minutes%60)); - } - $timespan = implode(' - ',$timespan); + $mins = $event['end_m'] - $event['start_m']; + if ($event['end_m'] == 24*60-1) ++$mins; + $timespan = $timespan2 = $GLOBALS['egw']->common->formattime(sprintf('%02d',$event['start_m']/60),sprintf('%02d',$event['start_m']%60)). + ' '.floor($mins/60).lang('h').($mins%60 ? $mins%60 : ''); + $timespan2 = str_replace(' ',' - '.$GLOBALS['egw']->common->formattime(sprintf('%02d',$event['end_m']/60),sprintf('%02d',$event['end_m']%60)).': ',$timespan); } $is_private = !$this->bo->check_perms(EGW_ACL_READ,$event); @@ -931,7 +1003,7 @@ class uiviews extends uical $border=1; $headerbgcolor = $color ? $color : '#808080'; // the body-colors (gradient) are calculated from the headercolor, which depends on the cat of an event - $bodybgcolor1 = $this->brighter($headerbgcolor,170); + $bodybgcolor1 = $this->brighter($headerbgcolor,$headerbgcolor == '#808080' ? 100 : 170); $bodybgcolor2 = $this->brighter($headerbgcolor,220); // seperate each participant types @@ -954,18 +1026,22 @@ class uiviews extends uical // as we only deal with percentual widht, we consider only the full dayview (1 colum) as NOT small $small = $this->view != 'day' || $width < 50; // $small = $width <= $small_trigger_width - + + $small_height = $this->use_time_grid && ( $event['end_m']-$event['start_m'] < 2*$this->granularity_m || + $event['end_m'] <= $this->wd_start || $event['start_m'] >= $this->wd_end); + $tpl->set_var(array( // event-content, some of it displays only if it really has content or is needed 'header_icons' => $small ? '' : implode("",$icons), 'body_icons' => $small ? implode("\n",$icons) : '', - 'icons' => implode("\n",$icons), - 'timespan' => $small ? str_replace(' ','',$timespan) : $timespan, - 'title' => !$is_private ? $this->html->htmlspecialchars($event['title']).$width : lang('private'), + 'icons' => implode('',$icons), + 'timespan' => $timespan, + 'title' => ($title = !$is_private ? $this->html->htmlspecialchars($event['title']) : lang('private')), + 'header' => $small_height ? $title : $timespan, 'description' => !$is_private ? nl2br($this->html->htmlspecialchars($event['description'])) : '', 'location' => !$is_private ? $this->add_nonempty($event['location'],lang('Location')) : '', 'participants' => $participants, - 'times' => !$event['multiday'] ? $this->add_nonempty($timespan,lang('Time')) : + 'times' => !$event['multiday'] ? $this->add_nonempty($timespan2,lang('Time')) : $this->add_nonempty($this->bo->format_date($event['start']),lang('Start')). $this->add_nonempty($this->bo->format_date($event['end']),lang('End')), 'multidaytimes' => !$event['multiday'] ? '' : @@ -983,11 +1059,13 @@ class uiviews extends uical 'border' => $border, 'bordercolor' => $headerbgcolor, 'headerbgcolor' => $headerbgcolor, - 'bodybackground' => 'url('.$GLOBALS['egw_info']['server']['webserver_url']. + 'bodybackground' => ($background = 'url('.$GLOBALS['egw_info']['server']['webserver_url']. '/calendar/inc/gradient.php?color1='.urlencode($bodybgcolor1).'&color2='.urlencode($bodybgcolor2). - '&width='.$width.') repeat-y '.$bodybgcolor2, + '&width='.$width.') repeat-y '.$bodybgcolor2), 'Small' => $small ? 'Small' : '', // to use in css class-names + 'indent' => $indent."\t", )); +/* not used at the moment foreach(array( 'upper_left'=>array('width'=>-$corner_radius,'height'=>$header_height,'border'=>0,'bgcolor'=>$headerbgcolor), 'upper_right'=>array('width'=>$corner_radius,'height'=>$header_height,'border'=>0,'bgcolor'=>$headerbgcolor), @@ -1001,6 +1079,7 @@ class uiviews extends uical (isset($data['color']) ? '&color='.urlencode($data['color']) : ''). (isset($data['border']) ? '&border='.urlencode($data['border']) : '')); } +*/ $tooltip = $tpl->fp('tooltip','event_tooltip'); $tpl->set_var('tooltip',$this->html->tooltip($tooltip,False,array('BorderWidth'=>0,'Padding'=>0))); $html = $tpl->fp('out',$block); @@ -1021,7 +1100,7 @@ class uiviews extends uical $ie_fix = ''; if ($this->html->user_agent == 'msie') // add a transparent image to make the event "opaque" to mouse events { - $ie_fix = $this->html->image('calendar','transparent.gif','', + $ie_fix = $indent."\t".$this->html->image('calendar','transparent.gif','', $this->html->tooltip($tooltip,False,array('BorderWidth'=>0,'Padding'=>0)). ' style="top:0px; left:0px; position:absolute; height:100%; width:100%; z-index:1"') . "\n"; } @@ -1031,10 +1110,12 @@ class uiviews extends uical } else { - $style = 'position: relative;'; + $style = 'position: relative; margin-top: 3px;'; } - return $indent.'
'."\n".$ie_fix.$html.$indent."
\n"; + return $indent.'
html->tooltip($tooltip,False,array('BorderWidth'=>0,'Padding'=>0)). + '>'."\n".$ie_fix.$html.$indent."
\n"; } function add_nonempty($content,$label,$one_per_line=False) diff --git a/calendar/inc/hook_settings.inc.php b/calendar/inc/hook_settings.inc.php index 3eefae9342..50015b322d 100644 --- a/calendar/inc/hook_settings.inc.php +++ b/calendar/inc/hook_settings.inc.php @@ -19,6 +19,7 @@ $default = array( 'day' => lang('Dayview'), + 'day4' => lang('Four days view'), 'week' => lang('Weekview'), 'month' => lang('Monthview'), 'planner_cat' => lang('Planner by category'), @@ -26,8 +27,9 @@ 'listview' => lang('Listview'), ); $grid_views = array( - '' => lang('Dayview').', '.lang('Weekview').' & '.lang('Monthview'), - 'day_week' => lang('Dayview').' & '.lang('Weekview'), + '' => lang('all'), + 'day_week' => lang('Dayview').', '.lang('Four days view').' & '.lang('Weekview'), + 'day4' => lang('Dayview').' & '.lang('Four days view'), 'day' => lang('Dayview'), ); /* Select list with number of day by week */ diff --git a/calendar/setup/phpgw_ca.lang b/calendar/setup/phpgw_ca.lang index c3574cd8d4..1c0d43c109 100644 --- a/calendar/setup/phpgw_ca.lang +++ b/calendar/setup/phpgw_ca.lang @@ -374,3 +374,4 @@ your meeting scheduled for %1 has been canceled calendar ca S'ha cancel your meeting that had been scheduled for %1 has been rescheduled to %2 calendar ca La vostra reunió programada per %1 ha estat reprogramada a %2 your suggested time of %1 - %2 conflicts with the following existing calendar entries: calendar ca Les vostres hores proposades de %1 - %2 estan en conflicte amb les següents entrades del calendari: +h calendar ca h diff --git a/calendar/setup/phpgw_de.lang b/calendar/setup/phpgw_de.lang index 544c87551e..aaa8512e3f 100644 --- a/calendar/setup/phpgw_de.lang +++ b/calendar/setup/phpgw_de.lang @@ -116,6 +116,7 @@ for which views should calendar show distinct lines with a fixed time interval. format of event updates calendar de Format der Benachrichtigungen forward half a month calendar de einen halben Monat weiter forward one month calendar de einen Monat weiter +four days view calendar de Vier-Tagesansicht freebusy: unknow user '%1', wrong password or not availible to not loged in users !!! calendar de Belegtzeiten: Unbekannter Benutzername '%1', falsches Passwort oder nicht verfügbar für nicht angemeldete Benutzer !!! freetime search calendar de Terminsuche fri calendar de Fr @@ -128,6 +129,7 @@ group invitation calendar de Gruppeneinladung group planner calendar de Gruppenplaner group public only calendar de Gruppen-Öffentlich groupmember(s) %1 not included, because you have no access. calendar de Gruppenmitglied(er) %1 nicht enthalten, da Sie keinen Zugriff haben. +h calendar de h here is your requested alarm. calendar de Hier ist ihr bestellter Alarm. high priority calendar de Hohe Priorität holiday calendar de Feiertag diff --git a/calendar/setup/phpgw_en.lang b/calendar/setup/phpgw_en.lang index faa59e3939..defd3c1ec4 100644 --- a/calendar/setup/phpgw_en.lang +++ b/calendar/setup/phpgw_en.lang @@ -116,6 +116,7 @@ for which views should calendar show distinct lines with a fixed time interval. format of event updates calendar en Format of event updates forward half a month calendar en forward half a month forward one month calendar en forward one month +four days view calendar en four days view freebusy: unknow user '%1', wrong password or not availible to not loged in users !!! calendar en freebusy: Unknow user '%1', wrong password or not availible to not loged in users !!! freetime search calendar en Freetime Search fri calendar en Fri @@ -128,6 +129,7 @@ group invitation calendar en Group invitation group planner calendar en Group planner group public only calendar en group public only groupmember(s) %1 not included, because you have no access. calendar en Groupmember(s) %1 not included, because you have no access. +h calendar en h here is your requested alarm. calendar en Here is your requested alarm. high priority calendar en high priority holiday calendar en Holiday diff --git a/calendar/setup/phpgw_es-es.lang b/calendar/setup/phpgw_es-es.lang index 0ac554d7be..51ce6a3288 100644 --- a/calendar/setup/phpgw_es-es.lang +++ b/calendar/setup/phpgw_es-es.lang @@ -308,3 +308,4 @@ you need to select an ical file first calendar es-es Necesita seleccionar antes you need to set either a day or a occurence !!! calendar es-es Debe indicar un día o una ocurrencia your meeting scheduled for %1 has been canceled calendar es-es Su reunión programada para %1 ha sido cancelada your meeting that had been scheduled for %1 has been rescheduled to %2 calendar es-es Su reunión programada para %1 ha sido reprogramada para %2 +h calendar es-es h diff --git a/calendar/setup/phpgw_eu.lang b/calendar/setup/phpgw_eu.lang index cc3b3b2b1e..832db3165a 100644 --- a/calendar/setup/phpgw_eu.lang +++ b/calendar/setup/phpgw_eu.lang @@ -267,3 +267,4 @@ you need to select an ical file first calendar eu Lehenago you need to set either a day or a occurence !!! calendar eu Egun bat edo ateraldi bat jarri behar duzu your meeting scheduled for %1 has been canceled calendar eu %1 programatutako bilera ezeztatu egin da your meeting that had been scheduled for %1 has been rescheduled to %2 calendar eu %1 programatutako bilera %2 programatu da +h calendar eu h diff --git a/calendar/setup/phpgw_fr.lang b/calendar/setup/phpgw_fr.lang index cf841f7a5d..d6e21624bf 100644 --- a/calendar/setup/phpgw_fr.lang +++ b/calendar/setup/phpgw_fr.lang @@ -414,3 +414,4 @@ you need to set either a day or a occurence !!! calendar fr Vous devez r your meeting scheduled for %1 has been canceled calendar fr Votre réunion planifiée pour %1 a été annulée your meeting that had been scheduled for %1 has been rescheduled to %2 calendar fr Votre réunion qui avait été planifiée pour %1 a été replanifiée pour %2 your suggested time of %1 - %2 conflicts with the following existing calendar entries: calendar fr L'heure que vous avez suggéré %1 - %2 entre en conflit avec les entrés suivantes du calendrier: +h calendar fr h diff --git a/calendar/setup/phpgw_hu.lang b/calendar/setup/phpgw_hu.lang index c2318d97da..992b58bf0c 100644 --- a/calendar/setup/phpgw_hu.lang +++ b/calendar/setup/phpgw_hu.lang @@ -233,3 +233,4 @@ you can either set a year or a occurence, not both !!! calendar hu Tudsz you can only set a year or a occurence !!! calendar hu Tudsz állítani csupán egy évet vagy egy esemény!!! you do not have permission to read this record! calendar hu Neked nincs jogosultságod olvasni ezt a bejegyzést! you have a meeting scheduled for %1 calendar hu Neked van egy ütemezett találkozód %1-el! +h calendar hu óra diff --git a/calendar/setup/phpgw_it.lang b/calendar/setup/phpgw_it.lang index 472cc66675..e2dc79a86e 100644 --- a/calendar/setup/phpgw_it.lang +++ b/calendar/setup/phpgw_it.lang @@ -301,3 +301,4 @@ you need to select an ical file first calendar it Devi prima selezionare un file you need to set either a day or a occurence !!! calendar it Impostare un giorno o una ricorrenza !!! your meeting scheduled for %1 has been canceled calendar it Il tuo meeting fissato per il %1 è stato cancellato your meeting that had been scheduled for %1 has been rescheduled to %2 calendar it Il tuo meeting fissato per il %1 è stato spostato al %2 +h calendar it h diff --git a/calendar/setup/phpgw_lv.lang b/calendar/setup/phpgw_lv.lang index 94d0e488b0..c181bb9f57 100644 --- a/calendar/setup/phpgw_lv.lang +++ b/calendar/setup/phpgw_lv.lang @@ -285,3 +285,4 @@ you need to set either a day or a occurence !!! calendar lv Tev jÄuzstÄda dien your meeting scheduled for %1 has been canceled calendar lv Tava ieplÄnotÄ tikÅ¡anÄs %1 ir atcelta your meeting that had been scheduled for %1 has been rescheduled to %2 calendar lv Tava ieplÄnotÄ tikÅ¡anÄs %1 tika pÄrcelta uz %2 your suggested time of %1 - %2 conflicts with the following existing calendar entries: calendar lv Tavs ieteiktais %1 - %2 laiks nonÄÄ· pretrunÄ ar sekojoÅ¡Ä«em kalendÄra ierakstiem: +h calendar lv h diff --git a/calendar/setup/phpgw_nl.lang b/calendar/setup/phpgw_nl.lang index e7a5a27791..44d06f2981 100644 --- a/calendar/setup/phpgw_nl.lang +++ b/calendar/setup/phpgw_nl.lang @@ -306,3 +306,4 @@ you need to select an ical file first calendar nl U moet eerst een iCal selecter you need to set either a day or a occurence !!! calendar nl U moet of een Dag of een Gebeurtenis instellen !!! your meeting scheduled for %1 has been canceled calendar nl U geplande vergadering voor %1 is geannuleerd. your meeting that had been scheduled for %1 has been rescheduled to %2 calendar nl Uw vergadering die stond gepland voor %1 is opnieuw ingepland naar %2 +h calendar nl h diff --git a/calendar/setup/phpgw_no.lang b/calendar/setup/phpgw_no.lang index ea826f3003..30ed93337d 100644 --- a/calendar/setup/phpgw_no.lang +++ b/calendar/setup/phpgw_no.lang @@ -306,3 +306,4 @@ you need to select an ical file first calendar no Du m you need to set either a day or a occurence !!! calendar no Du må enten sette en dag eller hendelse !!! your meeting scheduled for %1 has been canceled calendar no Møtet ditt planlagt for %1 har blitt kansellert your meeting that had been scheduled for %1 has been rescheduled to %2 calendar no Møtet ditt som var planlagt for %1 har blitt flyttet til %2 +h calendar no t diff --git a/calendar/setup/phpgw_pt-br.lang b/calendar/setup/phpgw_pt-br.lang index e4d7aed6a2..5001ad246f 100644 --- a/calendar/setup/phpgw_pt-br.lang +++ b/calendar/setup/phpgw_pt-br.lang @@ -308,3 +308,4 @@ you need to select an ical file first calendar pt-br Voc you need to set either a day or a occurence !!! calendar pt-br Você deve determinar um dia ou recorrência!!! your meeting scheduled for %1 has been canceled calendar pt-br Seu compromisso agendado para %1 foi cancelado your meeting that had been scheduled for %1 has been rescheduled to %2 calendar pt-br Seu compromisso agendado para %1 foi remarcado para %2 +h calendar pt-br h diff --git a/calendar/setup/phpgw_sl.lang b/calendar/setup/phpgw_sl.lang index 160407c6ba..7de43350a3 100644 --- a/calendar/setup/phpgw_sl.lang +++ b/calendar/setup/phpgw_sl.lang @@ -308,3 +308,4 @@ you need to select an ical file first calendar sl Najprej morate izbrati datotek you need to set either a day or a occurence !!! calendar sl Nastaviti morate dan ali pojavljanje! your meeting scheduled for %1 has been canceled calendar sl VaÅ¡ sestanek %1 je izbrisan your meeting that had been scheduled for %1 has been rescheduled to %2 calendar sl Sestanek za %1 je bil prestavljen na %2 +h calendar sl h diff --git a/calendar/setup/phpgw_zh-tw.lang b/calendar/setup/phpgw_zh-tw.lang index 3bde685597..15ed42543a 100644 --- a/calendar/setup/phpgw_zh-tw.lang +++ b/calendar/setup/phpgw_zh-tw.lang @@ -308,3 +308,4 @@ you need to select an ical file first calendar zh-tw 您必須先é¸æ“‡ä¸€å€‹ iC you need to set either a day or a occurence !!! calendar zh-tw æ‚¨å¿…é ˆè¨­å®šä¸€å€‹æ—¥æœŸæˆ–æ˜¯ä¸€å€‹æœŸé–“ï¼ your meeting scheduled for %1 has been canceled calendar zh-tw 您與%1的行程已經å–消了 your meeting that had been scheduled for %1 has been rescheduled to %2 calendar zh-tw 您與%1的行程已經é‡æ–°å®‰æŽ’到%2 +h calendar zh-tw 時 diff --git a/calendar/templates/default/app.css b/calendar/templates/default/app.css index c3f529122b..b343500b15 100644 --- a/calendar/templates/default/app.css +++ b/calendar/templates/default/app.css @@ -187,21 +187,32 @@ e.g. the div with class calTimeGrid is generated by the timeGridWidget method of .calEvent,.calEventPrivate{ position: absolute; left: 0px; - width: 100%; + right: 0px; overflow: hidden; z-index: 20; + border-width: 1px; + border-style: solid; + border-radius: 6px; + -moz-border-radius: 6px; /* set via inline style on runtime: * top: depending on startime * height: depending on length - * background-color: depending on category + * border-color: depending on category + * background: depending on category (shade) */ } .calEvent:hover{ -/* background-color: #ffff80;*/ cursor: pointer; cursor: hand; } +.calEventTooltip{ + border-width: 1px; + border-style: solid; + border-radius: 6px; + -moz-border-radius: 6px; +} + .calAddEvent{ position: absolute; width: 100%; @@ -217,21 +228,37 @@ e.g. the div with class calTimeGrid is generated by the timeGridWidget method of /* header-row of the event */ .calEventHeader,.calEventHeaderSmall{ + position: relative; /* as the calEventIcons use postion: absolute! */ font-weight: bold; font-size: 9pt; - background-color: #0000ff; color: white; text-align: left; + left: 0px; + right: 0px; + padding-left: 2px; +/* set via inline style on runtime + * background-color: depending on category + */ } .calEventHeaderSmall{ font-size: 8pt; line-height: 10pt; } +.calEventIcons{ + position: absolute; + right: 0px; + top: 0px; +} +.calEventHeaderSmall .calEventIcons img{ height: 13px;} + /* body of the event */ .calEventBody,.calEventBodySmall{ padding: 0px 3px 0px; + left: 2px; + right: 2px; + height: 99%; } .calEventBodySmall{ diff --git a/calendar/templates/default/event_widget.tpl b/calendar/templates/default/event_widget.tpl index d7defe7a3e..fdfcf0257d 100644 --- a/calendar/templates/default/event_widget.tpl +++ b/calendar/templates/default/event_widget.tpl @@ -1,39 +1,27 @@ - - - - - - - - - -
- {icons} {timespan} -
- {title} -
+{indent}
+{indent} {header} +{indent}
{icons}
+{indent}
+{indent}
{title}
- - - - - - - -
- {icons} {timespan} -
-

- {title}
- {description}

-

{times} - {location} - {category} - {participants}

-
+
+
+ {timespan} +
{icons}
+
+
+

+ {title}
+ {description}

+

{times} + {location} + {category} + {participants}

+
+