X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/0ac983162763199b07270a9a675e22672d4462ce..46fdcc29313a6c0dd897b8060335061f433897fd:/project/static/js/app.js diff --git a/project/static/js/app.js b/project/static/js/app.js index 7bf026b4..fde15393 100644 --- a/project/static/js/app.js +++ b/project/static/js/app.js @@ -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/ : /.*/; @@ -41,20 +49,21 @@ var panel_hooks; this.render_template = function render_template(str, data){ // Figure out if we're getting a template, or if we need to - // load the template - and be sure to cache the result. + // load the template - and be sure to cache the result. var fn = !/^[\d\s-_]/.test(str) ? cache[str] = cache[str] || render_template(document.getElementById(str).innerHTML) : // Generate a reusable function that will serve as a template // generator (and which will be cached). + new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};" + // Introduce the data as local variables using with(){} "with(obj){p.push('" + - // Convert the template into pure JavaScript + // Convert the template into pure JavaScript str .replace(/[\r\t\n]/g, " ") .split("<%").join("\t") @@ -104,13 +113,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 +140,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 +149,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; }, @@ -159,5 +182,4 @@ Editor.Object = Class.extend({ Editor.Object._lastGuid = 0; - var panels = [];