Context menu for InfoLog: NOT YET COMPLETET, SOME STUFF WILL NOT WORK!

ToDo:
- implement view subs or parent from context
- test all context actions (some do not work)
- test CSS based disabling of actions
- change delegation or links popup not yet working (just an alert in index.js)
- delete of entries with subs (serverside confirmation displaying subs) probably not working
This commit is contained in:
Ralf Becker 2011-05-02 19:41:21 +00:00
parent 87c960b6ea
commit 1ef6edd5e8
39 changed files with 465 additions and 409 deletions

View File

@ -128,7 +128,7 @@ class infolog_bo
'own-open-overdue' => 'own overdue', 'own-open-overdue' => 'own overdue',
'own-upcoming' => 'own upcoming', 'own-upcoming' => 'own upcoming',
'own-open-upcoming' => 'own open and upcoming', 'own-open-upcoming' => 'own open and upcoming',
'open-today' => 'open', 'open-today' => 'open(status)',
'open-overdue' => 'overdue', 'open-overdue' => 'overdue',
'upcoming' => 'upcoming', 'upcoming' => 'upcoming',
'open-upcoming' => 'open and upcoming', 'open-upcoming' => 'open and upcoming',

View File

@ -91,7 +91,7 @@ class infolog_ui
*/ */
function __construct() function __construct()
{ {
if ($GLOBALS['egw_info']['flags']['currentapp'] != 'infolog') $GLOBALS['egw']->translation->add_app('infolog'); if ($GLOBALS['egw_info']['flags']['currentapp'] != 'infolog') translation::add_app('infolog');
$this->bo = new infolog_bo(); $this->bo = new infolog_bo();
$this->tmpl = new etemplate(); $this->tmpl = new etemplate();
@ -161,8 +161,11 @@ class infolog_ui
$info['info_percent'] = (int) $info['info_percent'].'%'; $info['info_percent'] = (int) $info['info_percent'].'%';
$editrights = $this->bo->check_access($info,EGW_ACL_EDIT); $editrights = $this->bo->check_access($info,EGW_ACL_EDIT);
$isresposible = $this->bo->is_responsible($info); $isresposible = $this->bo->is_responsible($info);
$readonlys["edit[$id]"] = !($editrights || // edit rights or more then standard responsible rights if (($readonlys["edit[$id]"] = !($editrights || // edit rights or more then standard responsible rights
$isresposible && array_diff($this->bo->responsible_edit,array('info_status','info_percent','info_datecompleted'))); $isresposible && array_diff($this->bo->responsible_edit,array('info_status','info_percent','info_datecompleted')))))
{
$info['class'] .= 'rowNoEdit ';
}
$readonlys["close[$id]"] = $done || ($readonlys["edit_status[$id]"] = $readonlys["close[$id]"] = $done || ($readonlys["edit_status[$id]"] =
!($editrights || $isresposible)); !($editrights || $isresposible));
$readonlys["close_all[$id]"] = ($done) || !$info['info_anz_subs'] || ($readonlys["edit_status[$id]"] = $readonlys["close_all[$id]"] = ($done) || !$info['info_anz_subs'] || ($readonlys["edit_status[$id]"] =
@ -172,11 +175,21 @@ class infolog_ui
$readonlys["edit_status[$id]"] = $readonlys["edit_percent[$id]"] = $readonlys["edit_status[$id]"] = $readonlys["edit_percent[$id]"] =
!$editrights && !$isresposible && !$editrights && !$isresposible &&
!$this->bo->check_access($info,EGW_ACL_UNDELETE); // undelete is handled like status edit !$this->bo->check_access($info,EGW_ACL_UNDELETE); // undelete is handled like status edit
$readonlys["delete[$id]"] = !$this->bo->check_access($info,EGW_ACL_DELETE); if (($readonlys["delete[$id]"] = !$this->bo->check_access($info,EGW_ACL_DELETE)))
$readonlys["sp[$id]"] = !$this->bo->check_access($info,EGW_ACL_ADD); {
$info['class'] .= 'rowNoDelete ';
}
if (($readonlys["sp[$id]"] = !$this->bo->check_access($info,EGW_ACL_ADD)))
{
$info['class'] .= 'rowNoSubs ';
}
if ($info['info_id_parent']) $info['class'] .= 'rowHasParent ';
if ($info['info_anz_subs'] > 0) $info['class'] .= 'rowHasSubs ';
$readonlys["view[$id]"] = $info['info_anz_subs'] < 1; $readonlys["view[$id]"] = $info['info_anz_subs'] < 1;
$readonlys['view[0]'] = True; // no parent $readonlys['view[0]'] = True; // no parent
$readonlys["timesheet[$id]"] = !isset($GLOBALS['egw_info']['user']['apps']['timesheet']); $readonlys["timesheet[$id]"] = !isset($GLOBALS['egw_info']['user']['apps']['timesheet']);
$readonlys["document[$id]"] = !$this->prefs['default_document'];
if (!$show_links) $show_links = $this->prefs['show_links']; if (!$show_links) $show_links = $this->prefs['show_links'];
if (($show_links != 'none' && $show_links != 'no_describtion' || if (($show_links != 'none' && $show_links != 'no_describtion' ||
@ -233,56 +246,6 @@ class infolog_ui
return $info; return $info;
} }
/**
* Saves state of the infolog list in the session
*
* @param array $values
*/
function save_sessiondata($values)
{
$for = @$values['session_for'] ? $values['session_for'] : @$this->called_by;
//echo "<p>$for: ".__METHOD__.'('.print_r($values,True).") called_by='$this->called_by', for='$for'<br />".function_backtrace()."</p>\n";
$arrayToStore = array(
'search' => $values['search'],
'start' => $values['start'],
'num_rows' => $values['num_rows'],
'filter' => $values['filter'],
'filter2' => $values['filter2'],
'cat_id' => $values['cat_id'],
'order' => $values['order'],
'sort' => $values['sort'],
'action' => $values['action'],
'action_id' => $values['action_id'],
'action_title' => $values['action_title'],
'col_filter' => $values['col_filter'],
'session_for' => $for
);
if ($values['filter']=='bydate')
{
$arrayToStore['startdate'] = $values['startdate'];
$arrayToStore['enddate'] = $values['enddate'];
}
$GLOBALS['egw']->session->appsession($for.'session_data','infolog',$arrayToStore);
}
/**
* reads list-state from the session
*
* @return array
*/
function read_sessiondata()
{
$values = $GLOBALS['egw']->session->appsession(@$this->called_by.'session_data','infolog');
if (!@$values['session_for'] && $this->called_by)
{
$values['session_for'] = $this->called_by;
$this->save_sessiondata($values);
}
//echo "<p>called_by='$this->called_by': ".__METHOD__."() = ".print_r($values,True)."</p>\n";
return $values;
}
/** /**
* Callback for nextmatch widget * Callback for nextmatch widget
* *
@ -293,6 +256,11 @@ class infolog_ui
*/ */
function get_rows(&$query,&$rows,&$readonlys) function get_rows(&$query,&$rows,&$readonlys)
{ {
if (!$query['csv_export'])
{
egw_cache::setSession('infolog', $query['session_for'].'session_data', $query);
$query['actions'] = $this->get_actions($query);
}
$orginal_colfilter = $query['col_filter']; $orginal_colfilter = $query['col_filter'];
if ($query['filter'] == 'bydate') if ($query['filter'] == 'bydate')
{ {
@ -300,8 +268,6 @@ class infolog_ui
$GLOBALS['egw']->js->set_onload("set_style_by_class('table','custom_hide','visibility','visible');"); $GLOBALS['egw']->js->set_onload("set_style_by_class('table','custom_hide','visibility','visible');");
if (is_int($query['startdate'])) $query['col_filter'][] = 'info_startdate >= '.$GLOBALS['egw']->db->quote($query['startdate']); if (is_int($query['startdate'])) $query['col_filter'][] = 'info_startdate >= '.$GLOBALS['egw']->db->quote($query['startdate']);
if (is_int($query['enddate'])) $query['col_filter'][] = 'info_startdate <= '.$GLOBALS['egw']->db->quote($query['enddate']+(60*60*24)-1); if (is_int($query['enddate'])) $query['col_filter'][] = 'info_startdate <= '.$GLOBALS['egw']->db->quote($query['enddate']+(60*60*24)-1);
//unset($query['startdate']);
//unset($query['enddate']);
} }
else else
{ {
@ -309,17 +275,11 @@ class infolog_ui
unset($query['startdate']); unset($query['startdate']);
unset($query['enddate']); unset($query['enddate']);
} }
//_debug_array($query);
//_debug_array($query['col_filter']);
//echo "<p>infolog_ui.get_rows(start=$query[start],search='$query[search]',filter='$query[filter]',cat_id=$query[cat_id],action='$query[action]/$query[action_id]',col_filter=".print_r($query['col_filter'],True).",sort=$query[sort],order=$query[order])</p>\n"; //echo "<p>infolog_ui.get_rows(start=$query[start],search='$query[search]',filter='$query[filter]',cat_id=$query[cat_id],action='$query[action]/$query[action_id]',col_filter=".print_r($query['col_filter'],True).",sort=$query[sort],order=$query[order])</p>\n";
if (!isset($query['start'])) $query['start'] = 0; if (!isset($query['start'])) $query['start'] = 0;
if (!$query['csv_export']) if ($query['csv_export'])
{
$this->save_sessiondata($query);
}
else
{ {
$query['csv_fields'] = $this->csv_export_fields($query['col_filter']['info_type']); $query['csv_fields'] = $this->csv_export_fields($query['col_filter']['info_type']);
} }
@ -412,10 +372,16 @@ class infolog_ui
} }
} }
$rows[] = $info; $rows[] = $info;
$readonlys["document[{$info['info_id']}]"] = !$this->prefs['default_document'];
} }
unset($links); unset($links);
if ($query['action'] == 'sp' && ($main = $this->bo->read($query['action_id'])))
{
$main = $this->get_info($main, $readonlys);
$main['class'] .= 'th ';
array_unshift($rows, $main);
}
if ($query['cat_id']) $rows['no_cat_id'] = true; if ($query['cat_id']) $rows['no_cat_id'] = true;
if ($query['no_actions']) $rows['no_actions'] = true; if ($query['no_actions']) $rows['no_actions'] = true;
$rows['no_timesheet'] = !isset($GLOBALS['egw_info']['user']['apps']['timesheet']); $rows['no_timesheet'] = !isset($GLOBALS['egw_info']['user']['apps']['timesheet']);
@ -459,7 +425,7 @@ class infolog_ui
{ {
$GLOBALS['egw_info']['flags']['app_header'] .= ' - '.lang($this->filters[$query['filter']]); $GLOBALS['egw_info']['flags']['app_header'] .= ' - '.lang($this->filters[$query['filter']]);
} }
if ($query['action'] && ($title = $query['action_title'] ? $query['action_title'] : egw_link::title($query['action'],$query['action_id']))) if ($query['action'] && ($title = $query['action_title'] ? $query['action_title'] : egw_link::title($query['action']=='sp'?'infolog':$query['action'],$query['action_id'])))
{ {
$GLOBALS['egw_info']['flags']['app_header'] .= ': '.$title; $GLOBALS['egw_info']['flags']['app_header'] .= ': '.$title;
} }
@ -507,23 +473,23 @@ class infolog_ui
if (is_array($values) && isset($values['nm']['rows']['document'])) // handle insert in default document button like an action if (is_array($values) && isset($values['nm']['rows']['document'])) // handle insert in default document button like an action
{ {
list($id) = @each($values['nm']['rows']['document']); list($id) = @each($values['nm']['rows']['document']);
$values['multi_action'] = 'document'; $values['nm']['action'] = 'document';
$values['nm']['rows']['checked'] = array($id); $values['nm']['selected'] = array($id);
} }
if (is_array($values) && isset($values['multi_action']) && $values['multi_action'] !== '') if (is_array($values) && !empty($values['nm']['action']))
{ {
if (!count($values['nm']['rows']['checked']) && !$values['use_all']) if (!count($values['nm']['selected']) && !$values['nm']['select_all'])
{ {
$msg = lang('You need to select some entries first'); $msg = lang('You need to select some entries first');
} }
else else
{ {
// Some processing to add values in for links and cats // Some processing to add values in for links and cats
$multi_action = $values['multi_action']; $multi_action = $values['nm']['action'];
// Action has an additional action - add / delete, etc. Buttons named <multi-action>_action[action_name] // Action has an additional action - add / delete, etc. Buttons named <multi-action>_action[action_name]
if(in_array($multi_action, array('link', 'responsible'))) if(in_array($multi_action, array('link', 'responsible')))
{ {
$values['multi_action'] .= '_' . key($values[$multi_action . '_action']); $values['nm']['action'] .= '_' . key($values[$multi_action . '_action']);
} }
// Action has a parameter - cat_id, percent, etc // Action has a parameter - cat_id, percent, etc
if (in_array($multi_action, array('link', 'cat', 'completion', 'responsible'))) if (in_array($multi_action, array('link', 'cat', 'completion', 'responsible')))
@ -532,10 +498,10 @@ class infolog_ui
{ {
$values[$multi_action] = implode(',',$values[$multi_action]); $values[$multi_action] = implode(',',$values[$multi_action]);
} }
$values['multi_action'] .= '_' . $values[$multi_action]; $values['nm']['action'] .= '_' . $values[$multi_action];
} }
if ($this->action($values['multi_action'],$values['nm']['rows']['checked'],$values['use_all'], if ($this->action($values['nm']['action'], $values['nm']['selected'], $values['nm']['select_all'],
$success,$failed,$action_msg,false,$msg, $values['no_notifications'])) $success, $failed, $action_msg, $values['nm'], $msg, $values['nm']['checkboxes']['no_notifications']))
{ {
$msg .= lang('%1 entries %2',$success,$action_msg); $msg .= lang('%1 entries %2',$success,$action_msg);
} }
@ -543,42 +509,29 @@ class infolog_ui
{ {
$msg .= lang('%1 entries %2, %3 failed because of insufficent rights !!!',$success,$action_msg,$failed); $msg .= lang('%1 entries %2, %3 failed because of insufficent rights !!!',$success,$action_msg,$failed);
} }
unset($values['multi_action']); unset($values['nm']['action']);
unset($values['use_all']); unset($values['nm']['select_all']);
} }
$values['msg'] = $msg; $values['msg'] = $msg;
} }
if(isset($values['nm']['rows'])) unset($values['nm']['rows']['checked']); // Can cause problems lower, no longer needed
if (!$action) if (!$action)
{ {
$action = $values['action'] ? $values['action'] : get_var('action',array('POST','GET')); $action = $values['action'] ? $values['action'] : get_var('action',array('POST','GET'));
$action_id = $values['action_id'] ? $values['action_id'] : get_var('action_id',array('POST','GET')); $action_id = $values['action_id'] ? $values['action_id'] : get_var('action_id',array('POST','GET'));
$action_title = $values['action_title'] ? $values['action_title'] : get_var('action_title',array('POST','GET')); $action_title = $values['action_title'] ? $values['action_title'] : get_var('action_title',array('POST','GET'));
if ($values === 'reset_action_view') // only read action from session, if not called by index.php
{
$session = $this->read_sessiondata();
$session['action'] = $action = '';
$session['action_id'] = $action_id = 0;
$session['action_title'] = $action_title = '';
$this->save_sessiondata($session);
unset($session);
}
elseif (!$action)
{
$session = $this->read_sessiondata();
$action = $session['action'];
$action_id = $session['action_id'];
$action_title = $session['action_title'];
// no action -> try to restore the previous colfilter
$colfilter = $session['col_filter'];
unset($session);
}
} }
//echo "<p>".__METHOD__."(action='$action/$action_id',called_as='$called_as/$values[referer]',own_referer='$own_referer') values=\n"; _debug_array($values); //echo "<p>".__METHOD__."(action='$action/$action_id',called_as='$called_as/$values[referer]',own_referer='$own_referer') values=\n"; _debug_array($values);
if (!is_array($values)) if (!is_array($values))
{ {
$values = array('nm' => $this->read_sessiondata()); $nm = egw_cache::getSession('infolog', $this->called_by.'session_data');
if ($values === 'reset_action_view')
{
$nm['action'] = $action = '';
$nm['action_id'] = $action_id = 0;
$nm['action_title'] = $action_title = '';
}
$values = array('nm' => $nm);
if (isset($_GET['filter']) && $_GET['filter'] != 'default' || !isset($values['nm']['filter']) && !$this->called_by) if (isset($_GET['filter']) && $_GET['filter'] != 'default' || !isset($values['nm']['filter']) && !$this->called_by)
{ {
$values['nm']['filter'] = $_GET['filter'] && $_GET['filter'] != 'default' ? $_GET['filter'] : $values['nm']['filter'] = $_GET['filter'] && $_GET['filter'] != 'default' ? $_GET['filter'] :
@ -588,19 +541,25 @@ class infolog_ui
{ {
$values['nm']['order'] = 'info_datemodified'; $values['nm']['order'] = 'info_datemodified';
$values['nm']['sort'] = 'DESC'; $values['nm']['sort'] = 'DESC';
$values['nm']['row_id'] = 'info_id';
} }
if (!$values['nm']['session_for'] && $this->called_by) $values['nm']['session_for'] = $this->called_by;
$values['msg'] = $_GET['msg']; $values['msg'] = $_GET['msg'];
$values['action'] = $action; $values['action'] = $action;
$values['action_id'] = $action_id; $values['action_id'] = $action_id;
$values['action_title'] = $action_title;
} }
if($_GET['search']) { if($_GET['search']) $values['nm']['search'] = $_GET['search'];
$values['nm']['search'] = $_GET['search'];
}
if ($values['nm']['add']) if ($values['nm']['add'])
{ {
$values['add'] = $values['nm']['add']; $values['add'] = $values['nm']['add'];
unset($values['nm']['add']); unset($values['nm']['add']);
} }
unset($values['nm']['rows']['checked']); // not longer used, but hides button actions
if ($values['add'] || $values['cancel'] || isset($values['nm']['rows']) || isset($values['main'])) if ($values['add'] || $values['cancel'] || isset($values['nm']['rows']) || isset($values['main']))
{ {
if ($values['add']) if ($values['add'])
@ -610,10 +569,9 @@ class infolog_ui
} }
elseif ($values['cancel'] && $own_referer) elseif ($values['cancel'] && $own_referer)
{ {
$session = $this->read_sessiondata(); unset($values['nm']['action']);
unset($session['action']); unset($values['nm']['action_id']);
unset($session['action_id']); egw_cache::setSession('infolog', $values['nm']['session_for'].'session_data', $values['nm']);
$this->save_sessiondata($session);
$this->tmpl->location($own_referer); $this->tmpl->location($own_referer);
} }
else else
@ -621,11 +579,9 @@ class infolog_ui
list($do,$do_id) = isset($values['main']) ? each($values['main']) : @each($values['nm']['rows']); list($do,$do_id) = isset($values['main']) ? each($values['main']) : @each($values['nm']['rows']);
list($do_id) = @each($do_id); list($do_id) = @each($do_id);
//echo "<p>infolog::index: do='$do/$do_id', referer="; _debug_array($called_as); //echo "<p>infolog::index: do='$do/$do_id', referer="; _debug_array($called_as);
// todo: move this to actions(), interactive delete only if subs
switch($do) switch($do)
{ {
case 'edit':
case 'edit_status':
return $this->edit($do_id,$action,$action_id,'',$called_as);
case 'delete': case 'delete':
if (!($values['msg'] = $this->delete($do_id,$called_as,$called_as ? '' : 'index'))) return; if (!($values['msg'] = $this->delete($do_id,$called_as,$called_as ? '' : 'index'))) return;
// did we deleted the entries, whos subentries we are showing? // did we deleted the entries, whos subentries we are showing?
@ -647,8 +603,6 @@ class infolog_ui
case 'close_all': case 'close_all':
$this->close($do_id,$called_as,$closesingle); $this->close($do_id,$called_as,$closesingle);
break; break;
case 'sp':
return $this->edit(0,'sp',$do_id,'',$called_as);
case 'view': case 'view':
$value = array(); $value = array();
$action = 'sp'; $action = 'sp';
@ -671,7 +625,6 @@ class infolog_ui
$action_id = 0; $action_id = 0;
break; break;
} }
$values['main'][1] = $this->get_info($action_id,$readonlys['main']);
break; break;
} }
$readonlys['cancel'] = $action != 'sp'; $readonlys['cancel'] = $action != 'sp';
@ -724,10 +677,11 @@ class infolog_ui
$persist['called_as'] = $called_as; $persist['called_as'] = $called_as;
$persist['own_referer'] = $own_referer; $persist['own_referer'] = $own_referer;
$values['nm']['csv_fields'] = true; // get set in get_rows to not include all custom fields $values['nm']['csv_fields'] = true; // get set in get_rows to not include all custom fields
$persist['nm'] = array(
'sort' => $values['nm']['sort'], // store whole $values[nm] in etemplate request
'order' => $values['nm']['order'], unset($values['nm']['rows']);
); $persist['nm'] = $values['nm'];
if (!$called_as) if (!$called_as)
{ {
$GLOBALS['egw_info']['flags']['params']['manual'] = array('page' => 'ManualInfologIndex'); $GLOBALS['egw_info']['flags']['params']['manual'] = array('page' => 'ManualInfologIndex');
@ -748,22 +702,25 @@ class infolog_ui
$sel_options = array( $sel_options = array(
'info_type' => $this->bo->enums['type'], 'info_type' => $this->bo->enums['type'],
'pm_id' => array(lang('No project')), 'pm_id' => array(lang('No project')),
'multi_action' => array(
'close' => lang('Close'),
'delete' => lang('Delete'),
'cat' => lang('Change category'),
'link' => lang('Add or delete links'),
'completion' => lang('Change completion'),
'responsible' => lang('Change responsible'),
)
); );
// Add in multi-infolog actions egw_framework::validate_file('.','index','infolog');
return $this->tmpl->exec('infolog.infolog_ui.index',$values,$sel_options,$readonlys,$persist,$return_html ? -1 : 0);
}
/**
* Get actions / context menu items
*
* @param array $query
* @return array see nextmatch_widget::get_actions()
*/
private function get_actions(array $query)
{
for($i = 0; $i <= 100; $i += 10) $percent[$i] = $i.'%';
// Types // Types
foreach($this->bo->enums['type'] as $type => $label) $types = $this->bo->enums['type'];
{
$types['type_'.$type] = $label;
}
if ($this->bo->group_owners) if ($this->bo->group_owners)
{ {
// remove types owned by groups the user has no edit grant // remove types owned by groups the user has no edit grant
@ -771,41 +728,204 @@ class infolog_ui
{ {
if (!($this->bo->grants[$group] & EGW_ACL_EDIT)) if (!($this->bo->grants[$group] & EGW_ACL_EDIT))
{ {
unset($types['type_'.$type]); unset($types[$type]);
} }
} }
} }
$sel_options['multi_action'][lang('Change type:')] = $types; $types_add = array();
foreach($types as $type => &$data)
{
$data = array(
'caption' => $data,
'icon' => $type,
);
$types_add[$type] = $data + array(
'url' => 'menuaction=infolog.infolog_ui.edit&type='.$type,
'popup' => egw_link::get_registry('infolog', 'add_popup'),
);
}
// if filtered by type, show only the stati of the filtered type // if filtered by type, show only the stati of the filtered type
if ($values['nm']['col_filter']['info_type'] && isset($this->bo->status[$values['nm']['col_filter']['info_type']])) if ($query['col_filter']['info_type'] && isset($this->bo->status[$query['col_filter']['info_type']]))
{ {
$statis = $this->bo->status[$values['nm']['col_filter']['info_type']]; $statis = $this->bo->status[$query['col_filter']['info_type']];
} }
else // show all stati else // show all stati
{ {
$statis = array(); $statis = array();
foreach($this->bo->status as $typ => $stati) foreach($this->bo->status as $type => $stati)
{ {
if($typ == 'defaults') continue; if ($type == 'defaults') continue;
$statis += $stati; $statis += $stati;
} }
$statis = array_unique($statis); $statis = array_unique($statis);
} }
foreach($statis as $id => $label) foreach($statis as $type => &$data)
{ {
$change_status['status_'.$id] = $label; $data = array(
'caption' => $data,
'icon' => $type,
);
} }
$sel_options['multi_action'][lang('Change status:')] = $change_status;
// Merge print $actions = array(
if ($this->prefs['document_dir']) 'open' => array(
'caption' => 'Open',
'default' => true,
'allowOnMultiple' => false,
'url' => 'menuaction=infolog.infolog_ui.edit&info_id=$id',
'popup' => egw_link::get_registry('infolog', 'add_popup'),
'group' => $group=1,
),
'sp' => array(
'caption' => 'View subs',
'icon' => 'view',
'group' => $group,
'hint' => 'View all subs of this entry',
'enableClass' => 'rowHasSubs',
),
'parent' => array(
'caption' => 'View parent',
'icon' => 'parent',
'group' => $group,
'hideOnDisabled' => true,
'hint' => 'View the parent of this entry and all his subs',
'enableClass' => 'rowHasParent'
),
'add' => array(
'caption' => 'Add',
'group' => $group,
'children' => array(
'new' => array(
'caption' => 'New',
'children' => $types_add,
'icon' => 'task',
),
'sub' => array(
'caption' => 'Sub-entry',
'url' => 'menuaction=infolog.infolog_ui.edit&action=sp&action_id=$id',
'popup' => egw_link::get_registry('infolog', 'add_popup'),
'allowOnMultiple' => false,
'hint' => 'Add a new sub-task, -note, -call to this entry',
'icon' => 'new',
'disableClass' => 'rowNoSubs',
),
'copy' => array(
'caption' => 'Copy',
'url' => 'menuaction=infolog.infolog_ui.edit&action=copy&info_id=$id',
'popup' => egw_link::get_registry('infolog', 'add_popup'),
'allowOnMultiple' => false,
'icon' => 'copy',
),
),
),
'select_all' => array(
'caption' => 'Whole query',
'checkbox' => true,
'hint' => 'Apply the action on the whole query, NOT only the shown entries',
'group' => ++$group,
),
'no_notifications' => array(
'caption' => 'Do not notify',
'checkbox' => true,
'hint' => 'Do not notify of these changes',
'group' => $group,
),
// modifying content of one or multiple infolog(s)
'change' => array(
'caption' => 'Change',
'group' => ++$group,
'icon' => 'edit',
'disableClass' => 'rowNoEdit',
'children' => array(
'type' => array(
'caption' => 'Type',
'prefix' => 'type_',
'children' => $types,
'group' => $group,
'icon' => 'task',
),
'status' => array(
'caption' => 'Status',
'prefix' => 'status_',
'children' => $statis,
'group' => $group,
'icon' => 'ongoing',
),
'completion' => array(
'caption' => 'Completed',
'prefix' => 'completion_',
'children' => $percent,
'group' => $group,
'icon' => 'completed',
),
'cat' => nextmatch_widget::category_action(
'infolog',$group,'Change category','cat_'
),
'responsible' => array(
'caption' => 'Delegation',
'group' => $group,
'icon' => 'users',
'onExecute' => 'javaScript:open_popup',
),
'link' => array(
'caption' => 'Links',
'group' => $group,
'onExecute' => 'javaScript:open_popup',
),
),
),
'close' => array(
'caption' => 'Close',
'icon' => 'done',
'group' => $group,
),
'close_all' => array(
'caption' => 'Close all',
'icon' => 'done_all',
'group' => $group,
'hint' => 'Sets the status of this entry and its subs to done',
'allowOnMultiple' => false,
),
);
++$group; // integration with other apps
if ($GLOBALS['egw_info']['user']['apps']['filemanager'])
{ {
$sel_options['multi_action'][lang('Insert in document').':'] = $this->get_document_actions(); $actions['filemanager'] = array(
'icon' => 'filemanager/navbar',
'caption' => 'Filemanager',
'url' => 'menuaction=filemanager.filemanager_ui.index&path=/apps/addressbook/$id',
'allowOnMultiple' => false,
'group' => $group,
);
}
if ($GLOBALS['egw_info']['user']['apps']['timesheet'])
{
$actions['timesheet'] = array( // interactive add for a single event
'icon' => 'timesheet/navbar',
'caption' => 'Timesheet',
'url' => 'menuaction=timesheet.timesheet_ui.edit&link_app[]=infolog&link_id[]=$id',
'group' => $group,
'allowOnMultiple' => false,
'popup' => egw_link::get_registry('timesheet', 'add_popup'),
);
} }
egw_framework::validate_file('.','index','infolog');
return $this->tmpl->exec('infolog.infolog_ui.index',$values,$sel_options,$readonlys,$persist,$return_html ? -1 : 0); $actions['documents'] = infolog_merge::document_action(
$this->prefs['document_dir'], ++$group, 'Insert in document', 'document_',
$this->prefs['default_document']
);
$actions['delete'] = array(
'caption' => 'Delete',
'confirm' => 'Delete this entry',
'confirm_multiple' => 'Delete these entries',
'group' => ++$group,
'disableClass' => 'rowNoDelete',
);
//echo "<p>".__METHOD__."($do_email, $tid_filter, $org_view)</p>\n"; _debug_array($actions);
return $actions;
} }
/** /**
@ -817,34 +937,27 @@ class infolog_ui
* @param int &$success number of succeded actions * @param int &$success number of succeded actions
* @param int &$failed number of failed actions (not enought permissions) * @param int &$failed number of failed actions (not enought permissions)
* @param string &$action_msg translated verb for the actions, to be used in a message like '%1 entries deleted' * @param string &$action_msg translated verb for the actions, to be used in a message like '%1 entries deleted'
* @param string/array $session_name 'index', or array with session-data depending * @param array $query get_rows parameter
* @param string &$msg on return user feedback
* @param boolean $skip_notifications=false true to NOT notify users about changes
* @return boolean true if all actions succeded, false otherwise * @return boolean true if all actions succeded, false otherwise
*/ */
function action($action,$checked,$use_all,&$success,&$failed,&$action_msg,$session_name = false,&$msg, $skip_notifications = false) function action($action, $checked, $use_all, &$success, &$failed, &$action_msg,
array $query, &$msg, $skip_notifications = false)
{ {
//echo "<p>infolog_ui::action('$action',".print_r($checked,true).','.(int)$use_all.",...)</p>\n"; //echo "<p>infolog_ui::action('$action',".print_r($checked,true).','.(int)$use_all.",...)</p>\n";
$success = $failed = 0; $success = $failed = 0;
if ($use_all) if ($use_all)
{ {
// get the whole selection @set_time_limit(0); // switch off the execution time limit, as it's for big selections to small
if($session_name) { $query['num_rows'] = -1; // all
$query = is_array($session_name) ? $session_name : egw_session::appsession($session_name,'infolog'); $this->get_rows($query,$result,$readonlys);
} else { $checked = array();
$query = $this->read_sessiondata(); foreach($result as $key => $info)
}
if ($use_all)
{ {
@set_time_limit(0); // switch off the execution time limit, as it's for big selections to small if(is_numeric($key))
$query['num_rows'] = -1; // all
$this->get_rows($query,$result,$readonlys);
$checked = array();
foreach($result as $key => $info)
{ {
if(is_numeric($key)) $checked[] = $info['info_id'];
{
$checked[] = $info['info_id'];
}
} }
} }
} }
@ -861,17 +974,19 @@ class infolog_ui
if(!$link_id) if(!$link_id)
{ {
$action_msg = 'linked'; $action_msg = 'linked';
$msg = lang('You need to select an entry for linking. '); $msg = lang('You need to select an entry for linking.');
break; break;
} }
$title = egw_link::title($app, $link_id); $title = egw_link::title($app, $link_id);
foreach($checked as $id) foreach($checked as $id)
{ {
if(!$this->bo->check_access($id, EGW_ACL_EDIT)) { if(!$this->bo->check_access($id, EGW_ACL_EDIT))
{
$failed++; $failed++;
continue; continue;
} }
if($add_remove == 'add') { if($add_remove == 'add')
{
$action_msg = lang('linked to %1', $title); $action_msg = lang('linked to %1', $title);
if(egw_link::link('infolog', $id, $app, $link_id)) if(egw_link::link('infolog', $id, $app, $link_id))
{ {
@ -881,33 +996,41 @@ class infolog_ui
{ {
$failed++; $failed++;
} }
} else { }
else
{
$action_msg = lang('unlinked from %1', $title); $action_msg = lang('unlinked from %1', $title);
$count = egw_link::unlink(0, 'infolog', $id, '', $app, $link_id); $count = egw_link::unlink(0, 'infolog', $id, '', $app, $link_id);
$success += $count; $success += $count;
} }
} }
return ($failed == 0); return $failed == 0;
case 'document': case 'document':
$msg = $this->download_document($checked,$settings); $msg = $this->download_document($checked,$settings);
$failed = count($checked); $failed = count($checked);
return false; return false;
case 'view':
// todo: implement or better move code from index to here
return false;
} }
// Actions that need to loop // Actions that need to loop
foreach($checked as $id) foreach($checked as $id)
{ {
if(!$entry = $this->bo->read($id)) if(!$entry = $this->bo->read($id))
{ {
continue; continue;
} }
switch($action) switch($action)
{ {
case 'close': case 'close':
$action_msg = lang('closed'); $action_msg = lang('closed');
$this->close($id, '', false, $skip_notifications); $this->close($id, '', false, $skip_notifications);
$success++; $success++;
break; break;
case 'delete': case 'delete':
$action_msg = lang('deleted'); $action_msg = lang('deleted');
$result = $this->delete($id, '', 'multi-action', $skip_notifications); $result = $this->delete($id, '', 'multi-action', $skip_notifications);
@ -920,6 +1043,7 @@ class infolog_ui
$failed++; $failed++;
} }
break; break;
case 'type': case 'type':
$action_msg = lang('changed type'); $action_msg = lang('changed type');
// Dont allow to change the type, if user has no delete rights from the group-owner // Dont allow to change the type, if user has no delete rights from the group-owner
@ -937,7 +1061,8 @@ class infolog_ui
$action_msg = lang('changed completion to %1%', $settings); $action_msg = lang('changed completion to %1%', $settings);
$entry['info_percent'] = $settings; $entry['info_percent'] = $settings;
// Done entries will get changed right back if we don't change the status too // Done entries will get changed right back if we don't change the status too
if($entry['info_status'] == 'done') { if($entry['info_status'] == 'done')
{
$entry['info_status'] = 'ongoing'; $entry['info_status'] = 'ongoing';
} }
if($this->bo->write($entry, true,true,true,$skip_notifications)) if($this->bo->write($entry, true,true,true,$skip_notifications))
@ -963,11 +1088,14 @@ class infolog_ui
{ {
$success++; $success++;
} }
} else { }
else
{
$msg .= lang('Invalid status for entry type %1. ', lang($this->bo->enums['type'][$entry['info_type']])); $msg .= lang('Invalid status for entry type %1. ', lang($this->bo->enums['type'][$entry['info_type']]));
$failed++; $failed++;
} }
break; break;
case 'cat': case 'cat':
$cat_name = categories::id2name($settings); $cat_name = categories::id2name($settings);
$action_msg = lang('changed category to %1', $cat_name); $action_msg = lang('changed category to %1', $cat_name);
@ -981,6 +1109,7 @@ class infolog_ui
$failed++; $failed++;
} }
break; break;
case 'responsible': case 'responsible':
list($add_remove, $users) = explode('_', $settings, 2); list($add_remove, $users) = explode('_', $settings, 2);
$action_msg = lang('changed responsible') . ' - ' . ($add_remove == 'add' ? lang('added') : lang('removed')) . ' '; $action_msg = lang('changed responsible') . ' - ' . ($add_remove == 'add' ? lang('added') : lang('removed')) . ' ';
@ -1003,7 +1132,7 @@ class infolog_ui
break; break;
} }
} }
return ($failed == 0); return $failed == 0;
} }
/** /**
@ -1154,36 +1283,8 @@ class infolog_ui
if ($button) if ($button)
{ {
//Copy Infolog //Copy Infolog
if (($button == 'copy')) if ($button == 'copy') $action = 'copy';
{
unset($content['info_id']);
unset ($info_id);
unset($content['info_datemodified']);
unset($content['info_modifier']);
// Get links to be copied
$content['link_to']['to_id'] = egw_link::get_links($content['link_to']['to_app'], $content['link_to']['to_id']);
// Special mangling for files so the files get copied
foreach($content['link_to']['to_id'] as $link_id => &$link)
{
if ($link['app'] == egw_link::VFS_APPNAME)
{
$link['id'] = $link + array(
'tmp_name' => egw_link::vfs_path($link['app2'], $link['id2']).'/'.$link['id'],
'name' => $link['id'],
);
}
}
if($content['info_link_id'])
{
$info_link_id = $content['info_link_id'];
unset($content['info_link_id']);
}
$content['info_owner'] = !(int)$this->owner || !$this->bo->check_perms(EGW_ACL_ADD,0,$this->owner) ? $this->user : $this->owner;
$content['msg'] = lang('Infolog copied - the copy can now be edited');
$content['info_subject'] = lang('Copy of:').' '.$content['info_subject'];
}
if ($button == 'print') if ($button == 'print')
{ {
$content['js'] = $this->custom_print($content,!$content['info_id'])."\n".$js; // first open the new window and then update the view $content['js'] = $this->custom_print($content,!$content['info_id'])."\n".$js; // first open the new window and then update the view
@ -1443,7 +1544,7 @@ class infolog_ui
'to_id' => $info_id, 'to_id' => $info_id,
'to_app' => 'infolog', 'to_app' => 'infolog',
); );
switch ($action) switch ($action)
{ {
case 'sp': case 'sp':
$links = egw_link::get_links('infolog',$parent['info_id'],'!'.egw_link::VFS_APPNAME); $links = egw_link::get_links('infolog',$parent['info_id'],'!'.egw_link::VFS_APPNAME);
@ -1523,6 +1624,36 @@ class infolog_ui
$content['info_type'] = 'note'; $content['info_type'] = 'note';
} }
} }
if ($action == 'copy') // get's called via actions selectbox or url (action=copy&info_id=123)
{
unset($content['info_id']);
unset ($info_id);
unset($content['info_datemodified']);
unset($content['info_modifier']);
// Get links to be copied
$content['link_to']['to_id'] = egw_link::get_links($content['link_to']['to_app'], $content['link_to']['to_id']);
// Special mangling for files so the files get copied
foreach($content['link_to']['to_id'] as $link_id => &$link)
{
if ($link['app'] == egw_link::VFS_APPNAME)
{
$link['id'] = $link + array(
'tmp_name' => egw_link::vfs_path($link['app2'], $link['id2']).'/'.$link['id'],
'name' => $link['id'],
);
}
}
if($content['info_link_id'])
{
$info_link_id = $content['info_link_id'];
unset($content['info_link_id']);
}
$content['info_owner'] = !(int)$this->owner || !$this->bo->check_perms(EGW_ACL_ADD,0,$this->owner) ? $this->user : $this->owner;
$content['msg'] = lang('Infolog copied - the copy can now be edited');
$content['info_subject'] = lang('Copy of:').' '.$content['info_subject'];
}
// group owners // group owners
$types = $this->bo->enums['type']; $types = $this->bo->enums['type'];
if ($this->bo->group_owners) if ($this->bo->group_owners)
@ -1966,7 +2097,7 @@ class infolog_ui
} }
$this->called_by = $app; // for read/save_sessiondata, to have different sessions for the hooks $this->called_by = $app; // for read/save_sessiondata, to have different sessions for the hooks
$GLOBALS['egw']->translation->add_app('infolog'); translation::add_app('infolog');
etemplate::$hooked = true; etemplate::$hooked = true;
$this->index(0,$app,$args[$view_id],array( $this->index(0,$app,$args[$view_id],array(

View File

@ -18,6 +18,11 @@ function do_infolog_action(selbox) {
selbox.value = ""; selbox.value = "";
} }
function open_popup(_action, _senders)
{
alert('Show popup: '+_action.id);
}
/** /**
* Hide popup and clear values * Hide popup and clear values
*/ */

