X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/9e0a0c89939a75eccb7b6ae925707d404b287b78..f1b70c0cd342b6769df2326ffc122add67ccd917:/project/static/js/views/editor.js diff --git a/project/static/js/views/editor.js b/project/static/js/views/editor.js index 27b17cbf..04e22c86 100644 --- a/project/static/js/views/editor.js +++ b/project/static/js/views/editor.js @@ -9,29 +9,125 @@ var EditorView = View.extend({ this._super(element, model, template); this.model.load(); - $('#action-quick-save', this.element).bind('click.editorview', this.quickSave.bind(this)); - $('#action-commit', this.element).bind('click.editorview', this.commit.bind(this)); - $('#action-update', this.element).bind('click.editorview', this.update.bind(this)); - this.freeze('Ładowanie'); + 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.updateButton = $('#action-update', this.element).bind('click.editorview', this.update.bind(this)); + this.mergeButton = $('#action-merge', this.element).bind('click.editorview', this.merge.bind(this)); + + 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'); }, quickSave: function(event) { - console.log('quickSave'); - this.model.quickSave(); + this.model.updateDirtyContentModel(); }, commit: function(event) { - console.log('commit'); + $('#commit-dialog', this.element).jqmShow({callback: this.doCommit.bind(this)}); + }, + + doCommit: function(message) { + this.model.saveDirtyContentModel(message); }, update: function(event) { - console.log('update'); + this.model.update(); + }, + + 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 += '\n'; + }); + $("div.container-box", c).html(fmt); + $("div.loading-box", c).hide(); + $("div.container-box", c).show(); + }); + + hash.w.show(); + }, + + modelStateChanged: function(property, value) { + // Uaktualnia stan przycisków + if (value == 'dirty') { + this.quickSaveButton.attr('disabled', null); + this.commitButton.attr('disabled', null); + this.updateButton.attr('disabled', 'disabled'); + this.mergeButton.attr('disabled', 'disabled'); + } else if (value == 'synced') { + this.quickSaveButton.attr('disabled', 'disabled'); + this.commitButton.attr('disabled', 'disabled'); + this.updateButton.attr('disabled', null); + this.mergeButton.attr('disabled', null); + } else if (value == 'empty') { + this.quickSaveButton.attr('disabled', 'disabled'); + this.commitButton.attr('disabled', 'disabled'); + this.updateButton.attr('disabled', 'disabled'); + this.mergeButton.attr('disabled', 'disabled'); + } }, dispose: function() { $('#action-quick-save', this.element).unbind('click.editorview'); $('#action-commit', this.element).unbind('click.editorview'); $('#action-update', this.element).unbind('click.editorview'); + $('#action-merge', this.element).unbind('click.editorview'); + + this.model.removeObserver(this); this._super(); } });