X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/0ac983162763199b07270a9a675e22672d4462ce..60f59d5903e5f4289d7a4b224c3f05e161395815:/project/static/js/views/html.js?ds=sidebyside diff --git a/project/static/js/views/html.js b/project/static/js/views/html.js index 59579af7..a8eb4d01 100644 --- a/project/static/js/views/html.js +++ b/project/static/js/views/html.js @@ -1,35 +1,54 @@ /*global View render_template panels */ var HTMLView = View.extend({ + _className: 'HTMLView', element: null, model: null, template: 'html-view-template', - init: function(element, model, template) { + init: function(element, model, parent, template) { this._super(element, model, template); + this.parent = parent; this.model .addObserver(this, 'data', this.modelDataChanged.bind(this)) - .addObserver(this, 'synced', this.modelSyncChanged.bind(this)); + .addObserver(this, 'state', this.modelStateChanged.bind(this)); - if (!this.model.get('synced')) { - this.freeze('Niezsynchronizowany...'); - this.model.load(); - } else { - $('.htmlview', this.element).html(this.model.get('data')); - } + $('.htmlview', this.element).html(this.model.get('data')); + this.modelStateChanged('state', this.model.get('state')); + this.model.load(); }, modelDataChanged: function(property, value) { $('.htmlview', this.element).html(value); + + var base = this.$printLink.attr('ui:baseref'); + this.$printLink.attr('href', base + "?revision=" + this.model.get('revision')); }, - modelSyncChanged: function(property, value) { - if (value) { + modelStateChanged: function(property, value) { + if (value == 'synced' || value == 'dirty') { this.unfreeze(); - } else { + } else if (value == 'unsynced') { this.freeze('Niezsynchronizowany...'); + } else if (value == 'loading') { + this.freeze('Ładowanie...'); + } else if (value == 'saving') { + this.freeze('Zapisywanie...'); + } else if (value == 'error') { + this.freeze(this.model.get('error')); } }, + + + render: function() { + if(this.$printLink) this.$printLink.unbind(); + this._super(); + this.$printLink = $('.html-print-link', this.element); + }, + + reload: function() { + this.model.load(true); + }, dispose: function() { this.model.removeObserver(this);