forked from extern/egroupware
several big changes in calendar:
- contacts as participants - new participants view - no more explicit view mode, event opens editable, if one has enough rights --> if one is using trunk on a productive system, better wait 'til this had some testing
This commit is contained in:
parent
72a8d897b9
commit
d5b6efc7f1
@ -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',
|
||||
|
@ -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 "<p>bocalupdate::set_status($cal_id,$user_type,$user_id,$status,$recur_date)</p>\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 "<p>bocalupdate::set_status($cal_id,$uid,$status,$recur_date)</p>\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);
|
||||
}
|
||||
}
|
||||
|
@ -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]."<br />\n";
|
||||
if ($event['participant_types'][$type][$uid]{0} != $status{0}) // status changed by user
|
||||
{
|
||||
if ($this->bo->set_status($event['id'],$type,$uid,$status,$event['recur_type'] != MCAL_RECUR_NONE ? $event['start'] : 0))
|
||||
case 'add':
|
||||
if (!$content['participants']['account'] && !$content['participants']['resource'])
|
||||
{
|
||||
$event['participants'][$type == 'u' ? (int) $uid : $type.$uid] =
|
||||
$event['participant_types'][$type][$uid] = $status.$quantity;
|
||||
// refreshing the calendar-view with the changed participant-status
|
||||
$msg = lang('Status changed');
|
||||
if (!$preserv['no_popup'])
|
||||
$msg = lang('You need to select an account, contact or resource first!');
|
||||
}
|
||||
// fall-through
|
||||
case 'delete': // handled in default
|
||||
case 'quantity': // handled in new_resource
|
||||
case 'cal_resources':
|
||||
$uid = false;
|
||||
break;
|
||||
|
||||
case 'resource':
|
||||
list($app,$id) = explode(':',$data);
|
||||
foreach($this->bo->resources as $type => $data) if ($data['app'] == $app) break;
|
||||
$uid = $this->bo->resources[$type]['app'] == $app ? $type.$id : false;
|
||||
// check if new entry is no contact or no account
|
||||
if ($app != 'addressbook' || !($data = $GLOBALS['egw']->accounts->name2id($id,'person_id')))
|
||||
{
|
||||
$status = isset($this->bo->resources[$type]['new_status']) ? ExecMethod($this->bo->resources[$type]['new_status'],$id) : 'U';
|
||||
$quantity = $content['participants']['quantity'] ? $content['participants']['quantity'] : 1;
|
||||
break;
|
||||
}
|
||||
// fall-through for accounts entered as contact
|
||||
case 'account':
|
||||
$id = $uid = $data;
|
||||
$type = 'u';
|
||||
$quantity = 1;
|
||||
$status = $uid == $this->bo->user ? 'A' : 'U';
|
||||
break;
|
||||
|
||||
|
||||
default: // existing participant row
|
||||
foreach(array('uid','status','quantity') as $name)
|
||||
{
|
||||
$$name = $data[$name];
|
||||
}
|
||||
if ($content['participants']['delete'][$uid])
|
||||
{
|
||||
$uid = false; // entry has been deleted
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_numeric($uid))
|
||||
{
|
||||
$js = 'opener.location.href=\''.addslashes($GLOBALS['egw']->link('/index.php',array(
|
||||
'menuaction' => $content['referer'],
|
||||
'msg' => $msg,
|
||||
))).'\';';
|
||||
$id = $uid;
|
||||
$type = 'u';
|
||||
}
|
||||
else
|
||||
{
|
||||
$id = substr($uid,1);
|
||||
$type = $uid{0};
|
||||
}
|
||||
if ($data['old_status'] != $status)
|
||||
{
|
||||
if ($this->bo->set_status($event['id'],$uid,$status,$event['recur_type'] != MCAL_RECUR_NONE ? $event['start'] : 0))
|
||||
{
|
||||
// refreshing the calendar-view with the changed participant-status
|
||||
$msg = lang('Status changed');
|
||||
if (!$preserv['no_popup'])
|
||||
{
|
||||
$js = 'opener.location.href=\''.addslashes($GLOBALS['egw']->link('/index.php',array(
|
||||
'menuaction' => $content['referer'],
|
||||
'msg' => $msg,
|
||||
))).'\';';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
unset($event['participants'][$name]); // unset the status-changes from the event
|
||||
if (!$uid || !$status || $status == 'G') continue; // empty, deleted, group-invitation --> ignore
|
||||
|
||||
$event['participants'][$uid] = $event['participant_types'][$type][$id] =
|
||||
$status.((int) $quantity > 1 ? (int)$quantity : '');
|
||||
}
|
||||
}
|
||||
$preserv = array(
|
||||
'view' => $view,
|
||||
'edit_single' => $content['edit_single'],
|
||||
'actual_date' => $content['actual_date'],
|
||||
'referer' => $content['referer'],
|
||||
'no_popup' => $content['no_popup'],
|
||||
$this->tabs => $content[$this->tabs],
|
||||
);
|
||||
switch($button)
|
||||
switch((string)$button)
|
||||
{
|
||||
case 'exception': // create an exception in a recuring event
|
||||
$preserv['edit_single'] = $content['start'];
|
||||
$event['end'] += $content['actual_date'] - $event['start'];
|
||||
$event['start'] = $preserv['edit_single'] = $preserv['actual_date'];
|
||||
$event['recur_type'] = MCAL_RECUR_NONE;
|
||||
foreach(array('recur_enddate','recur_interval','recur_exception','recur_data') as $name)
|
||||
{
|
||||
unset($event[$name]);
|
||||
}
|
||||
$msg = lang('Exception created - you can now edit or delete it');
|
||||
break;
|
||||
|
||||
case 'edit':
|
||||
if ($content['recur_type'] != MCAL_RECUR_NONE)
|
||||
{
|
||||
// need to reload start and end of the serie
|
||||
$event = $this->bo->read($event['id'],0);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'copy': // create new event with copied content, some content need to be unset to make a "new" event
|
||||
unset($event['id']);
|
||||
unset($event['uid']);
|
||||
@ -347,10 +352,16 @@ class uiforms extends uical
|
||||
$button = $event['button_was']; // save or apply
|
||||
unset($event['button_was']);
|
||||
// fall through
|
||||
case 'mail':
|
||||
case 'save':
|
||||
case 'apply':
|
||||
if ($event['id'] && !$this->bo->check_perms(EGW_ACL_EDIT,$event))
|
||||
{
|
||||
if ($button == 'mail') // just mail without edit-rights is ok
|
||||
{
|
||||
$js = $this->custom_mail($event,false);
|
||||
break;
|
||||
}
|
||||
$msg = lang('Permission denied');
|
||||
break;
|
||||
}
|
||||
@ -414,10 +425,9 @@ class uiforms extends uical
|
||||
'msg' => $msg,
|
||||
))).'\';';
|
||||
|
||||
if ($content['custom_mail'])
|
||||
if ($button == 'mail')
|
||||
{
|
||||
$js = $this->custom_mail($event,!$content['id'])."\n".$js; // first open the new window and then update the view
|
||||
unset($event['custom_mail']);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -486,7 +496,7 @@ class uiforms extends uical
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (in_array($button,array('cancel','save','delete','delete_series')))
|
||||
if (in_array($button,array('cancel','save','delete')))
|
||||
{
|
||||
if ($content['no_popup'])
|
||||
{
|
||||
@ -514,13 +524,27 @@ class uiforms extends uical
|
||||
$to = array();
|
||||
foreach($event['participants'] as $uid => $status)
|
||||
{
|
||||
if (is_numeric($uid) && $uid != $this->user && $status != 'R' && $GLOBALS['egw']->accounts->get_type($uid) == 'u')
|
||||
if ($status == 'R' || $uid == $this->user) continue;
|
||||
|
||||
if (is_numeric($uid) && $GLOBALS['egw']->accounts->get_type($uid) == 'u')
|
||||
{
|
||||
$GLOBALS['egw']->accounts->get_account_name($uid,$lid,$firstname,$lastname);
|
||||
|
||||
$to[] = $firstname.' '.$lastname.
|
||||
' <'.$GLOBALS['egw']->accounts->id2name($uid,'account_email').'>';
|
||||
}
|
||||
if ($uid{0} == 'c' )
|
||||
{
|
||||
if (!is_object($GLOBALS['egw']->contacts))
|
||||
{
|
||||
require_once(EGW_API_INC.'/class.contacts.inc.php');
|
||||
$GLOBALS['egw']->contacts = new contacts();
|
||||
}
|
||||
if (($contact = $GLOBALS['egw']->contacts->read(substr($uid,1))) && ($contact['email'] || $contact['email_home']))
|
||||
{
|
||||
$to[] = $contact['n_fn'].' <'.($contact['email']?$contact['email']:$contact['email_home']).'>';
|
||||
}
|
||||
}
|
||||
}
|
||||
list($subject,$body) = $this->bo->get_update_message($event,$added ? MSG_ADDED : MSG_MODIFIED); // update-message is in TZ of the user
|
||||
|
||||
@ -562,22 +586,25 @@ class uiforms extends uical
|
||||
function edit($event=null,$preserv=null,$msg='',$js = 'window.focus();',$link_to_id='')
|
||||
{
|
||||
$etpl =& CreateObject('etemplate.etemplate','calendar.edit');
|
||||
|
||||
$sel_options = array(
|
||||
'recur_type' => &$this->bo->recur_types,
|
||||
'accounts_status' => $this->bo->verbose_status,
|
||||
'owner' => array(),
|
||||
'duration' => $this->durations,
|
||||
'recur_type' => &$this->bo->recur_types,
|
||||
'status' => $this->bo->verbose_status,
|
||||
'duration' => $this->durations,
|
||||
'action' => array(
|
||||
'copy' => array('label' => 'Copy', 'title' => 'Copy this event'),
|
||||
'ical' => array('label' => 'Export', 'title' => 'Download this event as iCal'),
|
||||
'mail' => array('label' => 'Mail participants', 'title' => 'compose a mail to all participants after the event is saved'),
|
||||
),
|
||||
);
|
||||
unset($sel_options['status']['G']);
|
||||
if (!is_array($event))
|
||||
{
|
||||
$preserv = array(
|
||||
'no_popup' => isset($_GET['no_popup']),
|
||||
'referer' => preg_match('/menuaction=([^&]+)/',$_SERVER['HTTP_REFERER'],$matches) ? $matches[1] : $this->view_menuaction,
|
||||
'view' => $preserv['view'],
|
||||
);
|
||||
$cal_id = (int) $_GET['cal_id'];
|
||||
|
||||
|
||||
if (!$cal_id || $cal_id && !($event = $this->bo->read($cal_id,$_GET['date'])) || !$this->bo->check_perms(EGW_ACL_READ,$event))
|
||||
{
|
||||
if ($cal_id)
|
||||
@ -588,14 +615,20 @@ class uiforms extends uical
|
||||
}
|
||||
else
|
||||
{
|
||||
$GLOBALS['egw']->common->egw_header();
|
||||
parse_navbar();
|
||||
echo '<p class="redItalic" align="center">'.lang('Permission denied')."</p>\n";
|
||||
$GLOBALS['egw']->framework->render('<p class="redItalic" align="center">'.lang('Permission denied')."</p>\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'] .= "<script>\n$js\n</script>\n";
|
||||
$etpl->exec('calendar.uiforms.process_edit',$content,$sel_options,$readonlys,$preserv,$preserv['no_popup'] ? 0 : 2);
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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',);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user