mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-29 11:23:54 +01:00
Implement Web Notification API into egw_notification
This commit is contained in:
parent
22fa4e70bc
commit
6260d948a7
@ -32,6 +32,7 @@
|
||||
egw_tail;
|
||||
egw_inheritance;
|
||||
egw_message;
|
||||
egw_notification;
|
||||
app_base;
|
||||
*/
|
||||
|
||||
|
81
api/js/jsapi/egw_notification.js
Normal file
81
api/js/jsapi/egw_notification.js
Normal file
@ -0,0 +1,81 @@
|
||||
/**
|
||||
* EGroupware clientside API object
|
||||
*
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @package etemplate
|
||||
* @subpackage api
|
||||
* @link http://www.egroupware.org
|
||||
* @author Hadi Nategh <hn-AT-stylite.de>
|
||||
* @version $Id: $
|
||||
*/
|
||||
|
||||
/*egw:uses
|
||||
egw_core;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Methods to display browser notification
|
||||
*
|
||||
* @augments Class
|
||||
* @param {string} _app application name object is instanciated for
|
||||
* @param {object} _wnd window object is instanciated for
|
||||
*/
|
||||
egw.extend('notification', egw.MODULE_WND_LOCAL, function(_app, _wnd)
|
||||
{
|
||||
"use strict";
|
||||
|
||||
// Notification permission, the default value is 'default' which is equivalent to 'denied'
|
||||
var permission = Notification.permission || 'default';
|
||||
|
||||
if (Notification && Notification.requestPermission) Notification.requestPermission (function(_permission){
|
||||
permission = _permission;
|
||||
});
|
||||
|
||||
return {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} _title a string to be shown as notification message
|
||||
* @param {object} _options an object of Notification possible options:
|
||||
* options = {
|
||||
* dir: // direction of notification to be shown rtl, ltr or auto
|
||||
* lang: // a valid BCP 47 language tag
|
||||
* body: // DOM body
|
||||
* icon: // parse icon URL, default icon is app icon
|
||||
* tag: // a string value used for tagging an instance of notification, default is app name
|
||||
* onclick: // Callback function dispatches on click on notification message
|
||||
* onshow: // Callback function dispatches when notification is shown
|
||||
* onclose: // Callback function dispateches on notification close
|
||||
* onerror: // Callback function dispatches on error, default is a egw.debug log
|
||||
* }
|
||||
*/
|
||||
notification: function (_title, _options)
|
||||
{
|
||||
// All options including callbacks
|
||||
var options = _options || {};
|
||||
|
||||
// Options used for creating Notification instane
|
||||
var inst_options = {
|
||||
tag: options.tag || egw.app_name(),
|
||||
dir: options.dir || 'ltr',
|
||||
lang: options.lang || egw.preference('lang', 'common'),
|
||||
body: options.body || '',
|
||||
icon: options.icon || egw.image('navbar', egw.app_name())
|
||||
};
|
||||
|
||||
// Create an instance of Notification object
|
||||
var notification = new Notification(_title, inst_options);
|
||||
|
||||
// Callback function dispatches on click on notification message
|
||||
notification.onclick = options.onclick || '';
|
||||
// Callback function dispatches when notification is shown
|
||||
notification.onshow = options.onshow || '';
|
||||
// Callback function dispateches on notification close
|
||||
notification.onclose = options.onclose || '';
|
||||
// Callback function dispatches on error
|
||||
notification.onerror = options.onerror || function (e) {egw.debug('Notification failed because of ' + e);};
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
});
|
Loading…
Reference in New Issue
Block a user