webgen 0.3.8 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (618) hide show
  1. data/ChangeLog +2565 -14
  2. data/README +4 -6
  3. data/Rakefile +207 -89
  4. data/TODO +175 -17
  5. data/VERSION +1 -1
  6. data/bin/webgen +1 -2
  7. data/data/webgen/gallery-creator/default.png +0 -0
  8. data/data/webgen/gallery_styles/default/README +6 -0
  9. data/data/webgen/gallery_styles/default/gallery_gallery.template +38 -0
  10. data/data/webgen/gallery_styles/default/gallery_image.template +30 -0
  11. data/data/webgen/gallery_styles/default/gallery_main.template +18 -0
  12. data/data/webgen/gallery_styles/slides/README +18 -0
  13. data/data/webgen/gallery_styles/slides/collage.rb +334 -0
  14. data/data/webgen/gallery_styles/slides/gallery_gallery.template +62 -0
  15. data/data/webgen/gallery_styles/slides/gallery_image.template +53 -0
  16. data/data/webgen/gallery_styles/slides/gallery_main.template +32 -0
  17. data/data/webgen/resources/images/generated_by_webgen.png +0 -0
  18. data/data/webgen/resources/images/webgen_logo.png +0 -0
  19. data/data/webgen/website_styles/1024px/README +10 -0
  20. data/data/webgen/website_styles/1024px/default.css +188 -0
  21. data/data/webgen/website_styles/1024px/default.template +62 -0
  22. data/data/webgen/website_styles/1024px/images/background.gif +0 -0
  23. data/data/webgen/website_styles/andreas00/README +10 -0
  24. data/data/webgen/website_styles/andreas00/default.css +290 -0
  25. data/data/webgen/website_styles/andreas00/default.template +62 -0
  26. data/data/webgen/website_styles/andreas00/images/bg.gif +0 -0
  27. data/data/webgen/website_styles/andreas00/images/front.jpg +0 -0
  28. data/data/webgen/website_styles/andreas00/images/menubg.gif +0 -0
  29. data/data/webgen/website_styles/andreas00/images/menubg2.gif +0 -0
  30. data/data/webgen/website_styles/andreas01/README +11 -0
  31. data/data/webgen/website_styles/andreas01/default.css +310 -0
  32. data/data/webgen/website_styles/andreas01/default.template +63 -0
  33. data/data/webgen/website_styles/andreas01/images/bg.gif +0 -0
  34. data/data/webgen/website_styles/andreas01/images/front.jpg +0 -0
  35. data/data/webgen/website_styles/andreas01/print.css +35 -0
  36. data/data/webgen/website_styles/andreas03/README +11 -0
  37. data/data/webgen/website_styles/andreas03/default.css +223 -0
  38. data/data/webgen/website_styles/andreas03/default.template +60 -0
  39. data/data/webgen/website_styles/andreas03/images/bodybg.png +0 -0
  40. data/data/webgen/website_styles/andreas03/images/contbg.png +0 -0
  41. data/data/webgen/website_styles/andreas03/images/footerbg.png +0 -0
  42. data/data/webgen/website_styles/andreas03/images/gradient1.png +0 -0
  43. data/data/webgen/website_styles/andreas03/images/gradient2.png +0 -0
  44. data/data/webgen/website_styles/andreas04/README +12 -0
  45. data/data/webgen/website_styles/andreas04/default.css +290 -0
  46. data/data/webgen/website_styles/andreas04/default.template +83 -0
  47. data/data/webgen/website_styles/andreas04/images/blinkarrow.gif +0 -0
  48. data/data/webgen/website_styles/andreas04/images/bodybg.png +0 -0
  49. data/data/webgen/website_styles/andreas04/images/contentbg.png +0 -0
  50. data/data/webgen/website_styles/andreas04/images/entrybg.png +0 -0
  51. data/data/webgen/website_styles/andreas04/images/flash.gif +0 -0
  52. data/data/webgen/website_styles/andreas04/images/flash2.gif +0 -0
  53. data/data/webgen/website_styles/andreas04/images/globe.gif +0 -0
  54. data/data/webgen/website_styles/andreas04/images/globebottom.gif +0 -0
  55. data/data/webgen/website_styles/andreas04/images/linkarrow.gif +0 -0
  56. data/data/webgen/website_styles/andreas04/images/menuhover.png +0 -0
  57. data/data/webgen/website_styles/andreas05/README +11 -0
  58. data/data/webgen/website_styles/andreas05/default.css +33 -0
  59. data/data/webgen/website_styles/andreas05/default.template +42 -0
  60. data/data/webgen/website_styles/andreas05/images/bodybg.gif +0 -0
  61. data/data/webgen/website_styles/andreas05/images/front.png +0 -0
  62. data/data/webgen/website_styles/andreas06/README +11 -0
  63. data/data/webgen/website_styles/andreas06/default.css +353 -0
  64. data/data/webgen/website_styles/andreas06/default.template +72 -0
  65. data/data/webgen/website_styles/andreas06/images/bodybg.gif +0 -0
  66. data/data/webgen/website_styles/andreas06/images/boxbg.gif +0 -0
  67. data/data/webgen/website_styles/andreas06/images/greypx.gif +0 -0
  68. data/data/webgen/website_styles/andreas06/images/header.jpg +0 -0
  69. data/data/webgen/website_styles/andreas06/images/innerbg.gif +0 -0
  70. data/data/webgen/website_styles/andreas06/images/leaves.jpg +0 -0
  71. data/data/webgen/website_styles/andreas06/images/tabs.gif +0 -0
  72. data/data/webgen/website_styles/andreas07/README +12 -0
  73. data/data/webgen/website_styles/andreas07/browserfix.css +7 -0
  74. data/data/webgen/website_styles/andreas07/default.css +92 -0
  75. data/data/webgen/website_styles/andreas07/default.template +44 -0
  76. data/data/webgen/website_styles/andreas07/images/bodybg.gif +0 -0
  77. data/data/webgen/website_styles/andreas07/images/sidebarbg.gif +0 -0
  78. data/data/webgen/website_styles/andreas08/README +11 -0
  79. data/data/webgen/website_styles/andreas08/default.css +224 -0
  80. data/data/webgen/website_styles/andreas08/default.template +53 -0
  81. data/data/webgen/website_styles/andreas09/README +11 -0
  82. data/data/webgen/website_styles/andreas09/default.css +308 -0
  83. data/data/webgen/website_styles/andreas09/default.template +70 -0
  84. data/data/webgen/website_styles/andreas09/images/bodybg-black.jpg +0 -0
  85. data/data/webgen/website_styles/andreas09/images/bodybg-green.jpg +0 -0
  86. data/data/webgen/website_styles/andreas09/images/bodybg-orange.jpg +0 -0
  87. data/data/webgen/website_styles/andreas09/images/bodybg-purple.jpg +0 -0
  88. data/data/webgen/website_styles/andreas09/images/bodybg-red.jpg +0 -0
  89. data/data/webgen/website_styles/andreas09/images/bodybg.jpg +0 -0
  90. data/data/webgen/website_styles/andreas09/images/footerbg.jpg +0 -0
  91. data/data/webgen/website_styles/andreas09/images/menuhover-black.jpg +0 -0
  92. data/data/webgen/website_styles/andreas09/images/menuhover-green.jpg +0 -0
  93. data/data/webgen/website_styles/andreas09/images/menuhover-orange.jpg +0 -0
  94. data/data/webgen/website_styles/andreas09/images/menuhover-purple.jpg +0 -0
  95. data/data/webgen/website_styles/andreas09/images/menuhover-red.jpg +0 -0
  96. data/data/webgen/website_styles/andreas09/images/menuhover.jpg +0 -0
  97. data/data/webgen/website_styles/default/README +6 -0
  98. data/data/webgen/website_styles/default/default.css +1 -1
  99. data/data/webgen/website_styles/default/default.template +9 -3
  100. data/data/webgen/website_styles/plain/README +12 -0
  101. data/data/webgen/website_styles/plain/default.css +244 -0
  102. data/data/webgen/website_styles/plain/default.template +63 -0
  103. data/data/webgen/website_styles/plain/images/a_hover.jpg +0 -0
  104. data/data/webgen/website_styles/plain/images/desc.jpg +0 -0
  105. data/data/webgen/website_styles/plain/images/li.gif +0 -0
  106. data/data/webgen/website_styles/plain/images/mainbar.jpg +0 -0
  107. data/data/webgen/website_styles/plain/images/menu.jpg +0 -0
  108. data/data/webgen/website_styles/plain/images/submenua.gif +0 -0
  109. data/data/webgen/website_styles/plain/images/submenua_hover.jpg +0 -0
  110. data/data/webgen/website_templates/default/README +7 -5
  111. data/data/webgen/website_templates/personal_hp/README +7 -5
  112. data/data/webgen/website_templates/project/README +8 -6
  113. data/doc/config.yaml +2 -2
  114. data/doc/examples/website_styles/1024px/README +9 -0
  115. data/doc/examples/website_styles/1024px/config.yaml +2 -0
  116. data/doc/examples/website_styles/1024px/src/about.page +12 -0
  117. data/doc/examples/website_styles/1024px/src/default.css +188 -0
  118. data/doc/examples/website_styles/1024px/src/default.template +62 -0
  119. data/doc/examples/website_styles/1024px/src/download.page +15 -0
  120. data/doc/examples/website_styles/1024px/src/features.page +8 -0
  121. data/doc/examples/website_styles/1024px/src/images/background.gif +0 -0
  122. data/doc/examples/website_styles/1024px/src/index.page +9 -0
  123. data/doc/examples/website_styles/1024px/src/screenshots.page +18 -0
  124. data/doc/examples/website_styles/andreas00/README +9 -0
  125. data/doc/examples/website_styles/andreas00/config.yaml +2 -0
  126. data/doc/examples/website_styles/andreas00/src/about.page +12 -0
  127. data/doc/examples/website_styles/andreas00/src/default.css +290 -0
  128. data/doc/examples/website_styles/andreas00/src/default.template +62 -0
  129. data/doc/examples/website_styles/andreas00/src/download.page +15 -0
  130. data/doc/examples/website_styles/andreas00/src/features.page +8 -0
  131. data/doc/examples/website_styles/andreas00/src/images/bg.gif +0 -0
  132. data/doc/examples/website_styles/andreas00/src/images/front.jpg +0 -0
  133. data/doc/examples/website_styles/andreas00/src/images/menubg.gif +0 -0
  134. data/doc/examples/website_styles/andreas00/src/images/menubg2.gif +0 -0
  135. data/doc/examples/website_styles/andreas00/src/index.page +9 -0
  136. data/doc/examples/website_styles/andreas00/src/screenshots.page +18 -0
  137. data/doc/examples/website_styles/andreas01/README +9 -0
  138. data/doc/examples/website_styles/andreas01/config.yaml +2 -0
  139. data/doc/examples/website_styles/andreas01/src/about.page +12 -0
  140. data/doc/examples/website_styles/andreas01/src/default.css +310 -0
  141. data/doc/examples/website_styles/andreas01/src/default.template +63 -0
  142. data/doc/examples/website_styles/andreas01/src/download.page +15 -0
  143. data/doc/examples/website_styles/andreas01/src/features.page +8 -0
  144. data/doc/examples/website_styles/andreas01/src/images/bg.gif +0 -0
  145. data/doc/examples/website_styles/andreas01/src/images/front.jpg +0 -0
  146. data/doc/examples/website_styles/andreas01/src/index.page +9 -0
  147. data/doc/examples/website_styles/andreas01/src/print.css +35 -0
  148. data/doc/examples/website_styles/andreas01/src/screenshots.page +18 -0
  149. data/doc/examples/website_styles/andreas03/README +9 -0
  150. data/doc/examples/website_styles/andreas03/config.yaml +2 -0
  151. data/doc/examples/website_styles/andreas03/src/about.page +12 -0
  152. data/doc/examples/website_styles/andreas03/src/default.css +223 -0
  153. data/doc/examples/website_styles/andreas03/src/default.template +60 -0
  154. data/doc/examples/website_styles/andreas03/src/download.page +15 -0
  155. data/doc/examples/website_styles/andreas03/src/features.page +8 -0
  156. data/doc/examples/website_styles/andreas03/src/images/bodybg.png +0 -0
  157. data/doc/examples/website_styles/andreas03/src/images/contbg.png +0 -0
  158. data/doc/examples/website_styles/andreas03/src/images/footerbg.png +0 -0
  159. data/doc/examples/website_styles/andreas03/src/images/gradient1.png +0 -0
  160. data/doc/examples/website_styles/andreas03/src/images/gradient2.png +0 -0
  161. data/doc/examples/website_styles/andreas03/src/index.page +9 -0
  162. data/doc/examples/website_styles/andreas03/src/screenshots.page +18 -0
  163. data/doc/examples/website_styles/andreas04/README +9 -0
  164. data/doc/examples/website_styles/andreas04/config.yaml +2 -0
  165. data/doc/examples/website_styles/andreas04/src/about.page +12 -0
  166. data/doc/examples/website_styles/andreas04/src/default.css +290 -0
  167. data/doc/examples/website_styles/andreas04/src/default.template +83 -0
  168. data/doc/examples/website_styles/andreas04/src/download.page +15 -0
  169. data/doc/examples/website_styles/andreas04/src/features.page +8 -0
  170. data/doc/examples/website_styles/andreas04/src/images/blinkarrow.gif +0 -0
  171. data/doc/examples/website_styles/andreas04/src/images/bodybg.png +0 -0
  172. data/doc/examples/website_styles/andreas04/src/images/contentbg.png +0 -0
  173. data/doc/examples/website_styles/andreas04/src/images/entrybg.png +0 -0
  174. data/doc/examples/website_styles/andreas04/src/images/flash.gif +0 -0
  175. data/doc/examples/website_styles/andreas04/src/images/flash2.gif +0 -0
  176. data/doc/examples/website_styles/andreas04/src/images/globe.gif +0 -0
  177. data/doc/examples/website_styles/andreas04/src/images/globebottom.gif +0 -0
  178. data/doc/examples/website_styles/andreas04/src/images/linkarrow.gif +0 -0
  179. data/doc/examples/website_styles/andreas04/src/images/menuhover.png +0 -0
  180. data/doc/examples/website_styles/andreas04/src/index.page +9 -0
  181. data/doc/examples/website_styles/andreas04/src/screenshots.page +18 -0
  182. data/doc/examples/website_styles/andreas05/README +9 -0
  183. data/doc/examples/website_styles/andreas05/config.yaml +2 -0
  184. data/doc/examples/website_styles/andreas05/src/about.page +12 -0
  185. data/doc/examples/website_styles/andreas05/src/default.css +33 -0
  186. data/doc/examples/website_styles/andreas05/src/default.template +42 -0
  187. data/doc/examples/website_styles/andreas05/src/download.page +15 -0
  188. data/doc/examples/website_styles/andreas05/src/features.page +8 -0
  189. data/doc/examples/website_styles/andreas05/src/images/bodybg.gif +0 -0
  190. data/doc/examples/website_styles/andreas05/src/images/front.png +0 -0
  191. data/doc/examples/website_styles/andreas05/src/index.page +9 -0
  192. data/doc/examples/website_styles/andreas05/src/screenshots.page +18 -0
  193. data/doc/examples/website_styles/andreas06/README +9 -0
  194. data/doc/examples/website_styles/andreas06/config.yaml +2 -0
  195. data/doc/examples/website_styles/andreas06/src/about.page +12 -0
  196. data/doc/examples/website_styles/andreas06/src/default.css +353 -0
  197. data/doc/examples/website_styles/andreas06/src/default.template +72 -0
  198. data/doc/examples/website_styles/andreas06/src/download.page +15 -0
  199. data/doc/examples/website_styles/andreas06/src/features.page +8 -0
  200. data/doc/examples/website_styles/andreas06/src/images/bodybg.gif +0 -0
  201. data/doc/examples/website_styles/andreas06/src/images/boxbg.gif +0 -0
  202. data/doc/examples/website_styles/andreas06/src/images/greypx.gif +0 -0
  203. data/doc/examples/website_styles/andreas06/src/images/header.jpg +0 -0
  204. data/doc/examples/website_styles/andreas06/src/images/innerbg.gif +0 -0
  205. data/doc/examples/website_styles/andreas06/src/images/leaves.jpg +0 -0
  206. data/doc/examples/website_styles/andreas06/src/images/tabs.gif +0 -0
  207. data/doc/examples/website_styles/andreas06/src/index.page +9 -0
  208. data/doc/examples/website_styles/andreas06/src/screenshots.page +18 -0
  209. data/doc/examples/website_styles/andreas07/README +9 -0
  210. data/doc/examples/website_styles/andreas07/config.yaml +2 -0
  211. data/doc/examples/website_styles/andreas07/src/about.page +12 -0
  212. data/doc/examples/website_styles/andreas07/src/browserfix.css +7 -0
  213. data/doc/examples/website_styles/andreas07/src/default.css +92 -0
  214. data/doc/examples/website_styles/andreas07/src/default.template +44 -0
  215. data/doc/examples/website_styles/andreas07/src/download.page +15 -0
  216. data/doc/examples/website_styles/andreas07/src/features.page +8 -0
  217. data/doc/examples/website_styles/andreas07/src/images/bodybg.gif +0 -0
  218. data/doc/examples/website_styles/andreas07/src/images/sidebarbg.gif +0 -0
  219. data/doc/examples/website_styles/andreas07/src/index.page +9 -0
  220. data/doc/examples/website_styles/andreas07/src/screenshots.page +18 -0
  221. data/doc/examples/website_styles/andreas08/README +9 -0
  222. data/doc/examples/website_styles/andreas08/config.yaml +2 -0
  223. data/doc/examples/website_styles/andreas08/src/about.page +12 -0
  224. data/doc/examples/website_styles/andreas08/src/default.css +224 -0
  225. data/doc/examples/website_styles/andreas08/src/default.template +53 -0
  226. data/doc/examples/website_styles/andreas08/src/download.page +15 -0
  227. data/doc/examples/website_styles/andreas08/src/features.page +8 -0
  228. data/doc/examples/website_styles/andreas08/src/index.page +9 -0
  229. data/doc/examples/website_styles/andreas08/src/screenshots.page +18 -0
  230. data/doc/examples/website_styles/andreas09/README +9 -0
  231. data/doc/examples/website_styles/andreas09/config.yaml +2 -0
  232. data/doc/examples/website_styles/andreas09/src/about.page +12 -0
  233. data/doc/examples/website_styles/andreas09/src/default.css +308 -0
  234. data/doc/examples/website_styles/andreas09/src/default.template +70 -0
  235. data/doc/examples/website_styles/andreas09/src/download.page +15 -0
  236. data/doc/examples/website_styles/andreas09/src/features.page +8 -0
  237. data/doc/examples/website_styles/andreas09/src/images/bodybg-black.jpg +0 -0
  238. data/doc/examples/website_styles/andreas09/src/images/bodybg-green.jpg +0 -0
  239. data/doc/examples/website_styles/andreas09/src/images/bodybg-orange.jpg +0 -0
  240. data/doc/examples/website_styles/andreas09/src/images/bodybg-purple.jpg +0 -0
  241. data/doc/examples/website_styles/andreas09/src/images/bodybg-red.jpg +0 -0
  242. data/doc/examples/website_styles/andreas09/src/images/bodybg.jpg +0 -0
  243. data/doc/examples/website_styles/andreas09/src/images/footerbg.jpg +0 -0
  244. data/doc/examples/website_styles/andreas09/src/images/menuhover-black.jpg +0 -0
  245. data/doc/examples/website_styles/andreas09/src/images/menuhover-green.jpg +0 -0
  246. data/doc/examples/website_styles/andreas09/src/images/menuhover-orange.jpg +0 -0
  247. data/doc/examples/website_styles/andreas09/src/images/menuhover-purple.jpg +0 -0
  248. data/doc/examples/website_styles/andreas09/src/images/menuhover-red.jpg +0 -0
  249. data/doc/examples/website_styles/andreas09/src/images/menuhover.jpg +0 -0
  250. data/doc/examples/website_styles/andreas09/src/index.page +9 -0
  251. data/doc/examples/website_styles/andreas09/src/screenshots.page +18 -0
  252. data/doc/examples/website_styles/default/README +9 -0
  253. data/doc/examples/website_styles/default/config.yaml +2 -0
  254. data/doc/examples/website_styles/default/src/about.page +12 -0
  255. data/doc/examples/website_styles/default/src/default.css +84 -0
  256. data/doc/examples/website_styles/default/src/default.template +38 -0
  257. data/doc/examples/website_styles/default/src/download.page +15 -0
  258. data/doc/examples/website_styles/default/src/features.page +8 -0
  259. data/doc/examples/website_styles/default/src/index.page +9 -0
  260. data/doc/examples/website_styles/default/src/screenshots.page +18 -0
  261. data/doc/examples/website_styles/plain/README +9 -0
  262. data/doc/examples/website_styles/plain/config.yaml +2 -0
  263. data/doc/examples/website_styles/plain/src/about.page +12 -0
  264. data/doc/examples/website_styles/plain/src/default.css +244 -0
  265. data/doc/examples/website_styles/plain/src/default.template +63 -0
  266. data/doc/examples/website_styles/plain/src/download.page +15 -0
  267. data/doc/examples/website_styles/plain/src/features.page +8 -0
  268. data/doc/examples/website_styles/plain/src/images/a_hover.jpg +0 -0
  269. data/doc/examples/website_styles/plain/src/images/desc.jpg +0 -0
  270. data/doc/examples/website_styles/plain/src/images/li.gif +0 -0
  271. data/doc/examples/website_styles/plain/src/images/mainbar.jpg +0 -0
  272. data/doc/examples/website_styles/plain/src/images/menu.jpg +0 -0
  273. data/doc/examples/website_styles/plain/src/images/submenua.gif +0 -0
  274. data/doc/examples/website_styles/plain/src/images/submenua_hover.jpg +0 -0
  275. data/doc/examples/website_styles/plain/src/index.page +9 -0
  276. data/doc/examples/website_styles/plain/src/screenshots.page +18 -0
  277. data/doc/examples/website_templates/default/README +8 -0
  278. data/doc/examples/website_templates/default/config.yaml +2 -0
  279. data/doc/examples/website_templates/default/src/default.css +84 -0
  280. data/doc/examples/website_templates/default/src/default.template +38 -0
  281. data/doc/examples/website_templates/default/src/index.page +8 -0
  282. data/doc/examples/website_templates/personal_hp/README +8 -0
  283. data/doc/examples/website_templates/personal_hp/config.yaml +2 -0
  284. data/doc/examples/website_templates/personal_hp/src/about.page +12 -0
  285. data/doc/examples/website_templates/personal_hp/src/default.css +84 -0
  286. data/doc/examples/website_templates/personal_hp/src/default.template +38 -0
  287. data/doc/examples/website_templates/personal_hp/src/index.page +9 -0
  288. data/doc/examples/website_templates/personal_hp/src/links.page +22 -0
  289. data/doc/examples/website_templates/personal_hp/src/projects.page +20 -0
  290. data/doc/examples/website_templates/project/README +9 -0
  291. data/doc/examples/website_templates/project/config.yaml +2 -0
  292. data/doc/examples/website_templates/project/src/about.page +12 -0
  293. data/doc/examples/website_templates/project/src/default.css +84 -0
  294. data/doc/examples/website_templates/project/src/default.template +38 -0
  295. data/doc/examples/website_templates/project/src/download.page +15 -0
  296. data/doc/examples/website_templates/project/src/features.page +8 -0
  297. data/doc/examples/website_templates/project/src/index.page +9 -0
  298. data/doc/examples/website_templates/project/src/screenshots.page +18 -0
  299. data/doc/metainfo.yaml +85 -0
  300. data/doc/plugin/emoticon.rb +19 -21
  301. data/doc/plugin/extension.rb +134 -55
  302. data/doc/plugin/gallery/slides/collage.rb +334 -0
  303. data/doc/plugin/listpluginparameters.rb +24 -26
  304. data/doc/plugin/resources.rb +20 -22
  305. data/doc/src/default.css +333 -154
  306. data/doc/src/default.template +92 -39
  307. data/doc/src/documentation/extending_webgen.page +1 -2
  308. data/doc/src/documentation/gettingstarted.page +161 -44
  309. data/doc/src/documentation/index.page +15 -28
  310. data/doc/src/documentation/plugins/contentconverter/default.page +15 -0
  311. data/doc/src/documentation/plugins/contentconverter/html.page +10 -0
  312. data/doc/src/documentation/plugins/contentconverter/markdown.page +21 -0
  313. data/doc/src/documentation/plugins/contentconverter/rdoc.page +11 -0
  314. data/doc/src/documentation/plugins/contentconverter/textile.page +21 -0
  315. data/doc/src/documentation/plugins/contentconverter/xmlbuilder.page +61 -0
  316. data/doc/src/documentation/plugins/core/configuration.page +11 -0
  317. data/doc/src/documentation/plugins/core/filehandler.page +214 -0
  318. data/doc/src/documentation/plugins/core/index.page +11 -0
  319. data/doc/src/documentation/plugins/core/resourcemanager.page +46 -0
  320. data/doc/src/documentation/plugins/core/tagprocessor.page +17 -0
  321. data/doc/src/documentation/plugins/file/copyhandler.page +26 -0
  322. data/doc/src/documentation/plugins/file/defaulthandler.page +15 -0
  323. data/doc/src/documentation/plugins/file/directoryhandler.page +37 -0
  324. data/doc/src/documentation/plugins/file/galleryhandler.page +181 -0
  325. data/doc/src/documentation/plugins/file/pagehandler.page +154 -0
  326. data/doc/src/documentation/plugins/file/templatehandler.page +34 -0
  327. data/doc/src/documentation/plugins/file/thumbnailwriter.page +39 -0
  328. data/doc/src/documentation/plugins/htmlvalidator/default.page +12 -0
  329. data/doc/src/documentation/plugins/htmlvalidator/xmllint.page +12 -0
  330. data/doc/src/documentation/plugins/index.page +32 -11
  331. data/doc/src/documentation/plugins/menustyle/default.page +19 -0
  332. data/doc/src/documentation/plugins/menustyle/horizontal.page +32 -0
  333. data/doc/src/documentation/plugins/{menustyles → menustyle}/horizontaldropdown.page +25 -19
  334. data/doc/src/documentation/plugins/menustyle/section.page +34 -0
  335. data/doc/src/documentation/plugins/menustyle/vertical.page +48 -0
  336. data/doc/src/documentation/plugins/menustyle/verticaldropdown.page +29 -0
  337. data/doc/src/documentation/plugins/misc/index.page +9 -0
  338. data/doc/src/documentation/plugins/{miscplugins → misc}/smileyreplacer.page +15 -14
  339. data/doc/src/documentation/plugins/misc/syntaxhighlighter.page +26 -0
  340. data/doc/src/documentation/plugins/tag/block.page +29 -0
  341. data/doc/src/documentation/plugins/tag/breadcrumbtrail.page +29 -0
  342. data/doc/src/documentation/plugins/tag/date.page +34 -0
  343. data/doc/src/documentation/plugins/tag/default.page +27 -0
  344. data/doc/src/documentation/plugins/tag/download.page +60 -0
  345. data/doc/src/documentation/plugins/tag/executecommand.page +29 -0
  346. data/doc/src/documentation/plugins/tag/includefile.page +30 -0
  347. data/doc/src/documentation/plugins/{tags → tag}/langbar.de.page +1 -1
  348. data/doc/src/documentation/plugins/tag/langbar.fr.page +6 -0
  349. data/doc/src/documentation/plugins/tag/langbar.page +41 -0
  350. data/doc/src/documentation/plugins/tag/menu.page +78 -0
  351. data/doc/src/documentation/plugins/{tags → tag}/meta.page +8 -7
  352. data/doc/src/documentation/plugins/tag/relocatable.page +46 -0
  353. data/doc/src/documentation/plugins/tag/resource.page +35 -0
  354. data/doc/src/documentation/plugins/tag/sitemap.page +35 -0
  355. data/doc/src/documentation/plugins/tag/wikilink.page +33 -0
  356. data/doc/src/documentation/references/index.page +0 -1
  357. data/doc/src/documentation/references/meta_info_reference.page +90 -13
  358. data/doc/src/documentation/references/parameter_reference.page +0 -1
  359. data/doc/src/documentation/references/webpage_format.page +249 -0
  360. data/doc/src/download.page +50 -21
  361. data/doc/src/examples/gallery_styles/default/default.gallery +78 -0
  362. data/doc/src/examples/gallery_styles/default/gallery_gallery.template +38 -0
  363. data/doc/src/examples/gallery_styles/default/gallery_image.template +30 -0
  364. data/doc/src/examples/gallery_styles/default/gallery_main.template +18 -0
  365. data/doc/src/examples/gallery_styles/index.page +22 -0
  366. data/doc/src/examples/gallery_styles/slides/gallery_gallery.template +62 -0
  367. data/doc/src/examples/gallery_styles/slides/gallery_image.template +53 -0
  368. data/doc/src/examples/gallery_styles/slides/gallery_main.template +32 -0
  369. data/doc/src/examples/gallery_styles/slides/slides.gallery +79 -0
  370. data/doc/src/examples/images/image01.jpg +0 -0
  371. data/doc/src/examples/images/image02.jpg +0 -0
  372. data/doc/src/examples/images/image03.jpg +0 -0
  373. data/doc/src/examples/images/image04.jpg +0 -0
  374. data/doc/src/examples/images/image05.jpg +0 -0
  375. data/doc/src/examples/images/image06.jpg +0 -0
  376. data/doc/src/examples/images/image07.jpg +0 -0
  377. data/doc/src/examples/images/image08.jpg +0 -0
  378. data/doc/src/examples/images/image09.jpg +0 -0
  379. data/doc/src/examples/images/image10.jpg +0 -0
  380. data/doc/src/examples/images/image11.jpg +0 -0
  381. data/doc/src/examples/images/image12.jpg +0 -0
  382. data/doc/src/examples/images/image13.jpg +0 -0
  383. data/doc/src/examples/images/image14.jpg +0 -0
  384. data/doc/src/examples/images/image15.jpg +0 -0
  385. data/doc/src/examples/images/image16.jpg +0 -0
  386. data/doc/src/examples/images/image17.jpg +0 -0
  387. data/doc/src/examples/images/image18.jpg +0 -0
  388. data/doc/src/examples/index.page +18 -0
  389. data/doc/src/examples/website_styles/1024px.page +5 -0
  390. data/doc/src/examples/website_styles/andreas00.page +5 -0
  391. data/doc/src/examples/website_styles/andreas01.page +5 -0
  392. data/doc/src/examples/website_styles/andreas03.page +5 -0
  393. data/doc/src/examples/website_styles/andreas04.page +5 -0
  394. data/doc/src/examples/website_styles/andreas05.page +5 -0
  395. data/doc/src/examples/website_styles/andreas06.page +5 -0
  396. data/doc/src/examples/website_styles/andreas07.page +5 -0
  397. data/doc/src/examples/website_styles/andreas08.page +5 -0
  398. data/doc/src/examples/website_styles/andreas09.page +5 -0
  399. data/doc/src/examples/website_styles/default.page +5 -0
  400. data/doc/src/examples/website_styles/index.page +71 -0
  401. data/doc/src/examples/website_styles/plain.page +5 -0
  402. data/doc/src/examples/website_templates/default.page +5 -0
  403. data/doc/src/examples/website_templates/index.page +24 -0
  404. data/doc/src/examples/website_templates/personal_hp.page +5 -0
  405. data/doc/src/examples/website_templates/project.page +5 -0
  406. data/doc/src/features.page +16 -14
  407. data/doc/src/images/bodybg.jpg +0 -0
  408. data/doc/src/images/footerbg.jpg +0 -0
  409. data/doc/src/images/menuhover.jpg +0 -0
  410. data/doc/src/images/node_diagram.svg +7132 -0
  411. data/doc/src/images/thumb_example.jpg +0 -0
  412. data/doc/src/images/thumb_example_cropped.jpg +0 -0
  413. data/doc/src/images/thumb_example_normal.jpg +0 -0
  414. data/doc/src/index.page +14 -102
  415. data/doc/src/news.page +154 -0
  416. data/doc/src/plugin.template +10 -0
  417. data/lib/webgen/cli.rb +427 -0
  418. data/lib/webgen/composite.rb +11 -11
  419. data/lib/webgen/config.rb +52 -0
  420. data/lib/webgen/content.rb +172 -0
  421. data/lib/webgen/extcommand.rb +23 -0
  422. data/lib/webgen/languages.rb +110 -0
  423. data/lib/webgen/listener.rb +1 -1
  424. data/lib/webgen/node.rb +196 -124
  425. data/lib/webgen/plugin.rb +480 -144
  426. data/lib/webgen/plugins/{contenthandlers → contentconverters}/default.rb +10 -9
  427. data/lib/webgen/plugins/{contenthandlers → contentconverters}/html.rb +11 -8
  428. data/lib/webgen/plugins/contentconverters/markdown.rb +54 -0
  429. data/lib/webgen/plugins/{contenthandlers → contentconverters}/rdoc.rb +16 -12
  430. data/lib/webgen/plugins/{contenthandlers → contentconverters}/textile.rb +18 -13
  431. data/lib/webgen/plugins/contentconverters/xmlbuilder.rb +58 -0
  432. data/lib/webgen/plugins/coreplugins/configuration.rb +11 -102
  433. data/lib/webgen/plugins/coreplugins/resourcemanager.rb +95 -74
  434. data/lib/webgen/plugins/filehandlers/copy.rb +41 -19
  435. data/lib/webgen/plugins/filehandlers/directory.rb +52 -50
  436. data/lib/webgen/plugins/filehandlers/filehandler.rb +370 -123
  437. data/lib/webgen/plugins/filehandlers/gallery.rb +368 -117
  438. data/lib/webgen/plugins/filehandlers/page.rb +160 -146
  439. data/lib/webgen/plugins/filehandlers/template.rb +65 -52
  440. data/lib/webgen/plugins/htmlvalidators/default.rb +9 -7
  441. data/lib/webgen/plugins/htmlvalidators/xmllint.rb +17 -33
  442. data/lib/webgen/plugins/menustyles/default.rb +27 -25
  443. data/lib/webgen/plugins/menustyles/horizontal.rb +22 -41
  444. data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +25 -39
  445. data/lib/webgen/plugins/menustyles/section.rb +68 -0
  446. data/lib/webgen/plugins/menustyles/vertical.rb +36 -56
  447. data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +24 -32
  448. data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +20 -17
  449. data/lib/webgen/plugins/miscplugins/syntax_highlighter.rb +72 -0
  450. data/lib/webgen/plugins/miscplugins/treewalker.rb +9 -36
  451. data/lib/webgen/plugins/tags/block.rb +65 -0
  452. data/lib/webgen/plugins/tags/breadcrumbtrail.rb +15 -11
  453. data/lib/webgen/plugins/tags/date.rb +11 -7
  454. data/lib/webgen/plugins/tags/download.rb +38 -38
  455. data/lib/webgen/plugins/tags/executecommand.rb +30 -15
  456. data/lib/webgen/plugins/tags/includefile.rb +26 -13
  457. data/lib/webgen/plugins/tags/langbar.rb +23 -18
  458. data/lib/webgen/plugins/tags/menu.rb +49 -70
  459. data/lib/webgen/plugins/tags/meta.rb +12 -9
  460. data/lib/webgen/plugins/tags/relocatable.rb +41 -13
  461. data/lib/webgen/plugins/tags/sitemap.rb +32 -28
  462. data/lib/webgen/plugins/tags/tag_processor.rb +279 -0
  463. data/lib/webgen/plugins/tags/wikilink.rb +25 -20
  464. data/lib/webgen/test.rb +202 -0
  465. data/lib/webgen/website.rb +310 -0
  466. data/test/fixtures/sample_site/src/chained.template +3 -0
  467. data/test/fixtures/sample_site/src/default.template +3 -0
  468. data/test/fixtures/sample_site/src/dir1/dir11/file111.de.page +3 -0
  469. data/test/fixtures/sample_site/src/dir1/dir11/file111.page +3 -0
  470. data/test/fixtures/sample_site/src/dir1/dir11/index.page +3 -0
  471. data/test/fixtures/sample_site/src/dir1/file11.page +3 -0
  472. data/test/fixtures/sample_site/src/dir2/file21.page +3 -0
  473. data/test/fixtures/sample_site/src/embedded.rhtml +1 -0
  474. data/test/fixtures/sample_site/src/file1.page +8 -0
  475. data/test/fixtures/sample_site/src/file2.de.page +6 -0
  476. data/test/fixtures/sample_site/src/index.de.page +4 -0
  477. data/test/fixtures/sample_site/src/index.en.page +1 -0
  478. data/test/fixtures/sample_site/src/invalid.template +3 -0
  479. data/test/fixtures/sample_site/src/test.jpg +1 -0
  480. data/test/fixtures/sample_site/src/test.template +3 -0
  481. data/test/fixtures/tc_content/blocks.yaml +40 -0
  482. data/test/fixtures/tc_content/correct.yaml +65 -0
  483. data/test/fixtures/tc_content/incorrect.yaml +42 -0
  484. data/test/fixtures/tc_filehandler_filehandler/backing/metainfo.yaml +9 -0
  485. data/test/fixtures/tc_filehandler_filehandler/backing_empty/metainfo.yaml +6 -0
  486. data/test/fixtures/tc_filehandler_filehandler/sample_plugin.rb +49 -0
  487. data/test/fixtures/tc_filehandler_filehandler/unmodified +0 -0
  488. data/test/fixtures/tc_filehandler_gallery/test.gallery +2 -0
  489. data/test/fixtures/tc_filehandler_gallery/test1.gallery +2 -0
  490. data/test/fixtures/tc_filehandler_gallery/test1.jpg +0 -0
  491. data/test/fixtures/tc_filehandler_gallery/test2.jpg +0 -0
  492. data/test/fixtures/tc_filehandler_gallery/test3.jpg +0 -0
  493. data/test/fixtures/tc_filehandler_gallery/test4.jpg +0 -0
  494. data/test/fixtures/tc_filehandler_page/testdata.yaml +10 -0
  495. data/test/fixtures/tc_menustyles_default/menustyle.rb +7 -0
  496. data/test/fixtures/tc_node/nodes.yaml +64 -0
  497. data/test/fixtures/tc_plugin/handlerplugin.rb +15 -0
  498. data/test/fixtures/tc_plugin/plugin1.rb +33 -0
  499. data/test/fixtures/tc_plugin/plugin2.rb +8 -0
  500. data/test/fixtures/tc_tags_includefile/testfile +1 -0
  501. data/test/fixtures/tc_tags_tag_processor/test_file1 +1 -0
  502. data/test/fixtures/tc_tags_tag_processor/testtag.rb +17 -0
  503. data/test/fixtures/tc_website/correct.yaml +6 -0
  504. data/test/fixtures/tc_website/incorrect_structure.yaml +2 -0
  505. data/test/fixtures/tc_website/incorrect_yaml.yaml +5 -0
  506. data/test/fixtures/tc_website/meta_info_test.yaml +10 -0
  507. data/test/fixtures/tc_website/testdir/README +1 -0
  508. data/test/fixtures/tc_website/testdir/falsedir/README +1 -0
  509. data/test/runtests.rb +2 -0
  510. data/test/unittests/tc_composite.rb +82 -0
  511. data/test/unittests/tc_config.rb +18 -0
  512. data/test/unittests/tc_content.rb +88 -0
  513. data/test/unittests/tc_contentconverters_default.rb +13 -0
  514. data/test/unittests/tc_contentconverters_html.rb +16 -0
  515. data/test/unittests/tc_contentconverters_markdown.rb +22 -0
  516. data/test/unittests/tc_contentconverters_rdoc.rb +16 -0
  517. data/test/unittests/tc_contentconverters_textile.rb +22 -0
  518. data/test/unittests/tc_contentconverters_xmlbuilder.rb +22 -0
  519. data/test/unittests/tc_filehandler_copy.rb +65 -0
  520. data/test/unittests/tc_filehandler_directory.rb +134 -0
  521. data/test/unittests/tc_filehandler_filehandler.rb +294 -0
  522. data/test/unittests/tc_filehandler_gallery.rb +165 -0
  523. data/test/unittests/tc_filehandler_page.rb +183 -0
  524. data/test/unittests/tc_filehandler_template.rb +60 -0
  525. data/test/unittests/tc_htmlvalidators_default.rb +12 -0
  526. data/test/unittests/tc_htmlvalidators_xmllint.rb +19 -0
  527. data/test/unittests/tc_languages.rb +57 -0
  528. data/test/unittests/tc_listener.rb +72 -0
  529. data/test/unittests/tc_menustyles_default.rb +51 -0
  530. data/test/unittests/tc_menustyles_horizontal.rb +18 -0
  531. data/test/unittests/tc_menustyles_horizontal_dropdown.rb +18 -0
  532. data/test/unittests/tc_menustyles_section.rb +59 -0
  533. data/test/unittests/tc_menustyles_vertical.rb +79 -0
  534. data/test/unittests/tc_menustyles_vertical_dropdown.rb +18 -0
  535. data/test/unittests/tc_node.rb +202 -0
  536. data/test/unittests/tc_plugin.rb +214 -0
  537. data/test/unittests/tc_resourcemanager.rb +42 -0
  538. data/test/unittests/tc_smileyreplacer.rb +25 -0
  539. data/test/unittests/tc_syntax_highlighter.rb +30 -0
  540. data/test/unittests/tc_tags_block.rb +27 -0
  541. data/test/unittests/tc_tags_breadcrumbtrail.rb +22 -0
  542. data/test/unittests/tc_tags_date.rb +15 -0
  543. data/test/unittests/tc_tags_download.rb +32 -0
  544. data/test/unittests/tc_tags_executecommand.rb +37 -0
  545. data/test/unittests/tc_tags_includefile.rb +53 -0
  546. data/test/unittests/tc_tags_langbar.rb +42 -0
  547. data/test/unittests/tc_tags_menu.rb +50 -0
  548. data/test/unittests/tc_tags_meta.rb +19 -0
  549. data/test/unittests/tc_tags_relocatable.rb +66 -0
  550. data/test/unittests/tc_tags_sitemap.rb +33 -0
  551. data/test/unittests/tc_tags_tag_processor.rb +107 -0
  552. data/test/unittests/tc_tags_wikilink.rb +22 -0
  553. data/test/unittests/tc_treewalker.rb +44 -0
  554. data/test/unittests/tc_website.rb +188 -0
  555. metadata +829 -312
  556. data/bin/webgen-gallery-editor +0 -654
  557. data/bin/webgen-gui +0 -10
  558. data/data/webgen/website_templates/default/config.yaml +0 -2
  559. data/doc/plugin/clidesc.rb +0 -46
  560. data/doc/plugin/source.rb +0 -21
  561. data/doc/src/about.page +0 -22
  562. data/doc/src/documentation/cli.page +0 -12
  563. data/doc/src/documentation/plugins/contenthandlers/html.page +0 -11
  564. data/doc/src/documentation/plugins/contenthandlers/index.page +0 -7
  565. data/doc/src/documentation/plugins/contenthandlers/markdown.page +0 -11
  566. data/doc/src/documentation/plugins/contenthandlers/rdoc.page +0 -11
  567. data/doc/src/documentation/plugins/contenthandlers/textile.page +0 -11
  568. data/doc/src/documentation/plugins/coreplugins/configuration.page +0 -12
  569. data/doc/src/documentation/plugins/coreplugins/index.page +0 -7
  570. data/doc/src/documentation/plugins/coreplugins/logging.page +0 -13
  571. data/doc/src/documentation/plugins/coreplugins/resourcemanager.page +0 -34
  572. data/doc/src/documentation/plugins/filehandlers/backing.page +0 -46
  573. data/doc/src/documentation/plugins/filehandlers/copy.page +0 -12
  574. data/doc/src/documentation/plugins/filehandlers/directoryhandler.page +0 -35
  575. data/doc/src/documentation/plugins/filehandlers/gallery.page +0 -86
  576. data/doc/src/documentation/plugins/filehandlers/index.page +0 -34
  577. data/doc/src/documentation/plugins/filehandlers/page.page +0 -170
  578. data/doc/src/documentation/plugins/filehandlers/template.page +0 -21
  579. data/doc/src/documentation/plugins/gallerylayouters/index.page +0 -18
  580. data/doc/src/documentation/plugins/htmlvalidators/index.page +0 -6
  581. data/doc/src/documentation/plugins/htmlvalidators/xmllint.page +0 -14
  582. data/doc/src/documentation/plugins/menustyles/horizontal.page +0 -21
  583. data/doc/src/documentation/plugins/menustyles/index.page +0 -12
  584. data/doc/src/documentation/plugins/menustyles/partial.page +0 -27
  585. data/doc/src/documentation/plugins/menustyles/vertical.page +0 -32
  586. data/doc/src/documentation/plugins/menustyles/verticaldropdown.page +0 -23
  587. data/doc/src/documentation/plugins/miscplugins/index.page +0 -7
  588. data/doc/src/documentation/plugins/tags/breadcrumbtrail.page +0 -20
  589. data/doc/src/documentation/plugins/tags/date.page +0 -19
  590. data/doc/src/documentation/plugins/tags/download.page +0 -23
  591. data/doc/src/documentation/plugins/tags/executecommand.page +0 -18
  592. data/doc/src/documentation/plugins/tags/includefile.page +0 -15
  593. data/doc/src/documentation/plugins/tags/index.page +0 -44
  594. data/doc/src/documentation/plugins/tags/langbar.page +0 -27
  595. data/doc/src/documentation/plugins/tags/menu.de.page +0 -12
  596. data/doc/src/documentation/plugins/tags/menu.page +0 -19
  597. data/doc/src/documentation/plugins/tags/multilang.de.page +0 -4
  598. data/doc/src/documentation/plugins/tags/multilang.fr.page +0 -4
  599. data/doc/src/documentation/plugins/tags/multilang.page +0 -4
  600. data/doc/src/documentation/plugins/tags/relocatable.page +0 -16
  601. data/doc/src/documentation/plugins/tags/resource.page +0 -22
  602. data/doc/src/documentation/plugins/tags/sitemap.page +0 -17
  603. data/doc/src/documentation/plugins/tags/wikilink.page +0 -18
  604. data/doc/src/documentation/webgen_gallery_editor.page +0 -82
  605. data/doc/src/images/screenshots/wge-image.png +0 -0
  606. data/doc/src/images/screenshots/wge-layout-preview.png +0 -0
  607. data/doc/src/images/screenshots/wge-main-disabled.png +0 -0
  608. data/doc/src/images/screenshots/wge-main.png +0 -0
  609. data/doc/src/meta.info +0 -30
  610. data/doc/src/screenshots.gallery +0 -33
  611. data/install.rb +0 -19
  612. data/lib/webgen.rb +0 -277
  613. data/lib/webgen/plugins/contenthandlers/markdown.rb +0 -50
  614. data/lib/webgen/plugins/coreplugins/logging.rb +0 -101
  615. data/lib/webgen/plugins/filehandlers/backing.rb +0 -159
  616. data/lib/webgen/plugins/gallerylayouters/default.rb +0 -152
  617. data/lib/webgen/plugins/menustyles/partial.rb +0 -95
  618. data/lib/webgen/plugins/tags/tags.rb +0 -254
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: gallery.rb 369 2005-12-24 11:37:40Z thomas $
4
+ # $Id: gallery.rb 569 2006-12-29 20:11:21Z thomas $
5
5
  #