View File

@ -218,7 +218,7 @@ only for details infolog bg Само за детайлите
only if i get assigned or removed infolog bg Само ако бъда включен или изключен only if i get assigned or removed infolog bg Само ако бъда включен или изключен
only the attachments infolog bg само приложенията only the attachments infolog bg само приложенията
only the links infolog bg само връзките only the links infolog bg само връзките
open infolog bg отвори open(status) infolog bg отвори
optional note to the link infolog bg бележка към връзката optional note to the link infolog bg бележка към връзката
order infolog bg Ред order infolog bg Ред
overdue infolog bg просрочен overdue infolog bg просрочен

View File

@ -192,7 +192,7 @@ ongoing infolog ca en curs
only for details infolog ca Només per detalls only for details infolog ca Només per detalls
only the attachments infolog ca només adjunts only the attachments infolog ca només adjunts
only the links infolog ca només enllaços only the links infolog ca només enllaços
open infolog ca obert open(status) infolog ca obert
optional note to the link infolog ca nota opcional per a l'enllaç optional note to the link infolog ca nota opcional per a l'enllaç
order infolog ca Ordre order infolog ca Ordre
overdue infolog ca vençut overdue infolog ca vençut

View File

@ -238,7 +238,7 @@ only for details infolog cs Jen pro detaily
only if i get assigned or removed infolog cs Jen pokud budu přidělen nebo odebrán only if i get assigned or removed infolog cs Jen pokud budu přidělen nebo odebrán
only the attachments infolog cs jen přílohy only the attachments infolog cs jen přílohy
only the links infolog cs jen odkazy only the links infolog cs jen odkazy
open infolog cs otevřít open(status) infolog cs otevřít
open and upcoming infolog cs otevřené a nadcházející open and upcoming infolog cs otevřené a nadcházející
optional note to the link infolog cs volitelná poznámka k odkazu optional note to the link infolog cs volitelná poznámka k odkazu
order infolog cs Pořadí order infolog cs Pořadí

