Fixed missing buttons when switching too much.
[redakcja.git] / project / static / js / editor.js
index 8267097..94b4ca9 100644 (file)
@@ -92,7 +92,8 @@ Panel.prototype.unload = function(event, data) {
         $(this.contentDiv).html('');
 
         // disconnect the toolbar
-        $('div.panel-toolbar span.panel-toolbar-extra', this.wrap).empty();
+        $('div.panel-toolbar span.panel-toolbar-extra', this.wrap).html(
+            '<span />');
         
         this.callHook('unload');
         this.hooks = null; // flush the hooks
@@ -149,10 +150,9 @@ Panel.prototype.connectToolbar = function()
     if(toolbar.length === 0) return;
 
     // move the extra
-    var extra_buttons = $('span.panel-toolbar-extra', toolbar);
-    var placeholder = $('div.panel-toolbar span.panel-toolbar-extra', this.wrap);
-    placeholder.replaceWith(extra_buttons);
-    placeholder.hide();
+    var extra_buttons = $('span.panel-toolbar-extra button', toolbar);
+    var placeholder = $('div.panel-toolbar span.panel-toolbar-extra > span', this.wrap);
+    placeholder.replaceWith(extra_buttons);    
 
     var action_buttons = $('button', extra_buttons);
 
@@ -253,7 +253,9 @@ Panel.prototype.isHotkey = function(event) {
     if(event.ctrlKey) code = code | 0x200;
     if(event.shiftKey) code = code | 0x400;
 
-    if(this.hotkeys[code] !== null) {
+    $.log(event.character, this.hotkeys[code]);
+
+    if(this.hotkeys[code]) {
         return true;
     }
     return false;
@@ -298,9 +300,25 @@ Editor.prototype.loadConfig = function() {
     } catch (e) {    
         this.options = defaultOptions;
     }
+    
+    this.fileOptions = this.options;
+    var self = this;
+
+    if(!this.options.recentFiles)
+        this.options.recentFiles = [];
+
+    $.each(this.options.recentFiles, function(index) {
+        if (fileId == self.options.recentFiles[index].fileId) {
+            $.log('Found options for', fileId);
+            self.fileOptions = self.options.recentFiles[index];
+        }
+    });
+    
     $.log(this.options);
+    $.log('fileOptions', this.fileOptions);
     
     this.loadPanelOptions();
+    this.savePanelOptions();
 };
 
 Editor.prototype.loadPanelOptions = function() {
@@ -308,7 +326,7 @@ Editor.prototype.loadPanelOptions = function() {
     var totalWidth = 0;
     
     $('.panel-wrap', self.rootDiv).each(function(index) {
-        var panelWidth = self.options.panels[index].ratio * self.rootDiv.width();
+        var panelWidth = self.fileOptions.panels[index].ratio * self.rootDiv.width();
         if ($(this).hasClass('last-panel')) {
             $(this).css({
                 left: totalWidth,
@@ -323,7 +341,7 @@ Editor.prototype.loadPanelOptions = function() {
         }
         $.log('panel:', this, $(this).css('left'));
         $('.panel-toolbar option', this).each(function() {
-            if ($(this).attr('p:panel-name') == self.options.panels[index].name) {
+            if ($(this).attr('p:panel-name') == self.fileOptions.panels[index].name) {
                 $(this).parent('select').val($(this).attr('value'));
             }
         });
@@ -340,8 +358,20 @@ Editor.prototype.savePanelOptions = function() {
         });
     });
     self.options.panels = panels;
+
+    // Dodaj obecnie oglÄ…dany plik do listy recentFiles
+    var recentFiles = [{fileId: fileId, panels: panels}];
+    var count = 1;
+    $.each(self.options.recentFiles, function(index) {
+        if (count < 5 && fileId != self.options.recentFiles[index].fileId) {
+            recentFiles.push(self.options.recentFiles[index]);
+            count++;
+        }
+    });
+    self.options.recentFiles = recentFiles;
+    
     self.options.lastUpdate = new Date().getTime() / 1000;
-    $.log($.toJSON(self.options));
+    $.log($.toJSON(self.options));    
     $.cookie('options', $.toJSON(self.options), {
         expires: 7,
         path: '/'
@@ -354,7 +384,7 @@ Editor.prototype.saveToBranch = function(msg)
     var self = this;
     $.log('Saving to local branch - panel:', changed_panel);
 
-    if(!msg) msg = "Zapis z edytora platformy.";
+    if(!msg) msg = "Szybki zapis z edytora platformy.";
 
     if( changed_panel.length === 0) {
         $.log('Nothing to save.');
@@ -395,7 +425,7 @@ Editor.prototype.saveToBranch = function(msg)
                 if(self.autosaveTimer) {
                     clearTimeout(self.autosaveTimer);
                 }
-                if (data.warnings === null) {
+                if (data.warnings === null || data.warning === undefined) {
                     self.showPopup('save-successful');
                 } else {
                     self.showPopup('save-warn', data.warnings[0]);
@@ -426,9 +456,8 @@ Editor.prototype.autoSave = function()
 Editor.prototype.onContentChanged = function(event, data) {
     var self = this;
 
-    $('#toolbar-button-save').removeAttr('disabled');
-    $('#toolbar-button-commit').attr('disabled', 'disabled');
-    $('#toolbar-button-update').attr('disabled', 'disabled');
+    $('button.provides-save').removeAttr('disabled');
+    $('button.requires-save').attr('disabled', 'disabled');
     
     if(this.autosaveTimer) return;
     this.autosaveTimer = setTimeout( function() {
@@ -471,9 +500,8 @@ Editor.prototype.sendMergeRequest = function (message) {
         alert("There are unsaved changes - can't commit.");
     }
 
-    var self =  this;
-    $.log('URL !: ', $('#commit-dialog form').attr('action'));
-    
+    var self =  this;    
+        
     $.ajax({        
         url: $('#commit-dialog form').attr('action'),
         dataType: 'json',