Author: ralfbecker
New Revision: 34819
URL: http://www.egroupware.org/viewvc/egroupware?rev=34819&view=rev
Log:
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
Added:
trunk/infolog/templates/default/images/completed.png (with props)
Modified:
trunk/infolog/inc/class.infolog_bo.inc.php
trunk/infolog/inc/class.infolog_ui.inc.php
trunk/infolog/js/index.js
trunk/infolog/lang/egw_bg.lang
trunk/infolog/lang/egw_ca.lang
trunk/infolog/lang/egw_cs.lang
trunk/infolog/lang/egw_da.lang
trunk/infolog/lang/egw_de.lang
trunk/infolog/lang/egw_el.lang
trunk/infolog/lang/egw_en.lang
trunk/infolog/lang/egw_es-es.lang
trunk/infolog/lang/egw_et.lang
trunk/infolog/lang/egw_eu.lang
trunk/infolog/lang/egw_fa.lang
trunk/infolog/lang/egw_fi.lang
trunk/infolog/lang/egw_fr.lang
trunk/infolog/lang/egw_hr.lang
trunk/infolog/lang/egw_hu.lang
trunk/infolog/lang/egw_id.lang
trunk/infolog/lang/egw_it.lang
trunk/infolog/lang/egw_iw.lang
trunk/infolog/lang/egw_ko.lang
trunk/infolog/lang/egw_lv.lang
trunk/infolog/lang/egw_nl.lang
trunk/infolog/lang/egw_no.lang
trunk/infolog/lang/egw_pl.lang
trunk/infolog/lang/egw_pt-br.lang
trunk/infolog/lang/egw_pt.lang
trunk/infolog/lang/egw_ru.lang
trunk/infolog/lang/egw_sk.lang
trunk/infolog/lang/egw_sl.lang
trunk/infolog/lang/egw_sv.lang
trunk/infolog/lang/egw_tr.lang
trunk/infolog/lang/egw_uk.lang
trunk/infolog/lang/egw_zh-tw.lang
trunk/infolog/lang/egw_zh.lang
trunk/infolog/setup/etemplates.inc.php
trunk/infolog/templates/default/index.xet
Modified: trunk/infolog/inc/class.infolog_bo.inc.php
URL: http://www.egroupware.org/viewvc/egroupware/trunk/infolog/inc/class.infolog_bo.inc.php?rev=34819&r1=34818&r2=34819&view=diff
— trunk/infolog/inc/class.infolog_bo.inc.php (original)
+++ trunk/infolog/inc/class.infolog_bo.inc.php Mon May 2 21:41:21 2011
@@ -128,7 +128,7 @@
‘own-open-overdue’ => ‘own overdue’,
‘own-upcoming’ => ‘own upcoming’,
‘own-open-upcoming’ => ‘own open and upcoming’,
-
'open-today' => 'open',
-
'open-today' => 'open(status)', 'open-overdue' => 'overdue', 'upcoming' => 'upcoming', 'open-upcoming' => 'open and upcoming',
Modified: trunk/infolog/inc/class.infolog_ui.inc.php
URL: http://www.egroupware.org/viewvc/egroupware/trunk/infolog/inc/class.infolog_ui.inc.php?rev=34819&r1=34818&r2=34819&view=diff
— trunk/infolog/inc/class.infolog_ui.inc.php (original)
+++ trunk/infolog/inc/class.infolog_ui.inc.php Mon May 2 21:41:21 2011
@@ -91,7 +91,7 @@
*/
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->tmpl = new etemplate();
@@ -161,8 +161,11 @@
$info[‘info_percent’] = (int) $info[‘info_percent’].’%’;
$editrights = $this->bo->check_access($info,EGW_ACL_EDIT);
$isresposible = $this->bo->is_responsible($info);
-
$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')));
-
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'))))) -
{ -
$info['class'] .= 'rowNoEdit '; -
} $readonlys["close[$id]"] = $done || ($readonlys["edit_status[$id]"] = !($editrights || $isresposible)); $readonlys["close_all[$id]"] = ($done) || !$info['info_anz_subs'] || ($readonlys["edit_status[$id]"] =
@@ -172,11 +175,21 @@
$readonlys[“edit_status[$id]”] = $readonlys[“edit_percent[$id]”] =
!$editrights && !$isresposible &&
!$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); -
$readonlys["sp[$id]"] = !$this->bo->check_access($info,EGW_ACL_ADD);
-
if (($readonlys["delete[$id]"] = !$this->bo->check_access($info,EGW_ACL_DELETE))) -
{ -
$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[0]'] = True; // no parent $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 != 'none' && $show_links != 'no_describtion' ||
@@ -231,56 +244,6 @@
$info[‘info_number’] = $info[‘info_id’];
}
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;}
/**
@@ -293,6 +256,11 @@
*/
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']; if ($query['filter'] == 'bydate') {
@@ -300,8 +268,6 @@
$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[‘enddate’])) $query[‘col_filter’][] = 'info_startdate <= '.$GLOBALS[‘egw’]->db->quote($query[‘enddate’]+(606024)-1);
-
//unset($query['startdate']); -
//unset($query['enddate']); } else {
@@ -309,17 +275,11 @@
unset($query[‘startdate’]);
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";
if (!isset($query['start'])) $query['start'] = 0;
-
if (!$query['csv_export']) -
{ -
$this->save_sessiondata($query); -
} -
else
-
if ($query['csv_export']) { $query['csv_fields'] = $this->csv_export_fields($query['col_filter']['info_type']); }
@@ -412,9 +372,15 @@
}
}
$rows[] = $info;
-
$readonlys["document[{$info['info_id']}]"] = !$this->prefs['default_document']; } 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['no_actions']) $rows['no_actions'] = true;
@@ -459,7 +425,7 @@
{
$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; }
@@ -507,23 +473,23 @@
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’]);
-
$values['multi_action'] = 'document'; -
$values['nm']['rows']['checked'] = array($id); -
} -
if (is_array($values) && isset($values['multi_action']) && $values['multi_action'] !== '') -
{ -
if (!count($values['nm']['rows']['checked']) && !$values['use_all'])
-
$values['nm']['action'] = 'document'; -
$values['nm']['selected'] = array($id); -
} -
if (is_array($values) && !empty($values['nm']['action'])) -
{ -
if (!count($values['nm']['selected']) && !$values['nm']['select_all']) { $msg = lang('You need to select some entries first'); } else { // 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] 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 if (in_array($multi_action, array('link', 'cat', 'completion', 'responsible')))
@@ -532,10 +498,10 @@
{
$values[$multi_action] = implode(’,’,$values[$multi_action]);
}
-
$values['multi_action'] .= '_' . $values[$multi_action]; -
} -
if ($this->action($values['multi_action'],$values['nm']['rows']['checked'],$values['use_all'], -
$success,$failed,$action_msg,false,$msg, $values['no_notifications']))
-
$values['nm']['action'] .= '_' . $values[$multi_action]; -
} -
if ($this->action($values['nm']['action'], $values['nm']['selected'], $values['nm']['select_all'], -
$success, $failed, $action_msg, $values['nm'], $msg, $values['nm']['checkboxes']['no_notifications'])) { $msg .= lang('%1 entries %2',$success,$action_msg); }
@@ -543,42 +509,29 @@
{
$msg .= lang(’%1 entries %2, %3 failed because of insufficent rights !!!’,$success,$action_msg,$failed);
}
-
unset($values['multi_action']); -
unset($values['use_all']);
-
unset($values['nm']['action']); -
unset($values['nm']['select_all']); } $values['msg'] = $msg; }
-
if(isset($values['nm']['rows'])) unset($values['nm']['rows']['checked']); // Can cause problems lower, no longer needed if (!$action) { $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_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); 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) { $values['nm']['filter'] = $_GET['filter'] && $_GET['filter'] != 'default' ? $_GET['filter'] :
@@ -588,19 +541,25 @@
{
$values[‘nm’][‘order’] = ‘info_datemodified’;
$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['action'] = $action; $values['action_id'] = $action_id;
-
} -
if($_GET['search']) { -
$values['nm']['search'] = $_GET['search']; -
}
-
$values['action_title'] = $action_title; -
} -
if($_GET['search']) $values['nm']['search'] = $_GET['search']; -
if ($values['nm']['add']) { $values['add'] = $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'])
@@ -610,10 +569,9 @@
}
elseif ($values[‘cancel’] && $own_referer)
{
-
$session = $this->read_sessiondata(); -
unset($session['action']); -
unset($session['action_id']); -
$this->save_sessiondata($session);
-
unset($values['nm']['action']); -
unset($values['nm']['action_id']); -
egw_cache::setSession('infolog', $values['nm']['session_for'].'session_data', $values['nm']); $this->tmpl->location($own_referer); } else
@@ -621,11 +579,9 @@
list($do,$do_id) = isset($values[‘main’]) ? each($values[‘main’]) : @each($values[‘nm’][‘rows’]);
list($do_id) = @each($do_id);
//echo “
infolog::index: do=’$do/$do_id’, referer=”; _debug_array($called_as);
+// todo: move this to actions(), interactive delete only if subs
switch($do)
{
-
case 'edit': -
case 'edit_status': -
return $this->edit($do_id,$action,$action_id,'',$called_as); case 'delete': if (!($values['msg'] = $this->delete($do_id,$called_as,$called_as ? '' : 'index'))) return; // did we deleted the entries, whos subentries we are showing?
@@ -647,8 +603,6 @@
case ‘close_all’:
$this->close($do_id,$called_as,$closesingle);
break;
-
case 'sp': -
return $this->edit(0,'sp',$do_id,'',$called_as); case 'view': $value = array(); $action = 'sp';
@@ -671,7 +625,6 @@
$action_id = 0;
break;
}
-
$values['main'][1] = $this->get_info($action_id,$readonlys['main']); break; } $readonlys['cancel'] = $action != 'sp';
@@ -724,10 +677,11 @@
$persist[‘called_as’] = $called_as;
$persist[‘own_referer’] = $own_referer;
$values[‘nm’][‘csv_fields’] = true; // get set in get_rows to not include all custom fields
-
$persist['nm'] = array( -
'sort' => $values['nm']['sort'], -
'order' => $values['nm']['order'], -
);
-
// store whole $values[nm] in etemplate request -
unset($values['nm']['rows']); -
$persist['nm'] = $values['nm']; -
if (!$called_as) { $GLOBALS['egw_info']['flags']['params']['manual'] = array('page' => 'ManualInfologIndex');
@@ -748,22 +702,25 @@
$sel_options = array(
‘info_type’ => $this->bo->enums[‘type’],
‘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
-
foreach($this->bo->enums['type'] as $type => $label) -
{ -
$types['type_'.$type] = $label; -
}
-
$types = $this->bo->enums['type']; if ($this->bo->group_owners) { // remove types owned by groups the user has no edit grant
@@ -771,41 +728,204 @@
{
if (!($this->bo->grants[$group] & EGW_ACL_EDIT))
{
-
unset($types['type_'.$type]); -
} -
} -
} -
$sel_options['multi_action'][lang('Change type:')] = $types;
-
unset($types[$type]); -
} -
} -
} -
$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 ($values['nm']['col_filter']['info_type'] && isset($this->bo->status[$values['nm']['col_filter']['info_type']])) -
{ -
$statis = $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[$query['col_filter']['info_type']]; } else // show all stati { $statis = array();
-
foreach($this->bo->status as $typ => $stati) -
{ -
if($typ == 'defaults') continue;
-
foreach($this->bo->status as $type => $stati) -
{ -
if ($type == 'defaults') continue; $statis += $stati; } $statis = array_unique($statis); }
-
foreach($statis as $id => $label) -
{ -
$change_status['status_'.$id] = $label; -
} -
$sel_options['multi_action'][lang('Change status:')] = $change_status; -
// Merge print -
if ($this->prefs['document_dir']) -
{ -
$sel_options['multi_action'][lang('Insert in document').':'] = $this->get_document_actions(); -
} -
egw_framework::validate_file('.','index','infolog'); -
return $this->tmpl->exec('infolog.infolog_ui.index',$values,$sel_options,$readonlys,$persist,$return_html ? -1 : 0);
-
foreach($statis as $type => &$data) -
{ -
$data = array( -
'caption' => $data, -
'icon' => $type, -
); -
} -
$actions = array( -
'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']) -
{ -
$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'), -
); -
} -
$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 @@- @param int &$success number of succeded actions
- @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/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
*/
- 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 “infolog_ui::action(’$action’,”.print_r($checked,true).’,’.(int)$use_all.",…)
\n";
$success = $failed = 0;
if ($use_all)
{
-
// get the whole selection -
if($session_name) { -
$query = is_array($session_name) ? $session_name : egw_session::appsession($session_name,'infolog'); -
} else { -
$query = $this->read_sessiondata(); -
} -
if ($use_all) -
{ -
@set_time_limit(0); // switch off the execution time limit, as it's for big selections to small -
$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']; -
}
-
@set_time_limit(0); // switch off the execution time limit, as it's for big selections to small -
$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']; } } }
@@ -861,17 +974,19 @@
if(!$link_id)
{
$action_msg = ‘linked’;
-
$msg = lang('You need to select an entry for linking. ');
-
$msg = lang('You need to select an entry for linking.'); break; } $title = egw_link::title($app, $link_id); foreach($checked as $id) {
-
if(!$this->bo->check_access($id, EGW_ACL_EDIT)) {
-
if(!$this->bo->check_access($id, EGW_ACL_EDIT)) -
{ $failed++; continue; }
-
if($add_remove == 'add') {
-
if($add_remove == 'add') -
{ $action_msg = lang('linked to %1', $title); if(egw_link::link('infolog', $id, $app, $link_id)) {
@@ -881,33 +996,41 @@
{
$failed++;
}
-
} else {
-
} -
else -
{ $action_msg = lang('unlinked from %1', $title); $count = egw_link::unlink(0, 'infolog', $id, '', $app, $link_id); $success += $count; } }
-
return ($failed == 0);
-
return $failed == 0; -
case 'document': $msg = $this->download_document($checked,$settings); $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 foreach($checked as $id)
-
{
-
{ if(!$entry = $this->bo->read($id)) { continue; }
-
switch($action) -
{
-
switch($action) -
{ case 'close': $action_msg = lang('closed'); $this->close($id, '', false, $skip_notifications); $success++; break; -
case 'delete': $action_msg = lang('deleted'); $result = $this->delete($id, '', 'multi-action', $skip_notifications);
@@ -920,6 +1043,7 @@
$failed++;
}
break;
+
case ‘type’:
$action_msg = lang(‘changed type’);
// Dont allow to change the type, if user has no delete rights from the group-owner
@@ -937,7 +1061,8 @@
$action_msg = lang(‘changed completion to %1%’, $settings);
$entry[‘info_percent’] = $settings;
// 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'; } if($this->bo->write($entry, true,true,true,$skip_notifications))
@@ -963,11 +1088,14 @@
{
$success++;
}
-
} else {
-
} -
else -
{ $msg .= lang('Invalid status for entry type %1. ', lang($this->bo->enums['type'][$entry['info_type']])); $failed++; } break; -
case 'cat': $cat_name = categories::id2name($settings); $action_msg = lang('changed category to %1', $cat_name);
@@ -981,6 +1109,7 @@
$failed++;
}
break;
+
case ‘responsible’:
list($add_remove, $users) = explode(’_’, $settings, 2);
$action_msg = lang(‘changed responsible’) . ’ - ’ . ($add_remove == ‘add’ ? lang(‘added’) : lang(‘removed’)) . ’ ';
@@ -1003,7 +1132,7 @@
break;
}
}
-
return ($failed == 0);
-
return $failed == 0;}
/**
@@ -1154,36 +1283,8 @@
if ($button)
{
//Copy Infolog
-
if (($button == '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 == 'copy') $action = 'copy'; -
if ($button == 'print') { $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 @@
‘to_id’ => $info_id,
‘to_app’ => ‘infolog’,
);
-
switch ($action)
-
switch ($action) { case 'sp': $links = egw_link::get_links('infolog',$parent['info_id'],'!'.egw_link::VFS_APPNAME);
@@ -1522,6 +1623,36 @@
{
$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 $types = $this->bo->enums['type'];
@@ -1966,7 +2097,7 @@
}
$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; $this->index(0,$app,$args[$view_id],array(
Modified: trunk/infolog/js/index.js
URL: http://www.egroupware.org/viewvc/egroupware/trunk/infolog/js/index.js?rev=34819&r1=34818&r2=34819&view=diff
— trunk/infolog/js/index.js (original)
+++ trunk/infolog/js/index.js Mon May 2 21:41:21 2011
@@ -18,6 +18,11 @@
selbox.value = “”;
}
+function open_popup(_action, _senders)
+{
- alert('Show popup: '+_action.id);
+}
/**
- Hide popup and clear values
*/
Modified: trunk/infolog/lang/egw_bg.lang
URL: http://www.egroupware.org/viewvc/egroupware/trunk/infolog/lang/egw_bg