if (typeof(PhpDebugBar) == 'undefined') { // namespace var PhpDebugBar = {}; PhpDebugBar.$ = jQuery; } (function($) { var csscls = function(cls) { return PhpDebugBar.utils.csscls(cls, 'phpdebugbar-openhandler-'); }; PhpDebugBar.OpenHandler = PhpDebugBar.Widget.extend({ className: 'phpdebugbar-openhandler', defaults: { items_per_page: 20 }, render: function() { var self = this; this.$el.appendTo('body').hide(); this.$closebtn = $(''); this.$table = $(''); $('
PHP DebugBar | Open
').addClass(csscls('header')).append(this.$closebtn).appendTo(this.$el); $('
IDURLDateIP
').append(this.$table).appendTo(this.$el); this.$actions = $('
').addClass(csscls('actions')).appendTo(this.$el); this.$closebtn.on('click', function() { self.hide(); }); this.$loadmorebtn = $('Load more') .appendTo(this.$actions) .on('click', function() { self.find(self.last_find_request, self.last_find_request.offset + self.get('items_per_page'), self.handleFind.bind(self)); }); this.$showonlycurrentbtn = $('Show only current URL') .appendTo(this.$actions) .on('click', function() { self.$table.empty(); self.find({uri: window.location.pathname}, 0, self.handleFind.bind(self)); }); this.$showallbtn = $('Show all') .appendTo(this.$actions) .on('click', function() { self.refresh(); }); this.$clearbtn = $('Delete all') .appendTo(this.$actions) .on('click', function() { self.clear(function() { self.hide(); }); }); this.$overlay = $('
').addClass(csscls('overlay')).hide().appendTo('body'); this.$overlay.on('click', function() { self.hide(); }); }, refresh: function() { this.$table.empty(); this.$loadmorebtn.show(); this.find({}, 0, this.handleFind.bind(this)); }, handleFind: function(data) { var self = this; $.each(data, function(i, meta) { var a = $('') .text(meta['id']) .on('click', function(e) { self.hide(); self.load(meta['id'], function(data) { self.callback(meta['id'], data); }); e.preventDefault(); }); $('') .append($('').append(a)) .append('' + meta['uri'] + '') .append('' + meta['datetime'] + '') .append('' + meta['ip'] + '') .appendTo(self.$table); }); if (data.length < this.get('items_per_page')) { this.$loadmorebtn.hide(); } }, show: function(callback) { this.callback = callback; this.$el.show(); this.$overlay.show(); this.refresh(); }, hide: function() { this.$el.hide(); this.$overlay.hide(); }, find: function(filters, offset, callback) { var data = $.extend({}, filters, {max: this.get('items_per_page'), offset: offset || 0}); this.last_find_request = data; this.ajax(data, callback); }, load: function(id, callback) { this.ajax({op: "get", id: id}, callback); }, clear: function(callback) { this.ajax({op: "clear"}, callback); }, ajax: function(data, callback) { $.ajax({ dataType: 'json', url: this.get('url'), data: data, success: callback, ignoreDebugBarAjaxHandler: true }); } }); })(PhpDebugBar.$);