Module: StreamRails::Renderable
- Defined in:
- lib/stream_rails/renderable.rb
Overview
Provides logic for rendering activities. (different templates per activity verb).
Class Method Summary collapse
- .layout_path(path = nil, root = nil) ⇒ Object
- .partial_path(activity, aggregated, prefix = '', path = nil, root = nil) ⇒ Object
- .prepare_locals(activity, params) ⇒ Object
- .render(activity, context, params = {}) ⇒ Object
- .render_aggregated(activity, context, params) ⇒ Object
- .render_simple(activity, context, params) ⇒ Object
Class Method Details
.layout_path(path = nil, root = nil) ⇒ Object
39 40 41 42 43 |
# File 'lib/stream_rails/renderable.rb', line 39 def layout_path(path = nil, root = nil) path.nil? and return root ||= 'layouts' select_path path, root end |
.partial_path(activity, aggregated, prefix = '', path = nil, root = nil) ⇒ Object
45 46 47 48 49 50 |
# File 'lib/stream_rails/renderable.rb', line 45 def partial_path(activity, aggregated, prefix = '', path = nil, root = nil) root ||= (if aggregated then 'aggregated_activity' else 'activity' end) path ||= "#{activity['verb']}".downcase path = "#{prefix}_#{path}" if prefix select_path path, root end |
.prepare_locals(activity, params) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/stream_rails/renderable.rb', line 52 def prepare_locals(activity, params) locals = params.delete(:locals) || Hash.new locals.merge\ activity: activity, parameters: params end |
.render(activity, context, params = {}) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/stream_rails/renderable.rb', line 7 def render(activity, context, params = {}) aggregated = activity.has_key? 'activities' partial = partial_path(activity, aggregated, *params.values_at(:prefix, :partial, :partial_root)) layout = layout_path(*params.values_at(:layout, :layout_root)) locals = prepare_locals(activity, params) params = params.merge(partial: partial, locals: locals, layout: layout) if aggregated render_aggregated(activity, context, params) else render_simple(activity, context, params) end end |
.render_aggregated(activity, context, params) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/stream_rails/renderable.rb', line 29 def render_aggregated(activity, context, params) if !activity['activities'].map {|a| !a.enriched?}.all? context.render params else first_activity = activity['activities'][0] StreamRails.logger.warn "trying to display a non enriched activity #{first_activity.inspect} #{first_activity.failed_to_enrich}" return '' end end |
.render_simple(activity, context, params) ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/stream_rails/renderable.rb', line 20 def render_simple(activity, context, params) if activity.enriched? context.render params else StreamRails.logger.warn "trying to display a non enriched activity #{activity.inspect} #{activity.failed_to_enrich}" return '' end end |