forked from extern/egroupware
using new historylog custom field stuff, specially logging each custome field separate
This commit is contained in:
parent
e01df197ae
commit
d7a6328c12
@ -142,12 +142,6 @@ class timesheet_bo extends so_sql_cf
|
|||||||
//'link_to' => 'Attachments & Links',
|
//'link_to' => 'Attachments & Links',
|
||||||
'customfields' => 'Custom fields',
|
'customfields' => 'Custom fields',
|
||||||
);
|
);
|
||||||
/**
|
|
||||||
* setting field-name from DB to history status
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
var $field2history = array();
|
|
||||||
/**
|
/**
|
||||||
* Name of the timesheet table storing custom fields
|
* Name of the timesheet table storing custom fields
|
||||||
*/
|
*/
|
||||||
@ -214,10 +208,6 @@ class timesheet_bo extends so_sql_cf
|
|||||||
$GLOBALS['timesheet_bo'] =& $this;
|
$GLOBALS['timesheet_bo'] =& $this;
|
||||||
}
|
}
|
||||||
$this->grants = $GLOBALS['egw']->acl->get_grants(TIMESHEET_APP);
|
$this->grants = $GLOBALS['egw']->acl->get_grants(TIMESHEET_APP);
|
||||||
//set fields for tracking
|
|
||||||
$this->field2history = array_keys($this->db_cols);
|
|
||||||
$this->field2history = array_diff(array_combine($this->field2history,$this->field2history),array('ts_modified'));
|
|
||||||
$this->field2history += array('customfields' => '#c'); //add custom fields for history
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -496,43 +486,32 @@ class timesheet_bo extends so_sql_cf
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if we have a real modification
|
// check if we have a real modification
|
||||||
// read the old record
|
// read the old record
|
||||||
$new =& $this->data;
|
$new =& $this->data;
|
||||||
unset($this->data);
|
unset($this->data);
|
||||||
$this->read($new['ts_id']);
|
$this->read($new['ts_id']);
|
||||||
$old =& $this->data;
|
$old =& $this->data;
|
||||||
$this->data =& $new;
|
$this->data =& $new;
|
||||||
$changed[] = array();
|
$changed[] = array();
|
||||||
if (isset($old)) foreach($old as $name => $value)
|
if (isset($old)) foreach($old as $name => $value)
|
||||||
{
|
{
|
||||||
if (isset($new[$name]) && $new[$name] != $value) $changed[] = $name;
|
if (isset($new[$name]) && $new[$name] != $value) $changed[] = $name;
|
||||||
}
|
}
|
||||||
if (!$changed)
|
if (!$changed)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_object($this->tracking))
|
if (!is_object($this->tracking))
|
||||||
{
|
{
|
||||||
$this->tracking = new timesheet_tracking($this);
|
$this->tracking = new timesheet_tracking($this);
|
||||||
|
|
||||||
$this->tracking->html_content_allow = true;
|
$this->tracking->html_content_allow = true;
|
||||||
}
|
}
|
||||||
if ($this->customfields)
|
if ($this->tracking->track($this->data,$old,$this->user) === false)
|
||||||
{
|
{
|
||||||
$data_custom = $old_custom = array();
|
return implode(', ',$this->tracking->errors);
|
||||||
foreach($this->customfields as $name => $custom)
|
}
|
||||||
{
|
|
||||||
if (isset($this->data['#'.$name]) && (string)$this->data['#'.$name]!=='') $data_custom[] = $custom['label'].': '.$this->data['#'.$name];
|
|
||||||
if (isset($old['#'.$name]) && (string)$old['#'.$name]!=='') $old_custom[] = $custom['label'].': '.$old['#'.$name];
|
|
||||||
}
|
|
||||||
$this->data['customfields'] = implode("\n",$data_custom);
|
|
||||||
$old['customfields'] = implode("\n",$old_custom);
|
|
||||||
}
|
|
||||||
if (!$this->tracking->track($this->data,$old,$this->user))
|
|
||||||
{
|
|
||||||
return implode(', ',$this->tracking->errors);
|
|
||||||
}
|
|
||||||
if (!($err = parent::save()))
|
if (!($err = parent::save()))
|
||||||
{
|
{
|
||||||
// notify the link-class about the update, as other apps may be subscribt to it
|
// notify the link-class about the update, as other apps may be subscribt to it
|
||||||
|
@ -65,14 +65,17 @@ class timesheet_tracking extends bo_tracking
|
|||||||
* @param timesheet_bo $botimesheet
|
* @param timesheet_bo $botimesheet
|
||||||
* @return timesheet_tracking
|
* @return timesheet_tracking
|
||||||
*/
|
*/
|
||||||
function __construct($bo)
|
function __construct(timesheet_bo $bo)
|
||||||
{
|
{
|
||||||
parent::__construct(); // calling the constructor of the extended class
|
|
||||||
|
|
||||||
$this->bo = $bo;
|
$this->bo = $bo;
|
||||||
|
|
||||||
$this->field2history = $this->bo->field2history;
|
//set fields for tracking
|
||||||
|
$this->field2history = array_keys($this->bo->db_cols);
|
||||||
|
$this->field2history = array_diff(array_combine($this->field2history,$this->field2history),array('ts_modified'));
|
||||||
|
$this->field2history += array('customfields' => '#c'); // to display old customfield data in history
|
||||||
|
|
||||||
|
// custom fields are now handled by parent::__construct('tracker')
|
||||||
|
parent::__construct('timesheet');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -84,6 +84,7 @@ class timesheet_ui extends timesheet_bo
|
|||||||
}
|
}
|
||||||
$referer = preg_match('/menuaction=([^&]+)/',$_SERVER['HTTP_REFERER'],$matches) ? $matches[1] :
|
$referer = preg_match('/menuaction=([^&]+)/',$_SERVER['HTTP_REFERER'],$matches) ? $matches[1] :
|
||||||
(strpos($_SERVER['HTTP_REFERER'],'/infolog/index.php') !== false ? 'infolog.infolog_ui.index' : TIMESHEET_APP.'.timesheet_ui.index');
|
(strpos($_SERVER['HTTP_REFERER'],'/infolog/index.php') !== false ? 'infolog.infolog_ui.index' : TIMESHEET_APP.'.timesheet_ui.index');
|
||||||
|
|
||||||
if (!isset($GLOBALS['egw_info']['user']['apps']['admin']) && $this->data['ts_status'])
|
if (!isset($GLOBALS['egw_info']['user']['apps']['admin']) && $this->data['ts_status'])
|
||||||
{
|
{
|
||||||
if ($this->status_labels_config[$this->data['ts_status']]['admin'])
|
if ($this->status_labels_config[$this->data['ts_status']]['admin'])
|
||||||
@ -352,10 +353,8 @@ class timesheet_ui extends timesheet_bo
|
|||||||
'cat_id' => 'select-cat',
|
'cat_id' => 'select-cat',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
foreach($this->field2history as $field => $status)
|
$sel_options['status'] = $this->field2label;
|
||||||
{
|
|
||||||
$sel_options['status'][$status] = $this->field2label[$field];
|
|
||||||
}
|
|
||||||
// the actual title-blur is either the preserved title blur (if we are called from infolog entry),
|
// the actual title-blur is either the preserved title blur (if we are called from infolog entry),
|
||||||
// or the preserved project-blur comming from the current selected project
|
// or the preserved project-blur comming from the current selected project
|
||||||
$content['ts_title_blur'] = $preserv['ts_title_blur'] ? $preserv['ts_title_blur'] : $preserv['ts_project_blur'];
|
$content['ts_title_blur'] = $preserv['ts_title_blur'] ? $preserv['ts_title_blur'] : $preserv['ts_project_blur'];
|
||||||
@ -380,6 +379,11 @@ class timesheet_ui extends timesheet_bo
|
|||||||
{
|
{
|
||||||
$readonlys['ts_owner'] = true;
|
$readonlys['ts_owner'] = true;
|
||||||
}
|
}
|
||||||
|
// in view mode, we need to add the owner, if it does not exist, otherwise it's displayed empty
|
||||||
|
if ($view && $content['ts_owner'] && !isset($edit_grants[$content['ts_owner']]))
|
||||||
|
{
|
||||||
|
$edit_grants[$content['ts_owner']] = common::grab_owner_name($content['ts_owner']);
|
||||||
|
}
|
||||||
$sel_options['ts_owner'] = $edit_grants;
|
$sel_options['ts_owner'] = $edit_grants;
|
||||||
$sel_options['ts_status'] = $this->status_labels;
|
$sel_options['ts_status'] = $this->status_labels;
|
||||||
$GLOBALS['egw_info']['flags']['app_header'] = lang('timesheet').' - '.
|
$GLOBALS['egw_info']['flags']['app_header'] = lang('timesheet').' - '.
|
||||||
|
Loading…
Reference in New Issue
Block a user