plugins = [],
actionDefinitions = {},
config,
- actionsAppObject;
+ actionsAppObject,
+ currentContextMenu;
_.each(_.keys(modules || {}), function(moduleName) {
if(_.contains(app.permissions[moduleName] || [], 'handleEvents')) {
return bootstrappedData[moduleName];
};
- this.getTemplate = function(templateName) {
- return _.template($('[data-template-name="' + moduleName + '.' + templateName + '"]').html().trim());
- };
-
this.publish = function(eventName) {
var eventArgs = Array.prototype.slice.call(arguments, 1);
_.each(eventListeners, function(listenerModuleName) {
this.registerActionsAppObject = function(_actionsAppObject) {
actionsAppObject = _actionsAppObject;
};
+
+ this.showContextMenu = function(menu, coors) {
+ if(currentContextMenu) {
+ currentContextMenu.close();
+ }
+ currentContextMenu = menu;
+ $(config.rootSelector).append(menu.dom);
+ menu.dom.css({top: coors.y, left: coors.x});
+ menu.show();
+ };
+
+ this.getTutorialItem = function(name) {
+ var tutorial = this.getConfig().tutorial;
+ var tutorialText, index;
+ tutorial.some(function(item, i) {
+ if(item.name === name) {
+ tutorialText = item.text;
+ index = i;
+ return true;
+ }
+ });
+ if(!tutorialText)
+ return;
+ return {index: index + 1, text: tutorialText};
+ }
};
-
-
+
this.setBootstrappedData = function(moduleName, data) {
bootstrappedData[moduleName] = data;
};
app.initModules.forEach(function(moduleName) {
getModuleInstance(moduleName).start();
});
+
+ $(config.rootSelector)[0].addEventListener('click', function(e) {
+ if(currentContextMenu && !currentContextMenu.dom[0].contains(e.target)) {
+ currentContextMenu.close();
+ currentContextMenu = null;
+ }
+ }, true);
};
};