Merge branch 'master' of git@stigma.nowoczesnapolska.org.pl:platforma
authorzuber <marek@stepniowski.com>
Fri, 28 Aug 2009 10:48:24 +0000 (12:48 +0200)
committerzuber <marek@stepniowski.com>
Fri, 28 Aug 2009 10:48:24 +0000 (12:48 +0200)
1  2 
project/static/js/editor.js

@@@ -19,13 -19,19 +19,19 @@@ function Panel(panelWrap) 
        });
  }
  
- Panel.prototype.callHook = function(hookName) {
+ Panel.prototype.callHook = function() {
+     args = $.makeArray(arguments)
+     var hookName = args.splice(0,1)[0]
+     var noHookAction = args.splice(0,1)[0]
+       $.log('calling hook: ', hookName, 'with args: ', args);
        if(this.hooks && this.hooks[hookName])
-       {       
- //            arguments.shift();
-               $.log('calling hook: ', hookName, 'with args: ', arguments);
-               return this.hooks[hookName].apply(this, arguments);
+       {               
+               return this.hooks[hookName].apply(this, args);
        }
+     else if (noHookAction instanceof Function)
+         return noHookAction(args);
+     else return false;
  }
  
  Panel.prototype.load = function (url) {
@@@ -63,20 -69,25 +69,24 @@@ Panel.prototype.unload = function(event
  }
  
  Panel.prototype.refresh = function(event, data) {
-       $('.change-notification', this.wrap).fadeOut();
-       $.log('refreshing view for panel ', this.current_url);
-       this.load(this.current_url);
- //    if( this.callHook('refresh') )
+     reload = function() {
+       $.log('hard reload for panel ', this.current_url);
+       this.load(this.current_url);
+         return true;
+     }
+     if( this.callHook('refresh', reload) )
+       $('.change-notification', this.wrap).fadeOut();
  } 
  
  Panel.prototype.otherPanelChanged = function(other) {
        $.log('panel ', other, ' changed.');
-       $('.change-notification', this.wrap).fadeIn();
-       this.callHook('dirty');
+       if(!this.callHook('dirty'))
+         $('.change-notification', this.wrap).fadeIn();
  }     
  
  Panel.prototype.markChanged = function () {
 -      if(!this.wrap.hasClass('changed') ) // TODO: is this needed ?
 -              this.wrap.addClass('changed');
 +      this.wrap.addClass('changed');
  }
  
  Panel.prototype.changed = function () {
@@@ -89,7 -100,7 +99,7 @@@ Panel.prototype.unmarkChanged = functio
  
  Panel.prototype.saveInfo = function() {
        var saveInfo = {};
-       this.callHook('saveInfo', saveInfo);
+       this.callHook('saveInfo', null, saveInfo);
        return saveInfo;
  }
  
@@@ -101,7 -112,7 +111,7 @@@ function Editor() 
  Editor.prototype.setupUI = function() {
        // set up the UI visually and attach callbacks
        var self = this;
-     
+    
        self.rootDiv.makeHorizPanel({}); // TODO: this probably doesn't belong into jQuery
      self.rootDiv.css('top', ($('#header').outerHeight() ) + 'px');
      
              panelWrap.data('ctrl').load(url);
              self.savePanelOptions();
          });
-     });       
+     });
+       $(document).bind('panel:contentChanged', function(event, data) {
+         $('#toolbar-button-save').removeAttr('disabled');
+       });
      
      $('#toolbar-button-save').click( function (event, data) { self.saveToBranch(); } );
-     
      self.rootDiv.bind('stopResize', function() { self.savePanelOptions() });
  }
  
@@@ -211,6 -225,7 +224,7 @@@ Editor.prototype.saveToBranch = functio
                                $.log('save errors: ', data.errors)
                        else 
                                self.refreshPanels(changed_panel);
+             $('#toolbar-button-save').attr('disabled', 'disabled');
                },
                error: function(rq, tstat, err) {
                        $.log('save error', rq, tstat, err);