forked from extern/egroupware
* Calendar: fixed various issues with history in calendar: id display, unecessary stuff loged, ...
This commit is contained in:
parent
c1718a29ad
commit
3819816248
@ -1020,8 +1020,6 @@ class calendar_boupdate extends calendar_bo
|
||||
|
||||
// Update history
|
||||
$tracking = new calendar_tracking($this);
|
||||
$event['category'] = implode(',', $this->get_categories($event['category']));
|
||||
$old_event['category'] = implode(',', $this->get_categories($old_event['category']));
|
||||
if (empty($event['id']) && !empty($cal_id)) $event['id']=$cal_id;
|
||||
$tracking->track($event, $old_event);
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* @author Nathan Gray
|
||||
* @package calendar
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @version $Id: class.addressbook_tracking.inc.php 29164 2010-02-09 21:56:39Z jlehrke $
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -52,7 +52,6 @@ class calendar_tracking extends bo_tracking
|
||||
'description' => 'description',
|
||||
'location' => 'location',
|
||||
'reference' => 'reference',
|
||||
'modifier' => 'modifier',
|
||||
'non_blocking' => 'non_blocking',
|
||||
'special' => 'special',
|
||||
'creator' => 'creator',
|
||||
@ -64,13 +63,14 @@ class calendar_tracking extends bo_tracking
|
||||
|
||||
'participants' => array('user_id', 'status', 'role', 'recur'),
|
||||
'participants-c' => array('user_id', 'status', 'quantity', 'role', 'recur'),
|
||||
'participants-r' => array('user_id', 'status', 'quantity', 'role', 'recur'),
|
||||
|
||||
// Custom fields added in constructor
|
||||
);
|
||||
|
||||
/**
|
||||
* Translate field name to label
|
||||
*/
|
||||
* Translate field name to label
|
||||
*/
|
||||
public $field2label = array(
|
||||
'owner' => 'owner',
|
||||
'category' => 'category',
|
||||
@ -80,18 +80,18 @@ class calendar_tracking extends bo_tracking
|
||||
'description' => 'description',
|
||||
'location' => 'location',
|
||||
'reference' => 'reference',
|
||||
'modifier' => 'modifier',
|
||||
'non_blocking' => 'non blocking',
|
||||
'special' => 'special',
|
||||
'creator' => 'creator',
|
||||
'recurrence' => 'recurrence',
|
||||
'tz_id' => 'tz_id',
|
||||
'recurrence'=> 'recurrence',
|
||||
'tz_id' => 'timezone',
|
||||
|
||||
'start' => 'start',
|
||||
'end' => 'end',
|
||||
|
||||
'participants' => 'Participants: User, Status, Role',
|
||||
'participants-c'=> 'Participants: User, Status, Quantity, Role'
|
||||
'participants-c'=> 'Participants: User, Status, Quantity, Role',
|
||||
'participants-r'=> 'Participants: Resource, Status, Quantity',
|
||||
|
||||
// Custom fields added in constructor
|
||||
);
|
||||
@ -114,14 +114,15 @@ class calendar_tracking extends bo_tracking
|
||||
}
|
||||
|
||||
/**
|
||||
* Tracks the changes in one entry $data, by comparing it with the last version in $old
|
||||
* Overrides parent to reformat participants into a format parent can handle
|
||||
*/
|
||||
* Tracks the changes in one entry $data, by comparing it with the last version in $old
|
||||
* Overrides parent to reformat participants into a format parent can handle
|
||||
*/
|
||||
public function track(array $data,array $old=null,$user=null,$deleted=null,array $changed_fields=null)
|
||||
{
|
||||
{
|
||||
// Don't try to track dates on recurring events.
|
||||
// It won't change for the base event, and any change to the time creates an exception
|
||||
if($data['recur_type']) {
|
||||
if($data['recur_type'])
|
||||
{
|
||||
unset($data['start']); unset($data['end']);
|
||||
unset($old['start']); unset($old['end']);
|
||||
}
|
||||
@ -132,14 +133,17 @@ class calendar_tracking extends bo_tracking
|
||||
* filter by it later.
|
||||
*/
|
||||
$recur_prefix = $data['recur_date'] ? $data['recur_date'] : '';
|
||||
if(is_array($data['participants'])) {
|
||||
if(is_array($data['participants']))
|
||||
{
|
||||
$participants = $data['participants'];
|
||||
$data['participants'] = array();
|
||||
foreach($participants as $id => $status) {
|
||||
foreach($participants as $uid => $status)
|
||||
{
|
||||
calendar_so::split_status($status, $quantity, $role);
|
||||
$field = ($id[0] == 'c' ? 'participants-c' : 'participants');
|
||||
calendar_so::split_user($uid, $user_type, $user_id);
|
||||
$field = is_numeric($uid) ? 'participants' : 'participants-'.$user_type;
|
||||
$data[$field][] = array(
|
||||
'user_id' => $id[0] == 'c' ? substr($id,1) : $id,
|
||||
'user_id' => $user_id,
|
||||
'status' => $status,
|
||||
'quantity' => $quantity,
|
||||
'role' => $role,
|
||||
@ -147,14 +151,17 @@ class calendar_tracking extends bo_tracking
|
||||
);
|
||||
}
|
||||
}
|
||||
if(is_array($old['participants'])) {
|
||||
if(is_array($old['participants']))
|
||||
{
|
||||
$participants = $old['participants'];
|
||||
$old['participants'] = array();
|
||||
foreach($participants as $id => $status) {
|
||||
foreach($participants as $uid => $status)
|
||||
{
|
||||
calendar_so::split_status($status, $quantity, $role);
|
||||
$field = ($id[0] == 'c' ? 'participants-c' : 'participants');
|
||||
calendar_so::split_user($uid, $user_type, $user_id);
|
||||
$field = is_numeric($uid) ? 'participants' : 'participants-'.$user_type;
|
||||
$old[$field][] = array(
|
||||
'user_id' => $id[0] == 'c' ? substr($id,1) : $id,
|
||||
'user_id' => $user_id,
|
||||
'status' => $status,
|
||||
'quantity' => $quantity,
|
||||
'role' => $role,
|
||||
@ -166,9 +173,10 @@ class calendar_tracking extends bo_tracking
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides parent because calendar_boupdates handles the notifications
|
||||
*/
|
||||
public function do_notifications($data,$old,$deleted=null) {
|
||||
* Overrides parent because calendar_boupdates handles the notifications
|
||||
*/
|
||||
public function do_notifications($data,$old,$deleted=null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2260,13 +2260,16 @@ function replace_eTemplate_onsubmit()
|
||||
$content['history'] = array(
|
||||
'id' => $content['id'],
|
||||
'app' => 'calendar',
|
||||
'status-widgets' => array(
|
||||
'owner' => 'select-account',
|
||||
'cat_id' => 'select-cat',
|
||||
'non_blocking' => array(''=>lang('No'), 1=>lang('Yes')),
|
||||
'status-widgets' => array(
|
||||
'owner' => 'select-account',
|
||||
'creator' => 'select-account',
|
||||
'category' => 'select-cat',
|
||||
'non_blocking' => array(''=>lang('No'), 1=>lang('Yes')),
|
||||
'public' => array(''=>lang('No'), 1=>lang('Yes')),
|
||||
|
||||
'start' => 'date-time',
|
||||
'end' => 'date-time',
|
||||
'start' => 'date-time',
|
||||
'end' => 'date-time',
|
||||
'tz_id' => 'select-timezone',
|
||||
|
||||
// Participants
|
||||
'participants' => array(
|
||||
@ -2280,12 +2283,19 @@ function replace_eTemplate_onsubmit()
|
||||
'label',
|
||||
$sel_options['role']
|
||||
),
|
||||
'participants-r' => array(
|
||||
'link:resources',
|
||||
$sel_options['status'],
|
||||
'label',
|
||||
$sel_options['role']
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
// Get participants for only this one, if it's recurring. The date is on the end of the value.
|
||||
if($content['recur_type'] || $content['recurrence']) {
|
||||
if($content['recur_type'] || $content['recurrence'])
|
||||
{
|
||||
$content['history']['filter'] = array(
|
||||
'(history_status NOT LIKE \'participants%\' OR (history_status LIKE \'participants%\' AND (
|
||||
history_new_value LIKE \'%' . bo_tracking::ONE2N_SEPERATOR . $content['recurrence'] . '\' OR
|
||||
@ -2295,7 +2305,8 @@ function replace_eTemplate_onsubmit()
|
||||
|
||||
// Translate labels
|
||||
$tracking = new calendar_tracking();
|
||||
foreach($tracking->field2label as $field => $label) {
|
||||
foreach($tracking->field2label as $field => $label)
|
||||
{
|
||||
$sel_options[$status][$field] = lang($label);
|
||||
}
|
||||
// custom fields are now "understood" directly by historylog widget
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* eGroupWare EditableTemplates - Business Objects
|
||||
* EGroupware EditableTemplates - Business Objects
|
||||
*
|
||||
* @link http://www.egroupware.org
|
||||
* @author Ralf Becker <RalfBecker@outdoor-training.de>
|
||||
* @copyright 2002-10 by RalfBecker@outdoor-training.de
|
||||
* @copyright 2002-11 by RalfBecker@outdoor-training.de
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @package etemplate
|
||||
* @subpackage api
|
||||
@ -488,7 +488,15 @@ class boetemplate extends soetemplate
|
||||
*/
|
||||
public function widgetExists($type)
|
||||
{
|
||||
return isset(self::$types[$type]) || $this->haveExtension($type);
|
||||
if (isset(self::$types[$type])) return true;
|
||||
|
||||
list($main,$sub) = explode('-',$type);
|
||||
|
||||
if ($this->haveExtension($main) && $this->loadExtension($main) && ($extension = self::$extensions[$main]))
|
||||
{
|
||||
return $type == $main || is_array($extension->human_name) && isset($extension->human_name[$type]);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -79,14 +79,15 @@ class historylog_widget
|
||||
if($type == 'select-cat')
|
||||
{
|
||||
list($rows,$type1,$type2,$type3,$type4,$type5,$type6) = explode(',',$options);
|
||||
$type6 = true;
|
||||
$type6 = 2;
|
||||
$options = implode(',',array($rows,$type1,$type2,$type3,$type4,$type5,$type6));
|
||||
}
|
||||
$cell = etemplate::empty_cell($type,$cell['name'],array('readonly' => true,'size' => $options));
|
||||
if (is_array($type))
|
||||
{
|
||||
list($t) = explode(':',$type[0]);
|
||||
if (isset($type[0]) && // numeric indexed array --> multiple values of 1:N releation
|
||||
$tmpl->widgetExists($type[0]))
|
||||
$tmpl->widgetExists($t))
|
||||
{
|
||||
$cell['type'] = 'vbox';
|
||||
$cell['size'] = '0,,0,0';
|
||||
|
@ -189,7 +189,7 @@ class select_widget
|
||||
}
|
||||
elseif ($id) // Display id of no longer existing cat
|
||||
{
|
||||
$cell['sel_options'][$id] = lang('Missing: %1',$id);
|
||||
$cell['sel_options'][$id] = $type6 == '2' ? $id : lang('Missing: %1',$id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user