Stackedit/js/extensions/notifications.js

100 lines
2.8 KiB
JavaScript
Raw Normal View History

2013-05-27 19:45:33 +00:00
define([
"jquery",
"underscore",
"jgrowl"
], function($, _, jGrowl) {
2013-05-25 00:34:04 +00:00
var notifications = {
extensionId: "notifications",
extensionName: "Notifications",
defaultConfig: {
showingTime: 5000
2013-05-25 18:13:59 +00:00
},
2013-05-27 19:45:33 +00:00
settingsBloc: '<p>Shows notification messages in the bottom-right corner of the screen.</p>'
2013-05-25 00:34:04 +00:00
};
notifications.onReady = function() {
// jGrowl configuration
2013-05-27 19:45:33 +00:00
jGrowl.defaults.life = notifications.config.showingTime;
jGrowl.defaults.closer = false;
jGrowl.defaults.closeTemplate = '';
jGrowl.defaults.position = 'bottom-right';
2013-05-25 00:34:04 +00:00
};
function showMessage(msg, iconClass, options) {
if(!msg) {
return;
}
var endOfMsg = msg.indexOf("|");
if(endOfMsg !== -1) {
msg = msg.substring(0, endOfMsg);
if(!msg) {
return;
}
}
options = options || {};
iconClass = iconClass || "icon-info-sign";
2013-05-27 19:45:33 +00:00
jGrowl("<i class='icon-white " + iconClass + "'></i> " + _.escape(msg), options);
2013-05-25 00:34:04 +00:00
}
notifications.onMessage = function(message) {
2013-05-27 19:45:33 +00:00
console.log(message);
2013-05-25 00:34:04 +00:00
showMessage(message);
};
notifications.onError = function(error) {
2013-05-27 19:45:33 +00:00
console.error(error);
if(_.isString(error)) {
showMessage(error, "icon-warning-sign");
}
else if(_.isObject(error)) {
showMessage(error.message, "icon-warning-sign");
}
2013-05-25 00:34:04 +00:00
};
notifications.onOfflineChanged = function(isOffline) {
if(isOffline === true) {
showMessage("You are offline.", "icon-exclamation-sign msg-offline", {
sticky : true,
close : function() {
showMessage("You are back online!", "icon-signal");
}
});
} else {
$(".msg-offline").parents(".jGrowl-notification").trigger(
'jGrowl.beforeClose');
}
};
2013-05-26 22:59:03 +00:00
notifications.onSyncImportSuccess = function(fileDescList, provider) {
if(!fileDescList) {
return;
}
var titles = _.map(fileDescList, function(fileDesc) {
return fileDesc.title;
}).join(", ");
showMessage(titles + ' imported successfully from ' + provider.providerName + '.');
};
notifications.onSyncExportSuccess = function(fileDesc, syncAttributes) {
showMessage('"' + fileDesc.title + '" will now be synchronized on ' + syncAttributes.provider.providerName + '.');
};
notifications.onSyncRemoved = function(fileDesc, syncAttributes) {
showMessage(syncAttributes.provider.providerName + " synchronized location has been removed.");
};
notifications.onPublishSuccess = function(fileDesc) {
showMessage('"' + fileDesc.title + '" successfully published.');
};
notifications.onNewPublishSuccess = function(fileDesc, publishIndex, publishAttributes) {
showMessage('"' + fileDesc.title + '" is now published on ' + publishAttributes.provider.providerName + '.');
};
notifications.onPublishRemoved = function(fileDesc, publishAttributes) {
showMessage(publishAttributes.provider.providerName + " publish location has been removed.");
};
2013-05-25 00:34:04 +00:00
return notifications;
});