- Abstract multiple actions code to remove multiple if / switches

- Add multiple entry action to change entry delegation
This commit is contained in:
Nathan Gray 2010-12-08 19:01:13 +00:00
parent a3d2d724ee
commit acf078a1c0
3 changed files with 38 additions and 31 deletions

View File

@ -511,19 +511,20 @@ class infolog_ui
else else
{ {
// Some processing to add values in for links and cats // Some processing to add values in for links and cats
if($values['multi_action'] == 'link') $multi_action = $values['multi_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'] = 'link_' . key($values['link_action']) . '_'.$values['action_link']; $values['multi_action'] .= '_' . key($values[$multi_action . '_action']);
unset($values['action_link']);
unset($values['link_action']);
} }
elseif ($values['multi_action'] == 'cat') // Action has a parameter - cat_id, percent, etc
if (in_array($multi_action, array('link', 'cat', 'completion', 'responsible')))
{ {
$values['multi_action'] = 'cat_' . $values['cat']; if(is_array($values[$multi_action]))
{
$values[$multi_action] = implode(',',$values[$multi_action]);
} }
elseif ($values['multi_action'] == 'completion') $values['multi_action'] .= '_' . $values[$multi_action];
{
$values['multi_action'] = 'completion_' . $values['completion'];
} }
if ($this->action($values['multi_action'],$values['nm']['rows']['checked'],$values['use_all'], if ($this->action($values['multi_action'],$values['nm']['rows']['checked'],$values['use_all'],
$success,$failed,$action_msg,false,$msg)) $success,$failed,$action_msg,false,$msg))
@ -741,6 +742,7 @@ class infolog_ui
'cat' => lang('Change category'), 'cat' => lang('Change category'),
'link' => lang('Add or delete links'), 'link' => lang('Add or delete links'),
'completion' => lang('Change completion'), 'completion' => lang('Change completion'),
'responsible' => lang('Change responsible'),
) )
); );
@ -949,6 +951,26 @@ class infolog_ui
$failed++; $failed++;
} }
break; break;
case 'responsible':
list($add_remove, $users) = explode('_', $settings, 2);
$action_msg = lang('changed responsible') . ' - ' . ($add_remove == 'add' ? lang('added') : lang('removed')) . ' ';
$users = explode(',', $users);
$names = array();
foreach($users as $account_id) {
$names[] = common::display_fullname($GLOBALS['egw']->accounts->id2name($account_id));
}
$action_msg .= implode(', ', $names);
$function = $add_remove == 'add' ? 'array_merge' : 'array_diff';
$entry['info_responsible'] = array_unique($function($entry['info_responsible'], $users));
if($this->bo->write($entry))
{
$success++;
}
else
{
$failed++;
}
break;
} }
} }
return ($failed == 0); return ($failed == 0);

View File

@ -9,24 +9,9 @@
function do_infolog_action(selbox) { function do_infolog_action(selbox) {
if(selbox.value == "") return; if(selbox.value == "") return;
var prefix = selbox.id.substring(0,selbox.id.indexOf('[')); var prefix = selbox.id.substring(0,selbox.id.indexOf('['));
switch(selbox.value) { var popup = document.getElementById(prefix + '[' + selbox.value + '_popup]');
case "link":
var popup = document.getElementById(prefix+'[link_popup]');
if(popup) { if(popup) {
popup.style.display = 'block'; popup.style.display = 'block';
}
return;
case "cat":
var popup = document.getElementById(prefix+'[cat_popup]');
if(popup) {
popup.style.display = 'block';
}
return;
case "completion":
var popup = document.getElementById(prefix+'[completion_popup]');
if(popup) {
popup.style.display = 'block';
}
return; return;
} }
selbox.form.submit(); selbox.form.submit();

File diff suppressed because one or more lines are too long