diff --git a/plugins/breadcrumbs/lib/breadcrumbs_block.rb b/plugins/breadcrumbs/lib/breadcrumbs_block.rb new file mode 100644 index 0000000..8cbcada --- /dev/null +++ b/plugins/breadcrumbs/lib/breadcrumbs_block.rb @@ -0,0 +1,40 @@ +class BreadcrumbsBlock < Block + + settings_items :show_cms_action, :type => :boolean, :default => true + settings_items :show_profile, :type => :boolean, :default => true + + def self.description + _('Breadcrumbs') + end + + def help + _('This block displays breadcrumb trail.') + end + + def trail(page, params={}) + links = [] + if page + links = page.ancestors.reverse.map { |p| { :name => p.title, :url => p.url } } + links << { :name => page.title, :url => page.url } + elsif params[:controller] == 'cms' + id = params[:id] || params[:parent_id] + links = trail(Article.find(id)) if id + links << { :name => params[:action], :url => params } if show_cms_action + end + links + end + + def content(args={}) + block = self + lambda do + trail = block.trail(@page, params) + if !trail.empty? + trail = [ {:name => @profile.name, :url => @profile.url} ] + trail if block.show_profile + trail.map { |t| link_to(t[:name], t[:url], :class => 'item') }.join(content_tag('span', ' > ', :class => 'separator')) + else + '' + end + end + end + +end diff --git a/plugins/breadcrumbs/lib/breadcrumbs_plugin.rb b/plugins/breadcrumbs/lib/breadcrumbs_plugin.rb new file mode 100644 index 0000000..6774c6e --- /dev/null +++ b/plugins/breadcrumbs/lib/breadcrumbs_plugin.rb @@ -0,0 +1,15 @@ +class BreadcrumbsPlugin < Noosfero::Plugin + + def self.plugin_name + "BreadcrumbsPlugin" + end + + def self.plugin_description + _("A plugin that add a block to display breadcrumbs.") + end + + def self.extra_blocks + { BreadcrumbsBlock => {} } + end + +end -- libgit2 0.21.2