View File

@ -166,7 +166,7 @@ ongoing infolog da i gang
only the attachments infolog da kun vedhæftninger only the attachments infolog da kun vedhæftninger
only the links infolog da kun linkene only the links infolog da kun linkene
only up to this number of entries are displayed on the main screen. infolog da Kun op til dette antal opgaver er vist på startsiden only up to this number of entries are displayed on the main screen. infolog da Kun op til dette antal opgaver er vist på startsiden
open infolog da åben open(status) infolog da åben
optional note to the link infolog da Valgfri notat til Link optional note to the link infolog da Valgfri notat til Link
order infolog da Rækkefølge order infolog da Rækkefølge
overdue infolog da forfalden overdue infolog da forfalden

View File

@ -67,18 +67,15 @@ cancel infolog de Abbruch
cancelled infolog de abgesagt cancelled infolog de abgesagt
categories infolog de Kategorien categories infolog de Kategorien
category infolog de Kategorie category infolog de Kategorie
change infolog de Ändern
change category infolog de Kategorie ändern change category infolog de Kategorie ändern
change completed infolog de Änderungen duchgeführt change completed infolog de Änderungen duchgeführt
change completion infolog de Bearbeitungsstatus ändern change completion infolog de Bearbeitungsstatus ändern
change history infolog de Änderungsverlauf change history infolog de Änderungsverlauf
change owner when updating infolog de Ändert den Benutzer bei bei diesem Änderungsvorgang change owner when updating infolog de Ändert den Benutzer bei bei diesem Änderungsvorgang
change responsible infolog de Zuständigkeit ändern
change status: infolog de Status ändern
change the status of an entry, eg. close it infolog de Status eines Eintrags ändern, z.B. Ihn als erledigt markieren change the status of an entry, eg. close it infolog de Status eines Eintrags ändern, z.B. Ihn als erledigt markieren
change type: infolog de Infolog Typ ändern
changed category to %1 infolog de Kategorie geändert zu %1 changed category to %1 infolog de Kategorie geändert zu %1
changed completion to %1% infolog de Bearbeitungsstatus geändert zu %1 changed completion to %1% infolog de Bearbeitungsstatus geändert zu %1
changed responsible infolog de Zuständigkeit ändern
changed status to %1 infolog de Typ geändert zu %1 changed status to %1 infolog de Typ geändert zu %1
changed type infolog de Typ ändern changed type infolog de Typ ändern
charset of file infolog de Zeichensatz der Datei charset of file infolog de Zeichensatz der Datei
@ -302,8 +299,8 @@ only for details infolog de Nur bei Details
only if i get assigned or removed infolog de Nur wenn ich zugewiesen oder entfernt werde only if i get assigned or removed infolog de Nur wenn ich zugewiesen oder entfernt werde
only the attachments infolog de nur die Anhänge only the attachments infolog de nur die Anhänge
only the links infolog de nur die Verknüpfungen only the links infolog de nur die Verknüpfungen
open infolog de offen
open and upcoming infolog de zukünftige und offene open and upcoming infolog de zukünftige und offene
open(status) infolog de offen
optional note to the link infolog de zusätzliche Notiz zur Verknüpfung optional note to the link infolog de zusätzliche Notiz zur Verknüpfung
order infolog de Reihenfolge order infolog de Reihenfolge
organization infolog de Organisation organization infolog de Organisation
@ -420,6 +417,7 @@ status ... infolog de Status ...
sub infolog de Unter-<br />einträge sub infolog de Unter-<br />einträge
sub-entries become subs of the parent or main entries, if there's no parent infolog de Untereinträge gehören dann zum übergeordneten Eintrag oder werden Haupteinträge wenn es keinen übergeordneten gibt. sub-entries become subs of the parent or main entries, if there's no parent infolog de Untereinträge gehören dann zum übergeordneten Eintrag oder werden Haupteinträge wenn es keinen übergeordneten gibt.
sub-entries will not be closed infolog de Untereinträge werden nicht geschlossen sub-entries will not be closed infolog de Untereinträge werden nicht geschlossen
sub-entry infolog de Untereintrag
subject infolog de Titel subject infolog de Titel
sum infolog de Summe sum infolog de Summe
tag to mark positions for address labels infolog de Platzhalter, um die Position der Adresslabels festzulegen tag to mark positions for address labels infolog de Platzhalter, um die Position der Adresslabels festzulegen
@ -458,7 +456,7 @@ used time infolog de benötigte Zeit
values for selectbox infolog de Werte für die Auswahlbox values for selectbox infolog de Werte für die Auswahlbox
view all subs of this entry infolog de alle Untereinträge dieses Eintrag anzeigen view all subs of this entry infolog de alle Untereinträge dieses Eintrag anzeigen
view other subs infolog de andere Untereinträge anzeigen view other subs infolog de andere Untereinträge anzeigen
view parent infolog de übergeordneter Eintrag anzeigen view parent infolog de Elterneintrag anzeigen
view subs infolog de Untereinträge anzeigen view subs infolog de Untereinträge anzeigen
view the parent of this entry and all his subs infolog de übergeordneter Eintrag mit allen seinen Untereinträgen anzeigen view the parent of this entry and all his subs infolog de übergeordneter Eintrag mit allen seinen Untereinträgen anzeigen
view this linked entry in its application infolog de diesen verknüpfen Eintrag in seiner Anwendung anzeigen view this linked entry in its application infolog de diesen verknüpfen Eintrag in seiner Anwendung anzeigen
@ -466,7 +464,6 @@ when should the todo or phonecall be started, it shows up from that date in the
which additional fields should the responsible be allowed to edit without having edit rights?<br />status, percent and date completed are always allowed. infolog de Welche zusätzlichen Felder soll der Verantwortliche bearbeiten können ohne Bearbeitungsrechte zu haben?<br />Status, Prozent und Datum erledigt sind immer erlaubt. which additional fields should the responsible be allowed to edit without having edit rights?<br />status, percent and date completed are always allowed. infolog de Welche zusätzlichen Felder soll der Verantwortliche bearbeiten können ohne Bearbeitungsrechte zu haben?<br />Status, Prozent und Datum erledigt sind immer erlaubt.
which implicit acl rights should the responsible get? infolog de Welche impliziten Zugriffsrechte soll der Verantwortliche bekommen? which implicit acl rights should the responsible get? infolog de Welche impliziten Zugriffsrechte soll der Verantwortliche bekommen?
which types should the calendar show infolog de Welche Typen soll der Kalender anzeigen which types should the calendar show infolog de Welche Typen soll der Kalender anzeigen
whole query infolog de gesamte Abfrage
will-call infolog de ruft zurück will-call infolog de ruft zurück
write (add or update) a record by passing its fields. infolog de Schreiben (zufügen oder aktualisieren) eines Datensatzes durch Angabe seiner Felder. write (add or update) a record by passing its fields. infolog de Schreiben (zufügen oder aktualisieren) eines Datensatzes durch Angabe seiner Felder.
yes - close infolog de Ja schließen yes - close infolog de Ja schließen

