mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-08 00:54:15 +01:00
- 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
This commit is contained in:
parent
3660a8f6ad
commit
366f164183
@ -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
|
||||
}
|
||||
|
@ -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 "<p>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)."</p>\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.'<div class="calTimeGrid" style="height: '.$height.'px;">'."\n";
|
||||
$html = $indent.'<div class="calTimeGrid" style="height: '.$height.'px;'.$overflow.'">'."\n";
|
||||
|
||||
$html .= $indent."\t".'<div class="calGridHeader" style="height: '.
|
||||
$this->rowHeight.'%;">'.$title."</div>\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".'<div class="calTimeRow'.($off ? 'Off row_off' : ' row_on').
|
||||
'" style="height: '.$this->rowHeight.'%; top:'. $i*$this->rowHeight .'%;">'."\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".'<div class="calTimeRowTime">'.$time."</div>\n";
|
||||
$html .= $indent."\t</div>\n"; // calTimeRow
|
||||
$off = !$off;
|
||||
list($id) = @each($daysEvents);
|
||||
$id = 'wd_start_'.$id;
|
||||
$set_id = ' id="'.$id.'"';
|
||||
}
|
||||
$html .= $indent."\t".'<div'.$set_id.' class="calTimeRow'.($off ? 'Off row_off' : ' row_on').
|
||||
'" style="height: '.$this->rowHeight.'%; top:'. $i*$this->rowHeight .'%;">'."\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".'<div class="calTimeRowTime">'.$time."</div>\n";
|
||||
$html .= $indent."\t</div>\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".'<div id="calDayCols" class="calDayCols'.
|
||||
($this->use_time_grid ? ($this->bo->common_prefs['timeformat'] == 12 ? '12h' : '') : 'NoTime').
|
||||
'"><div style="width=100%; height: 100%;">'."\n";
|
||||
'"><div style="width: 100%; height: 100%;">'."\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</div></div>\n"; // calDayCols
|
||||
}
|
||||
$html .= $indent."</div>\n"; // calTimeGrid
|
||||
|
||||
|
||||
if ($this->scroll_to_wdstart)
|
||||
{
|
||||
$html .= "<script>\n\tdocument.getElementById('$id').scrollIntoView();\n";
|
||||
if ($last) // last timeGrid --> scroll whole document back up
|
||||
{
|
||||
$html .= "\tdocument.getElementById('divMain').scrollIntoView();\n";
|
||||
}
|
||||
$html .= "</script>\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.'<div id="calColumn'.$this->calColumnCounter++.'" class="calDayCol" style="left: '.$left.
|
||||
'%; width: '.$width.'%;">'."\n";
|
||||
|
||||
@ -771,31 +841,33 @@ class uiviews extends uical
|
||||
}
|
||||
$this->_day_class_holiday($day_ymd,$class,$holidays);
|
||||
// the weekday and date
|
||||
$html .= $indent."\t".'<div style="height: '. $this->rowHeight .'%" class="calDayColHeader '.$class.'"'.($holidays ? ' title="'.$holidays.'"':'').'>'.
|
||||
$html .= $indent."\t".'<div style="height: '. $this->rowHeight .'%;" class="calDayColHeader '.$class.'"'.($holidays ? ' title="'.$holidays.'"':'').'>'.
|
||||
$title.(!$short_title && $holidays ? ': '.$holidays : '')."</div>\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 ."<br>";
|
||||
$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".'<div style="height:'. $this->rowHeight .'%; top: '. $counter*$this->rowHeight .
|
||||
$html .= $indent."\t".'<div style="height:'. $this->rowHeight .'%; top: '. $i*$this->rowHeight .
|
||||
'%;" class="calAddEvent" onclick="'.$this->popup($GLOBALS['egw']->link('/index.php',$linkData)).';return false;"></div>'."\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."</div>\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.'<div class="calEvent'.($is_private ? 'Private' : '').'" style="'.$style.'"'.
|
||||
$popup.'>'."\n".$ie_fix.$html.$indent."</div>\n";
|
||||
return $indent.'<div class="calEvent'.($is_private ? 'Private' : '').
|
||||
'" style="'.$style.' border-color: '.$headerbgcolor.'; background: '.$background.';"'.
|
||||
$popup.' '.$this->html->tooltip($tooltip,False,array('BorderWidth'=>0,'Padding'=>0)).
|
||||
'>'."\n".$ie_fix.$html.$indent."</div>\n";
|
||||
}
|
||||
|
||||
function add_nonempty($content,$label,$one_per_line=False)
|
||||
|
@ -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 */
|
||||
|
@ -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 <b> %1 - %2 </b> conflicts with the following existing calendar entries: calendar ca Les vostres hores proposades de <B> %1 - %2 </B> estan en conflicte amb les següents entrades del calendari:
|
||||
|
||||
h calendar ca h
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 <b> %1 - %2 </b> conflicts with the following existing calendar entries: calendar fr L'heure que vous avez suggéré <B> %1 - %2 </B> entre en conflit avec les entrés suivantes du calendrier:
|
||||
h calendar fr h
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 <b> %1 - %2 </b> conflicts with the following existing calendar entries: calendar lv Tavs ieteiktais <B> %1 - %2 </B> laiks nonāķ pretrunā ar sekojošīem kalendāra ierakstiem:
|
||||
h calendar lv h
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 時
|
||||
|
@ -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{
|
||||
|
@ -1,39 +1,27 @@
|
||||
<!-- BEGIN event_widget -->
|
||||
<table style="width: 100%; height: 100%; margin: 0px; padding: 0px;" cellpadding="0" cellspacing="0" border="0" align="center" {tooltip}>
|
||||
|
||||
<tr style="height: {header_height};" valign="top">
|
||||
<td valign="middle" class="calEventHeader{Small}" style="height: {header_height}; border-top: {border}px solid {bordercolor}; background-color: {headerbgcolor};">
|
||||
{icons} {timespan}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top" style="height: 100%;">
|
||||
<td class="calEventBody{Small}" style="background: {bodybackground}; border-bottom: {border}px solid {bordercolor}; border-left: {border}px solid {bordercolor}; border-right: {border}px solid {bordercolor};">
|
||||
{title}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{indent}<div class="calEventHeader{Small}" style="background-color: {bordercolor};">
|
||||
{indent} {header}
|
||||
{indent} <div class="calEventIcons">{icons}</div>
|
||||
{indent}</div>
|
||||
{indent}<div class="calEventBody{Small}">{title}</div>
|
||||
<!-- END event_widget -->
|
||||
|
||||
<!-- BEGIN event_tooltip -->
|
||||
<table style="width: 100%; margin: 0px; padding: 0px;" cellpadding="0" cellspacing="0" border="0" align="center">
|
||||
<tr style="height: {header_height};" valign="top">
|
||||
<td valign="middle" class="calEventHeaderSmall" style="height: {header_height}; border-top: {border}px solid {bordercolor}; background-color: {headerbgcolor};">
|
||||
{icons} {timespan}
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td class="calEventBodySmall" style="background: {bodybackground}; border-bottom: {border}px solid {bordercolor}; border-left: {border}px solid {bordercolor}; border-right: {border}px solid {bordercolor};">
|
||||
<p style="margin: 0px;">
|
||||
<span class="calEventTitle">{title}</span><br>
|
||||
{description}</p>
|
||||
<p style="margin: 2px 0px;">{times}
|
||||
{location}
|
||||
{category}
|
||||
{participants}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="calEventTooltip" style="border-color: {bordercolor}; background: {bodybackground};">
|
||||
<div class="calEventHeaderSmall" style="background-color: {bordercolor};">
|
||||
<font color="white"><b>{timespan}</b></font>
|
||||
<div class="calEventIcons">{icons}</div>
|
||||
</div>
|
||||
<div class="calEventBodySmall">
|
||||
<p style="margin: 0px;">
|
||||
<span class="calEventTitle">{title}</span><br>
|
||||
{description}</p>
|
||||
<p style="margin: 2px 0px;">{times}
|
||||
{location}
|
||||
{category}
|
||||
{participants}</p>
|
||||
</div>
|
||||
</dir>
|
||||
<!-- END event_tooltip -->
|
||||
|
||||
<!-- BEGIN planner_event -->
|
||||
|
Loading…
Reference in New Issue
Block a user