From 5ee350532b800644216089c83815dc14f7738a2b Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Thu, 24 Oct 2013 14:41:03 -0300 Subject: [PATCH] Added a block to display breadcrumbs --- plugins/breadcrumbs/lib/breadcrumbs_block.rb | 40 ++++++++++++++++++++++++++++++++++++++++ plugins/breadcrumbs/lib/breadcrumbs_plugin.rb | 15 +++++++++++++++ 2 files changed, 55 insertions(+), 0 deletions(-) create mode 100644 plugins/breadcrumbs/lib/breadcrumbs_block.rb create mode 100644 plugins/breadcrumbs/lib/breadcrumbs_plugin.rb 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