webgen 0.3.6 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. data/ChangeLog +1523 -97
  2. data/Rakefile +11 -24
  3. data/TODO +22 -9
  4. data/VERSION +1 -1
  5. data/bin/webgen +2 -2
  6. data/bin/webgen-gallery-editor +654 -0
  7. data/bin/webgen-gui +10 -0
  8. data/data/webgen/data/ISO-639-2_values_8bits.txt +492 -0
  9. data/data/webgen/gallery-creator/default.png +0 -0
  10. data/data/webgen/icon_mapping.yaml +27 -0
  11. data/data/webgen/resources/emoticons/bigeyes/angry.png +0 -0
  12. data/data/webgen/resources/emoticons/bigeyes/cool.png +0 -0
  13. data/data/webgen/resources/emoticons/bigeyes/cry.png +0 -0
  14. data/data/webgen/resources/emoticons/bigeyes/drunk.png +0 -0
  15. data/data/webgen/resources/emoticons/bigeyes/lol.png +0 -0
  16. data/data/webgen/resources/emoticons/bigeyes/oops.png +0 -0
  17. data/data/webgen/resources/emoticons/bigeyes/sad.png +0 -0
  18. data/data/webgen/resources/emoticons/bigeyes/sleep.png +0 -0
  19. data/data/webgen/resources/emoticons/bigeyes/smile.png +0 -0
  20. data/data/webgen/resources/emoticons/bigeyes/tongue.png +0 -0
  21. data/data/webgen/resources/emoticons/bigeyes/wink.png +0 -0
  22. data/data/webgen/resources/emoticons/crystal/angry.png +0 -0
  23. data/data/webgen/resources/emoticons/crystal/cool.png +0 -0
  24. data/data/webgen/resources/emoticons/crystal/cry.png +0 -0
  25. data/data/webgen/resources/emoticons/crystal/drunk.png +0 -0
  26. data/data/webgen/resources/emoticons/crystal/lol.png +0 -0
  27. data/data/webgen/resources/emoticons/crystal/oops.png +0 -0
  28. data/data/webgen/resources/emoticons/crystal/sad.png +0 -0
  29. data/data/webgen/resources/emoticons/crystal/sleep.png +0 -0
  30. data/data/webgen/resources/emoticons/crystal/smile.png +0 -0
  31. data/data/webgen/resources/emoticons/crystal/tongue.png +0 -0
  32. data/data/webgen/resources/emoticons/crystal/wink.png +0 -0
  33. data/data/webgen/resources/emoticons/cyclops/angry.png +0 -0
  34. data/data/webgen/resources/emoticons/cyclops/cool.png +0 -0
  35. data/data/webgen/resources/emoticons/cyclops/cry.png +0 -0
  36. data/data/webgen/resources/emoticons/cyclops/drunk.png +0 -0
  37. data/data/webgen/resources/emoticons/cyclops/lol.png +0 -0
  38. data/data/webgen/resources/emoticons/cyclops/oops.png +0 -0
  39. data/data/webgen/resources/emoticons/cyclops/sad.png +0 -0
  40. data/data/webgen/resources/emoticons/cyclops/sleep.png +0 -0
  41. data/data/webgen/resources/emoticons/cyclops/smile.png +0 -0
  42. data/data/webgen/resources/emoticons/cyclops/tongue.png +0 -0
  43. data/data/webgen/resources/emoticons/cyclops/wink.png +0 -0
  44. data/data/webgen/resources/emoticons/glass/angry.png +0 -0
  45. data/data/webgen/resources/emoticons/glass/cool.png +0 -0
  46. data/data/webgen/resources/emoticons/glass/cry.png +0 -0
  47. data/data/webgen/resources/emoticons/glass/drunk.png +0 -0
  48. data/data/webgen/resources/emoticons/glass/lol.png +0 -0
  49. data/data/webgen/resources/emoticons/glass/oops.png +0 -0
  50. data/data/webgen/resources/emoticons/glass/sad.png +0 -0
  51. data/data/webgen/resources/emoticons/glass/sleep.png +0 -0
  52. data/data/webgen/resources/emoticons/glass/smile.png +0 -0
  53. data/data/webgen/resources/emoticons/glass/tongue.png +0 -0
  54. data/data/webgen/resources/emoticons/glass/wink.png +0 -0
  55. data/data/webgen/resources/emoticons/icqstyle/angry.png +0 -0
  56. data/data/webgen/resources/emoticons/icqstyle/cool.png +0 -0
  57. data/data/webgen/resources/emoticons/icqstyle/cry.png +0 -0
  58. data/data/webgen/resources/emoticons/icqstyle/drunk.png +0 -0
  59. data/data/webgen/resources/emoticons/icqstyle/lol.png +0 -0
  60. data/data/webgen/resources/emoticons/icqstyle/oops.png +0 -0
  61. data/data/webgen/resources/emoticons/icqstyle/sad.png +0 -0
  62. data/data/webgen/resources/emoticons/icqstyle/sleep.png +0 -0
  63. data/data/webgen/resources/emoticons/icqstyle/smile.png +0 -0
  64. data/data/webgen/resources/emoticons/icqstyle/tongue.png +0 -0
  65. data/data/webgen/resources/emoticons/icqstyle/wink.png +0 -0
  66. data/data/webgen/resources/emoticons/matrix/angry.gif +0 -0
  67. data/data/webgen/resources/emoticons/matrix/cool.gif +0 -0
  68. data/data/webgen/resources/emoticons/matrix/cry.gif +0 -0
  69. data/data/webgen/resources/emoticons/matrix/drunk.gif +0 -0
  70. data/data/webgen/resources/emoticons/matrix/lol.gif +0 -0
  71. data/data/webgen/resources/emoticons/matrix/oops.gif +0 -0
  72. data/data/webgen/resources/emoticons/matrix/sad.gif +0 -0
  73. data/data/webgen/resources/emoticons/matrix/sleep.gif +0 -0
  74. data/data/webgen/resources/emoticons/matrix/smile.gif +0 -0
  75. data/data/webgen/resources/emoticons/matrix/tongue.gif +0 -0
  76. data/data/webgen/resources/emoticons/matrix/wink.gif +0 -0
  77. data/data/webgen/resources/emoticons/smellies/angry.gif +0 -0
  78. data/data/webgen/resources/emoticons/smellies/cool.gif +0 -0
  79. data/data/webgen/resources/emoticons/smellies/cry.gif +0 -0
  80. data/data/webgen/resources/emoticons/smellies/drunk.gif +0 -0
  81. data/data/webgen/resources/emoticons/smellies/lol.gif +0 -0
  82. data/data/webgen/resources/emoticons/smellies/oops.gif +0 -0
  83. data/data/webgen/resources/emoticons/smellies/sad.gif +0 -0
  84. data/data/webgen/resources/emoticons/smellies/sleep.gif +0 -0
  85. data/data/webgen/resources/emoticons/smellies/smile.gif +0 -0
  86. data/data/webgen/resources/emoticons/smellies/tongue.gif +0 -0
  87. data/data/webgen/resources/emoticons/smellies/wink.gif +0 -0
  88. data/data/webgen/resources/icons/compressed.png +0 -0
  89. data/data/webgen/resources/icons/document.png +0 -0
  90. data/data/webgen/resources/icons/download.png +0 -0
  91. data/data/webgen/resources/icons/image.png +0 -0
  92. data/data/webgen/resources/icons/linux.png +0 -0
  93. data/data/webgen/resources/icons/mac.png +0 -0
  94. data/data/webgen/resources/icons/pdf.png +0 -0
  95. data/data/webgen/resources/icons/penguin.png +0 -0
  96. data/data/webgen/resources/icons/quicktime.png +0 -0
  97. data/data/webgen/resources/icons/real.png +0 -0
  98. data/data/webgen/resources/icons/rpm.png +0 -0
  99. data/data/webgen/resources/icons/sound.png +0 -0
  100. data/data/webgen/resources/icons/source.png +0 -0
  101. data/data/webgen/resources/icons/spreadsheet.png +0 -0
  102. data/data/webgen/resources/icons/text.png +0 -0
  103. data/data/webgen/resources/icons/vcard.png +0 -0
  104. data/data/webgen/resources/icons/video.png +0 -0
  105. data/data/webgen/resources/icons/win.png +0 -0
  106. data/data/webgen/{images → resources/images}/generated_by_webgen.png +0 -0
  107. data/data/webgen/{images → resources/images}/valid-css.gif +0 -0
  108. data/data/webgen/{images → resources/images}/valid-xhtml11.png +0 -0
  109. data/data/webgen/{images → resources/images}/webgen_logo.png +0 -0
  110. data/data/webgen/{example/src → website_styles/default}/default.css +0 -0
  111. data/data/webgen/{example/src → website_styles/default}/default.template +2 -2
  112. data/data/webgen/website_templates/default/README +6 -0
  113. data/data/webgen/{example → website_templates/default}/config.yaml +0 -0
  114. data/data/webgen/{example → website_templates/default}/src/index.page +0 -0
  115. data/data/webgen/website_templates/personal_hp/README +6 -0
  116. data/data/webgen/website_templates/personal_hp/src/about.page +12 -0
  117. data/data/webgen/website_templates/personal_hp/src/index.page +9 -0
  118. data/data/webgen/website_templates/personal_hp/src/links.page +22 -0
  119. data/data/webgen/website_templates/personal_hp/src/projects.page +20 -0
  120. data/data/webgen/website_templates/project/README +7 -0
  121. data/data/webgen/website_templates/project/src/about.page +12 -0
  122. data/data/webgen/website_templates/project/src/download.page +15 -0
  123. data/data/webgen/website_templates/project/src/features.page +8 -0
  124. data/data/webgen/website_templates/project/src/index.page +9 -0
  125. data/data/webgen/website_templates/project/src/screenshots.page +18 -0
  126. data/doc/config.yaml +3 -0
  127. data/doc/plugin/clidesc.rb +18 -7
  128. data/doc/plugin/emoticon.rb +29 -0
  129. data/doc/plugin/extension.rb +15 -16
  130. data/doc/plugin/listpluginparameters.rb +39 -0
  131. data/doc/plugin/resources.rb +4 -4
  132. data/doc/plugin/source.rb +21 -0
  133. data/doc/src/default.css +7 -4
  134. data/doc/src/default.template +4 -2
  135. data/doc/src/documentation/cli.page +1 -1
  136. data/doc/src/documentation/extending_webgen.page +102 -0
  137. data/doc/src/documentation/gettingstarted.page +3 -6
  138. data/doc/src/documentation/index.page +1 -1
  139. data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/html.page +0 -0
  140. data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/index.page +0 -0
  141. data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/markdown.page +0 -0
  142. data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/rdoc.page +0 -0
  143. data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/textile.page +0 -0
  144. data/doc/src/documentation/plugins/{system → coreplugins}/configuration.page +0 -0
  145. data/doc/src/documentation/plugins/coreplugins/index.page +7 -0
  146. data/doc/src/documentation/plugins/{system → coreplugins}/logging.page +0 -0
  147. data/doc/src/documentation/plugins/{resourcemanager.page → coreplugins/resourcemanager.page} +5 -1
  148. data/doc/src/documentation/plugins/{filehandler → filehandlers}/backing.page +1 -1
  149. data/doc/src/documentation/plugins/{filehandler → filehandlers}/copy.page +1 -1
  150. data/doc/src/documentation/plugins/{filehandler/directory.page → filehandlers/directoryhandler.page} +11 -2
  151. data/doc/src/documentation/plugins/{filehandler/galleryhandler.page → filehandlers/gallery.page} +20 -13
  152. data/doc/src/documentation/plugins/{filehandler → filehandlers}/index.page +0 -0
  153. data/doc/src/documentation/plugins/{filehandler/pagehandler.page → filehandlers/page.page} +6 -4
  154. data/doc/src/documentation/plugins/{filehandler → filehandlers}/template.page +0 -0
  155. data/doc/src/documentation/plugins/{gallerylayouter → gallerylayouters}/index.page +7 -3
  156. data/doc/src/documentation/plugins/{htmlvalidator → htmlvalidators}/index.page +0 -0
  157. data/doc/src/documentation/plugins/{htmlvalidator → htmlvalidators}/xmllint.page +0 -0
  158. data/doc/src/documentation/plugins/index.page +4 -0
  159. data/doc/src/documentation/plugins/menustyles/{horizontal-dropdown.page → horizontaldropdown.page} +0 -0
  160. data/doc/src/documentation/plugins/menustyles/{vertical-dropdown.page → verticaldropdown.page} +1 -1
  161. data/doc/src/documentation/plugins/miscplugins/index.page +7 -0
  162. data/doc/src/documentation/plugins/miscplugins/smileyreplacer.page +38 -0
  163. data/doc/src/documentation/plugins/tags/breadcrumbtrail.page +20 -0
  164. data/doc/src/documentation/plugins/tags/download.page +23 -0
  165. data/doc/src/documentation/plugins/tags/resource.page +1 -1
  166. data/doc/src/documentation/plugins/tags/sitemap.page +1 -2
  167. data/doc/src/documentation/references/index.page +8 -0
  168. data/doc/src/documentation/{meta_info_reference.page → references/meta_info_reference.page} +1 -0
  169. data/doc/src/documentation/references/parameter_reference.page +12 -0
  170. data/doc/src/documentation/webgen_gallery_editor.page +82 -0
  171. data/doc/src/download.page +2 -2
  172. data/doc/src/features.page +3 -2
  173. data/doc/src/images/screenshots/wge-image.png +0 -0
  174. data/doc/src/images/screenshots/wge-layout-preview.png +0 -0
  175. data/doc/src/images/screenshots/wge-main-disabled.png +0 -0
  176. data/doc/src/images/screenshots/wge-main.png +0 -0
  177. data/doc/src/index.page +30 -11
  178. data/doc/src/meta.info +7 -7
  179. data/doc/src/screenshots.gallery +33 -0
  180. data/install.rb +1 -1
  181. data/lib/webgen.rb +275 -0
  182. data/lib/webgen/composite.rb +1 -1
  183. data/lib/webgen/gui/common.rb +38 -0
  184. data/lib/webgen/gui/main.rb +219 -0
  185. data/lib/webgen/gui/new_website_dlg.rb +125 -0
  186. data/lib/webgen/listener.rb +1 -1
  187. data/lib/webgen/node.rb +4 -2
  188. data/lib/webgen/plugin.rb +167 -100
  189. data/lib/webgen/plugins/{contenthandler/defaultcontenthandler.rb → contenthandlers/default.rb} +1 -1
  190. data/lib/webgen/plugins/{contenthandler → contenthandlers}/html.rb +2 -2
  191. data/lib/webgen/plugins/{contenthandler → contenthandlers}/markdown.rb +2 -2
  192. data/lib/webgen/plugins/{contenthandler → contenthandlers}/rdoc.rb +2 -2
  193. data/lib/webgen/plugins/{contenthandler → contenthandlers}/textile.rb +2 -2
  194. data/lib/webgen/{configuration.rb → plugins/coreplugins/configuration.rb} +34 -14
  195. data/lib/webgen/{logging.rb → plugins/coreplugins/logging.rb} +4 -4
  196. data/lib/webgen/plugins/{resourcemanager.rb → coreplugins/resourcemanager.rb} +44 -22
  197. data/lib/webgen/plugins/{filehandler → filehandlers}/backing.rb +11 -11
  198. data/lib/webgen/plugins/{filehandler/filecopy.rb → filehandlers/copy.rb} +3 -3
  199. data/lib/webgen/plugins/{filehandler → filehandlers}/directory.rb +15 -10
  200. data/lib/webgen/plugins/{filehandler → filehandlers}/filehandler.rb +9 -7
  201. data/lib/webgen/plugins/{filehandler/picturegallery.rb → filehandlers/gallery.rb} +35 -28
  202. data/lib/webgen/plugins/{filehandler → filehandlers}/page.rb +30 -15
  203. data/lib/webgen/plugins/{filehandler → filehandlers}/template.rb +3 -3
  204. data/lib/webgen/plugins/{gallerylayouter/defaultgallerylayouter.rb → gallerylayouters/default.rb} +11 -11
  205. data/lib/webgen/plugins/{htmlvalidator/defaulthtmlvalidator.rb → htmlvalidators/default.rb} +1 -1
  206. data/lib/webgen/plugins/{htmlvalidator → htmlvalidators}/xmllint.rb +2 -2
  207. data/lib/webgen/plugins/menustyles/{defaultmenustyle.rb → default.rb} +2 -2
  208. data/lib/webgen/plugins/menustyles/horizontal.rb +2 -2
  209. data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +2 -2
  210. data/lib/webgen/plugins/menustyles/partial.rb +2 -2
  211. data/lib/webgen/plugins/menustyles/vertical.rb +2 -2
  212. data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +2 -2
  213. data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +84 -0
  214. data/lib/webgen/plugins/{treewalker.rb → miscplugins/treewalker.rb} +1 -1
  215. data/lib/webgen/plugins/tags/{navbar.rb → breadcrumbtrail.rb} +5 -9
  216. data/lib/webgen/plugins/tags/date.rb +2 -6
  217. data/lib/webgen/plugins/tags/download.rb +155 -0
  218. data/lib/webgen/plugins/tags/executecommand.rb +2 -6
  219. data/lib/webgen/plugins/tags/includefile.rb +4 -8
  220. data/lib/webgen/plugins/tags/langbar.rb +2 -6
  221. data/lib/webgen/plugins/tags/menu.rb +2 -7
  222. data/lib/webgen/plugins/tags/meta.rb +2 -6
  223. data/lib/webgen/plugins/tags/relocatable.rb +2 -6
  224. data/lib/webgen/plugins/tags/sitemap.rb +14 -10
  225. data/lib/webgen/plugins/tags/tags.rb +25 -18
  226. data/lib/webgen/plugins/tags/wikilink.rb +2 -6
  227. metadata +311 -195
  228. data/doc/src/design.gallery +0 -18
  229. data/doc/src/designs/curdesign.png +0 -0
  230. data/doc/src/designs/nostyle.png +0 -0
  231. data/doc/src/designs/old.png +0 -0
  232. data/doc/src/documentation/plugins/gallerylayouter/defaultlayouter.page +0 -12
  233. data/doc/src/documentation/plugins/system/index.page +0 -7
  234. data/doc/src/documentation/plugins/tags/navbar.page +0 -20
  235. data/lib/webgen/webgen.rb +0 -271
  236. data/testsite/config.yaml +0 -7
  237. data/testsite/src/bghack.png +0 -0
  238. data/testsite/src/bluecloth.page +0 -102
  239. data/testsite/src/default.css +0 -146
  240. data/testsite/src/default.template +0 -33
  241. data/testsite/src/home.en.page +0 -22
  242. data/testsite/src/home.page +0 -22
  243. data/testsite/src/images/bghack.png +0 -0
  244. data/testsite/src/index.page +0 -21
  245. data/testsite/src/meta.info +0 -12
  246. data/testsite/src/news.page +0 -20
  247. data/testsite/src/news_are_so-cool.de.page +0 -19
  248. data/testsite/src/noindex/noindex.page +0 -20
  249. data/testsite/src/pictures/index.page +0 -20
  250. data/testsite/src/projects.de.page +0 -11
  251. data/testsite/src/projects.es.page +0 -11
  252. data/testsite/src/projects.page +0 -17
  253. data/testsite/src/projects/00.index.de.page +0 -10
  254. data/testsite/src/projects/01.project2.page +0 -20
  255. data/testsite/src/projects/02.project1.page +0 -20
  256. data/testsite/src/projects/05.project3.page +0 -22
  257. data/testsite/src/projects/index.page +0 -20
  258. data/testsite/src/projects/subproj/index.page +0 -22
  259. data/testsite/src/projects/subproj/project3.page +0 -21
  260. data/testsite/src/rdoc.page +0 -12
  261. data/testsite/src/redcloth.page +0 -106
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: filehandler.rb 334 2005-08-23 19:11:53Z thomas $
4
+ # $Id: filehandler.rb 360 2005-11-02 08:24:26Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -50,7 +50,7 @@ module FileHandlers
50
50
  allFiles.subtract( get_files_for_pattern( pattern ) )
