mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 14:41:29 +01:00
Fix indenting and sorting on statuses
This commit is contained in:
parent
fe2b0d17bc
commit
418debd53c
@ -110,10 +110,6 @@ class timesheet_bo extends so_sql_cf
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
var $status_labels_config = array();
|
var $status_labels_config = array();
|
||||||
/**
|
|
||||||
* Array with substatus of label configuration
|
|
||||||
*/
|
|
||||||
var $status_labels_substatus = array();
|
|
||||||
/**
|
/**
|
||||||
* Instance of the timesheet_tracking object
|
* Instance of the timesheet_tracking object
|
||||||
*
|
*
|
||||||
@ -158,48 +154,10 @@ class timesheet_bo extends so_sql_cf
|
|||||||
|
|
||||||
$this->config_data = config::read(TIMESHEET_APP);
|
$this->config_data = config::read(TIMESHEET_APP);
|
||||||
$this->quantity_sum = $this->config_data['quantity_sum'] == 'true';
|
$this->quantity_sum = $this->config_data['quantity_sum'] == 'true';
|
||||||
if($this->config_data['status_labels'])
|
|
||||||
{
|
// Load & process statuses
|
||||||
$this->status_labels =& $this->config_data['status_labels'];
|
if($this->config_data['status_labels']) $this->load_statuses();
|
||||||
if (!is_array($this->status_labels)) $this->status_labels= array($this->status_labels);
|
|
||||||
foreach ($this->status_labels as $status_id => $label)
|
|
||||||
{
|
|
||||||
if (!is_array($label))
|
|
||||||
{ //old values, bevor parent status
|
|
||||||
$name = $label;
|
|
||||||
$label=array();
|
|
||||||
$label['name'] = $name;
|
|
||||||
$label['parent'] = '';
|
|
||||||
}
|
|
||||||
$sort_labels[$status_id][] = $label['name'];
|
|
||||||
$this->status_labels_config[$status_id] = $label;
|
|
||||||
if ($label['parent']!='')
|
|
||||||
{
|
|
||||||
$sort = $label['parent']?$label['parent']:$status_id;
|
|
||||||
$sort_labels[$sort][$status_id]= $label['name'];
|
|
||||||
$this->status_labels_substatus[$sort][$status_id] = $status_id;
|
|
||||||
if (!isset($this->status_labels_substatus[$sort][$sort]))
|
|
||||||
{
|
|
||||||
$this->status_labels_substatus[$sort][$sort]= $sort;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
unset($this->status_labels);
|
|
||||||
foreach ($sort_labels as $status_id => $label_sub)
|
|
||||||
{
|
|
||||||
if (!isset($this->status_labels[$status_id])) $this->status_labels[$status_id] = $this->status_labels_config[$status_id]['name'];
|
|
||||||
foreach ($sort_labels[$status_id] as $sub_status_id => $sub_label)
|
|
||||||
{
|
|
||||||
if (isset($this->status_labels_config[$sub_status_id]))
|
|
||||||
{
|
|
||||||
$level = ' ';
|
|
||||||
if (isset($this->status_labels_substatus[$sub_status_id])) $this->status_labels_substatus['2level'][$sub_status_id] = $sub_status_id ;
|
|
||||||
if (isset($this->status_labels_substatus['2level'][$status_id])) $level = ' ';
|
|
||||||
$this->status_labels[$sub_status_id]= $level.$this->status_labels_config[$sub_status_id]['name'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$this->today = mktime(0,0,0,date('m',$this->now),date('d',$this->now),date('Y',$this->now));
|
$this->today = mktime(0,0,0,date('m',$this->now),date('d',$this->now),date('Y',$this->now));
|
||||||
|
|
||||||
// save us in $GLOBALS['timesheet_bo'] for ExecMethod used in hooks
|
// save us in $GLOBALS['timesheet_bo'] for ExecMethod used in hooks
|
||||||
@ -210,6 +168,73 @@ class timesheet_bo extends so_sql_cf
|
|||||||
$this->grants = $GLOBALS['egw']->acl->get_grants(TIMESHEET_APP);
|
$this->grants = $GLOBALS['egw']->acl->get_grants(TIMESHEET_APP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load status labels
|
||||||
|
*/
|
||||||
|
protected function load_statuses()
|
||||||
|
{
|
||||||
|
$this->status_labels =& $this->config_data['status_labels'];
|
||||||
|
if (!is_array($this->status_labels)) $this->status_labels= array($this->status_labels);
|
||||||
|
|
||||||
|
foreach ($this->status_labels as $status_id => $label)
|
||||||
|
{
|
||||||
|
if (!is_array($label))
|
||||||
|
{ //old values, before parent status
|
||||||
|
$name = $label;
|
||||||
|
$label=array();
|
||||||
|
$label['name'] = $name;
|
||||||
|
$label['parent'] = '';
|
||||||
|
}
|
||||||
|
$label['id'] = $status_id;
|
||||||
|
$this->status_labels_config[$status_id] = $label;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Organise into tree structure
|
||||||
|
$map = array(
|
||||||
|
'' => array('substatus' => array())
|
||||||
|
);
|
||||||
|
foreach($this->status_labels_config as $id => &$status) {
|
||||||
|
$status['substatus'] = array();
|
||||||
|
$map[$id] = &$status;
|
||||||
|
}
|
||||||
|
foreach($this->status_labels_config as &$status) {
|
||||||
|
$map[$status['parent']]['substatus'][] = &$status;
|
||||||
|
}
|
||||||
|
$tree = $map['']['substatus'];
|
||||||
|
|
||||||
|
// Make nice selectbox labels
|
||||||
|
$this->status_labels = array();
|
||||||
|
$this->make_status_labels($tree, $this->status_labels);
|
||||||
|
|
||||||
|
// Sort config based on tree
|
||||||
|
$sorted = array();
|
||||||
|
foreach($this->status_labels as $status_id => $label) {
|
||||||
|
$sorted[$status_id] = $this->status_labels_config[$status_id];
|
||||||
|
//$sorted[$status_id]['name'] = $label;
|
||||||
|
unset($sorted[$status_id]['substatus']);
|
||||||
|
}
|
||||||
|
$this->status_labels_config = $sorted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make nice labels with leading spaces depending on depth
|
||||||
|
*
|
||||||
|
* @param statuses List of statuses to process, with sub-statuses in a 'substatus' array
|
||||||
|
* @param labels Array of labels, pass array() and labels will be built in it
|
||||||
|
* @param depth Current depth
|
||||||
|
*
|
||||||
|
* @return None, labels are built in labels parameter
|
||||||
|
*/
|
||||||
|
protected function make_status_labels($statuses, &$labels, $depth=0) {
|
||||||
|
foreach($statuses as $status) {
|
||||||
|
$labels[$status['id']] = str_pad('',$depth*12, " ",STR_PAD_LEFT).trim(str_replace(' ','',$status['name']));
|
||||||
|
//$labels[$status['id']] = str_pad('',$depth, "+------",STR_PAD_LEFT).$status['name'];
|
||||||
|
if(count($status['substatus']) > 0) {
|
||||||
|
$this->make_status_labels($status['substatus'], $labels, $depth+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get list of specified grants as uid => Username pairs
|
* get list of specified grants as uid => Username pairs
|
||||||
*
|
*
|
||||||
|
@ -1067,14 +1067,13 @@ class timesheet_ui extends timesheet_bo
|
|||||||
break;
|
break;
|
||||||
case 'apply':
|
case 'apply':
|
||||||
case 'save':
|
case 'save':
|
||||||
foreach($content['statis'] as $cat)
|
foreach($content['statis'] as &$cat)
|
||||||
{
|
{
|
||||||
$id = $cat['id'];
|
$id = $cat['id'];
|
||||||
if (($cat ['name'] !== $this->status_labels_config[$id]) && ($cat ['name'] !== '') || ($cat ['parent'] !== $this->status_labels_config[$id]['parent']) && ($cat ['parent'] !== ''))
|
if (($cat ['name'] !== $this->status_labels_config[$id]) && ($cat ['name'] !== '') || ($cat ['parent'] !== $this->status_labels_config[$id]['parent']) && ($cat ['parent'] !== ''))
|
||||||
{
|
{
|
||||||
$this->status_labels[$id] = $cat['name'];
|
|
||||||
$this->status_labels_config[$id] = array(
|
$this->status_labels_config[$id] = array(
|
||||||
'name' => $cat['name'],
|
'name' => trim(str_replace(' ', '', $cat['name'])),
|
||||||
'parent' => $cat['parent'],
|
'parent' => $cat['parent'],
|
||||||
'admin' => $cat['admin']);
|
'admin' => $cat['admin']);
|
||||||
$need_update = true;
|
$need_update = true;
|
||||||
@ -1083,6 +1082,8 @@ class timesheet_ui extends timesheet_bo
|
|||||||
if ($need_update)
|
if ($need_update)
|
||||||
{
|
{
|
||||||
config::save_value('status_labels',$this->status_labels_config,TIMESHEET_APP);
|
config::save_value('status_labels',$this->status_labels_config,TIMESHEET_APP);
|
||||||
|
$this->config_data = config::read(TIMESHEET_APP);
|
||||||
|
$this->load_statuses();
|
||||||
$msg .= lang('Status updated.');
|
$msg .= lang('Status updated.');
|
||||||
}
|
}
|
||||||
if ($button == 'apply') break;
|
if ($button == 'apply') break;
|
||||||
@ -1108,6 +1109,7 @@ class timesheet_ui extends timesheet_bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
$i = 1;
|
$i = 1;
|
||||||
|
$max_id = 0;
|
||||||
unset($content['statis']);
|
unset($content['statis']);
|
||||||
foreach($this->status_labels_config as $id => $label)
|
foreach($this->status_labels_config as $id => $label)
|
||||||
{
|
{
|
||||||
@ -1116,11 +1118,12 @@ class timesheet_ui extends timesheet_bo
|
|||||||
$content['statis'][$i]['parent']= $label['parent'];
|
$content['statis'][$i]['parent']= $label['parent'];
|
||||||
$content['statis'][$i]['admin']= $label['admin'];
|
$content['statis'][$i]['admin']= $label['admin'];
|
||||||
$i++;
|
$i++;
|
||||||
|
$max_id = max($id, $max_id);
|
||||||
}
|
}
|
||||||
$content['statis'][$i]['name'] = '';
|
$content['statis'][$i]['name'] = '';
|
||||||
$content['statis'][$i]['parent'];
|
$content['statis'][$i]['parent'];
|
||||||
$content['statis'][$i]['admin'] = '';
|
$content['statis'][$i]['admin'] = '';
|
||||||
$content['statis'][$i]['id'] = ++$id;
|
$content['statis'][$i]['id'] = ++$max_id;
|
||||||
|
|
||||||
$content['msg'] = $msg;
|
$content['msg'] = $msg;
|
||||||
$preserv = $content;
|
$preserv = $content;
|
||||||
|
Loading…
Reference in New Issue
Block a user