diff --git a/calendar/inc/class.bocal.inc.php b/calendar/inc/class.bocal.inc.php index 708c382bfa..bf6abcd68e 100644 --- a/calendar/inc/class.bocal.inc.php +++ b/calendar/inc/class.bocal.inc.php @@ -123,7 +123,6 @@ class bocal MCAL_M_SATURDAY => 'Saturday', MCAL_M_SUNDAY => 'Sunday', ); - var $so,$datetime; /** * @var array $resources registered scheduling resources of the calendar (gets chached in the session for performance reasons) */ @@ -138,6 +137,18 @@ class bocal * @var array $cached_holidays holidays plus birthdays (gets cached in the session for performance reasons) */ var $cached_holidays; + /** + * Instance of the socal class + * + * @var socal + */ + var $so; + /** + * Instance of the datetime class + * + * @var egw_datetime + */ + var $datetime; /** * Constructor @@ -589,14 +600,14 @@ class bocal { if ($date) $date = $this->date2ts($date); - if ($ignore_acl || is_array($ids) || ($return = $this->check_perms(EGW_ACL_READ,$ids,0,$date_format))) + if ($ignore_acl || is_array($ids) || ($return = $this->check_perms(EGW_ACL_READ,$ids,0,$date_format,$date))) { if (is_array($ids) || !isset($this->cached_event['id']) || $this->cached_event['id'] != $ids || $this->cached_event_date_format != $date_format || - !is_null($date) && $this->cached_event['start'] < $date && $this->cached_event['recur_type'] != MCAL_RECUR_NONE) + $this->cached_event['recur_type'] != MCAL_RECUR_NONE && !is_null($date) && (!$date || $this->cached_event['start'] < $date)) { $events = $this->so->read($ids,$date ? $this->date2ts($date,true) : 0); - + if ($events) { $this->db2data($events,$date_format); @@ -880,10 +891,11 @@ class bocal * @param int $needed necessary ACL right: EGW_ACL_{READ|EDIT|DELETE} * @param mixed $event event as array or the event-id or 0 for a general check * @param int $other uid to check (if event==0) or 0 to check against $this->user - * @param string $date_format='ts' date-formats: 'ts'=timestamp, 'array'=array, 'string'=iso8601 string for xmlrpc + * @param string $date_format='ts' date-format used for reading: 'ts'=timestamp, 'array'=array, 'string'=iso8601 string for xmlrpc + * @param mixed $date_to_read=null date used for reading, internal param for the caching * @return boolean true permission granted, false for permission denied or null if event not found */ - function check_perms($needed,$event=0,$other=0,$date_format='ts') + function check_perms($needed,$event=0,$other=0,$date_format='ts',$date_to_read=null) { $event_in = $event; if ($other && !is_numeric($other)) @@ -900,7 +912,7 @@ class bocal { if (!is_array($event)) { - $event = $this->read($event,null,True,$date_format); // = no ACL check !!! + $event = $this->read($event,$date_to_read,True,$date_format); // = no ACL check !!! } if (!is_array($event)) { @@ -1155,8 +1167,8 @@ class bocal static $acl2string = array( 0 => 'ACL-UNKNOWN', EGW_ACL_READ => 'ACL_READ', - EGW_ACL_WRITE => 'ACL_WRITE', EGW_ACL_ADD => 'ACL_ADD', + EGW_ACL_EDIT => 'ACL_EDIT', EGW_ACL_DELETE => 'ACL_DELETE', EGW_ACL_PRIVATE => 'ACL_PRIVATE', ); @@ -1176,7 +1188,7 @@ class bocal if (substr($param,0,strlen(ACL_TYPE_IDENTIFER))== ACL_TYPE_IDENTIFER) { $param = (int) substr($param,strlen(ACL_TYPE_IDENTIFER)); - $param = isset($acl2string[$param]) ? $acl2string[$param] : $acl2string[0]; + $param = (isset($acl2string[$param]) ? $acl2string[$param] : $acl2string[0])." ($param)"; } else { @@ -1341,8 +1353,14 @@ class bocal { if (!is_numeric($id)) { - $res_info = $this->resource_info($id); +/* $res_info = $this->resource_info($id); $id2lid[$id] = $res_info && isset($res_info['name']) ? $res_info['name'] : "resource($id)"; +*/ + if (!is_object($GLOBALS['egw']->link)) + { + $GLOBALS['egw']->link =& CreateObject('phpgwapi.bolink'); + } + $id2lid[$id] = $GLOBALS['egw']->link->title($this->resources[$id{0}]['app'],substr($id,1)); } else { @@ -1653,7 +1671,7 @@ class bocal 'query' => 'calendar.bocal.link_query', 'title' => 'calendar.bocal.link_title', 'view' => array( - 'menuaction' => 'calendar.uiforms.view', + 'menuaction' => 'calendar.uiforms.edit', ), 'view_id' => 'cal_id', 'view_popup' => '750x400', diff --git a/calendar/inc/class.bocalupdate.inc.php b/calendar/inc/class.bocalupdate.inc.php index f6a259737a..c6cfdc97ab 100644 --- a/calendar/inc/class.bocalupdate.inc.php +++ b/calendar/inc/class.bocalupdate.inc.php @@ -722,25 +722,51 @@ class bocalupdate extends bocal return $cal_id; } + /** + * Check if the current user has the necessary ACL rights to change the status of $uid + * + * For contacts we use edit rights of the owner of the event (aka. edit rights of the event). + * + * @param int/string $uid account_id or 1-char type-identifer plus id (eg. c15 for addressbook entry #15) + * @param array/int $event event array or id of the event + * @return boolean + */ + function check_status_perms($uid,$event) + { + if ($uid{0} == 'c') // for contact we use the owner of the event + { + if (!is_array($event) && !($event = $this->read($event))) return false; + + return $this->check_perms(EGW_ACL_EDIT,0,$event['owner']); + } + if (!is_numeric($uid)) // this is eg. for resources (r123) + { + $resource = $this->resource_info($uid); + + return EGW_ACL_EDIT & $resource['rights']; + } + // regular user and groups + return $this->check_perms(EGW_ACL_EDIT,0,$uid); + } + /** * set the status of one participant for a given recurrence or for all recurrences since now (includes recur_date=0) * - * @param int $cal_id - * @param char $user_type 'u' regular user - * @param int $user_id + * @param int/array $event event-array or id of the event + * @param string/int $uid account_id or 1-char type-identifer plus id (eg. c15 for addressbook entry #15) * @param int/char $status numeric status (defines) or 1-char code: 'R', 'U', 'T' or 'A' * @param int $recur_date=0 date to change, or 0 = all since now * @return int number of changed recurrences */ - function set_status($cal_id,$user_type,$user_id,$status,$recur_date=0) + function set_status($event,$uid,$status,$recur_date=0) { - //echo "
bocalupdate::set_status($cal_id,$user_type,$user_id,$status,$recur_date)
\n"; - if (!$cal_id || $user_type == 'u' && !$this->check_perms(EGW_ACL_EDIT,0,$user_id)) - // ToDo: check for bookingpermission of resources !!! + $cal_id = is_array($event) ? $event['id'] : $event; + //echo "bocalupdate::set_status($cal_id,$uid,$status,$recur_date)
\n"; + if (!$cal_id || !$this->check_status_perms($uid,$event)) { return false; } - if (($Ok = $this->so->set_status($cal_id,$user_type,$user_id,$status,$recur_date ? $this->date2ts($recur_date,true) : 0))) + if (($Ok = $this->so->set_status($cal_id,is_numeric($uid)?'u':$uid{0},is_numeric($uid)?$uid:substr($uid,1),$status,$recur_date ? $this->date2ts($recur_date,true) : 0))) { $GLOBALS['egw']->contenthistory->updateTimeStamp('calendar',$cal_id,'modify',time()); @@ -751,7 +777,7 @@ class bocalupdate extends bocal ); if (isset($status2msg[$status])) { - $event = $this->read($cal_id); + if (!is_array($event)) $event = $this->read($cal_id); $this->send_update($status2msg[$status],$event['participants'],$event); } } diff --git a/calendar/inc/class.uiforms.inc.php b/calendar/inc/class.uiforms.inc.php index 3afbbc6e99..99e168f8b5 100644 --- a/calendar/inc/class.uiforms.inc.php +++ b/calendar/inc/class.uiforms.inc.php @@ -36,7 +36,6 @@ class uiforms extends uical var $public_functions = array( 'freetimesearch' => True, 'edit' => true, - 'view' => true, 'export' => true, 'import' => true, ); @@ -54,6 +53,13 @@ class uiforms extends uical */ var $durations = array(); + /** + * Name of the tabs used in edit + * + * @var string + */ + var $tabs = 'general|description|participants|recurrence|custom|links|alarms'; + /** * Constructor */ @@ -69,14 +75,6 @@ class uiforms extends uical } } - /** - * View a calendar event - */ - function view() - { - return $this->edit(null,array('view' => true)); - } - /** * Create a default event (adding a new event) by evaluating certain _GET vars * @@ -158,12 +156,12 @@ class uiforms extends uical */ function process_edit($content) { - //echo "content submitted="; _debug_array($content); list($button) = @each($content['button']); - unset($content['button']); + if (!$button && $content['action']) $button = $content['action']; // action selectbox + unset($content['button']); unset($content['action']); - $view = $content['view'] && $button != 'edit' && $button != 'exception'; - if ($view && $button == 'vcal') + $view = $content['view']; + if ($button == 'ical') { $msg = $this->export($content['id'],true); } @@ -214,37 +212,8 @@ class uiforms extends uical { // no conversation necessary, event is already in the right format } - elseif (isset($content['participants']) && !(isset($content['view']) && $content['view'])) // convert content => event + elseif (isset($content['participants'])) // convert content => event { - //echo "participants="; _debug_array($content['participants']); - $event['participants'] = $event['participant_types'] = array(); - foreach($content['participants'] as $app => $participants) - { - if (!$participants) continue; - - $type = 'u'; - foreach($this->bo->resources as $t => $data) - { - if ($data['app'] == $app) - { - $type = $t; - break; - } - } - foreach(is_array($participants) ? $participants : explode(',',$participants) as $id) - { - if (is_array($id)) continue; // ignore the status - list($id,$quantity) = explode(':',$id); - $event['participants'][$type == 'u' ? (int) $id : $type.$id] = $event['participant_types'][$type][$id] = - // for existing participants use their old status (dont change it) - (isset($content['participant_types'][$type][$id]) ? $content['participant_types'][$type][$id]{0} : - // for new participants check if they have a 'new_status' resource-methode to determine the status - (isset($this->bo->resources[$type]['new_status']) ? ExecMethod($this->bo->resources[$type]['new_status'],$id) : - // if not use 'A'=accepted for the current user and 'U' otherwise - ($type == 'u' && $id == $this->bo->user ? 'A' : 'U'))).((int) $quantity > 1 ? (int)$quantity : ''); - // ToDo: move this logic into bocal - } - } if ($content['whole_day']) { $event['start'] = $this->bo->date2array($event['start']); @@ -260,73 +229,109 @@ class uiforms extends uical { $event['recur_data'] = 1 << (int)date('w',$event['start']); } - } - else // status change view - { - foreach($event['participants'] as $name => $data) + $event['participants'] = $event['participant_types'] = array(); + foreach($content['participants'] as $key => $data) { - if (!is_array($data)) continue; - - $type = 'u'; - foreach($this->bo->resources as $t => $d) + switch($key) { - if ($d['app'] == $name) - { - $type = $t; - break; - } - } - // checking for status changes - foreach($data[$name.'_status'] as $uid => $status) - { - list($uid,$quantity) = explode(':',$uid); - //echo "checking $type: $uid $status against old ".$event['participant_types'][$type][$uid]."'.lang('Permission denied')."
\n"; + $GLOBALS['egw']->framework->render(''.lang('Permission denied')."
\n",null,true); $GLOBALS['egw']->common->egw_exit(); } } $event =& $this->default_add_event(); } + else + { + $preserv['actual_date'] = $event['start']; // remember the date clicked + if ($event['recur_type'] != MCAL_RECUR_NONE) + { + $event = $this->bo->read($cal_id,0,true); // recuring event --> read the series + } + } // check if the event is the whole day $start = $this->bo->date2array($event['start']); $end = $this->bo->date2array($event['end']); @@ -616,13 +649,14 @@ class uiforms extends uical 'to_app' => 'calendar', ), 'edit_single' => $preserv['edit_single'], // need to be in content too, as it is used in the template + $this->tabs => $preserv[$this->tabs], 'view' => $view, )); - $content['participants'] = array(); - $content['duration'] = $content['end'] - $content['start']; if (isset($this->durations[$content['duration']])) $content['end'] = ''; + $row = 2; + $readonlys = $content['participants'] = $preserv['participants'] = array(); foreach($event['participant_types'] as $type => $participants) { $name = 'accounts'; @@ -632,43 +666,49 @@ class uiforms extends uical } foreach($participants as $id => $status) { - $content['participants'][$name][] = $id . (substr($status,1) > 1 ? (':'.substr($status,1)) : ''); - } - - if ($view) - { - $stati =& $content['participants'][$name][$name.'_status']; - $stati = $participants; + $uid = $type == 'u' ? $id : $type.$id; + $preserv['participants'][$row] = $content['participants'][$row] = array( + 'app' => $name == 'accounts' ? ($GLOBALS['egw']->accounts->get_type($id) == 'g' ? 'Group' : 'User') : $name, + 'uid' => $uid, + 'status' => $status{0}, + 'old_status' => $status{0}, + 'quantity' => substr($status,1), + ); + $readonlys[$row.'[quantity]'] = $type == 'u' || !isset($this->bo->resources[$type]['max_quantity']); + $readonlys[$row.'[status]'] = !$this->bo->check_status_perms($uid,$event); + $readonlys["delete[$uid]"] = !$this->bo->check_perms(EGW_ACL_EDIT,$event); + $content['participants'][$row++]['title'] = $name == 'accounts' ? + $GLOBALS['egw']->common->grab_owner_name($id) : $this->link->title($name,$id); + // enumerate group-invitations, so people can accept/reject them - if ($name == 'accounts') + if ($name == 'accounts' && $GLOBALS['egw']->accounts->get_type($id) == 'g' && + ($members = $GLOBALS['egw']->accounts->members($id,true))) { - foreach($participants as $id => $status) + $sel_options['status']['G'] = lang('Select one'); + foreach($members as $member) { - if ($GLOBALS['egw']->accounts->get_type($id) == 'g' && - ($members = $GLOBALS['egw']->accounts->member($id))) + if (!isset($participants[$member]) && $this->bo->check_perms(EGW_ACL_EDIT,0,$member)) { - $sel_options['accounts_status']['G'] = lang('Select one'); - foreach($members as $member) - { - if (!isset($stati[$member['account_id']]) && $this->bo->check_perms(EGW_ACL_EDIT,0,$member['account_id'])) - { - $stati[$member['account_id']] = 'G'; // status for invitation via membership in group - $content['participants'][$name][] = $member['account_id']; - } - } + $preserv['participants'][$row] = $content['participants'][$row] = array( + 'app' => 'Group invitation', + 'uid' => $member, + 'status' => 'G', + ); + $readonlys[$row.'[quantity]'] = $readonlys["delete[$member]"] = true; + $content['participants'][$row++]['title'] = $GLOBALS['egw']->common->grab_owner_name($member); } } } - foreach($stati as $id => $status) - { - $readonlys[$name.'_status['.$id.']'] = !$this->bo->check_perms(EGW_ACL_EDIT,0,($type != 'u' ? $type : '').$id); - } } + // resouces / apps we shedule, atm. resources and addressbook + $content['participants']['cal_resources'] = ''; + foreach($this->bo->resources as $data) $content['participants']['cal_resources'] .= ','.$data['app']; } + $content['participants']['status_date'] = $preserv['actual_date']; // echo '$content[participants]'; _debug_array($content['participants']); // echo '$content[participant_types]'; _debug_array($content['participant_types']); // _debug_array($sel_options); - $preserv = array_merge($preserv,$view ? $event : $content); + $preserv = array_merge($preserv,$content); if ($event['alarm']) { @@ -707,7 +747,9 @@ class uiforms extends uical if ($key != 'alarm') $readonlys[$key] = true; } // we need to unset the tab itself, as this would make all content (incl. the change-status selects) readonly - unset($readonlys['general|description|participants|recurrence|custom|links|alarms']); + unset($readonlys[$this->tabs]); + // participants are handled individual + unset($readonlys['participants']); $readonlys['button[save]'] = $readonlys['button[apply]'] = $readonlys['freetime'] = true; $readonlys['link_to'] = $readonlys['customfields'] = true; @@ -715,11 +757,10 @@ class uiforms extends uical if ($event['recur_type'] != MCAL_RECUR_NONE) { - $etpl->set_cell_attribute('button[edit]','help','Edit this series of recuring events'); - $etpl->set_cell_attribute('button[delete]','help','Delete this series of recuring events'); $onclick =& $etpl->get_cell_attribute('button[delete]','onclick'); $onclick = str_replace('Delete this event','Delete this series of recuring events',$onclick); } + $content['participants']['no_add'] = true; } else { @@ -731,22 +772,24 @@ class uiforms extends uical // the call to set_style_by_class has to be in onload, to make sure the function and the element is already created $GLOBALS['egw']->js->set_onload("set_style_by_class('table','end_hide','visibility','".($content['duration'] && isset($sel_options['duration'][$content['duration']]) ? 'hidden' : 'visible')."');"); - $readonlys['button[copy]'] = $readonlys['button[vcal]'] = true; - unset($preserv['participants']); // otherwise deleted participants are still reported $readonlys['recur_exception'] = !count($content['recur_exception']); // otherwise we get a delete button } // disabling the custom fields tab, if there are none - $readonlys['general|description|participants|recurrence|custom|links|alarms'] = array( + $readonlys[$this->tabs] = array( 'custom' => !count($this->bo->config['customfields']), 'participants' => $this->accountsel->account_selection == 'none', ); - if ($view || !isset($GLOBALS['egw_info']['user']['apps']['felamimail'])) + if (!isset($GLOBALS['egw_info']['user']['apps']['felamimail'])) // no mail without mail-app { - $etpl->disable_cells('custom_mail'); + unset($sel_options['action']['mail']); } - if (!($readonlys['button[exception]'] = $readonlys['button[edit]'] = !$view || !$this->bo->check_perms(EGW_ACL_EDIT,$event))) + if (!$event['id']) // no ical export for new (not saved) events { - $readonlys['button[exception]'] = $event['recur_type'] == MCAL_RECUR_NONE; + $readonlys['action'] = true; + } + if (!($readonlys['button[exception]'] = !$this->bo->check_perms(EGW_ACL_EDIT,$event) || $event['recur_type'] == MCAL_RECUR_NONE)) + { + $content['exception_label'] = $this->bo->long_date($preserv['actual_date']); } $readonlys['button[delete]'] = !$event['id'] || !$this->bo->check_perms(EGW_ACL_DELETE,$event); @@ -766,10 +809,6 @@ class uiforms extends uical { $etpl->set_cell_attribute('button[new_alarm]','type','checkbox'); } - foreach($this->bo->resources as $res_data) - { - $sel_options[$res_data['app'].'_status'] =& $this->bo->verbose_status; - } if ($preserv['no_popup']) { $etpl->set_cell_attribute('button[cancel]','onclick',''); @@ -778,8 +817,8 @@ class uiforms extends uical //echo "preserv="; _debug_array($preserv); //echo "readonlys="; _debug_array($readonlys); //echo "sel_options="; _debug_array($sel_options); - $GLOBALS['egw_info']['flags']['app_header'] = lang('calendar') . ' - ' . ($event['id'] ? ($view ? lang('View') : - ($content['edit_single'] ? lang('Edit exception') : lang('Edit'))) : lang('Add')); + $GLOBALS['egw_info']['flags']['app_header'] = lang('calendar') . ' - ' . (!$event['id'] ? lang('Add') : ($view ? lang('View') : + ($content['edit_single'] ? lang('Create exception') : ($content['recur_type'] ? lang('Edit series') : lang('Edit'))))); $GLOBALS['egw_info']['flags']['java_script'] .= "\n"; $etpl->exec('calendar.uiforms.process_edit',$content,$sel_options,$readonlys,$preserv,$preserv['no_popup'] ? 0 : 2); } diff --git a/calendar/inc/class.uiviews.inc.php b/calendar/inc/class.uiviews.inc.php index e03b758de0..a0aca3e536 100644 --- a/calendar/inc/class.uiviews.inc.php +++ b/calendar/inc/class.uiviews.inc.php @@ -434,7 +434,7 @@ class uiviews extends uical $users = $this->search_params['users']; if (!is_array($users)) $users = array($users); - if (count($users) == 1 || count($users) > 3) // for more then 3 users, show all in one row + if (count($users) == 1 || count($users) > 5) // for more then 3 users, show all in one row { $content =& $this->timeGridWidget($this->tagWholeDayOnTop($this->bo->search($search_params)),$this->cal_prefs['interval']); } @@ -1175,7 +1175,7 @@ class uiviews extends uical $tpl->set_var('tooltip',$this->html->tooltip($tooltip,False,array('BorderWidth'=>0,'Padding'=>0))); $html = $tpl->fp('out',$block); - $view_link = $GLOBALS['egw']->link('/index.php',array('menuaction'=>'calendar.uiforms.view','cal_id'=>$event['id'],'date'=>$this->bo->date2string($event['start']))); + $view_link = $GLOBALS['egw']->link('/index.php',array('menuaction'=>'calendar.uiforms.edit','cal_id'=>$event['id'],'date'=>$this->bo->date2string($event['start']))); $popup = $is_private ? '' : ' onclick="'.$this->popup($view_link).'; return false;"'; if ($return_array) diff --git a/calendar/setup/etemplates.inc.php b/calendar/setup/etemplates.inc.php index cba5674b01..802283600d 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() 2006-12-13 09:30 + * generated by soetemplate::dump4setup() 2006-12-13 09:28 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package calendar @@ -14,10 +14,6 @@ $templ_version=1; $templ_data[] = array('name' => 'calendar.conflicts','template' => '','lang' => '','group' => '0','version' => '1.0.1.001','data' => 'a:3:{i:0;a:3:{s:4:"type";s:5:"label";s:5:"label";s:20:" Scheduling conflict";s:4:"span";s:9:",size120b";}i:1;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:1:{s:2:"c1";s:4:",top";}i:1;a:4:{s:1:"A";a:4:{s:4:"type";s:5:"image";s:4:"name";s:34:"conflicts[$row][icon_participants]";s:5:"label";s:38:"@conflicts[$row][tooltip_participants]";s:7:"no_lang";s:1:"1";}s:1:"B";a:4:{s:4:"type";s:5:"image";s:4:"name";s:27:"conflicts[$row][icon_recur]";s:5:"label";s:28:"@conflicts[$row][text_recur]";s:7:"no_lang";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:4:"name";s:21:"conflicts[$row][time]";s:7:"no_lang";s:1:"1";}s:1:"D";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:5:"label";s:4:"name";s:22:"conflicts[$row][title]";s:7:"no_lang";s:1:"1";s:4:"size";s:1:"b";}i:2;a:3:{s:4:"type";s:5:"label";s:4:"name";s:41:"conflicts[$row][conflicting_participants]";s:7:"no_lang";s:1:"1";}s:4:"help";s:23:"conflict[$row][tooltip]";}}}s:4:"rows";i:1;s:4:"cols";i:4;}i:2;a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:15:"Ignore conflict";s:4:"name";s:14:"button[ignore]";s:4:"help";s:37:"Saves the event ignoring the conflict";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[reedit]";s:5:"label";s:13:"Re-Edit event";s:4:"help";s:30:"Allows to edit the event again";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:15:"Freetime search";s:4:"name";s:16:"button[freetime]";s:4:"help";s:88:"Find free timeslots where the selected participants are availible for the given timespan";}}}','size' => '','style' => '','modified' => '1119080124',); -$templ_data[] = array('name' => 'calendar.edit','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:6:{i:0;a:6:{s:2:"h1";s:6:",!@msg";s:2:"c2";s:2:"th";s:1:"A";s:3:"100";s:2:"c4";s:3:"row";s:2:"h4";s:8:",!@owner";s:1:"B";s:3:"300";}i:1;a:3:{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";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:2;a:3:{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:"size";s:6:"80,255";s:4:"name";s:5:"title";s:4:"span";s:3:"all";s:6:"needed";s:1:"1";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:3;a:3:{s:1:"A";a:5:{s:4:"type";s:3:"tab";s:4:"span";s:3:"all";s:5:"label";s:63:"General|Description|Participants|Recurrence|Custom|Links|Alarms";s:4:"name";s:63:"general|description|participants|recurrence|custom|links|alarms";s:4:"help";s:158:"Location, Start- and Endtimes, ...|Full description|Participants, Resources, ...|Repeating Event Information|Custom fields|Links, Attachments|Alarm management";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Owner";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:5:"owner";s:8:"readonly";s:1:"1";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:5:"align";s:5:"right";i:1;a:5:{s:4:"type";s:9:"date-time";s:5:"label";s:7:"Updated";s:4:"name";s:8:"modified";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:14:"select-account";s:5:"label";s:2:"by";s:4:"name";s:8:"modifier";s:8:"readonly";s:1:"1";}}}i:5;a:3:{s:1:"A";a:10:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"7";s:4:"span";s:1:"2";i:1;a:4:{s:4:"type";s:6:"button";s:4:"name";s:19:"button[edit_series]";s:5:"label";s:11:"Edit series";s:4:"help";s:35:"Edit this series of recuring events";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[edit]";s:5:"label";s:4:"Edit";s:4:"help";s:15:"Edit this event";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[copy]";s:5:"label";s:4:"Copy";s:4:"help";s:15:"Copy this event";}i:4;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:12:"button[save]";s:4:"help";s:22:"saves the changes made";}i:5;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[apply]";s:5:"label";s:5:"Apply";s:4:"help";s:17:"apply the changes";}i:6;a:5:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:7:"onclick";s:15:"window.close();";s:4:"help";s:16:"Close the window";}i:7;a:4:{s:4:"type";s:8:"checkbox";s:4:"name";s:11:"custom_mail";s:5:"label";s:21:"mail all participants";s:4:"help";s:59:"compose a mail to all participants after the event is saved";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:5:"align";s:5:"right";s:4:"size";s:1:"2";i:1;a:5:{s:4:"type";s:6:"button";s:4:"name";s:21:"button[delete_series]";s:5:"label";s:13:"Delete series";s:4:"help";s:37:"Delete this series of recuring events";s:7:"onclick";s:56:"return confirm(\'Delete this series of recuring events\');";}i:2;a:5:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:14:"button[delete]";s:4:"help";s:17:"Delete this event";s:7:"onclick";s:36:"return confirm(\'Delete this event\');";}}}}s:4:"rows";i:5;s:4:"cols";i:3;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1118477069',); - -$templ_data[] = array('name' => 'calendar.edit','template' => '','lang' => '','group' => '0','version' => '1.0.1.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:7:{s:2:"h1";s:6:",!@msg";s:2:"c2";s:2:"th";s:1:"A";s:3:"100";s:2:"c4";s:3:"row";s:2:"h4";s:8:",!@owner";s:1:"B";s:3:"300";s:2:"h2";s:2:"28";}i:1;a:3:{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";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:2;a:3:{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:"size";s:6:"80,255";s:4:"name";s:5:"title";s:4:"span";s:3:"all";s:6:"needed";s:1:"1";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:3;a:3:{s:1:"A";a:5:{s:4:"type";s:3:"tab";s:4:"span";s:3:"all";s:5:"label";s:63:"General|Description|Participants|Recurrence|Custom|Links|Alarms";s:4:"name";s:63:"general|description|participants|recurrence|custom|links|alarms";s:4:"help";s:158:"Location, Start- and Endtimes, ...|Full description|Participants, Resources, ...|Repeating Event Information|Custom fields|Links, Attachments|Alarm management";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Owner";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:5:"owner";s:8:"readonly";s:1:"1";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:5:"align";s:5:"right";i:1;a:5:{s:4:"type";s:9:"date-time";s:5:"label";s:7:"Updated";s:4:"name";s:8:"modified";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:14:"select-account";s:5:"label";s:2:"by";s:4:"name";s:8:"modifier";s:8:"readonly";s:1:"1";}}}i:5;a:3:{s:1:"A";a:11:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"8";s:4:"span";s:1:"2";i:1;a:4:{s:4:"type";s:6:"button";s:4:"name";s:19:"button[edit_series]";s:5:"label";s:11:"Edit series";s:4:"help";s:35:"Edit this series of recuring events";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[edit]";s:5:"label";s:4:"Edit";s:4:"help";s:15:"Edit this event";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[copy]";s:5:"label";s:4:"Copy";s:4:"help";s:15:"Copy this event";}i:4;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[vcal]";s:5:"label";s:6:"Export";s:4:"help";s:27:"Download this event as iCal";}i:5;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:12:"button[save]";s:4:"help";s:22:"saves the changes made";}i:6;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[apply]";s:5:"label";s:5:"Apply";s:4:"help";s:17:"apply the changes";}i:7;a:5:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:7:"onclick";s:15:"window.close();";s:4:"help";s:16:"Close the window";}i:8;a:4:{s:4:"type";s:8:"checkbox";s:4:"name";s:11:"custom_mail";s:5:"label";s:21:"mail all participants";s:4:"help";s:59:"compose a mail to all participants after the event is saved";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:5:"align";s:5:"right";s:4:"size";s:1:"2";i:1;a:5:{s:4:"type";s:6:"button";s:4:"name";s:21:"button[delete_series]";s:5:"label";s:13:"Delete series";s:4:"help";s:37:"Delete this series of recuring events";s:7:"onclick";s:56:"return confirm(\'Delete this series of recuring events\');";}i:2;a:5:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:14:"button[delete]";s:4:"help";s:17:"Delete this event";s:7:"onclick";s:36:"return confirm(\'Delete this event\');";}}}}s:4:"rows";i:5;s:4:"cols";i:3;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1118477069',); - $templ_data[] = array('name' => 'calendar.edit','template' => '','lang' => '','group' => '0','version' => '1.0.1.003','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:7:{s:2:"h1";s:6:",!@msg";s:2:"c2";s:2:"th";s:1:"A";s:3:"100";s:2:"c4";s:3:"row";s:2:"h4";s:8:",!@owner";s:1:"B";s:3:"300";s:2:"h2";s:2:"28";}i:1;a:3:{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";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:2;a:3:{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:"size";s:6:"80,255";s:4:"name";s:5:"title";s:4:"span";s:3:"all";s:6:"needed";s:1:"1";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:3;a:3:{s:1:"A";a:5:{s:4:"type";s:3:"tab";s:4:"span";s:3:"all";s:5:"label";s:63:"General|Description|Participants|Recurrence|Custom|Links|Alarms";s:4:"name";s:63:"general|description|participants|recurrence|custom|links|alarms";s:4:"help";s:158:"Location, Start- and Endtimes, ...|Full description|Participants, Resources, ...|Repeating Event Information|Custom fields|Links, Attachments|Alarm management";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Owner";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:5:"owner";s:8:"readonly";s:1:"1";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:5:"align";s:5:"right";i:1;a:5:{s:4:"type";s:9:"date-time";s:5:"label";s:7:"Updated";s:4:"name";s:8:"modified";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:14:"select-account";s:5:"label";s:2:"by";s:4:"name";s:8:"modifier";s:8:"readonly";s:1:"1";}}}i:5;a:3:{s:1:"A";a:11:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"8";s:4:"span";s:1:"2";i:1;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[edit]";s:5:"label";s:4:"Edit";s:4:"help";s:15:"Edit this event";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:17:"button[exception]";s:5:"label";s:9:"Exception";s:4:"help";s:42:"Create an exception at this recuring event";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[copy]";s:5:"label";s:4:"Copy";s:4:"help";s:15:"Copy this event";}i:4;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[vcal]";s:5:"label";s:6:"Export";s:4:"help";s:27:"Download this event as iCal";}i:5;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:12:"button[save]";s:4:"help";s:22:"saves the changes made";}i:6;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[apply]";s:5:"label";s:5:"Apply";s:4:"help";s:17:"apply the changes";}i:7;a:5:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:7:"onclick";s:15:"window.close();";s:4:"help";s:16:"Close the window";}i:8;a:4:{s:4:"type";s:8:"checkbox";s:4:"name";s:11:"custom_mail";s:5:"label";s:21:"mail all participants";s:4:"help";s:59:"compose a mail to all participants after the event is saved";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:6:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:14:"button[delete]";s:4:"help";s:17:"Delete this event";s:7:"onclick";s:36:"return confirm(\'Delete this event\');";s:5:"align";s:5:"right";}}}s:4:"rows";i:5;s:4:"cols";i:3;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1132776053',); $templ_data[] = array('name' => 'calendar.edit','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:7:{s:2:"h1";s:6:",!@msg";s:2:"c2";s:2:"th";s:1:"A";s:3:"100";s:2:"c4";s:3:"row";s:2:"h4";s:8:",!@owner";s:1:"B";s:3:"300";s:2:"h2";s:2:"28";}i:1;a:3:{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";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:2;a:3:{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:"size";s:6:"80,255";s:4:"name";s:5:"title";s:4:"span";s:3:"all";s:6:"needed";s:1:"1";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:3;a:3:{s:1:"A";a:5:{s:4:"type";s:3:"tab";s:4:"span";s:3:"all";s:5:"label";s:63:"General|Description|Participants|Recurrence|Custom|Links|Alarms";s:4:"name";s:63:"general|description|participants|recurrence|custom|links|alarms";s:4:"help";s:158:"Location, Start- and Endtimes, ...|Full description|Participants, Resources, ...|Repeating Event Information|Custom fields|Links, Attachments|Alarm management";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Owner";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:5:"owner";s:8:"readonly";s:1:"1";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:5:"align";s:5:"right";i:1;a:5:{s:4:"type";s:9:"date-time";s:5:"label";s:7:"Updated";s:4:"name";s:8:"modified";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:14:"select-account";s:5:"label";s:2:"by";s:4:"name";s:8:"modifier";s:8:"readonly";s:1:"1";}}}i:5;a:3:{s:1:"A";a:11:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"8";s:4:"span";s:1:"2";i:1;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[edit]";s:5:"label";s:4:"Edit";s:4:"help";s:15:"Edit this event";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:17:"button[exception]";s:5:"label";s:9:"Exception";s:4:"help";s:42:"Create an exception at this recuring event";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[copy]";s:5:"label";s:4:"Copy";s:4:"help";s:15:"Copy this event";}i:4;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[vcal]";s:5:"label";s:6:"Export";s:4:"help";s:27:"Download this event as iCal";}i:5;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:12:"button[save]";s:4:"help";s:22:"saves the changes made";}i:6;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[apply]";s:5:"label";s:5:"Apply";s:4:"help";s:17:"apply the changes";}i:7;a:5:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:7:"onclick";s:15:"window.close();";s:4:"help";s:16:"Close the window";}i:8;a:4:{s:4:"type";s:8:"checkbox";s:4:"name";s:11:"custom_mail";s:5:"label";s:21:"mail all participants";s:4:"help";s:59:"compose a mail to all participants after the event is saved";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:6:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:14:"button[delete]";s:4:"help";s:17:"Delete this event";s:7:"onclick";s:36:"return confirm(\'Delete this event\');";s:5:"align";s:5:"right";}}}s:4:"rows";i:5;s:4:"cols";i:3;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '.end_hide { visibility: visible; white-space: nowrap; margin-left: 10px; }','modified' => '1149292820',); @@ -32,15 +28,15 @@ $templ_data[] = array('name' => 'calendar.edit.general','template' => '','lang' $templ_data[] = array('name' => 'calendar.edit.general','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:9:{s:2:"c1";s:3:"row";s:1:"A";s:2:"95";s:2:"c3";s:3:"row";s:2:"c4";s:7:"row,top";s:2:"c6";s:3:"row";s:2:"c5";s:3:"row";s:2:"c2";s:3:"row";s:2:"h4";s:2:"60";s:1:"B";s:3:"50%";}i:1;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:8:",,,start";s:5:"label";s:5:"Start";}s:1:"B";a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:5:"start";s:6:"needed";s:1:"1";}s:1:"C";a:5:{s:4:"type";s:8:"checkbox";s:4:"name";s:9:"whole_day";s:5:"label";s:9:"whole day";s:4:"help";s:31:"Event will occupy the whole day";s:4:"size";s:11:",, ,disable";}}i:2;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,duration";s:5:"label";s:8:"Duration";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:6:{s:4:"type";s:6:"select";s:4:"name";s:8:"duration";s:4:"size";s:12:"Use end date";s:7:"no_lang";s:1:"1";s:4:"help";s:23:"Duration of the meeting";s:8:"onchange";s:92:"set_style_by_class(\'table\',\'end_hide\',\'visibility\',this.value == \'\' ? \'visible\' : \'hidden\');";}i:2;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:3:"end";s:4:"span";s:9:",end_hide";}}s:1:"C";a:5:{s:4:"type";s:6:"button";s:5:"label";s:15:"Freetime search";s:4:"name";s:8:"freetime";s:4:"help";s:88:"Find free timeslots where the selected participants are availible for the given timespan";s:7:"onclick";s:248:"window.open(egw::link(\'/index.php\',\'menuaction=calendar.uiforms.freetimesearch\')+values2url(this.form,\'start,end,duration,participants,recur_type,whole_day\'),\'ft_search\',\'dependent=yes,width=700,height=500,scrollbars=yes,status=yes\'); return false;";}}i:3;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,location";s:5:"label";s:8:"Location";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:6:"80,255";s:4:"name";s:8:"location";s:4:"span";s:3:"all";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,category";s:5:"label";s:8:"Category";}s:1:"B";a:4:{s:4:"type";s:10:"select-cat";s:4:"size";s:1:"3";s:4:"name";s:8:"category";s:4:"span";s:3:"all";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:5;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,priority";s:5:"label";s:8:"Priority";}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:2:{s:4:"type";s:15:"select-priority";s:4:"name";s:8:"priority";}i:2;a:5:{s:4:"type";s:8:"checkbox";s:5:"label";s:12:"non blocking";s:4:"help";s:56:"A non blocking event will not conflict with other events";s:4:"name";s:12:"non_blocking";s:4:"size";s:11:",, ,disable";}s:4:"span";s:3:"all";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:6;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:9:",,,public";s:5:"label";s:7:"Private";}s:1:"B";a:4:{s:4:"type";s:8:"checkbox";s:4:"size";s:3:"0,1";s:4:"name";s:6:"public";s:4:"span";s:3:"all";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:6;s:4:"cols";i:3;s:4:"size";s:8:"100%,200";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:3:"200";}}}','size' => '100%,200','style' => '','modified' => '1118477982',); -$templ_data[] = array('name' => 'calendar.edit.links','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:7:{s:1:"A";s:2:"95";s:2:"h1";s:6:",@view";s:2:"h2";s:6:",@view";s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";s:2:"c3";s:2:"th";s:2:"c4";s:11:"row_off,top";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:16:"Create new links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:7:"link-to";s:4:"span";s:3:"all";s:4:"name";s:7:"link_to";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:14:"Existing links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:9:"link-list";s:4:"span";s:3:"all";s:4:"name";s:7:"link_to";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:2;s:4:"size";s:17:"100%,200,,,,,auto";s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"200";i:6;s:4:"auto";}}}','size' => '100%,200,,,,,auto','style' => '','modified' => '1118758702',); +$templ_data[] = array('name' => 'calendar.edit.general','template' => '','lang' => '','group' => '0','version' => '1.3.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:9:{s:2:"c1";s:3:"row";s:1:"A";s:2:"95";s:2:"c3";s:3:"row";s:2:"c4";s:7:"row,top";s:2:"c6";s:3:"row";s:2:"c5";s:3:"row";s:2:"c2";s:3:"row";s:2:"h4";s:2:"60";s:1:"B";s:3:"50%";}i:1;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:8:",,,start";s:5:"label";s:5:"Start";}s:1:"B";a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:5:"start";s:6:"needed";s:1:"1";}s:1:"C";a:5:{s:4:"type";s:8:"checkbox";s:4:"name";s:9:"whole_day";s:5:"label";s:9:"whole day";s:4:"help";s:31:"Event will occupy the whole day";s:4:"size";s:11:",, ,disable";}}i:2;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,duration";s:5:"label";s:8:"Duration";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:6:{s:4:"type";s:6:"select";s:4:"name";s:8:"duration";s:4:"size";s:12:"Use end date";s:7:"no_lang";s:1:"1";s:4:"help";s:23:"Duration of the meeting";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;";}i:2;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:3:"end";s:4:"span";s:9:",end_hide";}}s:1:"C";a:5:{s:4:"type";s:6:"button";s:5:"label";s:15:"Freetime search";s:4:"name";s:8:"freetime";s:4:"help";s:88:"Find free timeslots where the selected participants are availible for the given timespan";s:7:"onclick";s:248:"window.open(egw::link(\'/index.php\',\'menuaction=calendar.uiforms.freetimesearch\')+values2url(this.form,\'start,end,duration,participants,recur_type,whole_day\'),\'ft_search\',\'dependent=yes,width=700,height=500,scrollbars=yes,status=yes\'); return false;";}}i:3;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,location";s:5:"label";s:8:"Location";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:6:"80,255";s:4:"name";s:8:"location";s:4:"span";s:3:"all";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,category";s:5:"label";s:8:"Category";}s:1:"B";a:4:{s:4:"type";s:10:"select-cat";s:4:"size";s:1:"3";s:4:"name";s:8:"category";s:4:"span";s:3:"all";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:5;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,priority";s:5:"label";s:8:"Priority";}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:2:{s:4:"type";s:15:"select-priority";s:4:"name";s:8:"priority";}i:2;a:5:{s:4:"type";s:8:"checkbox";s:5:"label";s:12:"non blocking";s:4:"help";s:56:"A non blocking event will not conflict with other events";s:4:"name";s:12:"non_blocking";s:4:"size";s:11:",, ,disable";}s:4:"span";s:3:"all";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:6;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:9:",,,public";s:5:"label";s:7:"Private";}s:1:"B";a:4:{s:4:"type";s:8:"checkbox";s:4:"size";s:3:"0,1";s:4:"name";s:6:"public";s:4:"span";s:3:"all";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:6;s:4:"cols";i:3;s:4:"size";s:8:"100%,200";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:3:"200";}}}','size' => '100%,200','style' => '','modified' => '1118477982',); -$templ_data[] = array('name' => 'calendar.edit.participants','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:2:{i:0;a:2:{s:2:"c1";s:7:"row,top";s:1:"A";s:2:"95";}i:1;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:15:",,,participants";s:5:"label";s:12:"Participants";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"size";s:2:"14";s:4:"name";s:22:"participants[accounts]";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:5:"label";s:9:"Resources";s:5:"align";s:5:"right";}s:1:"D";a:3:{s:4:"type";s:16:"resources_select";s:4:"size";s:2:"14";s:4:"name";s:23:"participants[resources]";}}}s:4:"rows";i:1;s:4:"cols";i:4;s:4:"size";s:16:"100%,200,,row_on";s:7:"options";a:3:{i:3;s:6:"row_on";i:0;s:4:"100%";i:1;s:3:"200";}}}','size' => '100%,200,,row_on','style' => '','modified' => '1118481127',); +$templ_data[] = array('name' => 'calendar.edit.links','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:7:{s:1:"A";s:2:"95";s:2:"h1";s:6:",@view";s:2:"h2";s:6:",@view";s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";s:2:"c3";s:2:"th";s:2:"c4";s:11:"row_off,top";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:16:"Create new links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:7:"link-to";s:4:"span";s:3:"all";s:4:"name";s:7:"link_to";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:14:"Existing links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:9:"link-list";s:4:"span";s:3:"all";s:4:"name";s:7:"link_to";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:2;s:4:"size";s:17:"100%,200,,,,,auto";s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"200";i:6;s:4:"auto";}}}','size' => '100%,200,,,,,auto','style' => '','modified' => '1118758702',); $templ_data[] = array('name' => 'calendar.edit.participants','template' => '','lang' => '','group' => '0','version' => '1.0.1.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:5:{s:2:"c1";s:7:"row,top";s:1:"A";s:2:"95";s:2:"h1";s:6:",@view";s:2:"h2";s:7:",!@view";s:2:"c2";s:4:",top";}i:1;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:15:",,,participants";s:5:"label";s:12:"Participants";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"size";s:2:"14";s:4:"name";s:22:"participants[accounts]";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:5:"label";s:9:"Resources";s:5:"align";s:5:"right";}s:1:"D";a:3:{s:4:"type";s:16:"resources_select";s:4:"size";s:2:"14";s:4:"name";s:23:"participants[resources]";}}i:2;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Participants";}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:26:"accounts_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:22:"participants[accounts]";s:7:"options";a:0:{}}s:1:"C";a:3:{s:4:"type";s:5:"label";s:5:"label";s:9:"Resources";s:5:"align";s:5:"right";}s:1:"D";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:1:{s:2:"h1";s:19:",!@resources_status";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:16:"resources_select";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:27:"resources_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:23:"participants[resources]";s:7:"options";a:0:{}}}}s:4:"rows";i:2;s:4:"cols";i:4;s:4:"size";s:23:"100%,200,,row_on,,,auto";s:7:"options";a:4:{i:3;s:6:"row_on";i:0;s:4:"100%";i:1;s:3:"200";i:6;s:4:"auto";}}}','size' => '100%,200,,row_on,,,auto','style' => '','modified' => '1129665796',); $templ_data[] = array('name' => 'calendar.edit.participants','template' => '','lang' => '','group' => '0','version' => '1.0.1.003','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:5:{s:2:"c1";s:7:"row,top";s:1:"A";s:2:"95";s:2:"h1";s:6:",@view";s:2:"h2";s:7:",!@view";s:2:"c2";s:4:",top";}i:1;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:15:",,,participants";s:5:"label";s:12:"Participants";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"size";s:12:"14,calendar+";s:4:"name";s:22:"participants[accounts]";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:5:"label";s:9:"Resources";s:5:"align";s:5:"right";}s:1:"D";a:3:{s:4:"type";s:16:"resources_select";s:4:"size";s:2:"14";s:4:"name";s:23:"participants[resources]";}}i:2;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Participants";}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:26:"accounts_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:22:"participants[accounts]";s:7:"options";a:0:{}}s:1:"C";a:3:{s:4:"type";s:5:"label";s:5:"label";s:9:"Resources";s:5:"align";s:5:"right";}s:1:"D";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:1:{s:2:"h1";s:19:",!@resources_status";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:16:"resources_select";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:27:"resources_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:23:"participants[resources]";s:7:"options";a:0:{}}}}s:4:"rows";i:2;s:4:"cols";i:4;s:4:"size";s:23:"100%,200,,row_on,,,auto";s:7:"options";a:4:{i:3;s:6:"row_on";i:0;s:4:"100%";i:1;s:3:"200";i:6;s:4:"auto";}}}','size' => '100%,200,,row_on,,,auto','style' => '','modified' => '1129665796',); -$templ_data[] = array('name' => 'calendar.edit.recurrence','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:2:{s:2:"c1";s:3:"row";s:1:"A";s:2:"95";}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:8:"100%,200";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:3:"200";}}}','size' => '100%,200','style' => '','modified' => '1118737412',); +$templ_data[] = array('name' => 'calendar.edit.participants','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:7:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:5:{s:1:"A";s:2:"95";s:2:"c3";s:4:",top";s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";s:2:"h2";s:8:",@no_add";}i:1;a:5:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Type";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Participants";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"Quantity";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"Status";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"Delete";}}i:2;a:5:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"New";}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:14:"select-account";s:4:"size";s:18:"User or group,both";s:4:"name";s:7:"account";}i:2;a:3:{s:4:"type";s:10:"link-entry";s:4:"name";s:8:"resource";s:4:"size";s:14:"@cal_resources";}}s:1:"C";a:3:{s:4:"type";s:3:"int";s:4:"size";s:4:"1,,3";s:4:"name";s:8:"quantity";}s:1:"D";a:3:{s:4:"type";s:6:"button";s:5:"label";s:3:"Add";s:4:"name";s:3:"add";}s:1:"E";a:1:{s:4:"type";s:5:"label";}}i:3;a:5:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"name";s:11:"${row}[app]";}s:1:"B";a:6:{s:4:"type";s:5:"label";s:4:"data";a:2:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:26:"accounts_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:13:"${row}[title]";s:7:"no_lang";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:3:"int";s:4:"name";s:16:"${row}[quantity]";s:4:"size";s:4:"1,,3";}s:1:"D";a:3:{s:4:"type";s:6:"select";s:4:"name";s:14:"${row}[status]";s:7:"no_lang";s:1:"1";}s:1:"E";a:6:{s:4:"type";s:8:"checkbox";s:4:"data";a:2:{i:0;a:1:{s:2:"h1";s:19:",!@resources_status";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:16:"resources_select";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:27:"resources_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:22:"delete[$row_cont[uid]]";s:5:"align";s:6:"center";}}}s:4:"rows";i:3;s:4:"cols";i:5;s:4:"size";s:17:"100%,200,,,,,auto";s:4:"name";s:12:"participants";s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"200";i:6;s:4:"auto";}}}','size' => '100%,200,,,,,auto','style' => '','modified' => '1162211604',); $templ_data[] = array('name' => 'calendar.edit.recurrence','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:6:{s:2:"c1";s:2:"th";s:1:"A";s:2:"95";s:2:"c2";s:3:"row";s:2:"c3";s:3:"row";s:2:"c4";s:3:"row";s:1:"D";s:3:"50%";}i:1;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:27:"Repeating Event Information";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:16:"be back soon ;-)";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}i:2;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:13:",,,recur_type";s:5:"label";s:11:"Repeat type";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:10:"recur_type";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:4:"size";s:17:",,,recur_interval";s:5:"label";s:8:"Interval";}s:1:"D";a:4:{s:4:"type";s:13:"select-number";s:4:"name";s:14:"recur_interval";s:4:"help";s:53:"repeating interval, eg. 2 to repeat every second week";s:4:"size";s:9:"None,2,10";}}i:3;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:16:",,,recur_enddate";s:5:"label";s:8:"End date";}s:1:"B";a:3:{s:4:"type";s:4:"date";s:4:"name";s:13:"recur_enddate";s:4:"help";s:57:"repeat the event until which date (empty means unlimited)";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}i:4;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:13:",,,recur_data";s:5:"label";s:11:"Repeat days";}s:1:"B";a:4:{s:4:"type";s:10:"select-dow";s:4:"size";s:3:"5,1";s:4:"name";s:10:"recur_data";s:4:"help";s:44:"Days of the week for a weekly repeated event";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:4;s:4:"size";s:8:"100%,200";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:3:"200";}}}','size' => '100%,200','style' => '','modified' => '1118737412',);