From 095dbb00f577e9989dc8b4fd3cb259c33780f64b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohnic=CC=81?= Date: Tue, 2 Aug 2011 17:54:48 +0200 Subject: [PATCH] proper Merb integration --- lib/will_paginate.rb | 12 ++++++++---- lib/will_paginate/view_helpers/merb.rb | 26 +++++++++++++++++++------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/lib/will_paginate.rb b/lib/will_paginate.rb index 09055c2ed..9b033e044 100644 --- a/lib/will_paginate.rb +++ b/lib/will_paginate.rb @@ -6,10 +6,14 @@ module WillPaginate require 'will_paginate/railtie' end -if defined?(::Merb::Plugins) +if defined?(Merb::AbstractController) require 'will_paginate/view_helpers/merb' - # auto-load the right ORM adapter - if adapter = { :datamapper => 'data_mapper', :activerecord => 'active_record', :sequel => 'sequel' }[Merb.orm] - require "will_paginate/#{adapter}" + + Merb::BootLoader.before_app_loads do + adapters = { :datamapper => 'data_mapper', :activerecord => 'active_record', :sequel => 'sequel' } + # auto-load the right ORM adapter + if adapter = adapters[Merb.orm] + require "will_paginate/#{adapter}" + end end end diff --git a/lib/will_paginate/view_helpers/merb.rb b/lib/will_paginate/view_helpers/merb.rb index 1d209a3a1..f7f699932 100644 --- a/lib/will_paginate/view_helpers/merb.rb +++ b/lib/will_paginate/view_helpers/merb.rb @@ -1,13 +1,25 @@ -require 'will_paginate/view_helpers/base' +require 'will_paginate/view_helpers' require 'will_paginate/view_helpers/link_renderer' -WillPaginate::ViewHelpers::LinkRenderer.class_eval do - protected +module WillPaginate + module Merb + include ViewHelpers - def url(page) - params = @template.request.params.except(:action, :controller).merge(param_name => page) - @template.url(:this, params) + def will_paginate(collection, options = {}) #:nodoc: + options = options.merge(:renderer => LinkRenderer) unless options[:renderer] + super(collection, options) + end + + class LinkRenderer < ViewHelpers::LinkRenderer + protected + + def url(page) + params = @template.request.params.except(:action, :controller).merge(param_name => page) + @template.url(:this, params) + end + end + + ::Merb::AbstractController.send(:include, self) end end -Merb::AbstractController.send(:include, WillPaginate::ViewHelpers::Base) \ No newline at end of file