X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/d0bf0dec6f6c72fb6dd3bccccbabf858c71368a0..ab8679cf48d2edc82f2b7a882a87bff24be9f745:/src/fnpjs/actions.js?ds=sidebyside diff --git a/src/fnpjs/actions.js b/src/fnpjs/actions.js index d369ff0..f380ed6 100644 --- a/src/fnpjs/actions.js +++ b/src/fnpjs/actions.js @@ -3,7 +3,11 @@ define(function(require) { 'use strict'; var _ = require('libs/underscore'), - Backbone = require('libs/backbone'); + Backbone = require('libs/backbone'), + logging = require('fnpjs/logging/logging'); + +var logger = logging.getLogger('fnpjs.actions'); + var Action = function(fqName, definition, config, appObject) { this.fqName = fqName; @@ -52,7 +56,12 @@ _.extend(Action.prototype, Backbone.Events, { getState: function() { var gotState; if(!this._cache) { - gotState = this.definition.getState.call(this, this.params); + try { + gotState = this.definition.getState.call(this, this.params); + } catch(e) { + logger.exception(e); + return; + } if(typeof gotState === 'boolean') { gotState = {allowed: gotState}; } @@ -63,10 +72,11 @@ _.extend(Action.prototype, Backbone.Events, { } return this._cache; }, - execute: function() { + execute: function(callback) { var state = this.getState(); + callback = callback || function() {}; if(state.allowed) { - return state.execute.call(this, this.params, this.appObject); + return state.execute.call(this, callback, this.params, this.appObject); } throw new Error('Execution not allowed'); }