- week- and month-view can now be configured (via the user prefs) to display a non-time-grid view (close to what the old calendar does)

- fixed / improved some layout problems with the time-grid views
This commit is contained in:
Ralf Becker 2006-05-31 00:33:27 +00:00
parent b868fa4be7
commit b2102ccbd6
6 changed files with 222 additions and 143 deletions

View File

@ -62,6 +62,12 @@ class uiviews extends uical
*/
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
*/
var $use_time_grid=true;
/**
* Constructor
*
@ -231,6 +237,8 @@ class uiviews extends uical
{
if ($this->debug > 0) $this->bo->debug_message('uiviews::month(weeks=%1) date=%2',True,$weeks,$this->date);
$this->use_time_grid = $this->cal_prefs['use_time_grid'] == ''; // all views
if ($weeks)
{
$this->first = $this->datetime->get_weekday_start($this->year,$this->month,$this->day=1);
@ -314,6 +322,8 @@ class uiviews extends uical
*/
function week($days=0,$home=false)
{
$this->use_time_grid = $this->cal_prefs['use_time_grid'] != 'day';
if (!$days)
{
$days = isset($_GET['days']) ? $_GET['days'] : $this->cal_prefs['days_in_weekview'];
@ -389,6 +399,8 @@ class uiviews extends uical
$this->last = $this->first = $this->bo->date2ts((string)$this->date);
$GLOBALS['egw_info']['flags']['app_header'] .= ': '.lang(adodb_date('l',$this->first)).', '.$this->bo->long_date($this->first);
$this->use_time_grid = true; // day-view always uses a time-grid, independent what's set in the prefs!
$this->search_params['end'] = $this->last = $this->first+DAY_s-1;
if (!$home)
@ -611,25 +623,27 @@ class uiviews extends uical
$html .= $indent."\t".'<div class="calGridHeader" style="height: '.
$this->rowHeight.'%;">'.$title."</div>\n";
$off = false; // Off-row means a different bgcolor
$add_links = count($daysEvents) == 1;
// the hour rows
for($i=1; $i < $this->rowsToDisplay; $i++)
if ($this->use_time_grid)
{
$currentTime = $this->display_start + (($i-1) * $this->granularity_m);
if($this->wd_start <= $currentTime && $this->wd_end >= $currentTime)
$off = false; // Off-row means a different bgcolor
$add_links = count($daysEvents) == 1;
// the hour rows
for($i=1; $i < $this->rowsToDisplay; $i++)
{
$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;
$currentTime = $this->display_start + (($i-1) * $this->granularity_m);
if($this->wd_start <= $currentTime && $this->wd_end >= $currentTime)
{
$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;
}
}
}
if (is_array($daysEvents) && count($daysEvents))
{
$numberOfDays = count($daysEvents);
@ -639,9 +653,10 @@ class uiviews extends uical
// Lars Kneschke 2005-08-28
// why do we use a div in a div which has the same height and width???
// To make IE6 happy!!! Whithout the second div you can't use
// To make IE6 happy!!! Without the second div you can't use
// style="left: 50px; right: 0px;"
$html .= $indent."\t".'<div id="calDayCols" class="calDayCols'.($this->bo->common_prefs['timeformat'] == 12 ? '12h' : '').
$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";
$dayCol_width = $dayCols_width / count($daysEvents);
$n = 0;
@ -703,9 +718,16 @@ class uiviews extends uical
$event['end_m'] = 24*60-1;
$event['multiday'] = True;
}
for($c = 0; $event['start_m'] < $col_ends[$c]; ++$c);
if ($this->use_time_grid)
{
for($c = 0; $event['start_m'] < $col_ends[$c]; ++$c);
$col_ends[$c] = $event['end_m'];
}
else
{
$c = 0; // without grid we only use one column
}
$eventCols[$c][] = $event;
$col_ends[$c] = $event['end_m'];
}
if (count($eventCols))
@ -739,25 +761,36 @@ class uiviews extends uical
$title = $this->html->a_href($title,$day_view,'',
!isset($this->holidays[$day_ymd])?' title="'.lang('Dayview').'"':'');
}
elseif ($short_title === false)
{
// add arrows to go to the previous and next day (dayview only)
$day_view['date'] = $this->bo->date2string($ts -= 12*HOUR_s);
$title = $this->html->a_href($this->html->image('phpgwapi','left',$this->bo->long_date($ts)),$day_view).' &nbsp; '.$title;
$day_view['date'] = $this->bo->date2string($ts += 48*HOUR_s);
$title .= ' &nbsp; '.$this->html->a_href($this->html->image('phpgwapi','right',$this->bo->long_date($ts)),$day_view);
}
$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.'"':'').'>'.
$title.(!$short_title && $holidays ? ': '.$holidays : '')."</div>\n";
// adding divs to click on for each row / time-span
for($counter = 1; $counter < $this->rowsToDisplay; $counter++)
if ($this->use_time_grid)
{
//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),
);
if ($owner) $linkData['owner'] = $owner;
$html .= $indent."\t".'<div style="height:'. $this->rowHeight .'%; top: '. $counter*$this->rowHeight .
'%;" class="calAddEvent" onclick="'.$this->popup($GLOBALS['egw']->link('/index.php',$linkData)).';return false;"></div>'."\n";
// adding divs to click on for each row / time-span
for($counter = 1; $counter < $this->rowsToDisplay; $counter++)
{
//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),
);
if ($owner) $linkData['owner'] = $owner;
$html .= $indent."\t".'<div style="height:'. $this->rowHeight .'%; top: '. $counter*$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)
@ -834,7 +867,8 @@ class uiviews extends uical
{
if ($this->debug > 1 || $this->debug==='eventColWidget') $this->bo->debug_message('uiviews::eventColWidget(%1,left=%2,width=%3,)',False,$events,$left,$width);
$html = $indent.'<div class="calEventCol" style="left: '.$left.'%; width:'.$width.'%;">'."\n";
$html = $indent.'<div class="calEventCol" style="left: '.$left.'%; width:'.$width.'%;'.
(!$this->use_time_grid ? ' top: '.$this->rowHeight.'%;' : '').'">'."\n";
foreach($events as $event)
{
$html .= $this->eventWidget($event,$width,$indent."\t");
@ -917,15 +951,17 @@ class uiviews extends uical
{
$participants .= $this->add_nonempty($participant,$part_group,True);
}
// 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
$tpl->set_var(array(
// event-content, some of it displays only if it really has content or is needed
'header_icons' => $width > $small_trigger_width ? implode("",$icons) : '',
'body_icons' => $width > $small_trigger_width ? '' : implode("\n",$icons),
'header_icons' => $small ? '' : implode("",$icons),
'body_icons' => $small ? implode("\n",$icons) : '',
'icons' => implode("\n",$icons),
'timespan' => $timespan,
'header' => !$is_private ? $this->html->htmlspecialchars($event['title']) : lang('private'), // $timespan,
'title' => !$is_private ? $this->html->htmlspecialchars($event['title']) : lang('private'),
'timespan' => $small ? str_replace(' ','',$timespan) : $timespan,
'title' => !$is_private ? $this->html->htmlspecialchars($event['title']).$width : lang('private'),
'description' => !$is_private ? nl2br($this->html->htmlspecialchars($event['description'])) : '',
'location' => !$is_private ? $this->add_nonempty($event['location'],lang('Location')) : '',
'participants' => $participants,
@ -950,8 +986,7 @@ class uiviews extends uical
'bodybackground' => 'url('.$GLOBALS['egw_info']['server']['webserver_url'].
'/calendar/inc/gradient.php?color1='.urlencode($bodybgcolor1).'&color2='.urlencode($bodybgcolor2).
'&width='.$width.') repeat-y '.$bodybgcolor2,
'Small' => $width > $small_trigger_width ? '' : 'Small', // to use in css class-names
// otherwise a click in empty parts of the event, will "click through" and create a new event
'Small' => $small ? 'Small' : '', // to use in css class-names
));
foreach(array(
'upper_left'=>array('width'=>-$corner_radius,'height'=>$header_height,'border'=>0,'bgcolor'=>$headerbgcolor),
@ -990,8 +1025,16 @@ class uiviews extends uical
$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";
}
return $indent.'<div class="calEvent'.($is_private ? 'Private' : '').'" style="top: '.$this->time2pos($event['start_m']).
'%; height: '.$height.'%;"'.$popup.'>'."\n".$ie_fix.$html.$indent."</div>\n";
if ($this->use_time_grid)
{
$style = 'top: '.$this->time2pos($event['start_m']).'%; height: '.$height.'%;';
}
else
{
$style = 'position: relative;';
}
return $indent.'<div class="calEvent'.($is_private ? 'Private' : '').'" style="'.$style.'"'.
$popup.'>'."\n".$ie_fix.$html.$indent."</div>\n";
}
function add_nonempty($content,$label,$one_per_line=False)

View File

@ -25,6 +25,11 @@
'planner_user' => lang('Planner by user'),
'listview' => lang('Listview'),
);
$grid_views = array(
'' => lang('Dayview').', '.lang('Weekview').' &amp; '.lang('Monthview'),
'day_week' => lang('Dayview').' &amp; '.lang('Weekview'),
'day' => lang('Dayview'),
);
/* Select list with number of day by week */
$week_view = array(
'5' => lang('Weekview without weekend'),
@ -149,6 +154,84 @@
'xmlrpc' => True,
'admin' => False
),
'show_rejected' => array(
'type' => 'check',
'label' => 'Show invitations you rejected',
'name' => 'show_rejected',
'help' => 'Should invitations you rejected still be shown in your calendar ?<br>You can only accept them later (eg. when your scheduling conflict is removed), if they are still shown in your calendar!'
),
'weekdaystarts' => array(
'type' => 'select',
'label' => 'weekday starts on',
'name' => 'weekdaystarts',
'values' => $weekdaystarts,
'help' => 'This day is shown as first day in the week or month view.',
'xmlrpc' => True,
'admin' => False
),
'workdaystarts' => array(
'type' => 'select',
'label' => 'work day starts on',
'name' => 'workdaystarts',
'values' => $times,
'help' => 'This defines the start of your dayview. Events before this time, are shown above the dayview.<br>This time is also used as a default starttime for new events.',
'xmlrpc' => True,
'admin' => False
),
'workdayends' => array(
'type' => 'select',
'label' => 'work day ends on',
'name' => 'workdayends',
'values' => $times,
'help' => 'This defines the end of your dayview. Events after this time, are shown below the dayview.',
'xmlrpc' => True,
'admin' => False
),
'use_time_grid' => array(
'type' => 'select',
'label' => 'Views with fixed time intervals',
'name' => 'use_time_grid',
'values' => $grid_views,
'help' => 'For which views should calendar show distinct lines with a fixed time interval.',
'xmlrpc' => True,
'admin' => False
),
'interval' => array(
'type' => 'select',
'label' => 'Length of the time interval',
'name' => 'interval',
'values' => $intervals,
'help' => 'How many minutes should each interval last?',
'xmlrpc' => True,
'admin' => False
),
'defaultlength' => array(
'type' => 'input',
'label' => 'default appointment length (in minutes)',
'name' => 'defaultlength',
'help' => 'Default length of newly created events. The length is in minutes, eg. 60 for 1 hour.',
'default' => '',
'size' => 3,
'xmlrpc' => True,
'admin' => False
),
'planner_start_with_group' => array(
'type' => 'select',
'label' => 'Preselected group for entering the planner',
'name' => 'planner_start_with_group',
'values' => $options,
'help' => 'This group that is preselected when you enter the planner. You can change it in the planner anytime you want.',
'xmlrpc' => True,
'admin' => False
),
'default_private' => array(
'type' => 'check',
'label' => 'Set new events to private',
'name' => 'default_private',
'help' => 'Should new events created as private by default ?',
'xmlrpc' => True,
'admin' => False
),
'receive_updates' => array(
'type' => 'select',
'label' => 'Receive email updates',
@ -244,86 +327,6 @@
'xmlrpc' => True,
'admin' => False
),
'show_rejected' => array(
'type' => 'check',
'label' => 'Show invitations you rejected',
'name' => 'show_rejected',
'help' => 'Should invitations you rejected still be shown in your calendar ?<br>You can only accept them later (eg. when your scheduling conflict is removed), if they are still shown in your calendar!'
),
'weekdaystarts' => array(
'type' => 'select',
'label' => 'weekday starts on',
'name' => 'weekdaystarts',
'values' => $weekdaystarts,
'help' => 'This day is shown as first day in the week or month view.',
'xmlrpc' => True,
'admin' => False
),
'workdaystarts' => array(
'type' => 'select',
'label' => 'work day starts on',
'name' => 'workdaystarts',
'values' => $times,
'help' => 'This defines the start of your dayview. Events before this time, are shown above the dayview.<br>This time is also used as a default starttime for new events.',
'xmlrpc' => True,
'admin' => False
),
'workdayends' => array(
'type' => 'select',
'label' => 'work day ends on',
'name' => 'workdayends',
'values' => $times,
'help' => 'This defines the end of your dayview. Events after this time, are shown below the dayview.',
'xmlrpc' => True,
'admin' => False
),
'interval' => array(
'type' => 'select',
'label' => 'Intervals in day view',
'name' => 'interval',
'values' => $intervals,
'help' => 'Defines the size in minutes of the lines in the day view.',
'xmlrpc' => True,
'admin' => False
),
'defaultlength' => array(
'type' => 'input',
'label' => 'default appointment length (in minutes)',
'name' => 'defaultlength',
'help' => 'Default length of newly created events. The length is in minutes, eg. 60 for 1 hour.',
'default' => '',
'size' => 3,
'xmlrpc' => True,
'admin' => False
),
'planner_start_with_group' => array(
'type' => 'select',
'label' => 'Preselected group for entering the planner',
'name' => 'planner_start_with_group',
'values' => $options,
'help' => 'This group that is preselected when you enter the planner. You can change it in the planner anytime you want.',
'xmlrpc' => True,
'admin' => False
),
/* dont think that default is realy necessary -- RalfBecker 2005/11/12
'defaultfilter' => array(
'type' => 'select',
'label' => 'Default calendar filter',
'name' => 'defaultfilter',
'values' => $defaultfilter,
'help' => 'Which events do you want to see when you enter the calendar.',
'xmlrpc' => True,
'admin' => False
),
*/
'default_private' => array(
'type' => 'check',
'label' => 'Set new events to private',
'name' => 'default_private',
'help' => 'Should new events created as private by default ?',
'xmlrpc' => True,
'admin' => False
),
/* disabled free/busy stuff til it gets rewritten with new Horde iCal classes -- RalfBecker 2006/03/03
'freebusy' => array(
'type' => 'check',

View File

@ -63,7 +63,6 @@ default calendar filter calendar de Standard-Filter des Kalenders
default calendar view calendar de Standard-Ansicht des Kalenders
default length of newly created events. the length is in minutes, eg. 60 for 1 hour. calendar de Vorgabe für die Länge von neuen Kalendareinträgen. Die Länge ist in Minuten, zb. 60 für 1 Stunde.
default week view calendar de Vorgabe Wochenansicht
defines the size in minutes of the lines in the day view. calendar de Bestimmt die Zeitskala in Minuten der Tagesansicht des Kalendars.
delete series calendar de Serie löschen
delete this alarm calendar de Diesen Alarm löschen
delete this event calendar de Diesen Termin löschen
@ -113,6 +112,7 @@ filename of the download calendar de Name der herunterzuladenden Datei
find free timeslots where the selected participants are availible for the given timespan calendar de Such freie Zeitslots an denen die ausgewählten Teilnehmer für die gegebene Zeitspanne verfügbar sind
firstname of person to notify calendar de Vorname der zu benachrichtigenden Person
for calendar de für
for which views should calendar show distinct lines with a fixed time interval. calendar de Für welche Ansichten soll der Kalender einzelne Zeilen mit festen Zeitintervallen anzeigen.
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
@ -135,6 +135,7 @@ holiday management calendar de Feiertagsverwaltung
holidays calendar de Feiertage
hours calendar de Stunden
how far to search (from startdate) calendar de wie weit suchen (vom Startdatum)
how many minutes should each interval last? calendar de Wie viele Minute soll jedes Interval dauern?
ical calendar de iCal
ical / rfc2445 calendar de iCal / RFC2445
ical export calendar de iCal Export
@ -145,12 +146,12 @@ if checked holidays falling on a weekend, are taken on the monday after. calenda
if you dont set a password here, the information is available to everyone, who knows the url!!! calendar de Wenn Sie hier kein Passwort angeben, ist die Information für jeden verfügbar, der die Adresse (URL) kennt!!!
ignore conflict calendar de Konflikt ignorieren
import calendar de Importieren
import csv-file calendar de CSV-Datei importieren
import csv-file common de CSV-Datei importieren
interval calendar de Intervall
intervals in day view calendar de Zeitintervalle in der Tagesansicht
invalid email-address "%1" for user %2 calendar de Ungültige Email-Adresse "%1" für Benutzer %2
last calendar de letzte
lastname of person to notify calendar de Nachname der zu benachrichtigenden Person
length of the time interval calendar de Länge des Zeitintervals
link to view the event calendar de Verweis (Weblink) um den Termin anzuzeigen
links calendar de Verknüpfungen
links, attachments calendar de Verknüpfungen, Dateianhänge
@ -280,6 +281,7 @@ updated calendar de Aktualisiert
use end date calendar de Enddatum benutzen
use the selected time and close the popup calendar de benutzt die ausgewählte Zeit und schließt das Popup
view this event calendar de Diesen Termin anzeigen
views with fixed time intervals calendar de Ansichten mit festen Zeitintervallen
wed calendar de Mi
week calendar de Woche
weekday starts on calendar de Arbeitswoche beginnt am

View File

@ -63,7 +63,6 @@ default calendar filter calendar en Default calendar filter
default calendar view calendar en default calendar view
default length of newly created events. the length is in minutes, eg. 60 for 1 hour. calendar en Default length of newly created events. The length is in minutes, eg. 60 for 1 hour.
default week view calendar en default week view
defines the size in minutes of the lines in the day view. calendar en Defines the size in minutes of the lines in the day view.
delete series calendar en Delete series
delete this alarm calendar en Delete this alarm
delete this event calendar en Delete this event
@ -113,6 +112,7 @@ filename of the download calendar en Filename of the download
find free timeslots where the selected participants are availible for the given timespan calendar en Find free timeslots where the selected participants are availible for the given timespan
firstname of person to notify calendar en Firstname of person to notify
for calendar en for
for which views should calendar show distinct lines with a fixed time interval. calendar en 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
@ -135,6 +135,7 @@ holiday management calendar en Holiday Management
holidays calendar en Holidays
hours calendar en hours
how far to search (from startdate) calendar en how far to search (from startdate)
how many minutes should each interval last? calendar en How many minutes should each interval last?
ical calendar en iCal
ical / rfc2445 calendar en iCal / rfc2445
ical export calendar en iCal Export
@ -147,10 +148,10 @@ ignore conflict calendar en Ignore conflict
import calendar en Import
import csv-file common en Import CSV-File
interval calendar en Interval
intervals in day view calendar en Intervals in day view
invalid email-address "%1" for user %2 calendar en Invalid email-address "%1" for user %2
last calendar en Last
lastname of person to notify calendar en Lastname of person to notify
length of the time interval calendar en Length of the time interval
link to view the event calendar en Link to view the event
links calendar en Links
links, attachments calendar en Links, Attachments
@ -173,7 +174,6 @@ no filter calendar en No filter
no matches found calendar en no matches found
no response calendar en No response
non blocking calendar en non blocking
not calendar en not
notification messages for added events calendar en Notification messages for added events
notification messages for canceled events calendar en Notification messages for canceled events
notification messages for disinvited participants calendar en Notification messages for disinvited participants
@ -246,7 +246,6 @@ show list of upcoming events calendar en show list of upcoming events
show this month calendar en show this month
show this week calendar en show this week
single event calendar en single event
site configuration calendar en site configuration
start calendar en Start
start date/time calendar en Start Date/Time
startdate / -time calendar en Startdate / -time
@ -282,6 +281,7 @@ updated calendar en Updated
use end date calendar en use end date
use the selected time and close the popup calendar en use the selected time and close the popup
view this event calendar en View this event
views with fixed time intervals calendar en Views with fixed time intervals
wed calendar en Wed
week calendar en Week
weekday starts on calendar en weekday starts on

View File

@ -4,6 +4,30 @@
* CSS settings for the day, week and month view (timeGridWidget) *
******************************************************************/
/*
Names used in the "graphic" are the css classes from this file.
The function names in class uiviews have the leading cal removed and a trailing Widget added:
e.g. the div with class calTimeGrid is generated by the timeGridWidget method of uiviews.
+++ calTimeGrid +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ #### calDayCols[12h|NoGrip] ###########################################################
+ #... calDayCol ............................. ... calDayCol ..........................
+ #.+- calDayColHeader ---------------------+. .+- calDayColHeader ------------------+.
+ #.| |. .| |.
+ #.+---------------------------------------+. .+------------------------------------+.
+.calTimeRowTime.#.** calEventCol ***** ** calEventCol *****. .** calEventCol ***********************.
+. .#.* * * *. .* *.
+. .#.* * * *. .* *.
+................#.*+- calEvent -----+* * *. .* *.
+.calTimeRowTime.#.*| |* * *. .*+- calEvent[Private] --------------+*.
+. .#.*| |* *+- calEvent -----+*. .*| |*.
+. .#.*+----------------+* *| |*. .*| |*.
+................#.* * *| |*. .*| |*.
+.calTimeRowTime.#.* * *+----------------+*. .*| |*.
+. .#.* * * *. .*+----------------------------------+*.
*/
.redItalic { color: red; font-style: italic; }
.size120b { font-size: 120%; font-weight: bold; }
@ -65,10 +89,10 @@
/* contains (multiple) dayCol's
*/
.calDayCols,.calDayCols12h{
.calDayCols,.calDayCols12h,.calDayColsNoGrid{
position: absolute;
top: 0px;
height: 100%;
bottom: 0px;
left: 45px;
right: 0px;
}
@ -77,6 +101,11 @@
.calDayCols12h{
left: 65px;
}
/* no time grid --> no time column
*/
.calDayColsNoTime{
left: 0px;
}
/* contains (multiple) eventCol's
*/
@ -146,7 +175,7 @@
.calEventCol{
position: absolute;
top: 0px;
height: 100%;
bottom: 0px;
/* set via inline style on runtime:
* left:
* width:
@ -189,11 +218,10 @@
*/
.calEventHeader,.calEventHeaderSmall{
font-weight: bold;
font-size: 10pt;
font-size: 9pt;
background-color: #0000ff;
color: white;
text-align: center;
white-space: nowrap;
text-align: left;
}
.calEventHeaderSmall{
font-size: 8pt;

View File

@ -1,27 +1,30 @@
<!-- BEGIN event_widget -->
<table style="width: 99%; height: 100%; margin: 0px; padding: 0px;" cellpadding="0" cellspacing="0" border="0" align="center" {tooltip}>
<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};">{header_icons} {header}</td>
<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};">
<p style="margin: 0px;">{body_icons}<br>
<span class="calEventTitle">{title}</span></p>
{title}
</td>
</tr>
</table>
<!-- END event_widget -->
<!-- BEGIN event_tooltip -->
<table style="width: 99%; margin: 0px; padding: 0px;" cellpadding="0" cellspacing="0" border="0" align="center">
<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="calEventHeader{Small}" style="height: {header_height}; border-top: {border}px solid {bordercolor}; background-color: {headerbgcolor};">{header_icons} {header}</td>
<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="calEventBody{Small}" 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;">{body_icons}
<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}