Implement Web Notification API into egw_notification

This commit is contained in:
Hadi Nategh 2016-04-29 14:25:07 +00:00
parent 22fa4e70bc
commit 6260d948a7
2 changed files with 82 additions and 0 deletions

View File

@ -32,6 +32,7 @@
egw_tail;
egw_inheritance;
egw_message;
egw_notification;
app_base;
*/

View 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);};
}
};
});