Commit 6d28dbeb61b2ec56e765e87e14ccc1d75e7c97dd

Authored by Joenio Costa
Committed by Rafael Reggiani Manzo
1 parent 141c0c41

refactoring breadcrumbs

moved all `params` references to `trial` method, also `trial` method
moved to a plugin helper
plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb
... ... @@ -22,70 +22,8 @@ class BreadcrumbsPlugin::ContentBreadcrumbsBlock < Block
22 22 _('This block displays breadcrumb trail.')
23 23 end
24 24  
25   - def page_trail(page, params={})
26   - links = []
27   - if page
28   - links = page.ancestors.reverse.map { |p| { :name => p.title, :url => p.url } }
29   - links << { :name => page.title, :url => page.url }
30   - elsif params[:controller] == 'cms'
31   - id = params[:id] || params[:parent_id]
32   - links = page_trail(Article.find(id)) if id
33   - links << { :name => cms_action(params[:action]), :url => params } if show_cms_action
34   - elsif (params[:controller] == 'profile' || params[:controller] == 'events')
35   - links << { :name => _('Profile'), :url => {:controller=> 'profile', :action =>'index', :profile =>params[:profile]}}
36   - links << { :name => profile_action(params[:action]), :url => params } unless params[:action] == 'index'
37   - end
38   - links
39   - end
40   -
41   - def trail(page, profile=nil, params={})
42   - links = page_trail(page, params)
43   - if profile && !links.empty? && show_profile
44   - [ {:name => profile.name, :url => profile.url} ] + links
45   - else
46   - links
47   - end
48   - end
49   -
50   - def content(args={})
51   - block = self
52   - ret = (proc do
53   - trail = block.trail(@page, @profile, params)
54   - if !trail.empty?
55   - separator = content_tag('span', ' > ', :class => 'separator')
56   -
57   - breadcrumb = trail.map do |t|
58   - link_to(t[:name], t[:url], :class => 'item')
59   - end.join(separator)
60   -
61   - if block.show_section_name
62   - section_name = block.show_profile ? trail.second[:name] : trail.first[:name]
63   - breadcrumb << content_tag('div', section_name, :class => 'section-name')
64   - end
65   -
66   - breadcrumb.html_safe
67   - else
68   - ''
69   - end
70   - end)
71   - ret
72   - end
73   -
74 25 def cacheable?
75 26 false
76 27 end
77 28  
78   - protected
79   -
80   - CMS_ACTIONS = {:edit => c_('Edit'), :upload_files => _('Upload Files'), :new => c_('New')}
81   - PROFILE_ACTIONS = {:members => _('Members'), :events => _('Events')}
82   -
83   - def cms_action(action)
84   - CMS_ACTIONS[action.to_sym] || action
85   - end
86   -
87   - def profile_action(action)
88   - PROFILE_ACTIONS[action.to_sym] || action
89   - end
90   -
91 29 end
... ...
plugins/breadcrumbs/lib/breadcrumbs_plugin_helper.rb 0 → 100644
... ... @@ -0,0 +1,43 @@
  1 +module BreadcrumbsPluginHelper
  2 +
  3 + def action(action)
  4 + { :edit => c_('Edit'),
  5 + :upload_files => _('Upload Files'),
  6 + :new => c_('New'),
  7 + :members => _('Members'),
  8 + :events => _('Events')
  9 + }[action.to_sym] || action
  10 + end
  11 +
  12 + def page_trail(page)
  13 + links = []
  14 + page.ancestors.reverse.each do |p|
  15 + links << { :name => p.title, :url => p.url }
  16 + end
  17 + links << { :name => page.title, :url => page.url }
  18 + links
  19 + end
  20 +
  21 + def trail(block, page, profile=nil, params={})
  22 + links = []
  23 + if page
  24 + links << page_trail(page)
  25 + elsif params[:controller] == 'cms' && (id = params[:id] || params[:parent_id])
  26 + links << page_trail(Article.find(id))
  27 + if block.show_cms_action
  28 + links << { :name => action(params[:action]), :url => params }
  29 + end
  30 + elsif (params[:controller] == 'profile' || params[:controller] == 'events')
  31 + _params = {:controller=> 'profile', :action =>'index', :profile => params[:profile]}
  32 + links << { :name => _('Profile'), :url => _params }
  33 + unless params[:action] == 'index'
  34 + links << { :name => action(params[:action]), :url => params }
  35 + end
  36 + end
  37 + if !links.empty? && profile && block.show_profile
  38 + links.unshift({:name => profile.name, :url => profile.url})
  39 + end
  40 + links
  41 + end
  42 +
  43 +end
... ...
plugins/breadcrumbs/views/blocks/_link.html.erb 0 → 100644
... ... @@ -0,0 +1 @@
  1 +<%= link_to link[:name], link[:url], :class => 'item' %>
... ...
plugins/breadcrumbs/views/blocks/_separator.html.erb 0 → 100644
... ... @@ -0,0 +1 @@
  1 +<%= content_tag('span', ' > ', :class => 'separator') %>
... ...
plugins/breadcrumbs/views/blocks/content_breadcrumbs.html.erb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +<% extend BreadcrumbsPluginHelper %>
  2 +
  3 +<% links = trail(block, @page, @profile, params).flatten %>
  4 +<% unless links.empty? %>
  5 + <%= render :partial => 'blocks/link', :collection => links, :as => 'link', :spacer_template => 'blocks/separator' %>
  6 + <% if block.show_section_name %>
  7 + <%= content_tag('div', (block.show_profile ? links.second[:name] : links.first[:name]), :class => 'section-name') %>
  8 + <% end %>
  9 +<% end %>
... ...