Module: Apotomo::Rails::ControllerMethods

Extended by:
ActiveSupport::Concern
Includes:
WidgetShortcuts
Defined in:
lib/apotomo/rails/controller_methods.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Methods included from WidgetShortcuts

#widget

Instance Method Details

#apotomo_request_processorObject



46
47
48
49
50
51
52
53
# File 'lib/apotomo/rails/controller_methods.rb', line 46

def apotomo_request_processor
  return @apotomo_request_processor if @apotomo_request_processor
  
  # happens once per request:
  options = { :js_framework   => Apotomo.js_framework || :prototype } # FIXME: remove :prototype
  
  @apotomo_request_processor = Apotomo::RequestProcessor.new(self, options, self.class.has_widgets_blocks)
end

#apotomo_rootObject



55
56
57
# File 'lib/apotomo/rails/controller_methods.rb', line 55

def apotomo_root
  apotomo_request_processor.root
end

#render_event_responseObject



63
64
65
66
67
68
69
# File 'lib/apotomo/rails/controller_methods.rb', line 63

def render_event_response
  page_updates = apotomo_request_processor.process_for(params)
  
  return render_iframe_updates(page_updates) if params[:apotomo_iframe]
  
  render :text => page_updates.join("\n"), :content_type => Mime::JS
end

#render_widget(*args, &block) ⇒ Object



59
60
61
# File 'lib/apotomo/rails/controller_methods.rb', line 59

def render_widget(*args, &block)
  apotomo_request_processor.render_widget_for(*args, &block)
end

#url_for_event(type, options) ⇒ Object

Returns the url to trigger a type event from :source, which is a non-optional parameter. Additional options will be appended to the query string.

Note that this method will use the framework’s internal routing if available (e.g. #url_for in Rails).

Example:

url_for_event(:paginate, :source => 'mouse', :page => 2)
#=> http://apotomo.de/mouse/process_event_request?type=paginate&source=mouse&page=2


79
80
81
82
83
# File 'lib/apotomo/rails/controller_methods.rb', line 79

def url_for_event(type, options)
  options.reverse_merge!(:type => type)
  
  apotomo_event_path(apotomo_request_processor.address_for(options))
end