X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/006c13d480258ab24c03abc8fef60aad8aa66e71..38747104cc8581d642f3c5a0d78c17565cc9988c:/project/static/js/views/button_toolbar.js diff --git a/project/static/js/views/button_toolbar.js b/project/static/js/views/button_toolbar.js new file mode 100644 index 00000000..ef3af784 --- /dev/null +++ b/project/static/js/views/button_toolbar.js @@ -0,0 +1,58 @@ +/*globals View render_template scriptletCenter*/ +var ButtonToolbarView = View.extend({ + _className: 'ButtonToolbarView', + template: null, + buttons: null, + + init: function(element, model, parent, template) { + this._super(element, model, null); + this.parent = parent; + this.template = 'button-toolbar-view-template'; + + this.model.addObserver(this, 'buttons', this.modelButtonsChanged.bind(this)); + this.buttons = this.model.get('buttons'); + this.model.load(); + this.render(); + }, + + modelButtonsChanged: function(property, value) { + this.set('buttons', value); + this.render(); + }, + + render: function() { + $('.buttontoolbarview-tab', this.element).unbind('click.buttontoolbarview'); + $('.buttontoolbarview-button', this.element).unbind('click.buttontoolbarview'); + + this.element.html(render_template(this.template, this)); + + $('.buttontoolbarview-tab', this.element).bind('click.buttontoolbarview', function() { + var groupIndex = $(this).attr('ui:groupindex'); + $('.buttontoolbarview-group', this.element).each(function() { + if ($(this).attr('ui:groupindex') == groupIndex) { + $(this).show(); + } else { + $(this).hide(); + } + }); + }); + + var self = this; + $('.buttontoolbarview-button', this.element).bind('click.buttontoolbarview', function() { + var groupIndex = parseInt($(this).attr('ui:groupindex'), 10); + var buttonIndex = parseInt($(this).attr('ui:buttonindex'), 10); + var button = self.get('buttons')[groupIndex].buttons[buttonIndex]; + var scriptletId = button.scriptlet_id; + var params = eval('(' + button.params + ')'); // To nie powinno być potrzebne + console.log('Executing', scriptletId, 'with params', params); + scriptletCenter[scriptletId](self.parent, params); + }); + }, + + dispose: function() { + $('.buttontoolbarview-tab', this.element).unbind('click.buttontoolbarview'); + $('.buttontoolbarview-button', this.element).unbind('click.buttontoolbarview'); + this._super(); + } +}); +