+function ($) { "user strict"; var Pager = function (element, options) { this.init('pager', element, options) } if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') if (!$.fn.popover) throw new Error('Popover requires popover.js') Pager.prototype.init = function (type, element, options) { this.type = type this.$element = $(element) this.options = options this.computeIndex() this.$element .popover({container: 'body',trigger: 'manual',html:true, template: '
'}) .on('click.'+this.type, false,$.proxy(this.showPopover,this)) } Pager.prototype.hidePopover = function() { var self = this.$element if(self.attr('data-safe-close') == 'true') { self.popover('hide').attr('data-safe-close',false) $(document).unbind('click',this.hidePopover) } else { self.attr('data-safe-close',true) } } Pager.prototype.showPopover = function() { var self = this.$element if(!(self.attr('data-content'))) { self.attr('data-content',"") } self.popover('show') $(document).bind('click',$.proxy(this.hidePopover,this)) } Pager.prototype.setContent = function (url) { var html = '' if(this.isRangeIndex) { for (var i = this.indexStart; i <= this.indexEnd; i++) { html += "
  • "+i+"
  • " } } else { for (var i = this.indexs.length - 1; i >= 0; i--) { var index = this.indexs[i]; html += "
  • "+index+"
  • " } } return html; } Pager.prototype.getUrl = function () { var $e = this.$element var o = this.options return $e.attr('data-url') || $e.attr('href') || (typeof o.url == 'function' ? o.url.call($e[0]) : o.url) || "?page=%" } Pager.prototype.computeIndex = function () { var $e = this.$element var eLi = $e.closest('li') var o = this.options var params = $e.attr('data-index') || (typeof o.index == 'function' ? o.index.call($e[0]) : o.index) || ((eLi.prev('li').find('a').text() - 0 + 1) + '-' + (eLi.next('li').find('a').text() - 1)) if(params.indexOf('-')>0) { this.isRangeIndex = true; var ranges = params.split('-') this.indexStart = ranges[0] - 0; this.indexEnd = ranges[1] - 0; this.indexCount = this.indexEnd - this.indexStart } else { this.indexs = params.split(',') this.indexCount = this.indexs.length } } // PAGER PLUGIN DEFINITION // ========================= var old = $.fn.pager $.fn.pager = function (option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.pager') var options = typeof option == 'object' && option if (!data) $this.data('bs.pager', (data = new Pager(this, options))) if (typeof option == 'string') data[option]() }) } $.fn.pager.Constructor = Pager // pager NO CONFLICT // =================== $.fn.pager.noConflict = function () { $.fn.pager = old return this } }(window.jQuery);