Merge branch 'master' of stigma.nowoczesnapolska.org.pl:platforma
[redakcja.git] / project / static / js / views / editor.js
index 1e39ca5..10c77f6 100644 (file)
@@ -7,7 +7,6 @@ var EditorView = View.extend({
   
   init: function(element, model, template) {
     this._super(element, model, template);
   
   init: function(element, model, template) {
     this._super(element, model, template);
-    this.model.load();
     
     this.quickSaveButton = $('#action-quick-save', this.element).bind('click.editorview', this.quickSave.bind(this));
     this.commitButton = $('#action-commit', this.element).bind('click.editorview', this.commit.bind(this));
     
     this.quickSaveButton = $('#action-quick-save', this.element).bind('click.editorview', this.quickSave.bind(this));
     this.commitButton = $('#action-commit', this.element).bind('click.editorview', this.commit.bind(this));
@@ -16,19 +15,91 @@ var EditorView = View.extend({
     
     this.model.addObserver(this, 'state', this.modelStateChanged.bind(this));
     this.modelStateChanged('state', this.model.get('state'));
     
     this.model.addObserver(this, 'state', this.modelStateChanged.bind(this));
     this.modelStateChanged('state', this.model.get('state'));
+      
+    // Inicjalizacja okien jQuery Modal
+    $('#commit-dialog', this.element).
+    jqm({
+        modal: true,
+        onShow: this.loadRelatedIssues.bind(this)
+    });
+    
+    $('#commit-dialog-cancel-button', this.element).click(function() {
+        $('#commit-dialog-error-empty-message').hide();
+        $('#commit-dialog').jqmHide();
+    });   
+    
+    // $('#split-dialog').jqm({
+    //      modal: true,
+    //      onShow: $.fbind(self, self.loadSplitDialog)
+    //  }).
+    //  jqmAddClose('button.dialog-close-button');
+    
+    this.model.load();
   },
   
   quickSave: function(event) {
   },
   
   quickSave: function(event) {
-    this.model.quickSave();
+    this.model.saveDirtyContentModel();
   },
   
   commit: function(event) {
   },
   
   commit: function(event) {
+    $('#commit-dialog', this.element).jqmShow({callback: this.doCommit.bind(this)});
+  },
+  
+  doCommit: function(message) {
+    this.model.saveDirtyContentModel(message);
   },
   
   update: function(event) {
   },
   
   update: function(event) {
+    this.model.update();
   },
   
   merge: function(event) {
   },
   
   merge: function(event) {
+    $('#commit-dialog', this.element).jqmShow({callback: this.doMerge.bind(this)});
+  },
+  
+  doMerge: function(message) {
+    this.model.merge(message);
+  },
+  
+  loadRelatedIssues: function(hash) {
+    var self = this;
+    var c = $('#commit-dialog-related-issues');
+
+    $('#commit-dialog-save-button').click(function(event, data)
+    {
+      if ($('#commit-dialog-message').val().match(/^\s*$/)) {
+        $('#commit-dialog-error-empty-message').fadeIn();
+      } else {
+        $('#commit-dialog-error-empty-message').hide();
+        $('#commit-dialog').jqmHide();
+
+        var message = $('#commit-dialog-message').val();
+        $('#commit-dialog-related-issues input:checked')
+          .each(function() { message += ' refs #' + $(this).val(); });
+        console.log("COMMIT APROVED", hash.t);
+        hash.t.callback(message);
+      }
+      return false;
+    });
+
+    $("div.loading-box", c).show();
+    $("div.fatal-error-box", c).hide();
+    $("div.container-box", c).hide();
+    
+    $.getJSON(c.attr('ui:ajax-src') + '?callback=?',
+    function(data, status)
+    {
+        var fmt = '';
+        $(data).each( function() {
+            fmt += '<label><input type="checkbox" checked="checked"';
+            fmt += ' value="' + this.id + '" />' + this.subject +'</label>\n';
+        });
+        $("div.container-box", c).html(fmt);
+        $("div.loading-box", c).hide();
+        $("div.container-box", c).show();        
+    });   
+    
+    hash.w.show();
   },
   
   modelStateChanged: function(property, value) {
   },
   
   modelStateChanged: function(property, value) {