webgen 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/ChangeLog +201 -0
  2. data/Rakefile +3 -2
  3. data/TODO +31 -4
  4. data/VERSION +1 -1
  5. data/data/webgen/example/config.yaml +2 -0
  6. data/data/webgen/example/src/default.css +84 -0
  7. data/data/webgen/example/src/default.template +32 -0
  8. data/data/webgen/example/src/index.page +8 -0
  9. data/{doc/src → data/webgen/images}/generated_by_webgen.png +0 -0
  10. data/data/webgen/images/valid-css.gif +0 -0
  11. data/data/webgen/images/valid-xhtml11.png +0 -0
  12. data/data/webgen/images/webgen_logo.png +0 -0
  13. data/doc/config.yaml +2 -0
  14. data/doc/plugin/extension.rb +8 -4
  15. data/doc/plugin/resources.rb +30 -0
  16. data/doc/src/default.css +251 -149
  17. data/doc/src/default.template +8 -8
  18. data/doc/src/documentation/gettingstarted.page +1 -1
  19. data/doc/src/documentation/index.page +6 -2
  20. data/doc/src/documentation/plugins/filehandler/backing.page +22 -9
  21. data/doc/src/documentation/plugins/filehandler/galleryhandler.page +1 -1
  22. data/doc/src/documentation/plugins/filehandler/index.page +9 -4
  23. data/doc/src/documentation/plugins/filehandler/pagehandler.page +33 -10
  24. data/doc/src/documentation/plugins/index.page +9 -1
  25. data/doc/src/documentation/plugins/menustyles/horizontal-dropdown.page +42 -0
  26. data/doc/src/documentation/plugins/menustyles/horizontal.page +21 -0
  27. data/doc/src/documentation/plugins/menustyles/index.page +12 -0
  28. data/doc/src/documentation/plugins/menustyles/partial.page +27 -0
  29. data/doc/src/documentation/plugins/menustyles/vertical-dropdown.page +23 -0
  30. data/doc/src/documentation/plugins/menustyles/vertical.page +32 -0
  31. data/doc/src/documentation/plugins/resourcemanager.page +30 -0
  32. data/doc/src/documentation/plugins/tags/index.page +2 -2
  33. data/doc/src/documentation/plugins/tags/langbar.page +4 -4
  34. data/doc/src/documentation/plugins/tags/menu.page +6 -17
  35. data/doc/src/documentation/plugins/tags/navbar.page +2 -1
  36. data/doc/src/documentation/plugins/tags/resource.page +22 -0
  37. data/doc/src/download.page +1 -1
  38. data/doc/src/features.page +32 -9
  39. data/doc/src/index.page +24 -10
  40. data/doc/src/meta.info +16 -6
  41. data/install.rb +1 -1
  42. data/lib/webgen/configuration.rb +24 -2
  43. data/lib/webgen/node.rb +29 -5
  44. data/lib/webgen/plugin.rb +1 -5
  45. data/lib/webgen/plugins/contenthandler/textile.rb +3 -3
  46. data/lib/webgen/plugins/filehandler/backing.rb +5 -4
  47. data/lib/webgen/plugins/filehandler/directory.rb +3 -3
  48. data/lib/webgen/plugins/filehandler/filehandler.rb +8 -4
  49. data/lib/webgen/plugins/filehandler/page.rb +33 -18
  50. data/lib/webgen/plugins/filehandler/picturegallery.rb +10 -8
  51. data/lib/webgen/plugins/menustyles/defaultmenustyle.rb +73 -0
  52. data/lib/webgen/plugins/menustyles/horizontal.rb +93 -0
  53. data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +113 -0
  54. data/lib/webgen/plugins/menustyles/partial.rb +95 -0
  55. data/lib/webgen/plugins/menustyles/vertical.rb +107 -0
  56. data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +107 -0
  57. data/lib/webgen/plugins/resourcemanager.rb +264 -0
  58. data/lib/webgen/plugins/tags/langbar.rb +9 -5
  59. data/lib/webgen/plugins/tags/menu.rb +4 -66
  60. data/lib/webgen/plugins/treewalker.rb +7 -6
  61. data/lib/webgen/webgen.rb +72 -161
  62. metadata +37 -6
  63. data/doc/src/logo.png +0 -0
