editor: handle undefined action state
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 14 Apr 2014 14:34:09 +0000 (16:34 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Wed, 23 Apr 2014 11:05:05 +0000 (13:05 +0200)
src/editor/modules/documentToolbar/actionView.js
src/editor/modules/statusBar/statusBar.js

index ddef396..114eb32 100644 (file)
@@ -1,6 +1,7 @@
 define(function(require) {
     
 'use strict';
+/* globals gettext */
 
 var $ = require('libs/jquery'),
     Backbone = require('libs/backbone'),
@@ -44,6 +45,12 @@ var ActionView = Backbone.View.extend({
 
         var actionState = this.action.getState();
 
+        if(!actionState) {
+            this.$el.html(buttonTemplate({label: gettext('error :('), iconName:''}));
+            this._button().attr('disabled', true);
+            return;
+        }
+
         var templateContext = {
             label: actionState.label || '?',
             iconName: (iconExists(actionState.icon)) ? actionState.icon : null,
index 5ad7c6b..0f08c59 100644 (file)
@@ -22,11 +22,19 @@ return function(sandbox){
         },
         showAction: function(action) {
             var state = action.getState(),
+                description;
+            
+            if(!state) {
+                description = gettext('error :(');
+                logger.error('Got undefined action state: ' + action.name);
+            } else {
                 description = state.description;
-            if(!description) {
-                description = state.allowed ? gettext('Undescribed action') : gettext('Action not allowed');
-                logger.info('Undescribed action: ' + action.name);
+                if(!description) {
+                    description = state.allowed ? gettext('Undescribed action') : gettext('Action not allowed');
+                    logger.info('Undescribed action: ' + action.name);
+                }
             }
+
             view.text(description);
             if(!state.allowed) {
                 view.prepend('<span class="badge badge-warning" style="margin-right: 5px">!</span>');