webgen 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
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?']