51
51
  end
52
52
 
53
- handlerFiles = sort_file_handlers( Webgen::Plugin['DefaultFileHandler'].get_file_handlers ).collect do |pattern, handler|
53
+ handlerFiles = sort_file_handlers( FileHandlers::DefaultFileHandler.get_file_handlers ).collect do |pattern, handler|
54
54
  [get_files_for_pattern( pattern ), Webgen::Plugin.config[handler].obj]
55
55
  end
56
56
 
@@ -123,7 +123,7 @@ module FileHandlers
123
123
 
124
124
  def create_root_node( path, handler )
125
125
  root = handler.create_node( path, nil )
126
- root['title'] = '/'
126
+ root['title'] = ''
127
127
  root['dest'] = Webgen::Plugin['Configuration']['outDirectory'] + '/'
128
128
  root['src'] = Webgen::Plugin['Configuration']['srcDirectory'] + '/'
129
129
  root
@@ -171,11 +171,13 @@ module FileHandlers
171
171
 
172
172
  summary "Base class of all file handler plugins"
173
173
 
174
+ VIRTUAL = true
175
+
174
176
  # Specify the extension which should be handled by the class.
175
177
  def self.handle_path( path )
176
178
  logger.info { "Registering class #{self.name} for handling the path pattern: #{path.inspect}" }
