Oops #2
[redakcja.git] / project / static / js / app.js
index 7bf026b..2210654 100644 (file)
@@ -3,6 +3,14 @@ var editor;
 var panel_hooks;
 
 
+// prevent a console.log from blowing things up if we are on a browser that
+// does not support it
+if (typeof console === 'undefined') {
+  window.console = {} ;
+  console.log = console.info = console.warn = console.error = function(){};
+}
+
+
 (function(){
   // Classes
   var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
@@ -104,13 +112,24 @@ var Editor = Editor || {};
 
 // Obiekt implementujÄ…cy wzorzec KVC/KVO
 Editor.Object = Class.extend({
+  _className: 'Editor.Object',
   _observers: {},
+  _guid: null,
+  
+  init: function() {
+    this._observers = {};
+  },
+  
+  description: function() {
+    return this._className + '(guid = ' + this.guid() + ')';
+  },
   
   addObserver: function(observer, property, callback) {
+    // console.log('Add observer', observer.description(), 'to', this.description(), '[', property, ']');
     if (!this._observers[property]) {
       this._observers[property] = {}
     }
-    this._observers[property][this.guid()] = callback;
+    this._observers[property][observer.guid()] = callback;
     return this;
   },
   
@@ -120,6 +139,7 @@ Editor.Object = Class.extend({
         this.removeObserver(observer, property)
       }
     } else {
+      // console.log('Remove observer', observer.description(), 'from', this.description(), '[', property, ']');
       delete this._observers[property][observer.guid()];
     }
     return this;
@@ -128,7 +148,9 @@ Editor.Object = Class.extend({
   notifyObservers: function(property) {
     var currentValue = this[property];
     for (var guid in this._observers[property]) {
-      this._observers[property][guid](property, currentValue);
+      // console.log(this._observers[property][guid]);
+      // console.log('Notifying', guid, 'of', this.description(), '[', property, ']');
+      this._observers[property][guid](property, currentValue, this);
     }
     return this;
   },