View File

@ -205,7 +205,7 @@ only for details infolog el Μόνο για λεπτομέρειες
only if i get assigned or removed infolog el Μόνο εάν μου ανατεθεί ή αφαιρεθεί only if i get assigned or removed infolog el Μόνο εάν μου ανατεθεί ή αφαιρεθεί
only the attachments infolog el μόνο οι επισυνάψεις only the attachments infolog el μόνο οι επισυνάψεις
only the links infolog el μόνο οι σύνδεσμοι only the links infolog el μόνο οι σύνδεσμοι
open infolog el ανοικτά open(status) infolog el ανοικτά
optional note to the link infolog el προαιρετική σημείωση στο σύνδεσμο optional note to the link infolog el προαιρετική σημείωση στο σύνδεσμο
order infolog el Παραγγελία order infolog el Παραγγελία
overdue infolog el καθυστερημένα overdue infolog el καθυστερημένα

View File

@ -67,18 +67,15 @@ cancel infolog en Cancel
cancelled infolog en cancelled cancelled infolog en cancelled
categories infolog en Categories categories infolog en Categories
category infolog en Category category infolog en Category
change infolog en Change
change category infolog en Change category change category infolog en Change category
change completed infolog en Change completed change completed infolog en Change completed
change completion infolog en Change completion change completion infolog en Change completion
change history infolog en Change history change history infolog en Change history
change owner when updating infolog en Change owner when updating change owner when updating infolog en Change owner when updating
change responsible infolog en Change responsible
change status: infolog en Change status:
change the status of an entry, eg. close it infolog en Change the status of an entry, eg. close it change the status of an entry, eg. close it infolog en Change the status of an entry, eg. close it
change type: infolog en Change type:
changed category to %1 infolog en changed category to %1 changed category to %1 infolog en changed category to %1
changed completion to %1% infolog en changed completion to %1% changed completion to %1% infolog en changed completion to %1%
changed responsible infolog en changed responsible
changed status to %1 infolog en changed status to %1 changed status to %1 infolog en changed status to %1
changed type infolog en changed type changed type infolog en changed type
charset of file infolog en Charset of file charset of file infolog en Charset of file
@ -302,8 +299,8 @@ only for details infolog en Only for details
only if i get assigned or removed infolog en Only if I get assigned or removed only if i get assigned or removed infolog en Only if I get assigned or removed
only the attachments infolog en only the attachments only the attachments infolog en only the attachments
only the links infolog en only the links only the links infolog en only the links
open infolog en open
open and upcoming infolog en open and upcoming open and upcoming infolog en open and upcoming
open(status) infolog en open
optional note to the link infolog en optional note to the Link optional note to the link infolog en optional note to the Link
order infolog en Order order infolog en Order
organization infolog en Organization organization infolog en Organization
@ -421,6 +418,7 @@ status ... infolog en Status ...
sub infolog en Sub sub infolog en Sub
sub-entries become subs of the parent or main entries, if there's no parent infolog en Sub-entries become subs of the parent or main entries, if there's no parent sub-entries become subs of the parent or main entries, if there's no parent infolog en Sub-entries become subs of the parent or main entries, if there's no parent
sub-entries will not be closed infolog en Sub-entries will not be closed sub-entries will not be closed infolog en Sub-entries will not be closed
sub-entry infolog en Sub-entry
subject infolog en Subject subject infolog en Subject
sum infolog en Sum sum infolog en Sum
tag to mark positions for address labels infolog en Tag to mark positions for address labels tag to mark positions for address labels infolog en Tag to mark positions for address labels
@ -468,7 +466,6 @@ when should the todo or phonecall be started, it shows up from that date in the
which additional fields should the responsible be allowed to edit without having edit rights?<br />status, percent and date completed are always allowed. infolog en Which additional fields should the responsible be allowed to edit without having edit rights?<br />Status, percent and date completed are always allowed. which additional fields should the responsible be allowed to edit without having edit rights?<br />status, percent and date completed are always allowed. infolog en Which additional fields should the responsible be allowed to edit without having edit rights?<br />Status, percent and date completed are always allowed.
which implicit acl rights should the responsible get? infolog en Which implicit ACL rights should the responsible get? which implicit acl rights should the responsible get? infolog en Which implicit ACL rights should the responsible get?
which types should the calendar show infolog en Which types should the calendar show which types should the calendar show infolog en Which types should the calendar show
whole query infolog en whole query
will-call infolog en will call will-call infolog en will call
write (add or update) a record by passing its fields. infolog en Write (add or update) a record by passing its fields. write (add or update) a record by passing its fields. infolog en Write (add or update) a record by passing its fields.
yes - close infolog en Yes - Close yes - close infolog en Yes - Close