6
6
  # webgen: template based static website generator
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -20,49 +20,236 @@
20
20
  #++
21
21
  #
22
22
 
23
- require 'webgen/plugins/filehandlers/filehandler'
24
- require 'webgen/plugins/filehandlers/directory'
25
- require 'webgen/plugins/filehandlers/page'
23
+ load_plugin 'webgen/plugins/filehandlers/filehandler'
24
+ load_plugin 'webgen/plugins/filehandlers/directory'
25
+ load_plugin 'webgen/plugins/filehandlers/page'
26
+
27
+ load_optional_part( 'gallery-exif',
28
+ :needed_gems => ['exifr'],
29
+ :error_msg => 'EXIF library could not be loaded',
30
+ :info => 'EXIF information will be available for each image' ) do
31
+
32
+ require 'exifr'
33
+
34
+ end
35
+
26
36
 
27
37
  module FileHandlers
28
38
 
29
- class GalleryFileHandler < DefaultFileHandler
30
-
31
- summary "Handles images gallery files"
32
- extension 'gallery'
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
- add_param "galleryPageInMenu", false, 'True if the gallery pages should be in the menu'
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 image gallery should be in the menu'
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 "imagePageTemplate", nil, 'The template for image pages. If nil or a not existing file is specified, the default template is used.'
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 image files'
42
- add_param "title", 'Gallery', 'The title of the gallery'
43
- add_param "layout", 'default', 'The layout used'
44
-
45
- depends_on 'FileHandler', 'PageFileHandler'
46
-
47
- def create_node( file, parent )
39
+ # Handles image gallery files.
40
+ class GalleryHandler < DefaultHandler
41
+
42
+ # Objects of this class represent a whole image gallery and are available in all image gallery
43
+ # page files.
44
+ class GalleryInfo
45
+
46
+ # A helper module that allows acessing and changing data via the bracket notation.
47
+ module KeyAccess
48
+
49
+ def []( key )
50
+ @data[key]
51
+ end
52
+
53
+ def []=( key, value )
54
+ @data[key] = value
55
+ end
56
+
57
+ end
58
+
59
+ # A helper module which declares common attributes for gallery pages.
60
+ module ItemHelper
61
+
62
+ include KeyAccess
63
+
64
+ # The name of the page.
65
+ attr_accessor :pagename
66
+
67
+ # The title of the page.
68
+ attr_reader :title
69
+
70
+ # Meta data for the page.
71
+ attr_reader :data
72
+
73
+ def initialize( pagename, data )
74
+ @pagename = pagename
75
+ @title = data['title']
76
+ @data = data
77
+ end
78
+
79
+ end
80
+
81
+
82
+ # Represents the main page of an image gallery.
83
+ class MainPage; include ItemHelper; end
84
+
85
+ # Represents an image gallery page.
86
+ class Gallery
87
+
88
+ include ItemHelper
89
+
90
+ # A list of images for this gallery.
91
+ attr_reader :images
92
+
93
+ def initialize( pagename, data, images )
94
+ super( pagename, data )
95
+ @images = images
96
+ end
97
+
98
+ # Returns the thumbnail image tag for the gallery.
99
+ def thumbnail( attr = {} )
100
+ @images.first.thumbnail( attr )
101
+ end
102
+
103
+ end
104
+
105
+ # Represents an image page.
106
+ class Image
107
+
108
+ include ItemHelper
109
+
110
+ # The name of the image file.
111
+ attr_reader :filename
112
+
113
+ def initialize( pagename, data, filename )
114
+ super( pagename, data )
115
+ @filename = filename
116
+ end
117
+
118
+ # Returns the thumbnail image tag for the image.
119
+ def thumbnail( attr = {} )
120
+ attr = attr.collect {|k,v| "#{k}='#{v}'"}.join( ' ' )
121
+ if !@data['thumbnail'].to_s.empty? && @data['thumbnail'] != @filename
122
+ "<img src=\"{relocatable: #{@data['thumbnail']}}\" alt=\"#{@title}\" #{attr}/>"
123
+ else
124
+ width, height = (@data['thumbnailSize'] || '').split('x')
125
+ "<img src=\"{relocatable: #{@filename}}\" width=\"#{width}\" height=\"#{height}\" alt=\"#{@title}\" #{attr}/>"
126
+ end
127
+ end
128
+
129
+ end
130
+
131
+ include KeyAccess
132
+
133
+ # The index for the current gallery or +nil+ if there is no current gallery.
134
+ attr_reader :gIndex
135
+
136
+ # The index for the current image in the current gallery or +nil+ if there is no current image.
137
+ attr_reader :iIndex
138
+
139
+ # The main page object if it exists; otherwise +nil+.
140
+ attr_accessor :mainpage
141
+
142
+ # The whole data hahs for the image gallery.
143
+ attr_reader :data
144
+
145
+ def initialize( gallery_data, gIndex = nil, iIndex = nil )
146
+ @data = gallery_data
147
+ @gIndex = gIndex
148
+ @iIndex = iIndex
149
+ end
150
+
151
+ # Returns the list of gallery objects for this image gallery.
152
+ def galleries
153
+ @data[:galleries]
154
+ end
155
+
156
+ # Returns the current image.
157
+ def cur_image
158
+ galleries[@gIndex].images[@iIndex]
159
+ end
160
+
161
+ # Returns the previous image using the given +gIndex+ and +iIndex+, if it exists, or +nil+ otherwise.
162
+ def prev_image( gIndex = @gIndex, iIndex = @iIndex )
163
+ result = nil
164
+ if gIndex != 0 || iIndex != 0
165
+ if iIndex == 0
166
+ result = galleries[gIndex - 1].images[galleries[gIndex - 1].images.length - 1]
167
+ else
168
+ result = galleries[gIndex].images[iIndex - 1]
169
+ end
170
+ end
171
+ return result
172
+ end
173
+
174
+ # Returns the next image using the given +gIndex+ and +iIndex+, if it exists, or +nil+ otherwise.
175
+ def next_image( gIndex = @gIndex, iIndex = @iIndex )
176
+ result = nil
177
+ if gIndex != galleries.length - 1 || iIndex != galleries[gIndex].images.length - 1
178
+ if iIndex == galleries[gIndex].images.length - 1
179
+ result = galleries[gIndex + 1].images[0]
180
+ else
181
+ result = galleries[gIndex].images[iIndex + 1]
182
+ end
183
+ end
184
+ return result
185
+ end
186
+
187
+ # Returns the current gallery.
188
+ def cur_gallery
189
+ galleries[@gIndex]
190
+ end
191
+
192
+ # Returns the previous gallery using the given +gIndex+, if it exists, or +nil+ otherwise.
193
+ def prev_gallery( gIndex = @gIndex )
194
+ gIndex != 0 ? galleries[gIndex - 1] : nil
195
+ end
196
+
197
+ # Returns the next gallery using the given +gIndex+, if it exists, or +nil+ otherwise.
198
+ def next_gallery( gIndex = @gIndex )
199
+ gIndex != galleries.length - 1 ? galleries[gIndex + 1] : nil
200
+ end
201
+
202
+ end
203
+
204
+ infos( :name => 'File/GalleryHandler',
205
+ :author => Webgen::AUTHOR,
206
+ :summary => "Handles images gallery files"
207
+ )
208
+
209
+ register_extension 'gallery'
210
+
211
+ param "imagesPerPage", 20, 'Number of images per gallery page'
212
+ param "galleryPageTemplate", 'gallery_gallery.template', 'The template for gallery pages. ' +
213
+ 'If nil or a not existing file is specified, the default template is used.'
214
+ param "imagePageTemplate", 'gallery_image.template', 'The template for image pages. ' +
215
+ 'If nil or a not existing file is specified, the default template is used.'
216
+ param "mainPageTemplate", 'gallery_main.template', 'The template for the main page. ' +
217
+ 'If nil or a not existing file is specified, the default template is used.'
218
+ param "images", 'images/**/*.jpg', 'The path pattern for specifying the image files'
219
+
220
+
221
+ def initialize( plugin_manager )
222
+ super
223
+ @filedata = {}
224
+ end
225
+
226
+ def create_node( file, parent, meta_info )
227
+ @filedata = {}
228
+ @imagedata = {}
48
229
  begin
