Calendar: Add icon for notification action, use REQUEST method (reconfirm event) for immediate notifications

This commit is contained in:
nathangray 2021-02-11 11:43:47 -07:00
parent c42795cc9e
commit 1687f199e5
3 changed files with 21 additions and 12 deletions

View File

@ -25,6 +25,7 @@ define('MSG_ACCEPTED',5);
define('MSG_ALARM',6); define('MSG_ALARM',6);
define('MSG_DISINVITE',7); define('MSG_DISINVITE',7);
define('MSG_DELEGATED',8); define('MSG_DELEGATED',8);
define('MSG_REQUEST',9);
/** /**
* Class to access AND manipulate all calendar data (business object) * Class to access AND manipulate all calendar data (business object)
@ -810,6 +811,9 @@ class calendar_boupdate extends calendar_bo
$action = 'Alarm'; $action = 'Alarm';
$pref = 'Alarm'; $pref = 'Alarm';
break; break;
case MSG_REQUEST:
$method = 'REQUEST';
break;
default: default:
$method = 'PUBLISH'; $method = 'PUBLISH';
} }

View File

@ -3482,12 +3482,18 @@ class calendar_uiforms extends calendar_ui
return $this->process_edit($event); return $this->process_edit($event);
} }
/**
* Immediately send notification to selected users
*
* @param array $content
* @throws Api\Exception\AssertionFailed
*/
public function notify($content=array()) public function notify($content=array())
{ {
if(is_array($content) && $content['button']) if(is_array($content) && $content['button'])
{ {
$participants = array_filter($content['participants']['notify']); $participants = array_filter($content['participants']['notify']);
$this->bo->_send_update(MSG_ALARM,$participants,$content,null,0,null,true); $this->bo->send_update(MSG_REQUEST,$participants,$content,null,0,null,true);
Framework::window_close(); Framework::window_close();
} }
@ -3505,8 +3511,6 @@ class calendar_uiforms extends calendar_ui
); );
$readonlys = []; $readonlys = [];
$etpl = new Etemplate('calendar.notify_dialog'); $etpl = new Etemplate('calendar.notify_dialog');
$preserve = $content; $preserve = $content;

View File

@ -963,15 +963,6 @@ class calendar_uilist extends calendar_ui
'hint' => 'Do not notify of these changes', 'hint' => 'Do not notify of these changes',
'group' => $group, 'group' => $group,
), ),
'notifications' => array(
'caption' => 'Send notifications',
'hint' => 'Send notifications to users right now',
'url' => 'calendar.calendar_uiforms.notify&id=$app_id',
'popup' => Link::get_registry('calendar', 'view_popup'),
'allowOnMultiple' => false,
'group' => $group,
'disableClass' => 'rowNoView',
)
); );
$status = array_map('lang',$this->bo->verbose_status); $status = array_map('lang',$this->bo->verbose_status);
unset($status['G']); unset($status['G']);
@ -1051,6 +1042,16 @@ class calendar_uilist extends calendar_ui
); );
} }
$actions['notifications'] = array(
'caption' => 'Send notifications',
'hint' => 'Send notifications to users right now',
'icon' => 'notifications/navbar',
'url' => 'calendar.calendar_uiforms.notify&id=$app_id',
'popup' => Link::get_registry('calendar', 'view_popup'),
'allowOnMultiple' => false,
'group' => $group,
'disableClass' => 'rowNoView',
);
if ($GLOBALS['egw_info']['user']['apps']['timesheet']) if ($GLOBALS['egw_info']['user']['apps']['timesheet'])
{ {
$actions['timesheet'] = array( // interactive add for a single event $actions['timesheet'] = array( // interactive add for a single event