177
- (@@config[self].path ||= []) << path
178
- handlers = (@@config[DefaultFileHandler].file_handler ||= {})
179
+ (self.config[self].path ||= []) << path
180
+ handlers = (self.config[DefaultFileHandler].file_handler ||= {})
179
181
  logger.warn { "Path pattern #{path} already associated with class #{handlers[path].name}, not using class #{self.name} for it!" } if handlers[path]
180
182
  handlers[path] ||= self
181
183
  end
@@ -186,8 +188,8 @@ module FileHandlers
186
188
  end
187
189
 
188
190
  # Return the registered file handler plugins.
189
- def get_file_handlers
190
- @@config[self.class].file_handler
191
+ def self.get_file_handlers
192
+ self.config[self].file_handler
191
193
  end
192
194
 
193
195
  # Supplies the +path+ to a file and the +parent+ node sothat the plugin can create a node for this
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: picturegallery.rb 334 2005-08-23 19:11:53Z thomas $
4
+ # $Id: gallery.rb 361 2005-11-25 14:17:13Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -20,29 +20,29 @@
20
20
  #++
21
21
  #
22
22
 
23
- require 'webgen/plugins/filehandler/filehandler'
24
- require 'webgen/plugins/filehandler/directory'
25
- require 'webgen/plugins/filehandler/page'
23
+ require 'webgen/plugins/filehandlers/filehandler'
24
+ require 'webgen/plugins/filehandlers/directory'
25
+ require 'webgen/plugins/filehandlers/page'
26
26
 