View File

@ -234,7 +234,7 @@ only for details infolog es-es Sólo para los detalles
only if i get assigned or removed infolog es-es Sólo si se me asigna o se me borra only if i get assigned or removed infolog es-es Sólo si se me asigna o se me borra
only the attachments infolog es-es sólo los adjuntos only the attachments infolog es-es sólo los adjuntos
only the links infolog es-es sólo los enlaces only the links infolog es-es sólo los enlaces
open infolog es-es abrir open(status) infolog es-es abrir
optional note to the link infolog es-es nota opcional para el enlace optional note to the link infolog es-es nota opcional para el enlace
order infolog es-es Ordenar order infolog es-es Ordenar
organization infolog es-es Organización organization infolog es-es Organización

View File

@ -126,7 +126,7 @@ offer infolog et pakkumine
one day after infolog et üks päev pärast one day after infolog et üks päev pärast
one day in advance infolog et üks päev enne one day in advance infolog et üks päev enne
ongoing infolog et käimasolev ongoing infolog et käimasolev
open infolog et avatud open(status) infolog et avatud
own infolog et endaoma own infolog et endaoma
own open infolog et endaoma avatud own open infolog et endaoma avatud
percent completed infolog et Protsent valmis percent completed infolog et Protsent valmis

View File

@ -142,7 +142,7 @@ offer infolog eu Eskaini
ongoing infolog eu momentukoak ongoing infolog eu momentukoak
only the attachments infolog eu eranskinak soilik only the attachments infolog eu eranskinak soilik
only the links infolog eu loturak soilik only the links infolog eu loturak soilik
open infolog eu ireki open(status) infolog eu ireki
optional note to the link infolog eu aukerako oharra loturarentzat optional note to the link infolog eu aukerako oharra loturarentzat
order infolog eu Ordenatu order infolog eu Ordenatu
overdue infolog eu garaitua overdue infolog eu garaitua

