\n";
$success = $failed = 0;
// Split out combined values
- if(strpos($action, 'status') !== false) {
+ if(strpos($action, 'status') !== false)
+ {
list($action, $status) = explode('-', $action);
- } elseif (strpos($action, '_') !== false) {
+ }
+ elseif (strpos($action, '_') !== false)
+ {
list($action, $settings) = explode('_', $action,2);
}
- if ($use_all)
+ if ($use_all)
+ {
+ // get the whole selection
+ $query = is_array($session_name) ? $session_name : egw_session::appsession($session_name,'calendar');
+ @set_time_limit(0); // switch off the execution time limit, as for big selections it's too small
+ $query['num_rows'] = -1; // all
+ $this->get_rows($query,$checked,$readonlys,($action != 'ical')); // true = only return the id's
+ }
+ else
{
- // get the whole selection
- $query = is_array($session_name) ? $session_name : egw_session::appsession($session_name,'calendar');
- @set_time_limit(0); // switch off the execution time limit, as for big selections it's too small
- $query['num_rows'] = -1; // all
- $this->get_rows($query,$checked,$readonlys,($action != 'ical')); // true = only return the id's
- } else {
// Pull the date for recurring events
$split = array();
- foreach($checked as $key) {
- if(!is_array($key) && strpos($key,':') !== false) {
+ foreach($checked as $key)
+ {
+ if(!is_array($key) && strpos($key,':') !== false)
+ {
list($id, $recur_date) = explode(':', $key);
$split[] = array(
- 'id' => $id,
- 'recur_date' => $recur_date
+ 'id' => $id,
+ 'recur_date' => $recur_date
);
- } else {
+ }
+ else
+ {
$split[] = $key;
}
}
@@ -515,45 +529,45 @@ class calendar_uilist extends calendar_ui
}
// Actions where one action is done to the group
- switch($action)
+ switch($action)
{
case 'ical':
$boical = new calendar_ical();
$ical =& $boical->exportVCal($checked,'2.0','PUBLISH',false);
- html::content_header($content['file'] ? $content['file'] : 'event.ics','text/calendar',bytes($ical));
- echo $ical;
- common::egw_exit();
+ html::content_header($content['file'] ? $content['file'] : 'event.ics','text/calendar',bytes($ical));
+ echo $ical;
+ common::egw_exit();
break;
case 'document':
$msg = $this->download_document($checked,$settings);
$failed = count($checked);
- return false;
+ return false;
}
// Actions where the action is applied to each entry
- if(strpos($action, 'timesheet') !== false) {
+ if(strpos($action, 'timesheet') !== false)
+ {
$timesheet_bo = new timesheet_bo();
}
- foreach($checked as $event)
+ foreach($checked as $event)
{
if(!(int)$event['id'] && preg_match('/^([a-z_-]+)([0-9]+)$/i',$event['id'],$matches))
{
$app = $matches[1];
$app_id = $matches[2];
- } else {
+ }
+ else
+ {
$id = $event['id'];
$recur_date = $event['recur_date'];
}
- switch($action)
+ switch($action)
{
case 'delete':
$action_msg = lang('deleted');
- if ($id && $this->bo->check_perms(EGW_ACL_DELETE,$id))
+ if ($id && $this->bo->delete($id, $recur_date,false,$skip_notification))
{
- if($this->bo->delete($id, $recur_date,false,$skip_notification))
- {
- $success++;
- }
+ $success++;
}
else
{
@@ -562,7 +576,7 @@ class calendar_uilist extends calendar_ui
break;
case 'undelete':
$action_msg = lang('recovered');
- if ($id && ($event = $this->bo->read($id, $recur_date)) && $this->bo->check_perms(EGW_ACL_EDIT,$id) &&
+ if ($id && ($event = $this->bo->read($id, $recur_date)) && $this->bo->check_perms(EGW_ACL_EDIT,$id) &&
is_array($event) && $event['deleted'])
{
$event['deleted'] = false;
@@ -575,7 +589,7 @@ class calendar_uilist extends calendar_ui
$failure++;
break;
case 'status':
- if($id && $event = $this->bo->read($id, $recur_date))
+ if($id && ($event = $this->bo->read($id, $recur_date)))
{
$old_status = $event['participants'][$GLOBALS['egw_info']['user']['account_id']];
calendar_so::split_status($old_status, $quantity, $role);
@@ -590,7 +604,9 @@ class calendar_uilist extends calendar_ui
$msg = lang('Status changed');
}
}
- } else {
+ }
+ else
+ {
$failure++;
}
break;
@@ -607,7 +623,7 @@ class calendar_uilist extends calendar_ui
$result = $this->bo->search($query);
$event = $result[$app.$app_id];
}
- if(!$event)
+ if(!$event)
{
$failure++;
continue;
@@ -626,20 +642,21 @@ class calendar_uilist extends calendar_ui
// Add global categories
$categories = explode(',',$event['category']);
$global_categories = array();
- foreach($categories as $cat_id)
+ foreach($categories as $cat_id)
{
if($GLOBALS['egw']->categories->is_global($cat_id))
{
$global_categories[] = $cat_id;
}
}
- if(count($global_categories))
+ if(count($global_categories))
{
$timesheet['cat_id'] = implode(',', $global_categories);
}
$timesheet_bo->data = array();
$err = $timesheet_bo->save($timesheet);
- if(!$err) {
+ if(!$err)
+ {
$success++;
// Can't link to just one of a recurring series of events
@@ -648,7 +665,7 @@ class calendar_uilist extends calendar_ui
$link_id = $app ? $app_id : $id;
egw_link::link($app ? $app : 'calendar', $link_id, 'timesheet', $timesheet_bo->data['ts_id']);
}
- }
+ }
else
{
$failure++;
@@ -663,27 +680,6 @@ class calendar_uilist extends calendar_ui
return ($failure == 0);
}
- public function get_javascript()
- {
- return '';
- }
-
/**
* Get date ranges to select for merging instead of individual events
*
@@ -691,17 +687,20 @@ class calendar_uilist extends calendar_ui
*
* @return array of ranges
*/
- protected function get_merge_range($nm)
+ protected function get_merge_range($nm)
{
$checked = array();
- if($nm['filter'] == 'fixed')
+ if($nm['filter'] == 'fixed')
{
$checked['start'] = $nm['startdate'];
$last = $this->bo->date2array($nm['enddate']);
$last['hour'] = '23'; $last['minute'] = $last['sec'] = '59';
$checked['end'] = $this->bo->date2ts($last);
- } else {
- switch($nm['filter']) {
+ }
+ else
+ {
+ switch($nm['filter'])
+ {
case 'after':
$checked['start'] = $nm['startdate'] ? $nm['startdate'] : strtotime('today');
break;
@@ -738,8 +737,119 @@ class calendar_uilist extends calendar_ui
{
return lang("Document '%1' does not exist or is not readable for you!",$document);
}
- require_once(EGW_INCLUDE_ROOT.'/calendar/inc/class.calendar_merge.inc.php');
$document_merge = new calendar_merge();
+
return $document_merge->download($document,$ids);
}
+
+ /**
+ * Get actions / context menu items
+ *
+ * @return array see nextmatch_widget::get_actions()
+ */
+ private function get_actions()
+ {
+ $actions = array(
+ 'open' => array(
+ 'caption' => 'Open',
+ 'default' => true,
+ 'allowOnMultiple' => false,
+ 'url' => 'menuaction=calendar.calendar_uiforms.edit&cal_id=$id',
+ 'popup' => egw_link::get_registry('calendar', 'view_popup'),
+ 'group' => $group=1,
+ 'onExecute' => 'javaScript:cal_open',
+ 'disableClass' => 'rowNoView',
+ ),
+ 'select_all' => array(
+ 'caption' => 'Whole query',
+ 'checkbox' => true,
+ 'hint' => 'Apply the action on the whole query, NOT only the shown events',
+ 'group' => ++$group,
+ ),
+ 'no_notifications' => array(
+ 'caption' => 'Do not notify',
+ 'checkbox' => true,
+ 'hint' => 'Do not notify of these changes',
+ 'group' => $group,
+ ),
+ );
+ $status = $this->bo->verbose_status;
+ unset($status['G']);
+ $actions['status'] = array(
+ 'caption' => 'Change your status',
+ 'icon' => 'check',
+ 'prefix' => 'status-',
+ 'children' => $status,
+ 'group' => ++$group,
+ );
+ ++$group; // integration with other apps: infolog, calendar, filemanager
+ if ($GLOBALS['egw_info']['user']['apps']['filemanager'])
+ {
+ $actions['filemanager'] = array(
+ 'icon' => 'filemanager/navbar',
+ 'caption' => 'Filemanager',
+ 'url' => 'menuaction=filemanager.filemanager_ui.index&path=/apps/$app/$id',
+ 'group' => $group,
+ 'allowOnMultiple' => false,
+ 'onExecute' => 'javaScript:cal_fix_app_id',
+ 'disableClass' => 'rowNoView',
+ );
+ }
+ if ($GLOBALS['egw_info']['user']['apps']['timesheet'])
+ {
+ $actions['timesheet'] = array( // interactive add for a single event
+ 'icon' => 'timesheet/navbar',
+ 'caption' => 'Timesheet',
+ 'url' => 'menuaction=timesheet.timesheet_ui.edit&link_app[]=$app&link_id[]=$id',
+ 'group' => $group,
+ 'allowOnMultiple' => false,
+ 'hideOnDisabled' => true, // show only one timesheet action in context menu
+ 'onExecute' => 'javaScript:cal_fix_app_id',
+ 'popup' => egw_link::get_registry('timesheet', 'add_popup'),
+ );
+ $actions['timesheet-add'] = array( // automatic add for multiple events
+ 'icon' => 'timesheet/navbar',
+ 'caption' => 'Timesheet',
+ 'group' => $group,
+ 'allowOnMultiple' => 'only',
+ 'hideOnDisabled' => true, // show only one timesheet action in context menu
+ );
+ }
+ $actions['ical'] = array(
+ 'icon' => 'filesave',
+ 'caption' => 'Export (iCal)',
+ 'group' => ++$group,
+ 'hint' => 'Download this event as iCal',
+ 'disableClass' => 'rowNoView',
+ );
+
+ $actions['documents'] = addressbook_merge::document_action(
+ $this->bo->cal_prefs['document_dir'], ++$group, 'Insert in document', 'document_',
+ $this->bo->cal_prefs['default_document']
+ );
+
+ ++$group;
+ $actions['delete'] = array(
+ 'caption' => 'Delete',
+ 'confirm' => 'Delete this event',
+ 'confirm_multiple' => 'Delete these entries',
+ 'group' => $group,
+ 'disableClass' => 'rowNoDelete',
+ );
+ // Add in deleted for admins
+ if($GLOBALS['egw_info']['server']['calendar_delete_history'])
+ {
+ $actions['undelete'] = array(
+ 'caption' => 'Un-delete',
+ 'hint' => 'Recover this event',
+ 'group' => $group,
+ 'enabled' => 'javaScript:nm_enableClass',
+ 'enableClass' => 'rowDeleted',
+ 'hideOnDisabled' => true,
+ );
+ }
+
+ //_debug_array($actions);
+ return $actions;
+ }
}
diff --git a/calendar/js/app.js b/calendar/js/app.js
new file mode 100644
index 0000000000..8d74a40111
--- /dev/null
+++ b/calendar/js/app.js
@@ -0,0 +1,85 @@
+/**
+ * Calendar - static javaScript functions
+ *
+ * @link http://www.egroupware.org
+ * @author Ralf Becker
+ * @package calendar
+ * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
+ * @version $Id$
+ */
+
+/**
+ * Fix calendar specific id: "cal_id:recurrence" or "appId:", replacing $app and $id in url
+ *
+ * Cut away the recurrence date from id, and use app from calendar integration
+ *
+ * @param _action
+ * @param _senders
+ */
+function cal_fix_app_id(_action, _senders)
+{
+ var app = 'calendar';
+ var id = _senders[0].id;
+ var matches = id.match(/^([0-9]+):([0-9]+)$/);
+ if (matches)
+ {
+ id = matches[1];
+ }
+ else if (matches = id.match(/^([a-z_-]+)([0-9]+)/i))
+ {
+ app = matches[1];
+ id = matches[2];
+ }
+ var backup_url = _action.data.url;
+
+ _action.data.url = _action.data.url.replace(/(\$|%24)id/,id);
+ _action.data.url = _action.data.url.replace(/(\$|%24)app/,app);
+
+ nm_action(_action, _senders);
+
+ _action.data.url = backup_url; // restore url
+}
+
+/**
+ * Open calendar entry, taking into accout the calendar integration of other apps
+ *
+ * calendar_uilist::get_rows sets var js_calendar_integration object
+ *
+ * @param _action
+ * @param _senders
+ */
+function cal_open(_action, _senders)
+{
+ var id = _senders[0].id;
+ var matches = id.match(/^([0-9]+):([0-9]+)$/);
+ var backup = _action.data;
+ if (matches)
+ {
+ edit_series(matches[1],matches[2]);
+ return;
+ }
+ else if (matches = id.match(/^([a-z_-]+)([0-9]+)/i))
+ {
+ var app = matches[1];
+ _action.data.url = window.egw_webserverUrl+'/index.php?';
+ var get_params = js_integration_data[app].edit;
+ get_params[js_integration_data[app].edit_id] = matches[2];
+ for(var name in get_params)
+ _action.data.url += name+"="+encodeURIComponent(get_params[name])+"&";
+
+ if (js_integration_data[app].edit_popup &&
+ (matches = js_integration_data[app].edit_popup.match(/^(.*)x(.*)$/)))
+ {
+ _action.data.width = matches[1];
+ _action.data.height = matches[2];
+ }
+ else
+ {
+ _action.data.nm_action = 'location';
+ }
+ }
+ console.log(_action);
+ nm_action(_action, _senders);
+
+ _action.data = backup; // restore url, width, height, nm_action
+}
\ No newline at end of file
diff --git a/calendar/lang/egw_de.lang b/calendar/lang/egw_de.lang
index 7e2435593e..a6059e92dd 100644
--- a/calendar/lang/egw_de.lang
+++ b/calendar/lang/egw_de.lang
@@ -39,7 +39,7 @@ all incl. rejected calendar de Alle einschl. abgesagte
all participants calendar de Alle Teilnehmer
allows to edit the event again calendar de Erlaubt den Termin erneut zu bearbeiten
always calendar de Immer
-apply the action on the whole query, not only the shown events calendar de Befehl auf die ganze Abfrage anwenden, NICHT nur auf die angezeigten Termine
+apply the action on the whole query, not only the shown events calendar de Befehl auf die gesamte Abfrage anwenden, NICHT nur auf die angezeigten Termine
apply the changes calendar de Übernimmt die Änderungen
are you sure you want to delete this country ? calendar de Sind Sie sicher, dass Sie dieses Land löschen möchten?
are you sure you want to delete this holiday ? calendar de Sind Sie sicher, dass Sie diesen Feiertag löschen möchten?
@@ -81,7 +81,7 @@ category acl common de Kategorie Rechte
category acl only restrict adding a category to an event or changing status of a participant. it does not change the visibility of an event! calendar de Kategorie Rechte beschränken nur das Hinzufügen einer Kategorie zu einem Termin oder das Ändern des Status eines Teilnehmers. Sie ändern NICHT die Sichtbarkeit eines Termins!
chair calendar de Vorsitz
change history calendar de Änderungshistorie
-change your participant status calendar de Teilnehmerstatus ändern
+change your status calendar de Eigenen Status ändern
charset of file calendar de Zeichensatz der Datei
check all calendar de Alle auswählen
choose a category calendar de Wählen Sie eine Kategorie
@@ -137,7 +137,8 @@ display status of events calendar de Status von Terminen anzeigen
displayed view calendar de Ansicht
displays this calendar view on the home page (page you get when you enter egroupware or click on the home page icon)? calendar de Zeigt diese Ansicht auf der Startseite (Seite die Sie bekommen wenn Sie EGroupware starten oder das Home Icon anklicken)?
do not include events of group members calendar de Zeige nicht die Termine der Gruppenmitglieder
-do not notify of these changes calendar de Keine Benachrichtigung senden
+do not notify calendar de Nicht benachrichtigen
+do not notify of these changes calendar de Nicht über diese Änderungen benachrichtigen
do you really want to change the start of this series? if you do, the original series will be terminated as of today and a new series for the future reflecting your changes will be created. calendar de Wollen Sie wirklich den Beginn dieses Serientermins ändern? Wenn Sie das tun, so wird die bestehende Serie heute beendet und für die Zukunft ein neuer Wiederholungstermin mit Ihren Änderungen erzeugt.
do you want a weekview with or without weekend? calendar de Möchten Sie eine Wochenansicht mit oder ohne Wochenende?
do you want to be notified about changes of appointments you modified? calendar de Wollen Sie auch über eigene Änderungen Benachrichtigt werden?
@@ -527,10 +528,8 @@ weekview with weekend calendar de Wochenansicht mit Wochenende
weekview without weekend calendar de Wochenansicht ohne Wochenende
when selected, birthdays and/or holidays will be displayed as events in your calendar. please note that this option only changes the appereance inside of egroupware, but does not change the information being sent via ical or other calendar interfaces. calendar de Wenn ausgewählt werden Geburts- und/oder Feiertage als Ereignisse in Ihrem Kalender angezeigt. Bitte beachten Sie, dass diese Option nur die Erscheinung innerhalb von EGroupware verändert, nicht aber die Informationen, die via iCal oder über andere Kalender-Schnittstellen gesendet werden.
which view to show on home page calendar de Welche Ansicht soll auf der Startseite angezeigt werden
-while selecting up to x users day- and weekview is not consolidated (5 is used when not set) admin de Für diese Ansicht steht Ihnen nur eine begrenzte Anzahl von Benutzer zur Verfügung.
-Der Standard sind 5 Benutzer. Sie können in der Konfiguration diese Einstellung anpassen.
+while selecting up to x users day- and weekview is not consolidated (5 is used when not set) admin de Für diese Ansicht steht Ihnen nur eine begrenzte Anzahl von Benutzer zur Verfügung.
whole day calendar de ganztägig
-whole query calendar de Ganze Abfrage
with credentials included calendar de Mit Zugangsdaten im URL
wk calendar de KW
work day ends on calendar de Arbeitstag endet um
diff --git a/calendar/lang/egw_en.lang b/calendar/lang/egw_en.lang
index 47c2918f80..9e14bc9ac4 100644
--- a/calendar/lang/egw_en.lang
+++ b/calendar/lang/egw_en.lang
@@ -37,7 +37,7 @@ all exceptions are converted into single events. calendar en All exceptions are
all future calendar en All future
all incl. rejected calendar en All incl. rejected
all participants calendar en All participants
-allow users to prevent change notifications ('Do not notify') calendar en Allow users to prevent change notifications ('Do not notify')
+allow users to prevent change notifications ('do not notify') calendar en Allow users to prevent change notifications ('Do not notify')
allows to edit the event again calendar en Allows to edit the event again
always calendar en Always
apply the action on the whole query, not only the shown events calendar en Apply the action on the whole query, NOT only the shown events
@@ -82,7 +82,7 @@ category acl common en Category ACL
category acl only restrict adding a category to an event or changing status of a participant. it does not change the visibility of an event! calendar en Category ACL only restrict adding a category to an event or changing status of a participant. It does NOT change the visibility of an event!
chair calendar en Chair
change history calendar en Change history
-change your participant status calendar en Change your participant status
+change your status calendar en Change your status
charset of file calendar en Charset of file
check all calendar en Check all
choose a category calendar en Choose a category
@@ -138,6 +138,7 @@ display status of events calendar en Display status of events
displayed view calendar en Displayed view
displays this calendar view on the home page (page you get when you enter egroupware or click on the home page icon)? calendar en Displays this calendar view on the home page (page you get when you enter EGroupware or click on the home page icon)?
do not include events of group members calendar en Do not include events of group members
+do not notify calendar en Do not notify
do not notify of these changes calendar en Do not notify of these changes
do you really want to change the start of this series? if you do, the original series will be terminated as of today and a new series for the future reflecting your changes will be created. calendar en Do you really want to change the start of this series? If you do, the original series will be terminated as of today and a new series for the future reflecting your changes will be created.
do you want a weekview with or without weekend? calendar en Do you want a weekview with or without weekend?
@@ -530,7 +531,6 @@ when selected, birthdays and/or holidays will be displayed as events in your cal
which view to show on home page calendar en Which view to show on home page
while selecting up to x users day- and weekview is not consolidated (5 is used when not set) admin en While selecting up to X users day- and weekview is not consolidated (5 is used when not set)
whole day calendar en Whole day
-whole query calendar en whole query
with credentials included calendar en With credentials included
wk calendar en Wk
work day ends on calendar en Work day ends on
diff --git a/calendar/setup/etemplates.inc.php b/calendar/setup/etemplates.inc.php
index b9d6f7f5aa..6d2276ada5 100644
--- a/calendar/setup/etemplates.inc.php
+++ b/calendar/setup/etemplates.inc.php
@@ -2,7 +2,7 @@
/**
* eGroupWare - eTemplates for Application calendar
* http://www.egroupware.org
- * generated by soetemplate::dump4setup() 2011-04-08 16:17
+ * generated by soetemplate::dump4setup() 2011-04-27 18:44
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package calendar
@@ -55,7 +55,7 @@ $templ_data[] = array('name' => 'calendar.freetimesearch.rows','template' => '',
$templ_data[] = array('name' => 'calendar.import','template' => '','lang' => '','group' => '0','version' => '1.0.1.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:5:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:4:"name";s:3:"msg";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:9:"iCal file";}s:1:"B";a:3:{s:4:"type";s:4:"file";s:4:"name";s:9:"ical_file";s:6:"needed";s:1:"1";}}i:3;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:6:"button";s:5:"label";s:6:"Import";s:4:"name";s:6:"import";}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:2;s:5:"align";s:6:"center";s:7:"options";a:0:{}}}','size' => '','style' => '','modified' => '1131469789',);
-$templ_data[] = array('name' => 'calendar.list','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:4:{s:2:"h2";s:6:",!@msg";s:2:"h1";s:6:",!@css";s:2:"c4";s:7:"noPrint";s:1:"B";s:3:"30%";}i:1;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:4:"span";s:3:"all";s:4:"name";s:3:"css";}}i:2;a:2:{s:1:"A";a:5:{s:5:"align";s:6:"center";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";}s:1:"B";a:5:{s:5:"align";s:6:"center";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";s:4:"type";s:5:"label";s:4:"span";s:10:",redItalic";}}i:3;a:2:{s:1:"A";a:4:{s:4:"name";s:2:"nm";s:4:"size";s:18:"calendar.list.rows";s:4:"type";s:9:"nextmatch";s:4:"span";s:3:"all";}s:1:"B";a:3:{s:4:"name";s:2:"nm";s:4:"size";s:18:"calendar.list.rows";s:4:"type";s:9:"nextmatch";}}i:4;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";i:1;a:5:{s:5:"label";s:11:"whole query";s:8:"onchange";s:121:"if (this.checked==true && !confirm(\'Apply the action on the whole query, NOT only the shown events\')) this.checked=false;";s:4:"name";s:7:"use_all";s:4:"type";s:8:"checkbox";s:4:"help";s:62:"Apply the action on the whole query, NOT only the shown events";}i:2;a:6:{s:8:"onchange";s:16:"do_action(this);";s:7:"no_lang";s:1:"1";s:4:"name";s:6:"action";s:4:"size";s:19:"Select an action...";s:4:"type";s:6:"select";s:4:"help";s:16:"Select an action";}i:3;a:9:{s:5:"label";s:9:"Check all";s:7:"onclick";s:70:"toggle_all(this.form,form::name(\'nm[rows][checked][]\')); return false;";s:6:"needed";s:1:"1";s:4:"name";s:9:"check_all";s:4:"type";s:6:"button";s:4:"size";s:9:"arrow_ltr";s:4:"help";s:9:"Check all";s:4:"span";s:14:",checkAllArrow";s:5:"align";s:5:"right";}}}i:5;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"2,0,0";i:1;a:4:{s:5:"label";s:30:"Do not notify of these changes";s:4:"name";s:16:"no_notifications";s:4:"type";s:8:"checkbox";s:4:"help";s:30:"Do not notify of these changes";}i:2;a:3:{s:8:"onchange";s:16:"do_action(this);";s:7:"no_lang";s:1:"1";s:4:"type";s:5:"label";}}}}s:4:"cols";i:2;s:4:"rows";i:5;s:4:"size";s:4:"100%";}}','size' => '100%','style' => '.noWrap { white-space: nowrap; }
+$templ_data[] = array('name' => 'calendar.list','template' => '','lang' => '','group' => '0','version' => '1.9.002','data' => 'a:1:{i:0;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:5:{s:2:"h2";s:6:",!@msg";s:2:"h1";s:6:",!@css";s:2:"c4";s:7:"noPrint";s:1:"B";s:3:"30%";s:2:"h4";s:34:",!@nm[selectcols]=/legacy_actions/";}i:1;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:4:"span";s:3:"all";s:4:"name";s:3:"css";}}i:2;a:2:{s:1:"A";a:5:{s:5:"align";s:6:"center";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";}s:1:"B";a:5:{s:5:"align";s:6:"center";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";s:4:"type";s:5:"label";s:4:"span";s:10:",redItalic";}}i:3;a:2:{s:1:"A";a:4:{s:4:"name";s:2:"nm";s:4:"size";s:18:"calendar.list.rows";s:4:"type";s:9:"nextmatch";s:4:"span";s:3:"all";}s:1:"B";a:3:{s:4:"name";s:2:"nm";s:4:"size";s:18:"calendar.list.rows";s:4:"type";s:9:"nextmatch";}}i:4;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:5:{s:5:"label";s:13:"Select action";s:7:"onclick";s:141:"if (!egw_objectManager.executeActionImplementation(this, \'popup\')) alert(egw::lang(\'You need to select some entries first!\')); return false;;";s:4:"name";s:14:"legacy_actions";s:4:"type";s:10:"buttononly";s:4:"help";s:13:"Select action";}i:2;a:8:{s:5:"label";s:9:"Check all";s:7:"onclick";s:70:"toggle_all(this.form,form::name(\'nm[rows][checked][]\')); return false;";s:6:"needed";s:1:"1";s:4:"name";s:9:"check_all";s:4:"type";s:6:"button";s:4:"size";s:9:"arrow_ltr";s:4:"help";s:9:"Check all";s:4:"span";s:14:",checkAllArrow";}s:5:"align";s:5:"right";}}}s:4:"cols";i:2;s:4:"rows";i:4;s:4:"size";s:4:"100%";}}','size' => '100%','style' => '.noWrap { white-space: nowrap; }
.image16 img {
height: 16px;
@@ -67,7 +67,7 @@ $templ_data[] = array('name' => 'calendar.list','template' => '','lang' => '','g
$templ_data[] = array('name' => 'calendar.list.dates','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:10:{s:4:"type";s:4:"hbox";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:1:"4";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Start";}i:2;a:2:{s:4:"type";s:4:"date";s:4:"name";s:9:"startdate";}i:3;a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"End";}i:4;a:2:{s:4:"type";s:4:"date";s:4:"name";s:7:"enddate";}s:4:"span";s:12:",custom_hide";}}','size' => '','style' => '.custom_hide { visibility: hidden; }','modified' => '1173420675',);
-$templ_data[] = array('name' => 'calendar.list.rows','template' => '','lang' => '','group' => '0','version' => '1.9.004','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:3:{s:1:"B";s:3:"40%";s:2:"c1";s:2:"th";s:2:"c2";s:23:"$row_cont[category],top";}i:1;a:13:{s:1:"A";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:5:"label";s:5:"Start";s:4:"name";s:9:"cal_start";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:3:"End";s:4:"name";s:7:"cal_end";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:5:"label";s:5:"Title";s:4:"name";s:9:"cal_title";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:11:"Description";s:4:"name";s:15:"cal_description";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"C";a:3:{s:5:"label";s:5:"Title";s:4:"name";s:9:"cal_title";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"D";a:3:{s:5:"label";s:11:"Description";s:4:"name";s:15:"cal_description";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"E";a:3:{s:5:"label";s:10:"Recurrence";s:4:"name";s:6:"recure";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"F";a:3:{s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";s:4:"type";s:16:"nextmatch-header";}s:1:"G";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:5:"label";s:5:"Owner";s:8:"readonly";s:4:"true";s:4:"name";s:9:"cal_owner";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:8:"Location";s:4:"name";s:12:"cal_location";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"H";a:4:{s:5:"label";s:5:"Owner";s:8:"readonly";s:4:"true";s:4:"name";s:9:"cal_owner";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"I";a:3:{s:5:"label";s:8:"Location";s:4:"name";s:12:"cal_location";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"J";a:4:{s:5:"label";s:12:"Participants";s:4:"name";s:11:"participant";s:4:"size";s:3:"All";s:4:"type";s:23:"nextmatch-accountfilter";}s:1:"K";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:7:"Created";s:4:"name";s:11:"cal_created";}i:2;a:4:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:11:"cal_creator";s:4:"size";s:7:"Creator";s:5:"label";s:7:"Creator";}i:3;a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Last changed";}}s:1:"L";a:4:{s:5:"label";s:13:"Custom fields";s:8:"readonly";s:4:"true";s:4:"name";s:3:"cfs";s:4:"type";s:22:"nextmatch-customfields";}s:1:"M";a:7:{s:5:"label";s:7:"Actions";s:5:"class";s:7:"noPrint";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";s:4:"help";s:9:"Check all";s:4:"span";s:8:",noPrint";}i:2;a:8:{s:5:"label";s:9:"Check all";s:7:"onclick";s:60:"toggle_all(this.form,form::name(\'checked[]\')); return false;";s:6:"needed";s:1:"1";s:5:"align";s:5:"right";s:4:"name";s:9:"check_all";s:4:"type";s:6:"button";s:4:"size";s:5:"check";s:4:"help";s:9:"Check all";}s:4:"span";s:8:",noPrint";}}i:2;a:13:{s:1:"A";a:5:{s:4:"name";s:5:"start";s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:5:{s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[start]";s:4:"size";s:14:",$cont[format]";s:4:"type";s:9:"date-time";s:4:"span";s:7:",noWrap";}i:2;a:5:{s:8:"readonly";s:4:"true";s:4:"name";s:11:"${row}[end]";s:4:"size";s:14:",$cont[format]";s:4:"type";s:9:"date-time";s:4:"span";s:7:",noWrap";}}s:1:"B";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:6:{s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";s:4:"size";s:1:"2";s:4:"type";s:4:"hbox";i:1;a:5:{s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";s:4:"name";s:13:"${row}[title]";s:4:"size";s:1:"b";s:4:"type";s:5:"label";}i:2;a:5:{s:4:"type";s:5:"label";s:5:"label";s:3:"#%s";s:4:"name";s:10:"${row}[id]";s:4:"size";s:1:"b";s:5:"align";s:5:"right";}}i:2;a:5:{s:7:"no_lang";s:1:"1";s:4:"type";s:3:"box";s:4:"size";s:1:"1";i:1;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:19:"${row}[description]";s:4:"type";s:5:"label";}s:4:"span";s:16:",listDescription";}i:3;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:14:"${row}[recure]";s:4:"type";s:5:"label";}s:4:"span";s:9:",listVbox";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:2:{s:4:"name";s:13:"${row}[title]";s:4:"type";s:5:"label";}i:2;a:5:{s:4:"type";s:5:"label";s:5:"label";s:3:"#%s";s:4:"name";s:10:"${row}[id]";s:4:"size";s:1:"b";s:5:"align";s:5:"right";}}s:1:"D";a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:19:"${row}[description]";s:4:"type";s:5:"label";}s:1:"E";a:2:{s:4:"name";s:14:"${row}[recure]";s:4:"type";s:5:"label";}s:1:"F";a:3:{s:4:"type";s:10:"select-cat";s:8:"readonly";s:1:"1";s:4:"name";s:16:"${row}[category]";}s:1:"G";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:14:"select-account";s:5:"class";s:6:"noWrap";s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[owner]";}i:2;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[location]";s:4:"type";s:5:"label";}}s:1:"H";a:4:{s:4:"type";s:14:"select-account";s:5:"class";s:6:"noWrap";s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[owner]";}s:1:"I";a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[location]";s:4:"type";s:5:"label";}s:1:"J";a:4:{s:8:"readonly";s:4:"true";s:7:"no_lang";s:1:"1";s:4:"name";s:13:"${row}[parts]";s:4:"type";s:4:"html";}s:1:"K";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:15:"${row}[created]";s:8:"readonly";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:15:"${row}[creator]";s:8:"readonly";s:1:"1";}i:3;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:16:"${row}[modified]";s:8:"readonly";s:1:"1";}}s:1:"L";a:2:{s:4:"name";s:4:"$row";s:4:"type";s:17:"customfields-list";}s:1:"M";a:5:{s:4:"size";s:6:"2,,0,0";s:4:"type";s:4:"vbox";i:1;a:8:{s:5:"class";s:7:"noPrint";s:4:"type";s:4:"hbox";s:4:"size";s:1:"5";i:1;a:6:{s:5:"label";s:4:"View";s:7:"onclick";s:206:"window.open(egw::link(\'/index.php\',\'menuaction=calendar.calendar_uiforms.edit&cal_id=$row_cont[id]&date=$row_cont[date]\'),\'425\',\'dependent=yes,width=750,height=450,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"view[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:4:"view";s:4:"help";s:15:"View this event";}i:2;a:6:{s:4:"type";s:6:"button";s:4:"size";s:9:"timesheet";s:5:"label";s:19:"Add timesheet entry";s:4:"name";s:29:"timesheet[$row_cont[info_id]]";s:7:"onclick";s:267:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.timesheet_ui.edit&link_app[]=$row_cont[app]&cat_id=$row_cont[category]&link_id[]=$row_cont[app_id]$row_cont[extra_links]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";s:5:"align";s:6:"center";}i:3;a:6:{s:5:"label";s:4:"Edit";s:7:"onclick";s:20:"$row_cont[edit_link]";s:4:"name";s:19:"edit[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:4:"help";s:15:"Edit this event";}i:4;a:6:{s:5:"label";s:6:"Delete";s:7:"onclick";s:36:"return confirm(\'Delete this event\');";s:4:"name";s:21:"delete[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:6:"delete";s:4:"help";s:17:"Delete this event";}i:5;a:5:{s:5:"align";s:5:"right";s:4:"name";s:9:"checked[]";s:4:"size";s:35:"$row_cont[id]:$row_cont[recur_date]";s:4:"type";s:8:"checkbox";s:4:"help";s:45:"Select multiple contacts for a further action";}}i:2;a:4:{s:4:"size";s:6:"2,,0,0";s:4:"type";s:4:"hbox";i:1;a:4:{s:4:"type";s:6:"button";s:4:"size";s:15:"etemplate/merge";s:5:"label";s:5:"merge";s:4:"name";s:45:"document[$row_cont[id]:$row_cont[recur_date]]";}i:2;a:6:{s:5:"label";s:11:"Filemanager";s:4:"size";s:18:"filemanager/navbar";s:4:"type";s:6:"button";s:4:"name";s:26:"filemanager[$row_cont[id]]";s:4:"span";s:8:",image16";s:7:"onclick";s:139:"window.location.href=egw::link(\'/index.php\',\'menuaction=filemanager.filemanager_ui.index&path=/apps/calendar/$row_cont[id]\'); return false;";}}s:4:"span";s:8:",noPrint";}}}s:4:"cols";i:13;s:4:"rows";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1298450177',);
+$templ_data[] = array('name' => 'calendar.list.rows','template' => '','lang' => '','group' => '0','version' => '1.9.004','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:3:{s:1:"B";s:3:"40%";s:2:"c1";s:2:"th";s:2:"c2";s:40:"$row_cont[category] $row_cont[class],top";}i:1;a:13:{s:1:"A";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:5:"label";s:5:"Start";s:4:"name";s:9:"cal_start";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:3:"End";s:4:"name";s:7:"cal_end";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:5:"label";s:5:"Title";s:4:"name";s:9:"cal_title";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:11:"Description";s:4:"name";s:15:"cal_description";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"C";a:3:{s:5:"label";s:5:"Title";s:4:"name";s:9:"cal_title";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"D";a:3:{s:5:"label";s:11:"Description";s:4:"name";s:15:"cal_description";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"E";a:3:{s:5:"label";s:10:"Recurrence";s:4:"name";s:6:"recure";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"F";a:3:{s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";s:4:"type";s:16:"nextmatch-header";}s:1:"G";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:5:"label";s:5:"Owner";s:8:"readonly";s:4:"true";s:4:"name";s:9:"cal_owner";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:8:"Location";s:4:"name";s:12:"cal_location";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"H";a:4:{s:5:"label";s:5:"Owner";s:8:"readonly";s:4:"true";s:4:"name";s:9:"cal_owner";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"I";a:3:{s:5:"label";s:8:"Location";s:4:"name";s:12:"cal_location";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"J";a:4:{s:5:"label";s:12:"Participants";s:4:"name";s:11:"participant";s:4:"size";s:3:"All";s:4:"type";s:23:"nextmatch-accountfilter";}s:1:"K";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:7:"Created";s:4:"name";s:11:"cal_created";}i:2;a:4:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:11:"cal_creator";s:4:"size";s:7:"Creator";s:5:"label";s:7:"Creator";}i:3;a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Last changed";}}s:1:"L";a:4:{s:5:"label";s:13:"Custom fields";s:8:"readonly";s:4:"true";s:4:"name";s:3:"cfs";s:4:"type";s:22:"nextmatch-customfields";}s:1:"M";a:7:{s:5:"label";s:7:"Actions";s:5:"class";s:7:"noPrint";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:5:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:7:"Actions";s:4:"help";s:9:"Check all";s:4:"span";s:8:",noPrint";s:4:"name";s:14:"legacy_actions";}i:2;a:8:{s:5:"label";s:9:"Check all";s:7:"onclick";s:60:"toggle_all(this.form,form::name(\'checked[]\')); return false;";s:6:"needed";s:1:"1";s:5:"align";s:5:"right";s:4:"name";s:9:"check_all";s:4:"type";s:6:"button";s:4:"size";s:5:"check";s:4:"help";s:9:"Check all";}s:4:"span";s:8:",noPrint";}}i:2;a:13:{s:1:"A";a:5:{s:4:"name";s:5:"start";s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:5:{s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[start]";s:4:"size";s:14:",$cont[format]";s:4:"type";s:9:"date-time";s:4:"span";s:7:",noWrap";}i:2;a:5:{s:8:"readonly";s:4:"true";s:4:"name";s:11:"${row}[end]";s:4:"size";s:14:",$cont[format]";s:4:"type";s:9:"date-time";s:4:"span";s:7:",noWrap";}}s:1:"B";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:6:{s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";s:4:"size";s:1:"2";s:4:"type";s:4:"hbox";i:1;a:5:{s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";s:4:"name";s:13:"${row}[title]";s:4:"size";s:1:"b";s:4:"type";s:5:"label";}i:2;a:5:{s:4:"type";s:5:"label";s:5:"label";s:3:"#%s";s:4:"name";s:10:"${row}[id]";s:4:"size";s:1:"b";s:5:"align";s:5:"right";}}i:2;a:5:{s:7:"no_lang";s:1:"1";s:4:"type";s:3:"box";s:4:"size";s:1:"1";i:1;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:19:"${row}[description]";s:4:"type";s:5:"label";}s:4:"span";s:16:",listDescription";}i:3;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:14:"${row}[recure]";s:4:"type";s:5:"label";}s:4:"span";s:9:",listVbox";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:2:{s:4:"name";s:13:"${row}[title]";s:4:"type";s:5:"label";}i:2;a:5:{s:4:"type";s:5:"label";s:5:"label";s:3:"#%s";s:4:"name";s:10:"${row}[id]";s:4:"size";s:1:"b";s:5:"align";s:5:"right";}}s:1:"D";a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:19:"${row}[description]";s:4:"type";s:5:"label";}s:1:"E";a:2:{s:4:"name";s:14:"${row}[recure]";s:4:"type";s:5:"label";}s:1:"F";a:3:{s:4:"type";s:10:"select-cat";s:8:"readonly";s:1:"1";s:4:"name";s:16:"${row}[category]";}s:1:"G";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:14:"select-account";s:5:"class";s:6:"noWrap";s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[owner]";}i:2;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[location]";s:4:"type";s:5:"label";}}s:1:"H";a:4:{s:4:"type";s:14:"select-account";s:5:"class";s:6:"noWrap";s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[owner]";}s:1:"I";a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[location]";s:4:"type";s:5:"label";}s:1:"J";a:4:{s:8:"readonly";s:4:"true";s:7:"no_lang";s:1:"1";s:4:"name";s:13:"${row}[parts]";s:4:"type";s:4:"html";}s:1:"K";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:15:"${row}[created]";s:8:"readonly";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:15:"${row}[creator]";s:8:"readonly";s:1:"1";}i:3;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:16:"${row}[modified]";s:8:"readonly";s:1:"1";}}s:1:"L";a:2:{s:4:"name";s:4:"$row";s:4:"type";s:17:"customfields-list";}s:1:"M";a:5:{s:4:"size";s:6:"2,,0,0";s:4:"type";s:4:"vbox";i:1;a:7:{s:5:"class";s:7:"noPrint";s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";i:1;a:6:{s:5:"label";s:4:"View";s:7:"onclick";s:206:"window.open(egw::link(\'/index.php\',\'menuaction=calendar.calendar_uiforms.edit&cal_id=$row_cont[id]&date=$row_cont[date]\'),\'425\',\'dependent=yes,width=750,height=450,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"view[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:4:"view";s:4:"help";s:15:"View this event";}i:2;a:6:{s:5:"label";s:4:"Edit";s:7:"onclick";s:20:"$row_cont[edit_link]";s:4:"name";s:19:"edit[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:4:"help";s:15:"Edit this event";}i:3;a:6:{s:5:"label";s:6:"Delete";s:7:"onclick";s:36:"return confirm(\'Delete this event\');";s:4:"name";s:21:"delete[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:6:"delete";s:4:"help";s:17:"Delete this event";}i:4;a:5:{s:5:"align";s:5:"right";s:4:"name";s:9:"checked[]";s:4:"size";s:35:"$row_cont[id]:$row_cont[recur_date]";s:4:"type";s:8:"checkbox";s:4:"help";s:45:"Select multiple contacts for a further action";}}i:2;a:5:{s:4:"size";s:6:"3,,0,0";s:4:"type";s:4:"hbox";i:1;a:4:{s:4:"type";s:6:"button";s:4:"size";s:15:"etemplate/merge";s:5:"label";s:5:"merge";s:4:"name";s:45:"document[$row_cont[id]:$row_cont[recur_date]]";}i:2;a:6:{s:5:"label";s:11:"Filemanager";s:4:"size";s:18:"filemanager/navbar";s:4:"type";s:6:"button";s:4:"name";s:26:"filemanager[$row_cont[id]]";s:4:"span";s:8:",image16";s:7:"onclick";s:139:"window.location.href=egw::link(\'/index.php\',\'menuaction=filemanager.filemanager_ui.index&path=/apps/calendar/$row_cont[id]\'); return false;";}i:3;a:5:{s:4:"type";s:6:"button";s:4:"size";s:9:"timesheet";s:5:"label";s:19:"Add timesheet entry";s:4:"name";s:29:"timesheet[$row_cont[info_id]]";s:7:"onclick";s:267:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.timesheet_ui.edit&link_app[]=$row_cont[app]&cat_id=$row_cont[category]&link_id[]=$row_cont[app_id]$row_cont[extra_links]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";}}s:4:"span";s:8:",noPrint";}}}s:4:"cols";i:13;s:4:"rows";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1298450177',);
$templ_data[] = array('name' => 'calendar.print','template' => '','lang' => '','group' => '0','version' => '1.6.001','data' => 'a:1:{i:0;a:3:{s:4:"size";s:6:"1,,0,0";s:4:"type";s:4:"hbox";i:1;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:15:{i:0;a:13:{s:1:"A";s:2:"95";s:2:"c2";s:2:"th";s:2:"c5";s:3:"row";s:2:"c6";s:7:"row_off";s:2:"c7";s:3:"row";s:2:"c3";s:3:"row";s:2:"c4";s:3:"row";s:2:"c8";s:3:"row";s:2:"c9";s:3:"row";s:2:"h2";s:2:"28";s:2:"c1";s:2:"th";s:3:"c10";s:4:",top";s:3:"c11";s:2:"th";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"image";s:4:"name";s:5:"print";s:7:"onclick";s:15:"window.print();";}s:1:"B";a:4:{s:4:"type";s:5:"label";s:4:"span";s:5:",bold";s:5:"label";s:8:"Calendar";s:4:"size";s:4:"bold";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Title";}s:1:"B";a:5:{s:4:"type";s:4:"text";s:4:"name";s:5:"title";s:4:"size";s:6:"80,255";s:8:"readonly";s:1:"1";s:4:"span";s:3:"all";}}i:3;a:2:{s:1:"A";a:4:{s:5:"width";s:2:"95";s:4:"size";s:8:",,,start";s:4:"type";s:5:"label";s:5:"label";s:5:"Start";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"name";s:5:"start";s:4:"type";s:9:"date-time";s:8:"readonly";s:1:"1";}i:2;a:7:{s:5:"label";s:9:"whole day";s:4:"name";s:9:"whole_day";s:4:"size";s:11:",, ,disable";s:4:"type";s:8:"checkbox";s:4:"help";s:31:"Event will occupy the whole day";s:5:"align";s:6:"center";s:8:"readonly";s:1:"1";}}}i:4;a:2:{s:1:"A";a:4:{s:5:"width";s:1:"0";s:4:"size";s:11:",,,duration";s:4:"type";s:5:"label";s:5:"label";s:8:"Duration";}s:1:"B";a:4:{s:4:"size";s:6:"2,,0,0";s:4:"type";s:4:"hbox";i:1;a:7:{s:7:"no_lang";s:1:"1";s:8:"onchange";s:227:"set_style_by_class(\'table\',\'end_hide\',\'visibility\',this.value == \'\' ? \'visible\' : \'hidden\'); if (this.value == \'\') document.getElementById(form::name(\'end[str]\')).value = document.getElementById(form::name(\'start[str]\')).value;";s:4:"name";s:8:"duration";s:4:"size";s:12:"Use end date";s:4:"type";s:6:"select";s:4:"help";s:23:"Duration of the meeting";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"name";s:3:"end";s:4:"type";s:9:"date-time";s:4:"span";s:9:",end_hide";s:8:"readonly";s:1:"1";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"size";s:11:",,,location";s:4:"type";s:5:"label";s:5:"label";s:8:"Location";s:5:"width";s:1:"0";}s:1:"B";a:5:{s:4:"size";s:4:",255";s:4:"name";s:8:"location";s:4:"type";s:4:"text";s:4:"span";s:15:",inputFullWidth";s:8:"readonly";s:1:"1";}}i:6;a:2:{s:1:"A";a:4:{s:4:"size";s:11:",,,priority";s:4:"type";s:5:"label";s:5:"label";s:8:"Priority";s:5:"width";s:1:"0";}s:1:"B";a:3:{s:4:"type";s:15:"select-priority";s:4:"name";s:8:"priority";s:8:"readonly";s:1:"1";}}i:7;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"Options";s:5:"width";s:1:"0";}s:1:"B";a:6:{s:4:"name";s:12:"non_blocking";s:4:"size";s:11:",, ,disable";s:4:"type";s:8:"checkbox";s:4:"help";s:56:"A non blocking event will not conflict with other events";s:5:"label";s:12:"non blocking";s:8:"readonly";s:1:"1";}}i:8;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:5:{s:4:"name";s:6:"public";s:4:"size";s:3:"0,1";s:4:"type";s:8:"checkbox";s:5:"label";s:7:"Private";s:8:"readonly";s:1:"1";}}i:9;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"Categories";}s:1:"B";a:3:{s:4:"type";s:10:"select-cat";s:4:"name";s:8:"category";s:8:"readonly";s:1:"1";}}i:10;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:11:"Description";}s:1:"B";a:3:{s:4:"type";s:8:"textarea";s:4:"name";s:11:"description";s:8:"readonly";s:1:"1";}}i:11;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:13:"custom fields";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:12;a:2:{s:1:"A";a:3:{s:4:"type";s:12:"customfields";s:4:"span";s:3:"all";s:8:"readonly";s:1:"1";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:13;a:2:{s:1:"A";a:3:{s:4:"type";s:8:"template";s:4:"name";s:27:"calendar.print.participants";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:14;a:2:{s:1:"A";a:3:{s:4:"type";s:8:"template";s:4:"span";s:3:"all";s:4:"name";s:20:"calendar.print.links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"cols";i:2;s:4:"rows";i:14;s:4:"size";s:8:"100%,200";}}}','size' => '','style' => '','modified' => '1229596125',);
diff --git a/calendar/templates/default/list.xet b/calendar/templates/default/list.xet
index dcc66fceef..8c0ebd1769 100644
--- a/calendar/templates/default/list.xet
+++ b/calendar/templates/default/list.xet
@@ -1,7 +1,7 @@
-
+
@@ -31,7 +31,6 @@
-
@@ -40,28 +39,38 @@
+
+
+
+
+
-
+
-
+
-
+
+
+
+
-
+
+
+
+
-
@@ -76,44 +85,53 @@
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
-
+
-
+
+
-
-
-
-
+