27
27
  module FileHandlers
28
28
 
29
- class PictureGalleryFileHandler < DefaultFileHandler
29
+ class GalleryFileHandler < DefaultFileHandler
30
30
 
31
- summary "Handles picture gallery files for page file"
31
+ summary "Handles images gallery files"
32
32
  extension 'gallery'
33
- add_param "picturesPerPage", 20, 'Number of picture per gallery page'
34
- add_param "picturePageInMenu", false, 'True if the picture pages should be in the menu'
33
+ add_param "imagesPerPage", 20, 'Number of images per gallery page'
34
+ add_param "imagePageInMenu", false, 'True if the image pages should be in the menu'
35
35
  add_param "galleryPageInMenu", false, 'True if the gallery pages should be in the menu'
36
36
  add_param "galleryOrderInfo", 50, 'The <orderInfo> metainfo for the first gallery page. The second gallery page gets this value plus one, and so on.'
37
- add_param "mainPageInMenu", true, 'True if the main page of the picture gallery should be in the menu'
37
+ add_param "mainPageInMenu", true, 'True if the main page of the image gallery should be in the menu'
38
38
  add_param "galleryPageTemplate", nil, 'The template for gallery pages. If nil or a not existing file is specified, the default template is used.'
39
- add_param "picturePageTemplate", nil, 'The template for picture pages. If nil or a not existing file is specified, the default template is used.'
39
+ add_param "imagePageTemplate", nil, 'The template for image pages. If nil or a not existing file is specified, the default template is used.'
40
40
  add_param "mainPageTemplate", nil, 'The template for the main page. If nil or a not existing file is specified, the default template is used.'