View File

@ -200,7 +200,7 @@ ongoing infolog fa درحال انجام
only for details infolog fa فقط برای جزئیات only for details infolog fa فقط برای جزئیات
only the attachments infolog fa فقط پیوستها only the attachments infolog fa فقط پیوستها
only the links infolog fa فقط پیوندها only the links infolog fa فقط پیوندها
open infolog fa کارهای باز open(status) infolog fa کارهای باز
optional note to the link infolog fa یادداشت دلخواه برای پیوند optional note to the link infolog fa یادداشت دلخواه برای پیوند
order infolog fa ترتیب order infolog fa ترتیب
overdue infolog fa کارهای سررسیده overdue infolog fa کارهای سررسیده

View File

@ -233,7 +233,7 @@ only for details infolog fi Vain lisätiedot
only if i get assigned or removed infolog fi Vain jos minulle delegoidaan tai minut poistetaan vastuusta only if i get assigned or removed infolog fi Vain jos minulle delegoidaan tai minut poistetaan vastuusta
only the attachments infolog fi Vain liitteet only the attachments infolog fi Vain liitteet
only the links infolog fi Vain linkit only the links infolog fi Vain linkit
open infolog fi Avoimet open(status) infolog fi Avoimet
open and upcoming infolog fi Avoimet ja tulevat open and upcoming infolog fi Avoimet ja tulevat
optional note to the link infolog fi Vapaaehtoinen muistiinpano linkkiin optional note to the link infolog fi Vapaaehtoinen muistiinpano linkkiin
order infolog fi Järjestä order infolog fi Järjestä

View File

@ -185,7 +185,7 @@ ongoing infolog fr Entrant
only for details infolog fr Seulement pour les détails only for details infolog fr Seulement pour les détails
only the attachments infolog fr Seulement les attachements only the attachments infolog fr Seulement les attachements
only the links infolog fr Seulement les liens only the links infolog fr Seulement les liens
open infolog fr Ouvrir open(status) infolog fr Ouvrir
optional note to the link infolog fr note optionnelle vers le lien optional note to the link infolog fr note optionnelle vers le lien
order infolog fr Tri order infolog fr Tri
overdue infolog fr Tardif overdue infolog fr Tardif

View File

@ -160,7 +160,7 @@ ongoing infolog hr traje (trajući)
only the attachments infolog hr Samo privitke only the attachments infolog hr Samo privitke
only the links infolog hr only the links only the links infolog hr only the links
only up to this number of entries are displayed on the main screen. infolog hr Only up to this number of entries are displayed on the main screen. only up to this number of entries are displayed on the main screen. infolog hr Only up to this number of entries are displayed on the main screen.
open infolog hr otvori open(status) infolog hr otvori
optional note to the link infolog hr optional note to the Link optional note to the link infolog hr optional note to the Link
order infolog hr Naredi order infolog hr Naredi
overdue infolog hr prošao rok overdue infolog hr prošao rok

View File

@ -234,7 +234,7 @@ only for details infolog hu Csak a részletekhez
only if i get assigned or removed infolog hu Csak ha hozzám rendelték vagy törölték only if i get assigned or removed infolog hu Csak ha hozzám rendelték vagy törölték
only the attachments infolog hu csupán a mellékletek only the attachments infolog hu csupán a mellékletek
only the links infolog hu csupán a hivatkozások only the links infolog hu csupán a hivatkozások
open infolog hu nyitott open(status) infolog hu nyitott
optional note to the link infolog hu tetszőleges megjegyzés a hivatkozáshoz optional note to the link infolog hu tetszőleges megjegyzés a hivatkozáshoz
order infolog hu Rendezés order infolog hu Rendezés
organization infolog hu Szervezet organization infolog hu Szervezet

View File

@ -172,7 +172,7 @@ offer infolog id penawaran
one day after infolog id sehari setelah one day after infolog id sehari setelah
one day in advance infolog id sehari dimuka one day in advance infolog id sehari dimuka
ongoing infolog id berlangsung ongoing infolog id berlangsung
open infolog id buka open(status) infolog id buka
order infolog id Urutan order infolog id Urutan
organization infolog id Organisasi organization infolog id Organisasi
overdue infolog id lewat waktu overdue infolog id lewat waktu

View File

@ -183,7 +183,7 @@ ongoing infolog it in corso
only for details infolog it Solo per dettagli only for details infolog it Solo per dettagli
only the attachments infolog it solo gli allegati only the attachments infolog it solo gli allegati
only the links infolog it solo i collegamenti only the links infolog it solo i collegamenti
open infolog it aperte open(status) infolog it aperte
optional note to the link infolog it note opzionali per il Link optional note to the link infolog it note opzionali per il Link
order infolog it Ordine order infolog it Ordine
overdue infolog it scaduto overdue infolog it scaduto

View File

@ -146,7 +146,7 @@ ongoing infolog iw מתמשך
only the attachments infolog iw רק את המצורפים only the attachments infolog iw רק את המצורפים
only the links infolog iw רק את הקישורים only the links infolog iw רק את הקישורים
only up to this number of entries are displayed on the main screen. infolog iw רק עד כמות רשומות זו תוצג במסך הראשי only up to this number of entries are displayed on the main screen. infolog iw רק עד כמות רשומות זו תוצג במסך הראשי
open infolog iw פתח open(status) infolog iw פתח
optional note to the link infolog iw הערה אופציונלית לקישור optional note to the link infolog iw הערה אופציונלית לקישור
order infolog iw סדר order infolog iw סדר
overdue infolog iw עבר זמנו overdue infolog iw עבר זמנו

View File

@ -121,7 +121,7 @@ note infolog ko 노트
number of records to read (%1) infolog ko %1 개의 레코드를 읽었습니다. number of records to read (%1) infolog ko %1 개의 레코드를 읽었습니다.
offer infolog ko 제안 offer infolog ko 제안
ongoing infolog ko 진행중 ongoing infolog ko 진행중
open infolog ko 개설 open(status) infolog ko 개설
overdue infolog ko 만기초과 overdue infolog ko 만기초과
own infolog ko 소유 own infolog ko 소유
own open infolog ko 소유 개설 own open infolog ko 소유 개설

View File

@ -152,7 +152,7 @@ ongoing infolog lv notiekošs
only the attachments infolog lv tikai pielikumi only the attachments infolog lv tikai pielikumi
only the links infolog lv tikai saites only the links infolog lv tikai saites
only up to this number of entries are displayed on the main screen. infolog lv Galvenajā logā tiek parādīti ieraksti tikai līdz norādītajam skaitlim only up to this number of entries are displayed on the main screen. infolog lv Galvenajā logā tiek parādīti ieraksti tikai līdz norādītajam skaitlim
open infolog lv atvērt open(status) infolog lv atvērt
optional note to the link infolog lv izvēles piezīme saitei optional note to the link infolog lv izvēles piezīme saitei
order infolog lv Kārtība order infolog lv Kārtība
own open infolog lv pats atveras own open infolog lv pats atveras

View File

@ -224,7 +224,7 @@ only for details infolog nl Alleen voor details
only if i get assigned or removed infolog nl Alleen indien ik wordt toegewezen of verwijderd only if i get assigned or removed infolog nl Alleen indien ik wordt toegewezen of verwijderd
only the attachments infolog nl alleen de bijlagen only the attachments infolog nl alleen de bijlagen
only the links infolog nl alleen de links only the links infolog nl alleen de links
open infolog nl open open(status) infolog nl open
optional note to the link infolog nl optionele notitie bij de link optional note to the link infolog nl optionele notitie bij de link
order infolog nl Order order infolog nl Order
overdue infolog nl te laat overdue infolog nl te laat

View File

@ -178,7 +178,7 @@ ongoing infolog no pågående
only the attachments infolog no kun vedlegg only the attachments infolog no kun vedlegg
only the links infolog no kun lenker only the links infolog no kun lenker
only up to this number of entries are displayed on the main screen. infolog no Maks antall innslag som vises på hovedskjerm. only up to this number of entries are displayed on the main screen. infolog no Maks antall innslag som vises på hovedskjerm.
open infolog no åpen open(status) infolog no åpen
optional note to the link infolog no valgfri notat om Lenken optional note to the link infolog no valgfri notat om Lenken
order infolog no Ordre order infolog no Ordre
overdue infolog no forfalt overdue infolog no forfalt

View File

@ -185,7 +185,7 @@ ongoing infolog pl W toku
only for details infolog pl Tylko dla szczegółów only for details infolog pl Tylko dla szczegółów
only the attachments infolog pl tylko załączniki only the attachments infolog pl tylko załączniki
only the links infolog pl tylko linki only the links infolog pl tylko linki
open infolog pl otwarte open(status) infolog pl otwarte
optional note to the link infolog pl opcjonalna notatka do linku optional note to the link infolog pl opcjonalna notatka do linku
order infolog pl Kolejność order infolog pl Kolejność
overdue infolog pl zaległe overdue infolog pl zaległe

View File

@ -220,7 +220,7 @@ only for details infolog pt-br Somente para detalhes
only if i get assigned or removed infolog pt-br Somente se eu for designado ou removido only if i get assigned or removed infolog pt-br Somente se eu for designado ou removido
only the attachments infolog pt-br apenas arquivos anexos only the attachments infolog pt-br apenas arquivos anexos
only the links infolog pt-br apenas links only the links infolog pt-br apenas links
open infolog pt-br abrir open(status) infolog pt-br abrir
optional note to the link infolog pt-br Nota opcional para o Link optional note to the link infolog pt-br Nota opcional para o Link
order infolog pt-br Ordem order infolog pt-br Ordem
overdue infolog pt-br atrasado overdue infolog pt-br atrasado

View File

@ -180,7 +180,7 @@ ongoing infolog pt Em processamento
only for details infolog pt Apenas para detalhes only for details infolog pt Apenas para detalhes
only the attachments infolog pt Apenas os anexos only the attachments infolog pt Apenas os anexos
only the links infolog pt Apenas as ligações only the links infolog pt Apenas as ligações
open infolog pt Abrir open(status) infolog pt Abrir
optional note to the link infolog pt nota opcional da ligação optional note to the link infolog pt nota opcional da ligação
order infolog pt Ordenar order infolog pt Ordenar
overdue infolog pt Em atraso overdue infolog pt Em atraso