@@ -15,5 +15,6 @@ h2. Examples
15
15
 
16
16
  table{border:1px solid black}.
17
17
  |_.Command|_.Output|
18
- |<notextile>\{navbar: {separator: " HALLO "}}</notextile>|<notextile>{navbar: {separator: " HALLO "}}</notextile>|
19
18
  |\{navbar:}|{navbar:}|
19
+ |<notextile>\{navbar: {separator: " HALLO "}}</notextile>|<notextile>{navbar: {separator: " HALLO "}}</notextile>|
20
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: Resource
3
+ inMenu: true
4
+ ---
5
+ h2. Information
6
+
7
+ <notextile>{describe: ResourceTag}</notextile>
8
+
9
+ h2. Description
10
+
11
+ The resource tag is used to include a resource either verbatim (i.e. its content is copied) or by
12
+ path. For more information about resources have a look at the
13
+ <a href="{relocatable: ../resourcemanager.page}">Resource Manager</a>.
14
+
15
+ h2. Examples
16
+
17
+ table{border:1px solid black}.
18
+ |_{width: 30%}.Command|_.Output|
19
+ |\{resource: webgen-logo}|{resource: webgen-logo}|
20
+ |\{resource: w3c-valid-xhtml11}|{resource: w3c-valid-xhtml11}|
21
+ |\{resource: {name: webgen-css, insert: data}}|{resource: {name: webgen-css, insert: data}}|
22
+
@@ -12,7 +12,7 @@ Download: "http://rubyforge.org/frs/?group_id=296":http://rubyforge.org/frs/?gro
12
12
 
13
13
  h2. Dependencies
14
14
 
15
- * "cmdparse":http://cmdparse.rubyforge.org version 1.0.2 or higher
15
+ * "cmdparse":http://cmdparse.rubyforge.org version 1.0.3 or higher
16
16
  * "RedCloth":http://redcloth.rubyforge.org version 2.0.10 or higher if you want Textile support
17
17
  * "BlueCloth":http://www.deveiate.org version 1.0.0 or higher if you want Markdown support
18
18
  * "RMagick":http://rmagick.rubyforge.org/ version 1.7.1 or higher if you want automatic thumbnail
@@ -4,12 +4,35 @@ inMenu: true
4
4
  ---
5
5
  h2. Feature list
6
6
 
