Object
This class provides functionality for creating sitemaps and checking if a sitemap has changed.
Return the sitemap tree as Webgen::Tag::Menu::MenuNode created for the node in the language lang using the provided options which can be any configuration option starting with common.sitemap.
# File lib/webgen/common/sitemap.rb, line 20 20: def create_sitemap(node, lang, options) 21: @options = options 22: tree = recursive_create(nil, node.tree.root, lang).sort! 23: @options = nil 24: (node.node_info[:common_sitemap] ||= {})[[options.to_a.sort, lang]] = tree.to_lcn_list 25: tree 26: end
Return true if the child of the node is in the sitemap for the language lang.
# File lib/webgen/common/sitemap.rb, line 47 47: def in_sitemap?(child, lang, allow_index_file = false) 48: ((option('common.sitemap.used_kinds').empty? || option('common.sitemap.used_kinds').include?(child['kind']) || 49: (child.routing_node(lang, false) != child && in_sitemap?(child.routing_node(lang), lang, true))) && 50: (option('common.sitemap.any_lang') || child.lang.nil? || child.lang == lang) && 51: (!option('common.sitemap.honor_in_menu') || child['in_menu']) && 52: (allow_index_file || child.parent == child.tree.root || child.parent.routing_node(lang) != child)) 53: end
Check if the sitemaps for node have changed.
# File lib/webgen/common/sitemap.rb, line 63 63: def node_changed?(node) 64: return if !node.node_info[:common_sitemap] 65: 66: node.node_info[:common_sitemap].each do |(options, lang), cached_tree| 67: @options = options.to_hash 68: tree = recursive_create(nil, node.tree.root, lang).sort!.to_lcn_list 69: @options = nil 70: 71: if (tree != cached_tree) || 72: (tree.flatten.any? do |alcn| 73: (n = node.tree[alcn]) && (r = n.routing_node(lang)) && r.meta_info_changed? 74: end) 75: node.flag(:dirty) 76: break 77: end 78: end 79: end
Retrieve the configuration option value for name. The value is taken from the current configuration options hash if name is specified there or from the website configuration otherwise.
# File lib/webgen/common/sitemap.rb, line 58 58: def option(name) 59: (@options && @options.has_key?(name) ? @options[name] : website.config[name]) 60: end
Recursively create the sitemap.
# File lib/webgen/common/sitemap.rb, line 33 33: def recursive_create(parent, node, lang, in_sitemap = true) 34: mnode = Webgen::Tag::Menu::MenuNode.new(parent, node) 35: node.children.map do |n| 36: sub_in_sitemap = in_sitemap?(n, lang) 37: [(!n.children.empty? || sub_in_sitemap ? n : nil), sub_in_sitemap] 38: end.each do |n, sub_in_sitemap| 39: next if n.nil? 40: sub_node = recursive_create(mnode, n, lang, sub_in_sitemap) 41: mnode.children << sub_node unless sub_node.nil? 42: end 43: (mnode.children.empty? && !in_sitemap ? nil : mnode) 44: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.