View File

@ -220,7 +220,7 @@ only for details infolog ru Только для подробностей
only if i get assigned or removed infolog ru Только если Я присоединен или отсоединен only if i get assigned or removed infolog ru Только если Я присоединен или отсоединен
only the attachments infolog ru только вложения only the attachments infolog ru только вложения
only the links infolog ru только ссылки only the links infolog ru только ссылки
open infolog ru открытые open(status) infolog ru открытые
optional note to the link infolog ru необязательная заметка к Ссылке optional note to the link infolog ru необязательная заметка к Ссылке
order infolog ru Порядок order infolog ru Порядок
overdue infolog ru просроченные overdue infolog ru просроченные

View File

@ -238,7 +238,7 @@ only for details infolog sk Len pre podrobnosti
only if i get assigned or removed infolog sk Iba ak mi je to priradené alebo odobraté only if i get assigned or removed infolog sk Iba ak mi je to priradené alebo odobraté
only the attachments infolog sk Iba prílohy only the attachments infolog sk Iba prílohy
only the links infolog sk Iba odkazy only the links infolog sk Iba odkazy
open infolog sk Otvorené open(status) infolog sk Otvorené
open and upcoming infolog sk Otvorené a blížiace sa open and upcoming infolog sk Otvorené a blížiace sa
optional note to the link infolog sk Voliteľná poznámka k odkazu optional note to the link infolog sk Voliteľná poznámka k odkazu
order infolog sk Triedenie order infolog sk Triedenie

View File

@ -215,7 +215,7 @@ only for details infolog sl Samo za podrobnosti
only if i get assigned or removed infolog sl Samo če sem dodeljen ali odstranjen only if i get assigned or removed infolog sl Samo če sem dodeljen ali odstranjen
only the attachments infolog sl Samo priloge only the attachments infolog sl Samo priloge
only the links infolog sl Samo povezave only the links infolog sl Samo povezave
open infolog sl Odprt open(status) infolog sl Odprt
optional note to the link infolog sl Neobvezna opomba za povezavo optional note to the link infolog sl Neobvezna opomba za povezavo
order infolog sl Vrstni red order infolog sl Vrstni red
overdue infolog sl Zapadel overdue infolog sl Zapadel

View File

@ -183,7 +183,7 @@ ongoing infolog sv Pågående
only for details infolog sv Endast detaljer only for details infolog sv Endast detaljer
only the attachments infolog sv Endast bilagor only the attachments infolog sv Endast bilagor
only the links infolog sv Endast länkar only the links infolog sv Endast länkar
open infolog sv Öppen open(status) infolog sv Öppen
optional note to the link infolog sv Frivillig anteckning till länken optional note to the link infolog sv Frivillig anteckning till länken
order infolog sv Sortering order infolog sv Sortering
overdue infolog sv Förfallen overdue infolog sv Förfallen

View File

@ -155,7 +155,7 @@ ongoing tr s
only the attachments tr sadece ekler only the attachments tr sadece ekler
only the links tr sadece baðlantýlar only the links tr sadece baðlantýlar
only up to this number of entries are displayed on the main screen. tr Ana penecerede gösterilecek en fazla giriþ sayýsý. only up to this number of entries are displayed on the main screen. tr Ana penecerede gösterilecek en fazla giriþ sayýsý.
open tr aç open(status) tr aç
optional note to the link tr Baðlantý için isteðe baðlý not optional note to the link tr Baðlantý için isteðe baðlý not
order tr Sýra order tr Sýra
overdue tr gecikme overdue tr gecikme

View File

@ -156,7 +156,7 @@ ongoing infolog uk в роботі
only the attachments infolog uk тільки додатки only the attachments infolog uk тільки додатки
only the links infolog uk тільки посилання only the links infolog uk тільки посилання
only up to this number of entries are displayed on the main screen. infolog uk На основному екрані показується не більше вказаної кількості записів only up to this number of entries are displayed on the main screen. infolog uk На основному екрані показується не більше вказаної кількості записів
open infolog uk відкрито open(status) infolog uk відкрито
optional note to the link infolog uk необов'язкова примітка до Посилання optional note to the link infolog uk необов'язкова примітка до Посилання
order infolog uk order infolog uk
overdue infolog uk прострочено overdue infolog uk прострочено

View File

@ -215,7 +215,7 @@ only for details infolog zh-tw 只顯示細節
only if i get assigned or removed infolog zh-tw 只在我被指派或移除時 only if i get assigned or removed infolog zh-tw 只在我被指派或移除時
only the attachments infolog zh-tw 只有附加檔案 only the attachments infolog zh-tw 只有附加檔案
only the links infolog zh-tw 只有連結 only the links infolog zh-tw 只有連結
open infolog zh-tw 開啟 open(status) infolog zh-tw 開啟
optional note to the link infolog zh-tw 連結的附加說明 optional note to the link infolog zh-tw 連結的附加說明
order infolog zh-tw 順序 order infolog zh-tw 順序
overdue infolog zh-tw 過期的 overdue infolog zh-tw 過期的

View File

@ -172,7 +172,7 @@ ongoing infolog zh 正在进行
only the attachments infolog zh 仅显示关联文件 only the attachments infolog zh 仅显示关联文件
only the links infolog zh 仅显示关联条目 only the links infolog zh 仅显示关联条目
only up to this number of entries are displayed on the main screen. infolog zh 首页中最多可显示多少事项? only up to this number of entries are displayed on the main screen. infolog zh 首页中最多可显示多少事项?
open infolog zh 待决事项 open(status) infolog zh 待决事项
optional note about the link infolog zh 该关联的说明 optional note about the link infolog zh 该关联的说明
optional note to the link infolog zh 该关联的说明 optional note to the link infolog zh 该关联的说明
order infolog zh 顺序 order infolog zh 顺序

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

View File

