Class: Webgen::Tag::Langbar

Inherits:
Object
  • Object
show all
Includes:
Base, WebsiteAccess
Defined in:
lib/webgen/tag/langbar.rb

Overview

Generates a list with all the languages of the page.

Instance Method Summary collapse

Methods included from WebsiteAccess

included, website

Methods included from Base

#create_params_hash, #create_tag_params, #param, #set_params

Methods included from Loggable

#log, #puts

Constructor Details

#initializeLangbar

:nodoc:



11
12
13
# File 'lib/webgen/tag/langbar.rb', line 11

def initialize #:nodoc:
  website.blackboard.add_listener(:node_changed?, method(:node_changed?))
end

Instance Method Details

#call(tag, body, context) ⇒ Object

Return a list of all translations of the content page.



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/webgen/tag/langbar.rb', line 16

def call(tag, body, context)
  lang_nodes = all_lang_nodes(context.content_node)
  (context.dest_node.node_info[:tag_langbar_data] ||= {})[context.content_node.acn] = lang_nodes.map {|n| n.alcn}
  result = lang_nodes.
    reject {|n| (context.content_node.lang == n.lang && !param('tag.langbar.show_own_lang'))}.
    sort {|a, b| a.lang <=> b.lang}.
    collect {|n| context.dest_node.link_to(n, :link_text => (param('tag.langbar.lang_names')[n.lang] || n.lang), :lang => n.lang)}.
    join(param('tag.langbar.separator'))

  [(param('tag.langbar.show_single_lang') || lang_nodes.length > 1 ? result : ""), param('tag.langbar.process_output')]
end