# These Methods are automatically added to all Controllers and Views when # the cells plugin is loaded. module Cell module RailsExtensions module ActionController def cell(name, *args, &block) ViewModel.cell(name, self, *args, &block) end def concept(name, *args, &block) Concept.cell(name, self, *args, &block) end # # Renders the cell state and returns the content. You may pass options here, too. They will be # # around in @opts. # # # # Example: # # # # @box = render_cell(:posts, :latest, :user => current_user) # # # # If you need the cell instance before it renders, you can pass a block receiving the cell. # # # # Example: # # # # @box = render_cell(:comments, :top5) do |cell| # # cell.markdown! if config.parse_comments? # # end # def render_cell(name, state, *args, &block) # ::Cell::Rails.render_cell(name, state, self, *args, &block) # end # # Expires the cached cell state view, similar to ActionController::expire_fragment. # # Usually, this method is used in Sweepers. # # Beside the obvious first two args cell_name and state you can pass # # in additional cache key args and cache store specific opts. # # # # Example: # # # # class ListSweeper < ActionController::Caching::Sweeper # # observe List, Item # # # # def after_save(record) # # expire_cell_state :my_listing, :display_list # # end # # # # will expire the view for state :display_list in the cell MyListingCell. # def expire_cell_state(cell_class, state, args={}, opts=nil) # key = cell_class.state_cache_key(state, args) # cell_class.expire_cache_key(key, opts) # end end module ActionView # Returns the cell instance for +name+. You may pass arbitrary options to your # cell. # # = cell(:song, :title => "Creeping Out Sara").render(:show) def cell(name, *args, &block) controller.cell(name, *args, &block) end # # See Cells::Rails::ActionController#render_cell. # def render_cell(name, state, *args, &block) # ::Cell::Rails.render_cell(name, state, controller, *args, &block) # end def concept(name, *args, &block) controller.concept(name, *args, &block) end end end end