@ -2,158 +2,19 @@
<!-- $Id$ --> <!-- $Id$ -->
<overlay> <overlay>
<template id="infolog.index.header_left" template="" lang="" group="0" version="1.0.1.001"> <template id="infolog.index.header_left" template="" lang="" group="0" version="1.0.1.001">
<description class="headertext bold" value="InfoLog"/> <description value="InfoLog" class="headertext bold"/>
<styles>.bold { font-weight: bold; }</styles> <styles>.bold { font-weight: bold; }</styles>
</template> </template>
<template id="infolog.index.header_right" template="" lang="" group="0" version="1.7.001"> <template id="infolog.index.header_right" template="" lang="" group="0" version="1.7.001">
<hbox> <hbox>
<description class="headertext" value="Add:"/> <description value="Add:" class="headertext"/>
<button image="task" label="ToDo" id="add[task]" statustext="Add a new ToDo" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;type=task&amp;action=$cont[action]&amp;action_id=$cont[action_id]&amp;cat_id=$cont[cat_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/> <button label="ToDo" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;type=task&amp;action=$cont[action]&amp;action_id=$cont[action_id]&amp;cat_id=$cont[cat_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;" id="add[task]" image="task" statustext="Add a new ToDo"/>
<button image="phone" label="Phonecall" id="add[phone]" statustext="Add a new Phonecall" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;type=phone&amp;action=$cont[action]&amp;action_id=$cont[action_id]&amp;cat_id=$cont[cat_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/> <button label="Phonecall" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;type=phone&amp;action=$cont[action]&amp;action_id=$cont[action_id]&amp;cat_id=$cont[cat_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;" id="add[phone]" image="phone" statustext="Add a new Phonecall"/>
<button image="note" label="Note" id="add[note]" statustext="Add a new Note" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;type=note&amp;action=$cont[action]&amp;action_id=$cont[action_id]&amp;cat_id=$cont[cat_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/> <button label="Note" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;type=note&amp;action=$cont[action]&amp;action_id=$cont[action_id]&amp;cat_id=$cont[cat_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;" id="add[note]" image="note" statustext="Add a new Note"/>
</hbox> </hbox>
</template> </template>
<template id="infolog.index.rows-noheader" template="" lang="" group="0" version="1.7.005"> <template id="infolog.index.rows" template="" lang="" group="0" version="1.9.002">
<grid width="100%" class="my_form"> <grid width="100%">
<columns>
<column width="2%"/>
<column/>
<column disabled="@no_customfields"/>
<column width="120"/>
<column/>
<column disabled="@no_info_used_time_info_planned_time"/>
<column width="8%" disabled="@no_info_onwer_info_responsible"/>
<column width="12%" disabled="@no_info_datemodified"/>
<column width="3%" disabled="@no_actions"/>
<column width="3%" disabled="@no_actions"/>
</columns>
<rows>
<row class="th">
<vbox options="0,0">
<description value="Type"/>
<description value="Status" align="center"/>
<description value="Completed" align="right"/>
</vbox>
<vbox rows="2" cols="1" options="2">
<description value="Subject"/>
<description value="Description"/>
</vbox>
<vbox options="0,0">
<description id="customfields" options="Custom fields"/>
<grid spacing="0" padding="0">
<columns>
<column disabled="@no_customfields"/>
</columns>
<rows>
<row>
<description no_lang="1" id="customfields[$row][label]" options="Custom fields"/>
</row>
</rows>
</grid>
</vbox>
<vbox options="0,0">
<description value="Startdate"/>
<description value="Enddate"/>
<description value="Date completed"/>
</vbox>
<vbox>
<description value="Times"/>
<description class="planned" value="planned"/>
</vbox>
<vbox options="0,0">
<description value="Times"/>
<description class="planned" value="planned"/>
<description class="replanned" value="Re-planned"/>
</vbox>
<vbox>
<description value="Owner"/>
<description value="Responsible"/>
</vbox>
<description value="last changed"/>
<description value="Sub" class="noPrint"/>
<description value="Action" class="noPrint"/>
</row>
<row class="row" valign="top">
<hbox options="5" align="center">
<image label="$row_cont[info_type]" src="${row}[info_type]"/>
<button image="$row_cont[info_status_label]" ro_image="$row_cont[info_status_label]" label="$row_cont[info_status_label]" id="edit_status[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="$row_cont[info_percent]" label="$row_cont[info_percent]" id="edit_percent[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<image label="$row_cont[info_percent2]" src="{$row}[info_percent2]" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
</hbox>
<vbox options="0,0" class="fullWidth">
<link label="%s $row_cont[info_addr]" id="${row}[info_link]" options="b"/>
<hbox options="0,0">
<description class="$row_cont[sub_class]" no_lang="1" id="${row}[info_subject]"/>
<description no_lang="1" align="right" id="{$row}[info_number]" class="infoId"/>
</hbox>
<description options=",,1" no_lang="1" id="${row}[info_des]"/>
<link-string id="${row}[filelinks]"/>
</vbox>
<customfields-list class="customfields" id="$row" readonly="true"/>
<vbox options="0,0,1" rows="3" cols="1">
<date-time options=",8" id="${row}[info_startdate]" readonly="true" class="fixedHeight"/>
<date class="$row_cont[end_class] fixedHeight" id="${row}[info_enddate]" readonly="true"/>
<date-time id="${row}[info_datecompleted]" readonly="true" class="fixedHeight"/>
</vbox>
<vbox rows="3" cols="1">
<hbox readonly="true" options="1,0">
<date-duration id="${row}[info_used_time]" readonly="true" options="@duration_format"/>
<date-duration id="${row}[info_sum_timesheets]" readonly="true" options="@duration_format" class="timesheet"/>
</hbox>
<date-duration id="${row}[info_planned_time]" span="all" class="planned" readonly="true" options="@duration_format"/>
</vbox>
<vbox rows="3" cols="1" options="0,0">
<hbox options="1,0" id="l_used_time">
<image label="Times" src="timesheet"/>
<date-duration id="${row}[info_used_time]" readonly="true" options="@duration_format"/>
<date-duration id="${row}[info_sum_timesheets]" readonly="true" options="@duration_format" class="timesheet"/>
</hbox>
<hbox options="1,0" id="lplanified">
<image label="planned time" src="k_alarm.png"/>
<date-duration id="${row}[info_planned_time]" span="all" class="planned" readonly="true" options="@duration_format"/>
</hbox>
<hbox options="1,0" id="replanified">
<image label="Re-planned time" src="agt_reload.png"/>
<date-duration id="${row}[info_replanned_time]" span="all" class="replanned" readonly="true" options="@duration_format"/>
</hbox>
</vbox>
<vbox options="0,0">
<menulist>
<menupopup type="select-account" id="${row}[info_owner]" readonly="true"/>
</menulist>
<listbox type="select-account" id="${row}[info_responsible]" readonly="true" rows="5"/>
</vbox>
<vbox options="0" orient="0">
<date-time id="${row}[info_datemodified]" readonly="true"/>
<menulist>
<menupopup type="select-account" id="${row}[info_modifier]" readonly="true"/>
</menulist>
</vbox>
<vbox options="0" align="center" class="noPrint" orient="0">
<button image="new" label="Add sub" align="center" id="sp[$row_cont[info_id]]" statustext="Add a new sub-task, -note, -call to this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;action=sp&amp;action_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="view.gif" label="View subs" align="center" id="view[$row_cont[info_id]]" statustext="View all subs of this entry"/>
<button image="parent.gif" label="View parent" align="center" id="view[$row_cont[info_id_parent]]" statustext="View the parent of this entry and all his subs"/>
<button image="timesheet" label="Add timesheet entry" id="timesheet[$row_cont[info_id]]" onclick="window.open(egw::link('/index.php','menuaction=timesheet.timesheet_ui.edit&amp;link_app[]=infolog&amp;link_id[]=$row_cont[info_id]$row_cont[extra_links]'),'_blank','dependent=yes,width=600,height=400,scrollbars=yes,status=yes'); return false;" align="center"/>
</vbox>
<vbox class="noPrint">
<hbox options="0,0" class="noPrint" orient="0">
<button image="edit" label="Edit" id="edit[$row_cont[info_id]]" statustext="Edit this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="delete" label="Delete" id="delete[$row_cont[info_id]]" statustext="Delete this entry" onclick="return $row_cont[info_anz_subs] || confirm('Delete this entry');"/>
</hbox>
<hbox options="0,0" class="noPrint" orient="0">
<button image="done" label="Set status to done" id="close[$row_cont[info_id]]" statustext="Sets the status of this entry to done"/>
<button image="done_all" label="Set status to done for all entries" id="close_all[$row_cont[info_id]]" statustext="Sets the status of this entry and its subs to done"/>
<description/>
<description/>
</hbox>
<image src="filemanager/navbar" options="/index.php?menuaction=filemanager.filemanager_ui.index&amp;path=/apps/infolog/$row_cont[info_id]" class="image16" label="Filemanager"/>
</vbox>
</row>
</rows>
</grid>
</template>
<template id="infolog.index.rows" template="" lang="" group="0" version="1.7.005">
<grid>
<columns> <columns>
<column width="2%"/> <column width="2%"/>
<column/> <column/>
@ -216,9 +77,9 @@
</vbox> </vbox>
<nextmatch-sortheader label="last changed" id="info_datemodified" options="DESC"/> <nextmatch-sortheader label="last changed" id="info_datemodified" options="DESC"/>
<description value="Sub" class="noPrint"/> <description value="Sub" class="noPrint"/>
<description value="Action" class="noPrint"/> <nextmatch-header label="Action" class="noPrint" id="actions"/>
</row> </row>
<row class="row" valign="top"> <row class="row $row_cont[class] $row_cont[cat_id]" valign="top">
<hbox options="5" align="center"> <hbox options="5" align="center">
<image label="$row_cont[info_type]" src="${row}[info_type]"/> <image label="$row_cont[info_type]" src="${row}[info_type]"/>
<button image="$row_cont[info_status_label]" ro_image="$row_cont[info_status_label]" label="$row_cont[info_status_label]" id="edit_status[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/> <button image="$row_cont[info_status_label]" ro_image="$row_cont[info_status_label]" label="$row_cont[info_status_label]" id="edit_status[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
@ -292,21 +153,25 @@
<hbox options="0,0" class="noPrint" orient="0"> <hbox options="0,0" class="noPrint" orient="0">
<button image="edit" label="Edit" id="edit[$row_cont[info_id]]" statustext="Edit this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/> <button image="edit" label="Edit" id="edit[$row_cont[info_id]]" statustext="Edit this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="delete" label="Delete" id="delete[$row_cont[info_id]]" statustext="Delete this entry" onclick="return $row_cont[info_anz_subs] || confirm('Delete this entry');"/> <button image="delete" label="Delete" id="delete[$row_cont[info_id]]" statustext="Delete this entry" onclick="return $row_cont[info_anz_subs] || confirm('Delete this entry');"/>
<checkbox id="checked[]" options="$row_cont[info_id]" statustext="Select multiple contacts for a further action" align="right"/>
</hbox> </hbox>
<hbox options="0,0" class="noPrint" orient="0"> <hbox options="0,0" class="noPrint" orient="0">
<button image="done" label="Set status to done" id="close[$row_cont[info_id]]" statustext="Sets the status of this entry to done"/> <button image="done" label="Set status to done" id="close[$row_cont[info_id]]" statustext="Sets the status of this entry to done"/>
<button image="done_all" label="Set status to done for all entries" id="close_all[$row_cont[info_id]]" statustext="Sets the status of this entry and its subs to done"/> <button image="done_all" label="Set status to done for all entries" id="close_all[$row_cont[info_id]]" statustext="Sets the status of this entry and its subs to done"/>
</hbox> </hbox>
<image src="filemanager/navbar" options="/index.php?menuaction=filemanager.filemanager_ui.index&amp;path=/apps/infolog/$row_cont[info_id]" class="image16" label="Filemanager"/> <hbox options="0,0" class="image16" orient="0">
<button id="document[$row_cont[info_id]]" image="etemplate/merge" label="Insert in document"/>
<image src="filemanager/navbar" options="/index.php?menuaction=filemanager.filemanager_ui.index&amp;path=/apps/infolog/$row_cont[info_id]" class="image16" label="Filemanager"/>
</hbox>
</vbox> </vbox>
</row> </row>
</rows> </rows>
</grid> </grid>
</template> </template>
<template id="infolog.index" template="" lang="" group="0" version="1.7.003"> <template id="infolog.index" template="" lang="" group="0" version="1.9.002">
<grid width="100%" border="0" spacing="0" padding="0"> <grid width="100%" border="0" spacing="0" padding="0">
<columns> <columns>
<column width="90%"/> <column width="70%"/>
<column/> <column/>
</columns> </columns>
<rows> <rows>
@ -321,19 +186,78 @@
<template id="header_left"/> <template id="header_left"/>
<template id="header_right"/> <template id="header_right"/>
</row> </row>
<row disabled="!@main">
<template content="main" span="all" id="infolog.index.rows-noheader"/>
</row>
<row> <row>
<nextmatch options="infolog.index.rows" span="all" id="nm"/> <nextmatch options="infolog.index.rows" span="all" id="nm"/>
</row> </row>
<row class="noPrint"> <row class="noPrint" disabled="!@nm[selectcols]=/actions/">
<hbox span="all"> <hbox>
<button label="Add" id="add[note]" statustext="Add a new Entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;type=note&amp;action=$cont[action]&amp;action_id=$cont[action_id]&amp;cat_id={$cont[nm][cat_id]}'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/> <button label="Add" id="add[note]" statustext="Add a new Entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.infolog_ui.edit&amp;type=note&amp;action=$cont[action]&amp;action_id=$cont[action_id]&amp;cat_id={$cont[nm][cat_id]}'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button label="Cancel" id="cancel" statustext="Back to main list"/> <button label="Cancel" id="cancel" statustext="Back to main list"/>
</hbox> </hbox>
<hbox options="0" align="right" orient="0">
<buttononly id="legacy_actions" statustext="Select action" label="Select action" onclick="if (!egw_objectManager.executeActionImplementation(this, 'popup')) alert(egw::lang('You need to select some entries first!')); return false;;"/>
<button image="arrow_ltr" label="Check all" id="check_all" statustext="Check all" onclick="toggle_all(this.form,form::name('nm[rows][checked][]')); return false;" needed="1" class="checkAllArrow"/>
</hbox>
</row>
<row>
<box id="responsible_popup" class="action_popup prompt">
<vbox>
<description class="promptheader" value="Change responsible"/>
<description value="Select users or groups"/>
<listbox type="select-account" class="action_popup-content" id="responsible" rows="5" options="both"/>
<hbox>
<button label="Add" id="responsible_action[add]"/>
<button id="responsible_action[delete]" label="Delete"/>
<buttononly label="Cancel" onclick="hide_popup(this,'responsible_popup');"/>
</hbox>
</vbox>
</box>
<box id="link_popup" class="action_popup prompt">
<vbox>
<description class="promptheader" value="Add / Remove link"/>
<link-entry id="link" class="action_popup-content"/>
<hbox>
<button label="Add" id="link_action[add]"/>
<button id="link_action[delete]" label="Delete"/>
<buttononly label="Cancel" onclick="hide_popup(this,'link_popup');"/>
</hbox>
</vbox>
</box>
</row> </row>
</rows> </rows>
</grid> </grid>
<styles>
/**
* Add / remove link or category popup used for actions on multiple entries
*/
.action_popup {
position: fixed;
top: 200px;
left: 450px;
width: 76ex;
z-index: 20000;
display: none;
border-collapse:collapse;
border-spacing:0px
}
.action_popup-content {
display:block;
padding:2ex;
color:#666666;
margin: -2px -1px 0px -2px;
}
.action_popup &gt; table {
width: 100%
}
.action_popup .promptheader {
padding: 1ex;
width: 100%
}
.action_select {
width: 100%
}
</styles>
</template> </template>
</overlay> </overlay>