7
- * Easily extendable through plugins
8
- * Easy to install and use
9
- * Uses templates for separating layout from content
10
- * Supports several different content formats (Textile, Markdown, RDOC, plain HTML), new ones are easy to add
11
- * Uses 'tags' to add generated, ie. dynamic, content to the web pages -- standard distribution provides often used tags
12
- * Supports 'virtual files' via meta information backing files
13
- * Automatically checks generated files if they are standard conform
14
- * Easy to configure if one needs to (no need if you are happy with the default values)
15
- * Relatively fast: processes ~1000 files in ~25 seconds on an {execute: uname -p}
7
+ * <h3>webgen core</h3>
8
+
9
+ * Easily extendable through plugins
10
+ * Easy to install and use
11
+ * Uses templates for separating layout from content
12
+ * Easy to configure if one needs to (no need if you are happy with the default values)
13
+ * Command line interface uses command style syntax (like Subversion's @svn@ command)
14
+ * Fast
15
+
16
+ * <h3>File Handler (for handling the files in the source directory)</h3>
17
+
18
+ * Powerful file copy handler for copying single files or entire directories to the output directory
19
+ * Support for gallery definition files -> generates entire picture gallery, automatic thumbnail creation
20
+
21
+ * <h3>Page Description Files (for define web pages)</h3>
22
+
23
+ * Support for ERB (embedded Ruby) in page description files and in templates
24
+ * Supports several different content formats (Textile, Markdown, RDOC, plain HTML), new ones are easy to add
25
+ * Support for specifying meta information (e.g. title, menu ordering information, ...)
26
+
27
+ * <h3>Tags (used for easily adding dynamic content to web pages)</h3>
28
+
29
+ * Standard distribution provides often used tags
30
+ * Menu tag can generate different types of menus (simple menus and ones with CSS drop downs)
31
+ * Navbar tag generates a navigation bar so that one always knows where he is in the hierarchy
32
+ * Relocatable tag for automatically generating correct relative paths to files
33
+ * ... and much more!
34
+
35
+ * <h3>Other Features</h3>
36
+
37
+ * Automatically checks generated files if they are standard conform
38
+ * Supports 'virtual files' via meta information backing files
data/doc/src/index.page CHANGED
@@ -5,7 +5,7 @@ directoryName: webgen
5
5
  ---
6
6
  h2. Welcome
7
7
 
8
- ... to the homepage of _*webgen*_, a template based web page generator.
8
+ ... to the homepage of _*webgen*_, a template based static website generator.
9
9
 
10
10
  This whole site was generated with webgen and provides an online demonstration of its features.
11
11
  Choose from the menu what you want to see from or know about webgen!
@@ -18,16 +18,30 @@ list":http://rubyforge.org/mail/?group_id=296 available if you have any question
18
18
 
19
19
  h2. News
20
20
 
21
+ <b>??.??.2005 - webgen 0.3.5 released!!!</b>
22
+
23
+ Major changes:
24
+
25
+ * Now using cmdparse version 1.0.3!
26
+ * New CLI command "clean" for deleting the generated or all files from the output directory
27
+ * Restructured menu tag -> five different menu styles now available (see <a href="{relocatable: documentation/plugins/menustyles}">Menu Styles</a>)
28
+ * New plugin <a href="{relocatable: documentation/plugins/resourcemanager.page}">ResourceManager</a> for defining resources
29
+ * New plugin <a href="{relocatable: documentation/plugins/tags/resource.page}">Resource Tag</a> for accessing resources
30
+ * Pages files can now be referenced in @relocatable@ tag and backing files with a standardified name (see <a href="{relocatable: documentation/plugins/filehandler/pagehandler.page#naming}">here</a>), despite an eventually self defined naming scheme
31
+ * New parameters: <a href="{relocatable: documentation/plugins/tags/langbar.page}">LangbarTag:showOwnLang</a>
32
+ * Changed paramters: <a href="{relocatable: documentation/plugins/filehandler/pagehandler.page}">PageHandler:validator</a> (now deactivated by default)
33
+ * Fixed bugs
34
+
21
35
  <b>12.05.2005 - webgen 0.3.4 released!!!</b>
22
36
 
23
37
  Major changes:
24
38
 
25
39
  * FileHandler now uses path patterns and/or extensions for determining which files to process !
26
- * ERB (embedded ruby) can now be used in templates and page files (see <a href="{relocatable: documentation/plugins/filehandler/pagehandler.html}">PageHandler</a>)!
40
+ * ERB (embedded ruby) can now be used in templates and page files (see <a href="{relocatable: documentation/plugins/filehandler/pagehandler.page}">PageHandler</a>)!
27
41
  * Relocatable tag now accepts complex URIs (URIs with query and fragment part, absolute URIs)
28
42
  * Changed meta info name *menuOrder* to *orderInfo* (e.g. used for specifying order information for menus) -- you have to adapt your page and backing files!!!
29
- * New parameters: <a href="{relocatable: documentation/plugins/filehandler/pagehandler.html}">PageHandler:useERB</a>
30
- * Changed parameters: <a href="{relocatable: documentation/plugins/filehandler}">FileHandler:ignorePaths</a>, <a href="{relocatable: documentation/plugins/filehandler/copy.html}">FileCopyHandler:paths</a>
43
+ * New parameters: <a href="{relocatable: documentation/plugins/filehandler/pagehandler.page}">PageHandler:useERB</a>
44
+ * Changed parameters: <a href="{relocatable: documentation/plugins/filehandler}">FileHandler:ignorePaths</a>, <a href="{relocatable: documentation/plugins/filehandler/copy.page}">FileCopyHandler:paths</a>
31
45
  * New page describing meta information items used by plugins
32
46
  * Fixed bugs
33
47
 
@@ -39,8 +53,8 @@ Major changes:
39
53
  * Now you can let webgen create the basic directories and files by executing @webgen create my_site@
40
54
  * New logging plugin lets you have more control over logging and log files
41
55
  * Now each website can have a plugin directory
42
- * New parameters for: <a href="{relocatable: documentation/plugins/tags/wikilink.html}">wikilink</a>
43
- * Changed format of backing files -> have a look at the <a href="{relocatable: documentation/plugins/filehandler/backing.html}">documentation</a>!
56
+ * New parameters for: <a href="{relocatable: documentation/plugins/tags/wikilink.page}">wikilink</a>
57
+ * Changed format of backing files -> have a look at the <a href="{relocatable: documentation/plugins/filehandler/backing.page}">documentation</a>!
44
58
  * Removed obsolete Extension Loader plugin
45
59
  * Fixed bugs
46
60
 
@@ -54,10 +68,10 @@ Bug fix release for bug #1637 and other bugs
54
68
 
55
69
  Major changes:
56
70
 
57
- * Better DefaultLayouter for picture galleries (<a href="{relocatable: Design_Gallery_1.html}">online demo</a>)
58
- * Output names for page files now customizable (see <a href="{relocatable: documentation/plugins/filehandler/pagehandler.html}">PageHandler</a>)
71
+ * Better DefaultLayouter for picture galleries (<a href="{relocatable: Design_Gallery_1.page}">online demo</a>)
72
+ * Output names for page files now customizable (see <a href="{relocatable: documentation/plugins/filehandler/pagehandler.page}">PageHandler</a>)
59
73
  * On-the-fly creation of thumbnails for pictures with RMagick
60
- * New tags: <a href="{relocatable: documentation/plugins/tags/sitemap.html}">sitemap</a>
74
+ * New tags: <a href="{relocatable: documentation/plugins/tags/sitemap.page}">sitemap</a>
61
75
  * Tag @lang@ renamed, new name @langbar@!
62
76
  * New parameters for @menu@ tag
63
77
  * Automatic checking of HTML files on their validness
@@ -69,7 +83,7 @@ Major changes:
69
83
  Major changes:
70
84
 
71
85
  * Textile, Markdown, RDOC and HTML as content format supported!!!
72
- * New tags: <a href="{relocatable: documentation/plugins/tags/wikilink.html}">wikilink</a>
86
+ * New tags: <a href="{relocatable: documentation/plugins/tags/wikilink.page}">wikilink</a>
73
87
  * Improved plugin system
74
88
  * On-the-fly creation of new tags
75
89
  * Fixed bugs
data/doc/src/meta.info CHANGED
@@ -1,19 +1,29 @@
1
- index.html:
1
+ index.page:
2
2
  orderInfo: 1
3
3
 
4
- download.html:
5
- orderInfo: 3
4
+ download.page:
5
+ orderInfo: 11
6
6
 
7
- features.html:
7
+ features.page:
8
8
  orderInfo: 5
9
9
 
10
10
  api.html:
11
11
  dest: rdoc/index.html
12
12
  title: API Reference
13
- orderInfo: 7
13
+
14
+ documentation/api.html:
15
+ dest: ../rdoc/index.html
16
+ title: API Reference
17
+ inMenu: true
18
+ orderInfo: 60
19
+
20
+ documentation/wiki.html:
21
+ dest: http://webgen.rubyforge.org/wiki/wiki.pl
22
+ title: Wiki Web
14
23
  inMenu: true
24
+ orderInfo: 50
15
25
 
16
- documentation/index.html:
26
+ documentation/index.page:
17
27
  orderInfo: 9
18
28
 
19
29
  designs:
data/install.rb CHANGED
@@ -3,7 +3,7 @@ require 'rpa/install'
3
3
 
4
4
  class Install_webgen < RPA::Install::FullInstaller
5
5
  name 'webgen'
6
- version '0.3.4-1'
6
+ version '0.3.5-1'
7
7
  classification Application
8
8
  build do
9
9
  installdocs %w[COPYING ChangeLog TODO]
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: configuration.rb 268 2005-05-02 15:28:31Z thomas $
4
+ # $Id: configuration.rb 303 2005-06-24 13:44:14Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -37,7 +37,7 @@ end
37
37
 
38
38
  module Webgen
39
39
 
40
- VERSION = [0, 3, 4]
40
+ VERSION = [0, 3, 5]
41
41
  SUMMARY = "Webgen is a templated based static website generator."
42
42
  DESCRIPTION = "Webgen is a web page generator implemented in Ruby. " \
43
43
  "It is used to generate static web pages from templates and page " \
@@ -52,6 +52,28 @@ module Webgen
52
52
  add_param 'outDirectory', 'output', 'The directory to which the output files are written.'
53
53
  add_param 'lang', 'en', 'The default language.'
54
54
 
55
+ # Returns the data directory of webgen.
56
+ def self.data_dir
57
+ unless defined?( @@data_dir )
58
+ @@data_dir = File.join( Config::CONFIG["datadir"], "webgen" )
59
+
60
+ if defined?( Gem::Cache )
61
+ gem = Gem::Cache.from_installed_gems.search( "webgen", "=#{Webgen::VERSION.join('.')}" ).last
62
+ @@data_dir = File.join( gem.full_gem_path, "data", "webgen" ) if gem
63
+ end
64
+
65
+ @@data_dir = File.dirname( $0 ) + '/../data/webgen' if !File.exists?( @@data_dir )
66
+
67
+ if File.exists?( @@data_dir )
68
+ logger.info { "Webgen data directory found at #{@@data_dir}" }
69
+ else
70
+ logger.error { "Could not locate webgen data directory!!!" }
71
+ @@data_dir = ''
72
+ end
73
+ end
74
+ @@data_dir
75
+ end
76
+
55
77
  # Does all the initialisation stuff
56
78
  def init_all
57
79
  load_plugins( File.dirname( __FILE__) + '/plugins', File.dirname( __FILE__).sub(/webgen$/, '') )
data/lib/webgen/node.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: node.rb 272 2005-05-09 08:53:04Z thomas $
4
+ # $Id: node.rb 294 2005-06-14 06:37:56Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -20,6 +20,7 @@
20
20
  #++
21
21
  #
22
22
 
23
+ require 'uri'
23
24
  require 'webgen/composite'
24
25
 
25
26
  class Node
@@ -56,13 +57,25 @@ class Node
56
57
  end
57
58
 
58
59
 
60
+ # Returns the relative path from this node to +dest+.
61
+ def relpath_to_string( dest )
62
+ if dest[0] == ?/
63
+ from = recursive_value( 'dest' ).sub( /#{self['dest']}$/, '' ).split( '/' )[1..-1] || []
64
+ from.fill( '..' )
65
+ from.concat( dest.split( '/' )[1..-1] ).join( '/' )
66
+ else
67
+ from = recursive_value( 'dest' ).sub( /#{self['dest']}$/, '' ).split( '/' )[1..-1] || []
68
+ from.concat( dest.split( '/' ) ).join( '/' )
69
+ end
70
+ end
71
+
59
72
  # Return the relative path from this node to the destNode, virtual nodes are not used in the
60
73
  # calculation. The destNode can be any non virtual node. If +destNode+ starts with http://, the
61
74
  # relative path to it is the empty string. If +includeDestNode+ is true, then the path of the
62
75
  # destination node is appended to the calculated path.
63
76
  def relpath_to_node( destNode, includeDestNode = true)
64
- if destNode['dest'] =~ /^http:\/\//
65
- path = ''
77
+ if URI::parse( destNode['dest'] ).absolute?
78
+ path = destNode['dest']
66
79
  else
67
80
  from = recursive_value( 'dest' ).sub( /#{self['dest']}$/, '' ).split( '/' )[1..-1] || []
68
81
  to = destNode.recursive_value( 'dest' ).sub( /#{destNode['dest']}$/, '' ).split( '/' )[1..-1] || []
@@ -126,6 +139,11 @@ class Node
126
139
  node
127
140
  end
128
141
 
142
+ # Returns an informative representation of the node.
143
+ def to_s
144
+ "<##{self.class.name}: src=#{@metainfo['src']}, dest=#{@metainfo['dest']}, title=#{@metainfo['title']}>"
145
+ end
146
+
129
147
  #######
130
148
  private
131
149
  #######
@@ -135,17 +153,23 @@ class Node
135
153
  node = Node.root( self )
136
154
  destString = destString[1..-1]
137
155
  else
138
- node = self.parent_dir || self
156
+ node = @metainfo['int:directory?'] ? self : self.parent_dir || self
139
157
  end
140
158
 
141
159
  startElement = node
142
160
  elements = destString.split( '/' )
161
+ pagelang = (/\.(\w\w)\.page$/ =~ destString ? $1 : Webgen::Plugin['Configuration']['lang'])
143
162
 
144
163
  elements.each do |element|
145
164
  break if node.nil?
146
165
  case element
147
166
  when '..' then node = node.parent
148
- else node = node.find {|child| /^#{element}\/?$/ =~ child[metainfo] }
167
+ else
168
+ node = node.find do |child|
169
+ /^#{element}\/?$/ =~ child[metainfo] || \
170
+ (metainfo == 'dest' && (child['int:pagename'] == element || child['int:local-pagename'] == element) && \
171
+ child['lang'] == pagelang)
172
+ end
149
173
  end
150
174
  end
151
175
 
data/lib/webgen/plugin.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: plugin.rb 275 2005-05-11 17:30:20Z thomas $
4
+ # $Id: plugin.rb 293 2005-06-11 08:37:51Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -156,10 +156,6 @@ module Webgen
156
156
  module_eval s
157
157
  end
158
158
 
159
- #######
160
- private
161
- #######
162
-
163
159
  # Return the ancestor classes for the object's class which are sub classes from Plugin.
164
160
  def self.ancestor_classes
165
161
  self.ancestors.delete_if {|c| c.instance_of?( Module ) }[0..-3]
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: textile.rb 212 2005-02-27 12:02:27Z thomas $
4
+ # $Id: textile.rb 288 2005-05-29 12:25:47Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -35,8 +35,8 @@ begin
35
35
 
36
36
  def format_content( txt )
37
37
  RedCloth.new( txt ).to_html
38
- rescue
39
- self.logger.error { "Error converting Textile text to HTML" }
38
+ rescue Exception => e
39
+ self.logger.error { "Error converting Textile text to HTML: #{e.message}" }
40
40
  ''
41
41
  end
42
42
 
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: backing.rb 275 2005-05-11 17:30:20Z thomas $
4
+ # $Id: backing.rb 294 2005-06-14 06:37:56Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -74,8 +74,8 @@ module FileHandlers
74
74
 
75
75
  backingFiles.each do |backingFile|
76
76
  backingFile['content'].each do |filename, data|
77
- if dirNode.node_for_string?( filename )
78
- backedFile = dirNode.node_for_string( filename )
77
+ backedFile = dirNode.node_for_string?( filename )
78
+ if backedFile
79
79
  self.logger.info { "Setting meta info data on file <#{backedFile.recursive_value( 'dest' )}>" }
80
80
  backedFile.metainfo.update( data )
81
81
  else
@@ -84,7 +84,7 @@ module FileHandlers
84
84
  end
85
85
  end
86
86
 
87
- dirNode.each {|child| process_backing_files( child ) if child['directory']}
87
+ dirNode.each {|child| process_backing_files( child ) if child['int:directory?']}
88
88
  end
89
89
 
90
90
 
@@ -97,6 +97,7 @@ module FileHandlers
97
97
  pageNode = Webgen::Plugin['VirtualPageHandler'].create_node_from_data( '', filename, dirNode )
98
98
  dirNode.add_child( pageNode )
99
99
  pageNode.metainfo.update( data )
100
+ pageNode['int:virtualNode'] = true
100
101
  self.logger.info { "Created virtual node <#{pageNode.recursive_value( 'src' )}> (#{pageNode['lang']}) in <#{dirNode.recursive_value( 'dest' )}> " \
101
102
  "referencing '#{pageNode['dest']}'" }
102
103
  end
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: directory.rb 275 2005-05-11 17:30:20Z thomas $
4
+ # $Id: directory.rb 288 2005-05-29 12:25:47Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -44,7 +44,7 @@ module FileHandlers
44
44
  end
45
45
 
46
46
  def process_dir_index
47
- node = Webgen::Plugin['PageHandler'].get_page_node_by_name( self, Webgen::Plugin['DirHandler']['indexFile'] )
47
+ node = node_for_string( Webgen::Plugin['DirHandler']['indexFile'] )
48
48
  if node
49
49
  self.logger.info { "Directory index file for <#{self.recursive_value( 'src' )}> => <#{node.recursive_value( 'src', false )}>" }
50
50
  self['indexFile'] = node
@@ -59,7 +59,7 @@ module FileHandlers
59
59
 
60
60
  summary "Handles directories"
61
61
  handle_path '**/'
62
- add_param 'indexFile', 'index.html', 'The default file name for the directory index file.'
62
+ add_param 'indexFile', 'index.page', 'The default file name for the directory index page file.'
63
63
  depends_on 'FileHandler'
64
64
  used_meta_info 'indexFile', 'directoryName'
65
65
 
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: filehandler.rb 272 2005-05-09 08:53:04Z thomas $
4
+ # $Id: filehandler.rb 293 2005-06-11 08:37:51Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -40,6 +40,7 @@ module FileHandlers
40
40
 
41
41
  def initialize
42
42
  add_msg_name( :AFTER_ALL_READ )
43
+ add_msg_name( :AFTER_ALL_WRITTEN )
43
44
  end
44
45
 
45
46
  # Builds the tree with all the nodes and returns it.
@@ -56,7 +57,7 @@ module FileHandlers
56
57
  rootPath = Webgen::Plugin['Configuration']['srcDirectory'] + File::SEPARATOR
57
58
  rootHandler = handler_for_path( rootPath, handlerFiles )
58
59
  if rootHandler.nil? || allFiles.empty?
59
- logger.error { "No file handler for root directory <#{rootPath}> found" } if rootHandler.nil?
60
+ logger.error { "No file handler for root directory <#{rootPath}> found" } if rootHandler.nil? && !allFiles.empty?
60
61
  logger.error { "No files found in directory <#{rootPath}>" } if allFiles.empty?
61
62
  return nil
62
63
  end
@@ -90,6 +91,8 @@ module FileHandlers
90
91
  node.each do |child|
91
92
  write_tree( child )
92
93
  end
94
+
95
+ dispatch_msg( :AFTER_ALL_WRITTEN ) if node.parent.nil?
93
96
  end
94
97
 
95
98
 
@@ -153,7 +156,8 @@ module FileHandlers
153
156
  end
154
157
 
155
158
  def handler_for_path( path, handlerFiles )
156
- handlerFiles.find {|p, handler| p.include?( path )}[1]
159
+ temp, handler = handlerFiles.find {|p, handler| p.include?( path )}
160
+ handler
157
161
  end
158
162
 
159
163
  def sort_file_handlers( handlers )
@@ -209,7 +213,7 @@ module FileHandlers
209
213
  # Returns a HTML link for the given +node+ relative to +refNode+. You can optionally specify the
210
214
  # title for the link. If not specified, the title of the node is used.
211
215
  def get_html_link( node, refNode, title = node['title'] )
212
- "<a href=\"#{refNode.relpath_to_node( node )}\">#{title}</a>"
216
+ "<a href=\"#{refNode.relpath_to_node( node )}\" title=\"#{title}\">#{title}</a>"
213
217
  end
214
218
 
215
219
  end