49
- @filedata = YAML::load( File.read( file ) )
230
+ filedata = []
231
+ YAML::load_documents( File.read( file ) ) {|d| filedata << d}
232
+ @filedata = filedata[0] if filedata[0].kind_of?( Hash )
233
+ @imagedata = filedata[1] if filedata[1].kind_of?( Hash )
50
234
  rescue
51
- self.logger.error { "Could not parse gallery file <#{file}>, not creating gallery pages" }
235
+ log(:error) { "Could not parse gallery file <#{file}>, not creating gallery pages" }
52
236
  return
53
237
  end
238
+
54
239
  @path = File.dirname( file )
55
- images = Dir[File.join( @path, get_param( 'files' ))].collect {|i| i.sub( /#{@path + File::SEPARATOR}/, '' ) }
240
+ images = Dir[File.join( @path, param( 'images' ))].collect {|i| i.sub( /#{@path + File::SEPARATOR}/, '' ) }
56
241
  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
242
+ aoi = @imagedata[a].nil? ? 0 : @imagedata[a]['orderInfo'].to_s.to_i || 0
243
+ boi = @imagedata[b].nil? ? 0 : @imagedata[b]['orderInfo'].to_s.to_i || 0
244
+ atitle = @imagedata[a].nil? ? a : @imagedata[a]['title'] || a
245
+ btitle = @imagedata[b].nil? ? b : @imagedata[b]['title'] || b
61
246
  (aoi == boi ? atitle <=> btitle : aoi <=> boi)
62
247
  end
63
- self.logger.info { "Creating gallery for file <#{file}> with #{images.length} images" }
64
248
 
65
- create_gallery( images, parent )
249
+ @filedata['title'] ||= File.basename( file, '.*' ).capitalize
250
+ log(:info) { "Creating gallery for file <#{file}> with #{images.length} images" }
251
+ ginfo = create_gallery( images, parent )
252
+ @plugin_manager["GalleryLayouter/#{@filedata['layouter']}"].handle_gallery( ginfo, parent ) if @filedata.has_key?('layouter') && @plugin_manager["GalleryLayouter/#{@filedata['layouter']}"]
66
253
 
67
254
  nil
68
255
  end
@@ -76,150 +263,214 @@ module FileHandlers
76
263
  #######
77
264
 
78
265
  # Method overridden to lookup parameters specified in the gallery file first.
79
- def get_param( name )
266
+ def param( name, plugin = nil )
80
267
  ( @filedata.has_key?( name ) ? @filedata[name] : super )
81
268
  end
82
269
 
83
- def call_layouter( type, metainfo, *args )
84
- content = Webgen::Plugin['DefaultGalleryLayouter'].get_layout( get_param( 'layout' ) ).send( type.to_s, *args )
270
+ def page_data( metainfo )
85
271
  temp = metainfo.to_yaml
86
- temp = "---\n" + temp unless /^---\s$/ =~ temp
87
- "#{temp}\n---\n#{content}"
272
+ temp = "---\n" + temp unless /^---\s*$/ =~ temp
273
+ "#{temp}\n---\n"
274
+ end
275
+
276
+ def create_page_node( filename, parent, data )
277
+ filehandler = @plugin_manager['Core/FileHandler']
278
+ pagehandler = @plugin_manager['File/PageHandler']
279
+ filehandler.create_node( filename, parent, pagehandler ) do |filename, parent, handler, meta_info|
280
+ pagehandler.create_node_from_data( filename, parent, data, meta_info )
281
+ end
88
282
  end
89
283
 
90
284
  def create_gallery( images, parent )
91
- main = create_main_page( images, parent )
92
- main['galleries'] = create_gallery_pages( images, parent )
285
+ main_data = main_page_data()
286
+ galleries = create_gallery_pages( images, parent )
93
287
 
94
- if main['galleries'].length != 1
95
- mainNode = Webgen::Plugin['PageFileHandler'].create_node_from_data( call_layouter( :main, main, main ), main['srcName'], parent )
96
- parent.add_child( mainNode )
97
- else
98
- main['galleries'][0]['title'] = main['title']
99
- main['galleries'][0]['inMenu'] = main['inMenu']
100
- main['galleries'][0].update( @filedata['mainPage'] || {} )
101
- main['pageNotUsed'] = true
102
- end
103
-
104
- main['galleries'].each_with_index do |gallery, gIndex|
105
- node = Webgen::Plugin['PageFileHandler'].create_node_from_data( call_layouter( :gallery, gallery, main, gIndex ), gallery['srcName'], parent )
106
- parent.add_child( node )
107
- gallery['imageList'].each_with_index do |image, iIndex|
108
- node = Webgen::Plugin['PageFileHandler'].create_node_from_data( call_layouter( :image, image, main, gIndex, iIndex ), image['srcName'], parent )
109
- parent.add_child( node )
288
+ info_galleries = galleries.collect {|n,g,i| g}
289
+ main_page_used = images.length > param( 'imagesPerPage' )
290
+
291
+ gallery_data = @filedata.dup
292
+ gallery_data[:galleries] = info_galleries
293
+ gallery_data['imagesPerPage'] = param('imagesPerPage'),
294
+
295
+ if main_page_used
296
+ main_node = create_page_node( gallery_file_name( main_data['title'] ), parent, page_data( main_data ) )
297
+ main_page = GalleryInfo::MainPage.new( main_node.path, main_data )
298
+ main_node.node_info[:ginfo] = GalleryInfo.new( gallery_data )
299
+ main_node.node_info[:ginfo].mainpage = main_page
300
+ end
301
+
302
+ galleries.each_with_index do |gData, gIndex|
303
+ gData[0].node_info[:ginfo] = GalleryInfo.new( gallery_data, gIndex )
304
+ gData[0].node_info[:ginfo].mainpage = main_page if main_page_used
305
+ gData[2].each_with_index do |iData, iIndex|
306
+ iData[0].node_info[:ginfo] = GalleryInfo.new( gallery_data, gIndex, iIndex )
307
+ iData[0].node_info[:ginfo].mainpage = main_page if main_page_used
110
308
  end
111
309
  end
310
+
311
+ GalleryInfo.new( gallery_data )
112
312
  end
113
313
 
114
- def create_main_page( images, parent )
314
+ def main_page_data
115
315
  main = {}
116
- main['title'] = get_param( 'title' )
117
- main['inMenu'] = get_param( 'mainPageInMenu' )
118
- main['template'] = get_param( 'mainPageTemplate' )
119
- main['srcName'] = gallery_file_name( main['title'] )
120
- main['blocks'] = [{'name'=>'content', 'format'=>'html'}]
121
- main.update( @filedata['mainPage'] || {} )
316
+ main['title'] = @filedata['title']
317
+ main['template'] = param( 'mainPageTemplate' )
318
+ main.update( @filedata['mainPageMetaInfo'] || {} )
122
319
  main
123
320
  end
124
321
 
125
322
  def create_gallery_pages( images, parent )
126
323
  galleries = []
127
- picsPerPage = get_param( 'imagesPerPage' )
324
+ picsPerPage = param( 'imagesPerPage' )
128
325
  0.step( images.length - 1, picsPerPage ) do |i|
129
- data = (@filedata['galleryPages'] || {}).dup
326
+ gIndex = i/picsPerPage + 1
327
+
328
+ data = (@filedata['galleryPagesMetaInfo'] || {}).dup
329
+ data['template'] ||= param( 'galleryPageTemplate' )
330
+ data['orderInfo'] += gIndex if data['orderInfo']
331
+ data['title'] = @filedata['title'] + ' ' + gIndex.to_s
130
332
 
131
- data['blocks'] ||= [{'name'=>'content', 'format'=>'html'}]
132
- data['template'] ||= get_param( 'galleryPageTemplate' )
133
- data['inMenu'] ||= get_param( 'galleryPageInMenu' )
134
- data['number'] = i/picsPerPage + 1
135
- data['orderInfo'] = get_param( 'galleryOrderInfo' ) + data['number']
136
- data['title'] = gallery_title( data['number'] )
137
- data['srcName'] = gallery_file_name( data['title'] )
138
- data['imageList'] = create_image_pages( images[i..(i + picsPerPage - 1)], parent )
333
+ if images.length <= param( 'imagesPerPage' ) && gIndex == 1
334
+ template = data['template']
335
+ data.update( main_page_data )
336
+ data['template'] = template
337
+ end
139
338
 
140
- galleries << data
339
+ node = create_page_node( gallery_file_name( data['title'] ), parent, page_data( data ) )
340
+ gal_images = create_image_pages( images[i..(i + picsPerPage - 1)], parent )
341
+ gallery = GalleryInfo::Gallery.new( node.path, data, gal_images.collect {|n,i| i} )
342
+ galleries << [node, gallery, gal_images]
141
343
  end
142
344
  galleries
143
345
  end
144
346
 
145
- def gallery_title( index )
146
- ( index.nil? ? nil : get_param( 'title' ) + ' ' + index.to_s )
147
- end
148
-
149
347
  def gallery_file_name( title )
150
- ( title.nil? ? nil : title.tr( ' .', '_' ) + '.html' )
348
+ ( title.nil? ? nil : title.tr( '/ .\\', '_' ) + '.page' )
151
349
  end
152
350
 
153
351
  def create_image_pages( images, parent )
154
352
  imageList = []
155
353
  images.each do |image|
156
- imageData = (@filedata[image] || {}).dup
157
-
158
- imageData['blocks'] ||= [{'name'=>'content', 'format'=>'html'}]
159
- imageData['title'] ||= "Image #{File.basename( image )}"
160
- imageData['description'] ||= ''
161
- imageData['inMenu'] ||= get_param( 'imagePageInMenu' )
162
- imageData['template'] ||= get_param( 'imagePageTemplate' )
163
- imageData['imageFilename'] = image
164
- imageData['srcName'] = gallery_file_name( get_param( 'title' ) + ' ' + File.basename( image ) )
165
- imageData['thumbnailSize'] ||= @filedata['thumbnailSize']
166
- imageData['thumbnail'] ||= get_thumbnail( imageData, parent )
354
+ data = (@imagedata[image] || {}).dup
355
+ data['template'] ||= param( 'imagePageTemplate' )
356
+ data['title'] ||= "Image #{File.basename( image )}"
357
+ data['thumbnailSize'] ||= @filedata['thumbnailSize']
358
+ data['thumbnailResizeMethod'] ||= @filedata['thumbnailResizeMethod']
359
+ data['exif'] ||= exif_data( File.join( parent.node_info[:src], image ) )
360
+
361
+ if @filedata.has_key?('layouter') && @plugin_manager["GalleryLayouter/#{@filedata['layouter']}"].respond_to?( :thumbnail_for )
362
+ data['thumbnail'] ||= @plugin_manager["GalleryLayouter/#{@filedata['layouter']}"].thumbnail_for( image, data, parent )
363
+ else
364
+ data['thumbnail'] ||= thumbnail_for( image, data, parent )
365
+ end
167
366
 
168
- imageList << imageData
367
+ filename = @filedata['title'] + ' ' + image
368
+ node = create_page_node( gallery_file_name( filename ), parent, page_data( data ) )
369
+ image = GalleryInfo::Image.new( node.path, data, image )
370
+ imageList << [node, image]
169
371
  end
170
372
  imageList
171
373
  end
172
374
 
173
- def get_thumbnail( imageData, parent )
174
- imageData['imageFilename']
375
+ def exif_data( image )
376
+ if @plugin_manager.optional_part( 'gallery-exif' )[:loaded]
377
+ jpeg = EXIFR::JPEG.new( image ) rescue nil
378
+ if !jpeg.nil? && jpeg.exif?
379
+ exif = jpeg.exif.dup
380
+ exif[:width] = jpeg.width
381
+ exif[:height] = jpeg.height
382
+ exif[:comment] = jpeg.comment
383
+ exif[:bits] = jpeg.bits
384
+ exif
385
+ else
386
+ nil
387
+ end
388
+ else
389
+ nil
390
+ end
391
+ end
392
+
393
+ def thumbnail_for( image, data, parent )
394
+ image
175
395
  end
176
396
 
177
397
  end
178
398
 
179
399
  # Try to use RMagick as thumbnail creator
180
- begin
181
- require 'RMagick'
400
+ load_optional_part( 'gallery-thumbnail',
401
+ :error_msg => "Could not load RMagick, creation of thumbnails not available",
402
+ :needed_gems => ['rmagick'],
403
+ :info => 'RMagick will be used to create thumbnails for the images used in an image gallery.' ) do
182
404
 
183
- class GalleryFileHandler
405
+ require 'RMagick'
184
406
 
185
- remove_method :get_thumbnail
186
- def get_thumbnail( imageData, parent )
187
- p_node = Webgen::Plugin['DirectoryHandler'].recursive_create_path( File.dirname( imageData['imageFilename'] ), parent )
188
- node = Webgen::Plugin['ThumbnailWriter'].create_node( File.join( @path, imageData['imageFilename'] ), p_node, imageData['thumbnailSize'] )
189
- p_node.add_child( node )
407
+ class GalleryHandler
190
408
 
191
- File.dirname( imageData['imageFilename'] ) + '/' + node['dest']
409
+ remove_method :thumbnail_for
410
+ def thumbnail_for( image, data, parent )
411
+ parent_node = @plugin_manager['File/DirectoryHandler'].recursive_create_path( File.dirname( image ), parent )
412
+ tn_handler = @plugin_manager['File/ThumbnailWriter']
413
+ file_handler = @plugin_manager['Core/FileHandler']
414
+ node = file_handler.create_node( File.basename( image ), parent_node, tn_handler ) do |fn, parent, h, mi|
415
+ h.create_node( fn, parent, mi, data['thumbnailSize'], data['thumbnailResizeMethod'] )
416
+ end
417
+ node.absolute_path
192
418
  end
193
419
 
194
420
  end
195
421
 
196
- class ThumbnailWriter < DefaultFileHandler
197
422
 
198
- summary "Writes out thumbnails with RMagick"
199
- add_param "thumbnailSize", "100x100", "The size of the thumbnails"
423
+ # Used for creating thumbnails for images.
424
+ class ThumbnailWriter < DefaultHandler
425
+
426
+ infos( :name => 'File/ThumbnailWriter',
427
+ :author => Webgen::AUTHOR,
428
+ :summary => "Writes out thumbnails with RMagick"
429
+ )
200
430
 
201
- def create_node( file, parent, thumbnailSize = nil )
202
- node = Node.new( parent )
203
- node['title'] = node['src'] = node['dest'] = 'tn_' + File.basename( file )
204
- node['int:thumbnailFile'] = file
205
- node['int:thumbnailSize'] = thumbnailSize unless thumbnailSize.nil? || thumbnailSize !~ /\d+x\d+/
206
- node['processor'] = self
431
+ param "thumbnailSize", "100x100", "The size of the thumbnails"
432
+ param 'resizeMethod', :normal, 'Specifies the algorithm which should be used for generating the thumbnail: ' +
433
+ ':normal (thumbnail fits exactly into given thumbnail size), ' +
434
+ ':cropped (resized to exact thumbnail size, image parts maybe cropped)'
435
+
436
+ def create_node( file, parent, meta_info, thumbnailSize = nil, method = nil )
437
+ node = Node.new( parent, 'tn_' + File.basename( file ).tr( ' ', '_' ) )
438
+ node.meta_info.update( meta_info )
439
+ node['title'] = node.path
440
+ node.node_info[:thumbnail_size] = thumbnailSize || param( 'thumbnailSize' )
441
+ node.node_info[:thumbnail_file] = file
442
+ node.node_info[:thumbnail_resize_method] = method || param( 'resizeMethod' )
443
+ node.node_info[:processor] = self
207
444
  node
208
445
  end
209
446
 
210
447
  def write_node( node )
211
- if Webgen::Plugin['FileHandler'].file_modified?( node['int:thumbnailFile'], node.recursive_value( 'dest' ) )
212
- self.logger.info {"Creating thumbnail <#{node.recursive_value('dest')}> from <#{node['int:thumbnailFile']}>"}
213
- image = Magick::ImageList.new( node['int:thumbnailFile'] )
214
- image.change_geometry( node['int:thumbnailSize'] || get_param( 'thumbnailSize' ) ) {|c,r,i| i.resize!( c, r )}
215
- image.write( node.recursive_value( 'dest' ) )
448
+ if @plugin_manager['Core/FileHandler'].file_modified?( node.node_info[:thumbnail_file], node.full_path )
449
+ log(:info) {"Creating thumbnail <#{node.full_path}> from image <#{node.node_info[:thumbnail_file]}>"}
450
+ image = Magick::ImageList.new( node.node_info[:thumbnail_file] ).first
451
+ case node.node_info[:thumbnail_resize_method]
452
+ when :cropped then cropped_thumbnail( image, node.node_info[:thumbnail_size] )
453
+ when :normal then normal_thumbnail( image, node.node_info[:thumbnail_size] )
454
+ else
455
+ log(:warn) {"Invalid resize method specified (#{node.node_info[:thumbnail_resize_method].inspect}), falling back to :normal"}
456
+ normal_thumbnail( image, node.node_info[:thumbnail_size] )
457
+ end
458
+ image.write( node.full_path )
216
459
  end
217
460
  end
218
461
 
462
+ private
463
+
464
+ def normal_thumbnail( image, size )
465
+ image.change_geometry( size ) {|c,r,i| i.resize!( c, r )}
466
+ end
467
+
468
+ def cropped_thumbnail( image, size )
469
+ image.crop_resized!( *size.split('x').collect {|s| s.to_i} )
470
+ end
471
+
219
472
  end
220
473
 
221
- rescue LoadError => e
222
- self.logger.warn { "Could not load RMagick, creation of thumbnails not available" }
223
474
  end
224
475
 
225
476
  end