41
- add_param "files", 'images/**/*.jpg', 'The Dir glob for specifying the picture files'
41
+ add_param "files", 'images/**/*.jpg', 'The Dir glob for specifying the image files'
42
42
  add_param "title", 'Gallery', 'The title of the gallery'
43
43
  add_param "layout", 'default', 'The layout used'
44
44
 
45
- depends_on 'FileHandler', 'PageHandler'
45
+ depends_on 'FileHandler', 'PageFileHandler'
46
46
 
47
47
  def create_node( file, parent )
48
48
  begin
@@ -53,7 +53,14 @@ module FileHandlers
53
53
  end
54
54
  @path = File.dirname( file )
55
55
  images = Dir[File.join( @path, get_param( 'files' ))].collect {|i| i.sub( /#{@path + File::SEPARATOR}/, '' ) }
56
- self.logger.info { "Creating gallery for file <#{file}> with #{images.length} pictures" }
56
+ images.sort! do |a,b|
57
+ aoi = @filedata[a].nil? ? 0 : @filedata[a]['orderInfo'] || 0
58
+ boi = @filedata[b].nil? ? 0 : @filedata[b]['orderInfo'] || 0
59
+ atitle = @filedata[a].nil? ? a : @filedata[a]['title'] || a
60
+ btitle = @filedata[b].nil? ? b : @filedata[b]['title'] || b
61
+ (aoi == boi ? atitle <=> btitle : aoi <=> boi)
62
+ end
63
+ self.logger.info { "Creating gallery for file <#{file}> with #{images.length} images" }
57
64
 
58
65
  create_gallery( images, parent )
59
66
 
@@ -75,7 +82,7 @@ module FileHandlers
75
82
 
76
83
  def call_layouter( type, metainfo, *args )
77
84
  content = Webgen::Plugin['DefaultGalleryLayouter'].get_layout( get_param( 'layout' ) ).send( type.to_s, *args )
78
- "#{metainfo.to_yaml}\n---\n#{content}"
85
+ "---\n#{metainfo.to_yaml}\n---\n#{content}"
79
86
  end
80
87
 
81
88
  def create_gallery( images, parent )
@@ -83,7 +90,7 @@ module FileHandlers
83
90
  main['galleries'] = create_gallery_pages( images, parent )
84
91
 
85
92
  if main['galleries'].length != 1
86
- mainNode = Webgen::Plugin['PageHandler'].create_node_from_data( call_layouter( :main, main, main ), main['srcName'], parent )
93
+ mainNode = Webgen::Plugin['PageFileHandler'].create_node_from_data( call_layouter( :main, main, main ), main['srcName'], parent )
87
94
  parent.add_child( mainNode )
88
95
  else
89
96
  main['galleries'][0]['title'] = main['title']
@@ -93,10 +100,10 @@ module FileHandlers
93
100
  end
94
101
 
95
102
  main['galleries'].each_with_index do |gallery, gIndex|
96
- node = Webgen::Plugin['PageHandler'].create_node_from_data( call_layouter( :gallery, gallery, main, gIndex ), gallery['srcName'], parent )
103
+ node = Webgen::Plugin['PageFileHandler'].create_node_from_data( call_layouter( :gallery, gallery, main, gIndex ), gallery['srcName'], parent )
97
104
  parent.add_child( node )
98
105
  gallery['imageList'].each_with_index do |image, iIndex|
99
- node = Webgen::Plugin['PageHandler'].create_node_from_data( call_layouter( :picture, image, main, gIndex, iIndex ), image['srcName'], parent )
106
+ node = Webgen::Plugin['PageFileHandler'].create_node_from_data( call_layouter( :image, image, main, gIndex, iIndex ), image['srcName'], parent )
100
107
  parent.add_child( node )
101
108
  end
102
109
  end
@@ -115,7 +122,7 @@ module FileHandlers
115
122
 
116
123
  def create_gallery_pages( images, parent )
117
124
  galleries = []
118
- picsPerPage = get_param( 'picturesPerPage' )
125
+ picsPerPage = get_param( 'imagesPerPage' )
119
126
  0.step( images.length - 1, picsPerPage ) do |i|
120
127
  data = (@filedata['galleryPages'] || {}).dup
121
128
 
@@ -126,7 +133,7 @@ module FileHandlers
126
133
  data['orderInfo'] = get_param( 'galleryOrderInfo' ) + data['number']
127
134
  data['title'] = gallery_title( data['number'] )
128
135
  data['srcName'] = gallery_file_name( data['title'] )
129
- data['imageList'] = create_picture_pages( images[i..(i + picsPerPage - 1)], parent )
136
+ data['imageList'] = create_image_pages( images[i..(i + picsPerPage - 1)], parent )
130
137
 
131
138
  galleries << data
132
139
  end
@@ -141,20 +148,20 @@ module FileHandlers
141
148
  ( title.nil? ? nil : title.tr( ' .', '_' ) + '.html' )
142
149
  end
143
150
 
144
- def create_picture_pages( images, parent )
151
+ def create_image_pages( images, parent )
145
152
  imageList = []
146
153
  images.each do |image|
147
154
  imageData = (@filedata[image] || {}).dup
148
155
 
149
156
  imageData['blocks'] ||= [{'name'=>'content', 'format'=>'html'}]
150
- imageData['title'] ||= "Picture #{File.basename( image )}"
157
+ imageData['title'] ||= "Image #{File.basename( image )}"
151
158
  imageData['description'] ||= ''
152
- imageData['inMenu'] ||= get_param( 'picturePageInMenu' )
153
- imageData['template'] ||= get_param( 'picturePageTemplate' )
159
+ imageData['inMenu'] ||= get_param( 'imagePageInMenu' )
160
+ imageData['template'] ||= get_param( 'imagePageTemplate' )
154
161
  imageData['imageFilename'] = image
155
- imageData['srcName'] = File.basename( image ).tr( ' .', '_' ) + '.html'
156
- imageData['thumbnail'] ||= get_thumbnail( imageData, parent )
162
+ imageData['srcName'] = gallery_file_name( get_param( 'title' ) + ' ' + File.basename( image ) )
157
163
  imageData['thumbnailSize'] ||= @filedata['thumbnailSize']
164
+ imageData['thumbnail'] ||= get_thumbnail( imageData, parent )
158
165
 
159
166
  imageList << imageData
160
167
  end
@@ -171,11 +178,11 @@ module FileHandlers
171
178
  begin
172
179
  require 'RMagick'
173
180
 
174
- class PictureGalleryFileHandler
181
+ class GalleryFileHandler
175
182
 
176
183
  remove_method :get_thumbnail
177
184
  def get_thumbnail( imageData, parent )
178
- p_node = Webgen::Plugin['DirHandler'].recursive_create_path( File.dirname( imageData['imageFilename'] ), parent )
185
+ p_node = Webgen::Plugin['DirectoryHandler'].recursive_create_path( File.dirname( imageData['imageFilename'] ), parent )
179
186
  node = Webgen::Plugin['ThumbnailWriter'].create_node( File.join( @path, imageData['imageFilename'] ), p_node, imageData['thumbnailSize'] )
180
187
  p_node.add_child( node )
181
188
 
@@ -193,7 +200,7 @@ module FileHandlers
193
200
  node = Node.new( parent )
194
201
  node['title'] = node['src'] = node['dest'] = 'tn_' + File.basename( file )
195
202
  node['int:thumbnailFile'] = file
196
- node['int:thumbnailSize'] = thumbnailSize
203
+ node['int:thumbnailSize'] = thumbnailSize unless thumbnailSize.nil? || thumbnailSize !~ /\d+x\d+/
197
204
  node['processor'] = self
198
205
  node
199
206
  end
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: page.rb 334 2005-08-23 19:11:53Z thomas $
4
+ # $Id: page.rb 350 2005-09-02 09:44:23Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -20,7 +20,8 @@
20
20
  #++
21
21
  #
22
22
 
23
- require 'webgen/plugins/filehandler/filehandler'
23
+ require 'webgen/plugins/filehandlers/filehandler'
24
+ require 'webgen/listener'
24
25
  require 'yaml'
25
26
  require 'erb'
26
27
 
@@ -28,7 +29,7 @@ module FileHandlers
28
29
 
29
30
  # Super class for all page description files. Provides helper methods so that writing new plugins
30
31
  # for page description files is easy.
31
- class PageHandler < DefaultFileHandler
32
+ class PageFileHandler < DefaultFileHandler
32
33
 
33
34
  class PageNode < Node; end;
34
35
 
@@ -39,15 +40,27 @@ module FileHandlers
39
40
  add_param 'defaultLangInFilename', false, \
40
41
  'If true, the output files for the default language will have the ' \
41
42
  'language in the file name like all other page files. If false, they won''t.'
42
- add_param 'defaultContentFormat', 'textile', 'The default content format used in page files.'
43
- add_param 'outputNameStyle', [:name, ['.', :lang], '.html'], 'Defines how the output name should be built. The correct name will be used for ' \
44
- 'the :name part and the file language will be used for the :lang part. If <defaultLangInFilename> is true, the :lang part or the subarray in which '\
45
- 'the :lang part was defined, will be omitted.'
43
+
44
+ add_param 'outputNameStyle', [:name, ['.', :lang], '.html'], 'Defines how the output name should be built. ' \
45
+ 'The correct name will be used for the :name part and the file language will be used for the :lang part. ' \
46
+ 'If <defaultLangInFilename> is true, the :lang part or the subarray in which the :lang part was defined, will be omitted.'
47
+
46
48
  add_param 'validator', nil, 'The validator for checking HTML files on their validness. Set to "" or nil to prevent checking.'
47
- add_param 'useERB', true, 'Specifies if the content blocks of the page file should be processed with ERB before they are formatted.'
49
+
50
+ add_param 'defaultPageMetaData', \
51
+ {'useERB' => true,
52
+ 'blocks' => [{'name'=>'content', 'format'=>'textile'}]
53
+ },'Specifies the default meta data for page files.'
48
54
 
49
55
  used_meta_info 'title', 'orderInfo', 'lang', 'blocks', 'useERB'
50
56
 
57
+
58
+ include Listener
59
+
60
+ def initialize
61
+ add_msg_name( :AFTER_CONTENT_RENDERED )
62
+ end
63
+
51
64
  def create_node( srcName, parent )
52
65
  create_node_internally( parse_data( File.read( srcName ), srcName ), analyse_file_name( File.basename( srcName ) ), parent )
53
66
  end
@@ -58,7 +71,7 @@ module FileHandlers
58
71
 
59
72
  def render_node( node, with_template = true, block_name = 'content' )
60
73
  unless node['int:content-formatted']
61
- useERB = node['useERB'] || ( node['useERB'].nil? && get_param( 'useERB' ) )
74
+ useERB = node['useERB']
62
75
  node['blocks'].each do |blockdata|
63
76
  begin
64
77
  content = ( useERB ? ERB.new( blockdata['data'] ).result( binding ) : blockdata['data'] )
@@ -76,7 +89,7 @@ module FileHandlers
76
89
  begin
77
90
  outstring = ERB.new( templateNode['content'] ).result( binding )
78
91
  rescue Exception => e
79
- logger.error { "ERB threw an error while processing an ERB template (<#{templateNode.recursive_value('src')}>: #{e.message}" }
92
+ logger.error { "ERB threw an error while processing an ERB template (<#{templateNode.recursive_value('src')}>): #{e.message}" }
80
93
  outstring = templateNode['content'].dup
81
94
  end
82
95
  else
@@ -84,7 +97,9 @@ module FileHandlers
84
97
  outstring = node[block_name].to_s.dup
85
98
  end
86
99
 
87
- Webgen::Plugin['Tags'].substitute_tags( outstring, node, templateNode )
100
+ outstring = Webgen::Plugin['Tags'].substitute_tags( outstring, node, templateNode )
101
+ dispatch_msg( :AFTER_CONTENT_RENDERED, outstring, node )
102
+ outstring
88
103
  end
89
104
 
90
105
  def write_node( node )
@@ -163,19 +178,19 @@ module FileHandlers
163
178
  end
164
179
 
165
180
  def parse_data( data, srcName )
166
- options = {}
181
+ options = Marshal.load( Marshal.dump( get_param( 'defaultPageMetaData' ) ) )
167
182
  blocks = data.split( /^---\s*$/ )
168
183
  if blocks.length > 0
169
184
  if blocks[0] == ''
170
185
  begin
171
- options = YAML::load( blocks[1] )
186
+ options.update( YAML::load( blocks[1] ) )
172
187
  rescue ArgumentError => x
173
188
  self.logger.error { "Error parsing options for file <#{srcName}>: #{x.message}" }
174
189
  end
175
190
  blocks[0..1] = []
176
191
  end
177
192
  blocks.each {|b| b.gsub!( /^(\\+)(---\s*)$/ ) {|m| "\\" * ($1.length / 2) + $2 } }
178
- (options['blocks'] ||= [{'name'=>'content', 'format'=>get_param( 'defaultContentFormat' )}]).each do |blockdata|
193
+ options['blocks'].each do |blockdata|
179
194
  if !blockdata.kind_of?( Hash ) || !blockdata['name'] || !blockdata['format']
180
195
  self.logger.error { "Block meta information in <#{srcName}> invalid (#{blockdata.inspect})" }
181
196
  next
@@ -188,7 +203,7 @@ module FileHandlers
188
203
  end
189
204
 
190
205
  def analyse_file_name( srcName )
191
- matchData = /^(?:(\d+)\.)?([^.]*?)(?:\.(\w\w))?\.(.*)$/.match( srcName )
206
+ matchData = /^(?:(\d+)\.)?([^.]*?)(?:\.(\w\w\w?))?\.(.*)$/.match( srcName )
192
207
  analysed = OpenStruct.new
193
208
 
194
209
  self.logger.info { "Using default language for file <#{srcName}>" } if matchData[3].nil?
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: template.rb 334 2005-08-23 19:11:53Z thomas $
4
+ # $Id: template.rb 349 2005-09-02 09:28:06Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -20,7 +20,7 @@
20
20
  #++
21
21
  #
22
22
 
23
- require 'webgen/plugins/filehandler/filehandler'
23
+ require 'webgen/plugins/filehandlers/filehandler'
24
24
 
25
25
  module FileHandlers
26
26
 
@@ -57,7 +57,7 @@ module FileHandlers
57
57
  #######
58
58
 
59
59
  def get_template( node )
60
- if node['template'].kind_of?( String )
60
+ if node['template'].kind_of?( String ) && node['template'] != ''
61
61
  templateNode = node.node_for_string( node['template'] )
62
62
  if templateNode.nil?
63
63
  self.logger.warn { "Specified template for file <#{node.recursive_value('src')}> not found, using default template!" }
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: defaultgallerylayouter.rb 334 2005-08-23 19:11:53Z thomas $
4
+ # $Id: default.rb 349 2005-09-02 09:28:06Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -20,11 +20,11 @@
20
20
  #++
21
21
  #
22
22
 
23
- module PictureGalleryLayouter
23
+ module GalleryLayouters
24
24
 
25
25
  class DefaultGalleryLayouter < Webgen::Plugin
26
26
 
27
- summary "Base class for all Picture Gallery Layouters and, at the same time, default layouter"
27
+ summary "Base class for all gallery layouters and, at the same time, default layouter"
28
28
 
29
29
  define_handler 'layout'
30
30
 
@@ -49,8 +49,8 @@ module PictureGalleryLayouter
49
49
  gIndex != data['galleries'].length - 1 ? gIndex + 1 : nil
50
50
  end
51
51
 
52
- # Returns the gallery and image indices of the previous picture, if it exists, or +nil+ otherwise.
53
- def prev_picture( data, gIndex, iIndex )
52
+ # Returns the gallery and image indices of the previous image, if it exists, or +nil+ otherwise.
53
+ def prev_image( data, gIndex, iIndex )
54
54
  result = nil
55
55
  if gIndex != 0 || iIndex != 0
56
56
  if iIndex == 0
@@ -64,8 +64,8 @@ module PictureGalleryLayouter
64
64
  return result
65
65
  end
66
66
 
67
- # Returns the gallery and image indices of the next picture, if it exists, or +nil+ otherwise.
68
- def next_picture( data, gIndex, iIndex )
67
+ # Returns the gallery and image indices of the next image, if it exists, or +nil+ otherwise.
68
+ def next_image( data, gIndex, iIndex )
69
69
  result = nil
70
70
  if gIndex != data['galleries'].length - 1 || iIndex != data['galleries'][gIndex]['imageList'].length - 1
71
71
  if iIndex == data['galleries'][gIndex]['imageList'].length - 1
@@ -124,14 +124,14 @@ module PictureGalleryLayouter
124
124
  # Should be overwritten by subclasses! +data+ is the data structure which holds all information
125
125
  # about the gallery. +gIndex+ is the index of the current gallery. +iIndex+ is the index of the
126
126
  # current image.
127
- def picture( data, gIndex, iIndex )
127
+ def image( data, gIndex, iIndex )
128
128
  s = "
129
129
  <h2>#{data['galleries'][gIndex]['imageList'][iIndex]['title']}</h2>
130
- <div class=\"webgen-picture\">
130
+ <div class=\"webgen-image\">
131
131
  "
132
132
  s += "<a href=\"#{data['galleries'][gIndex]['srcName']}\">^&nbsp;#{data['galleries'][gIndex]['title']}&nbsp;^</a><br />"
133
- prevGIndex, prevIIndex = prev_picture( data, gIndex, iIndex )
134
- nextGIndex, nextIIndex = next_picture( data, gIndex, iIndex )
133
+ prevGIndex, prevIIndex = prev_image( data, gIndex, iIndex )
134
+ nextGIndex, nextIIndex = next_image( data, gIndex, iIndex )
135
135
  s += "<a href=\"#{data['galleries'][prevGIndex]['imageList'][prevIIndex]['srcName']}\">" \
136
136
  "&lt;&nbsp;#{data['galleries'][prevGIndex]['imageList'][prevIIndex]['title']}</a>" unless prevGIndex.nil?
137
137
  s += "&nbsp;&mdash;&nbsp;" unless prevGIndex.nil? || nextGIndex.nil?
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: defaulthtmlvalidator.rb 334 2005-08-23 19:11:53Z thomas $
4
+ # $Id: default.rb 349 2005-09-02 09:28:06Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: xmllint.rb 334 2005-08-23 19:11:53Z thomas $
4
+ # $Id: xmllint.rb 349 2005-09-02 09:28:06Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -20,7 +20,7 @@
20
20
  #++
21
21
  #
22
22
 
23
- require 'webgen/plugins/htmlvalidator/defaulthtmlvalidator'
23
+ require 'webgen/plugins/htmlvalidators/default'
24
24
  require "tempfile"
25
25
 
26
26
  # Allows one to get stdout and stderr from an executed command. Original version
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: defaultmenustyle.rb 334 2005-08-23 19:11:53Z thomas $
4
+ # $Id: default.rb 348 2005-09-02 08:43:33Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -20,7 +20,6 @@
20
20
  #++
21
21
  #
22
22
 
23
-
24
23
  module MenuStyles
25
24
 
26
25
  class DefaultMenuStyle < Webgen::Plugin
@@ -52,6 +51,7 @@ module MenuStyles
52
51
  protected
53
52
  #########
54
53
 
54
+ # Returns style information (node is selected, ...) and link for +node+ relative to +srcNode+.
55
55
  def menu_item_details( srcNode, node )
56
56
  langNode = node['processor'].get_node_for_lang( node, srcNode['lang'] )
57
57
  isDir = node['int:directory?']