gf-ralbum 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +80 -0
  3. data/bin/ralbum-JPG2jpg.rb +90 -0
  4. data/bin/ralbum-compile_skins.rb +18 -0
  5. data/bin/ralbum-myconv.rb +81 -0
  6. data/bin/ralbum-readexif.rb +18 -0
  7. data/bin/ralbum-reorder.rb +200 -0
  8. data/bin/ralbum.rb +12 -0
  9. data/example/README.txt +8 -0
  10. data/example/example.sh +3 -0
  11. data/example/httpd.rb +35 -0
  12. data/example/test_phototree/album.xml +21 -0
  13. data/example/test_phototree/catalog_data/md5_to_key.yaml +4 -0
  14. data/example/test_phototree/catalog_data/md5_to_key.yaml.test +4 -0
  15. data/example/test_phototree/catalog_data/project.xml +329 -0
  16. data/example/test_phototree/r_photo01.jpg +0 -0
  17. data/example/test_phototree/r_photo01.jpg.xml +17 -0
  18. data/example/test_phototree/subalbum01/album.xml +21 -0
  19. data/example/test_phototree/subalbum01/subalbum01_photo01.jpg +0 -0
  20. data/example/test_phototree/subalbum01/subalbum01_photo01.jpg.xml +15 -0
  21. data/example/test_phototree/subalbum01/subalbum01_photo02.jpg +0 -0
  22. data/example/test_phototree/subalbum01/subalbum01_photo02.jpg.xml +15 -0
  23. data/example/test_phototree/subalbum01/subalbum01_photo03.jpg +0 -0
  24. data/example/test_phototree/subalbum01/subalbum01_photo03.jpg.xml +15 -0
  25. data/example/test_phototree/subalbum01/subalbum01_photo04.jpg +0 -0
  26. data/example/test_phototree/subalbum01/subalbum01_photo04.jpg.xml +15 -0
  27. data/example/test_phototree/subalbum02/album.xml +10 -0
  28. data/example/test_phototree/subalbum02/subalbum02_photo01.jpg +0 -0
  29. data/example/test_phototree/subalbum02/subalbum02_photo01.jpg.xml +15 -0
  30. data/example/test_phototree/subalbum02/subalbum02_photo02.jpg +0 -0
  31. data/example/test_phototree/subalbum02/subalbum02_photo02.jpg.xml +15 -0
  32. data/example/test_phototree/subalbum02/subalbum02_photo03.jpg +0 -0
  33. data/example/test_phototree/subalbum02/subalbum02_photo03.jpg.xml +15 -0
  34. data/example/test_phototree/subalbum02/subalbum02_photo04.jpg +0 -0
  35. data/example/test_phototree/subalbum02/subalbum02_photo04.jpg.xml +15 -0
  36. data/example/test_phototree/subalbum02/subalbum02_photo05.jpg +0 -0
  37. data/example/test_phototree/subalbum02/subalbum02_photo05.jpg.xml +15 -0
  38. data/lib/ralbum-common/object_with_properties.rb +14 -0
  39. data/lib/ralbum-common/object_with_validation.rb +50 -0
  40. data/lib/ralbum.rb +19 -0
  41. data/lib/ralbum/album.rb +66 -0
  42. data/lib/ralbum/catalog.rb +178 -0
  43. data/lib/ralbum/cli/cli_ralbum.rb +116 -0
  44. data/lib/ralbum/generate_album_tree_node_visitor.rb +60 -0
  45. data/lib/ralbum/image_file.rb +81 -0
  46. data/lib/ralbum/image_pool.rb +71 -0
  47. data/lib/ralbum/image_strategy.rb +143 -0
  48. data/lib/ralbum/options.rb +15 -0
  49. data/lib/ralbum/photo_tree_builder.rb +165 -0
  50. data/lib/ralbum/photo_tree_item.rb +89 -0
  51. data/lib/ralbum/photo_tree_node.rb +40 -0
  52. data/lib/ralbum/project.rb +89 -0
  53. data/lib/ralbum/ralbum_exception.rb +2 -0
  54. data/lib/ralbum/resource.rb +17 -0
  55. data/lib/ralbum/skin.rb +76 -0
  56. data/lib/ralbum/skin_engine.rb +98 -0
  57. data/lib/ralbum/skin_engines/erb_skin_engine.rb +35 -0
  58. data/lib/ralbum/skin_engines/kwartz_skin_engine.rb +54 -0
  59. data/lib/ralbum/skin_manager.rb +46 -0
  60. data/lib/ralbum/skins/cgi/cgi_skin.rb +27 -0
  61. data/lib/ralbum/skins/cgi/info.yml +3 -0
  62. data/lib/ralbum/skins/cgi/res/model.rb +235 -0
  63. data/lib/ralbum/skins/cgi/res/resource.rb +17 -0
  64. data/lib/ralbum/skins/gfold/inc/menu_bottom.html +53 -0
  65. data/lib/ralbum/skins/gfold/inc/menu_top.html +71 -0
  66. data/lib/ralbum/skins/gfold/inc/page_footer.html +28 -0
  67. data/lib/ralbum/skins/gfold/info.yml +3 -0
  68. data/lib/ralbum/skins/gfold/out/album_page.rb +316 -0
  69. data/lib/ralbum/skins/gfold/out/image_page.rb +231 -0
  70. data/lib/ralbum/skins/gfold/out/tree_page.rb +96 -0
  71. data/lib/ralbum/skins/gfold/res/16-arrow-down.png +0 -0
  72. data/lib/ralbum/skins/gfold/res/16-arrow-left.png +0 -0
  73. data/lib/ralbum/skins/gfold/res/16-arrow-right.png +0 -0
  74. data/lib/ralbum/skins/gfold/res/16-arrow-up.png +0 -0
  75. data/lib/ralbum/skins/gfold/res/left.gif +0 -0
  76. data/lib/ralbum/skins/gfold/res/prototype.js +3277 -0
  77. data/lib/ralbum/skins/gfold/res/right.gif +0 -0
  78. data/lib/ralbum/skins/gfold/res/style1.css +453 -0
  79. data/lib/ralbum/skins/gfold/res/style2.css +414 -0
  80. data/lib/ralbum/skins/gfold/res/styleswitcher.js +89 -0
  81. data/lib/ralbum/skins/gfold/res/top.gif +0 -0
  82. data/lib/ralbum/skins/gfold/res/up.gif +0 -0
  83. data/lib/ralbum/skins/gfold/res/valid-css.png +0 -0
  84. data/lib/ralbum/skins/gfold/res/valid-xhtml.png +0 -0
  85. data/lib/ralbum/skins/gfold/res/valid-xhtml11.png +0 -0
  86. data/lib/ralbum/skins/gfold/res/vcss.gif +0 -0
  87. data/lib/ralbum/skins/gfold/template/album_page.html +161 -0
  88. data/lib/ralbum/skins/gfold/template/album_page.plogic +127 -0
  89. data/lib/ralbum/skins/gfold/template/image_page.html +91 -0
  90. data/lib/ralbum/skins/gfold/template/image_page.plogic +70 -0
  91. data/lib/ralbum/skins/gfold/template/tree_page.html +79 -0
  92. data/lib/ralbum/skins/gfold/template/tree_page.plogic +45 -0
  93. data/lib/ralbum/skins/js/info.yml +3 -0
  94. data/lib/ralbum/skins/js/js_skin.rb +50 -0
  95. data/lib/ralbum/skins/js/out/album_page.rb +181 -0
  96. data/lib/ralbum/skins/js/out/slideshow_page.rb +187 -0
  97. data/lib/ralbum/skins/js/out/tree_page.rb +134 -0
  98. data/lib/ralbum/skins/js/res/left.gif +0 -0
  99. data/lib/ralbum/skins/js/res/right.gif +0 -0
  100. data/lib/ralbum/skins/js/res/style.css +76 -0
  101. data/lib/ralbum/skins/js/res/top.gif +0 -0
  102. data/lib/ralbum/skins/js/res/up.gif +0 -0
  103. data/lib/ralbum/skins/js/template/album_page.html +178 -0
  104. data/lib/ralbum/skins/js/template/album_page.plogic +88 -0
  105. data/lib/ralbum/skins/js/template/slideshow_page.html +169 -0
  106. data/lib/ralbum/skins/js/template/slideshow_page.plogic +1 -0
  107. data/lib/ralbum/skins/js/template/tree_page.html +118 -0
  108. data/lib/ralbum/skins/js/template/tree_page.plogic +43 -0
  109. data/lib/ralbum/skins/test_erb/info.yml +3 -0
  110. data/lib/ralbum/skins/test_erb/out/album_page.rb +54 -0
  111. data/lib/ralbum/skins/test_erb/out/image_page.rb +54 -0
  112. data/lib/ralbum/skins/test_kwartz/info.yml +3 -0
  113. data/lib/ralbum/skins/test_kwartz/out/album_page.rb +54 -0
  114. data/lib/ralbum/skins/test_kwartz/out/image_page.rb +54 -0
  115. data/lib/ralbum/skins/test_kwartz/template/album_page.html +37 -0
  116. data/lib/ralbum/skins/test_kwartz/template/image_page.html +37 -0
  117. data/test/ralbum/cli/test_cli_ralbum.rb +13 -0
  118. data/test/ralbum/tc_01_photo_tree.rb +37 -0
  119. data/test/ralbum/tc_02_photo_tree_builder.rb +20 -0
  120. data/test/ralbum/tc_03_album.rb +42 -0
  121. data/test/ralbum/tc_04_skin_manager.rb +30 -0
  122. data/test/ralbum/tc_05_kwartz_skin_engine.rb +50 -0
  123. data/test/ralbum/tc_06_image_strategy.rb +21 -0
  124. data/test/ralbum/tc_catalog.rb +31 -0
  125. data/test/ralbum/test_helper.rb +13 -0
  126. data/test/test_ralbum.rb +14 -0
  127. data/test_data/ralbum/test_data/albums_directory/gfold/album_1/img_0004.jpg.html +148 -0
  128. data/test_data/ralbum/test_data/albums_directory/gfold/album_1/img_0005.jpg.html +152 -0
  129. data/test_data/ralbum/test_data/albums_directory/gfold/album_1/img_0006.jpg.html +152 -0
  130. data/test_data/ralbum/test_data/albums_directory/gfold/album_1/img_0007.jpg.html +148 -0
  131. data/test_data/ralbum/test_data/albums_directory/gfold/album_1/index.html +195 -0
  132. data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0008.jpg.html +148 -0
  133. data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0009.jpg.html +152 -0
  134. data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0010.jpg.html +152 -0
  135. data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0011.jpg.html +152 -0
  136. data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0012.jpg.html +148 -0
  137. data/test_data/ralbum/test_data/albums_directory/gfold/album_2/index.html +206 -0
  138. data/test_data/ralbum/test_data/albums_directory/gfold/img_0003.jpg.html +141 -0
  139. data/test_data/ralbum/test_data/albums_directory/gfold/index.html +208 -0
  140. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0003.jpg +0 -0
  141. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0004.jpg +0 -0
  142. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0005.jpg +0 -0
  143. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0006.jpg +0 -0
  144. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0007.jpg +0 -0
  145. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0008.jpg +0 -0
  146. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0009.jpg +0 -0
  147. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0010.jpg +0 -0
  148. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0011.jpg +0 -0
  149. data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0012.jpg +0 -0
  150. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0003.jpg +0 -0
  151. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0004.jpg +0 -0
  152. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0005.jpg +0 -0
  153. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0006.jpg +0 -0
  154. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0007.jpg +0 -0
  155. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0008.jpg +0 -0
  156. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0009.jpg +0 -0
  157. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0010.jpg +0 -0
  158. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0011.jpg +0 -0
  159. data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0012.jpg +0 -0
  160. data/test_data/ralbum/test_data/albums_directory/res/left.gif +0 -0
  161. data/test_data/ralbum/test_data/albums_directory/res/prototype.js +3277 -0
  162. data/test_data/ralbum/test_data/albums_directory/res/right.gif +0 -0
  163. data/test_data/ralbum/test_data/albums_directory/res/style1.css +453 -0
  164. data/test_data/ralbum/test_data/albums_directory/res/style2.css +414 -0
  165. data/test_data/ralbum/test_data/albums_directory/res/styleswitcher.js +89 -0
  166. data/test_data/ralbum/test_data/albums_directory/res/top.gif +0 -0
  167. data/test_data/ralbum/test_data/albums_directory/res/up.gif +0 -0
  168. data/test_data/ralbum/test_data/albums_directory/res/valid-css.png +0 -0
  169. data/test_data/ralbum/test_data/albums_directory/res/valid-xhtml.png +0 -0
  170. data/test_data/ralbum/test_data/albums_directory/res/valid-xhtml11.png +0 -0
  171. data/test_data/ralbum/test_data/albums_directory/res/vcss.gif +0 -0
  172. data/test_data/ralbum/test_data/albums_directory/test/album_1/img_0004.jpg.html +11 -0
  173. data/test_data/ralbum/test_data/albums_directory/test/album_1/img_0005.jpg.html +11 -0
  174. data/test_data/ralbum/test_data/albums_directory/test/album_1/img_0006.jpg.html +11 -0
  175. data/test_data/ralbum/test_data/albums_directory/test/album_1/img_0007.jpg.html +11 -0
  176. data/test_data/ralbum/test_data/albums_directory/test/album_1/index.html +13 -0
  177. data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0008.jpg.html +11 -0
  178. data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0009.jpg.html +11 -0
  179. data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0010.jpg.html +11 -0
  180. data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0011.jpg.html +11 -0
  181. data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0012.jpg.html +11 -0
  182. data/test_data/ralbum/test_data/albums_directory/test/album_2/index.html +13 -0
  183. data/test_data/ralbum/test_data/albums_directory/test/img_0003.jpg.html +11 -0
  184. data/test_data/ralbum/test_data/albums_directory/test/index.html +13 -0
  185. data/test_data/ralbum/test_data/is_test/r_photo01_scaled.jpg +0 -0
  186. data/test_data/ralbum/test_data/is_test/r_photo01_sepia_scaled.jpg +0 -0
  187. metadata +276 -0
@@ -0,0 +1,17 @@
1
+ module Generator
2
+
3
+ class Resource
4
+
5
+ def photos
6
+ "photos"
7
+ end
8
+
9
+ def thumbnails
10
+ "Thumbnails"
11
+ end
12
+
13
+ def subalbums
14
+ "Sub-Albums"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,53 @@
1
+ <tr id="mark:row_menu">
2
+ <td align="center" colspan="2">
3
+ <span class="menusel" kw:d="if pagename=='index'">Home</span>
4
+ <a class="menu" href="/index.html" kw:d="if:pagename!='index'">Home</a>
5
+ |
6
+ <span class="menusel" kw:d="if pagename=='albums'">Albums</span>
7
+ <a class="menu" href="/foto_rubyalbum_gf/static_html/" kw:d="if:pagename!='albums'">Albums</a>
8
+ |
9
+ <!--
10
+ <span class="menusel" id="if:pagename=='projects'">Projects</span>
11
+ <a class="menu" href="/projects.html" id="if:pagename!='projects'">Projects</a>
12
+ |
13
+ -->
14
+ <span class="menusel" kw:d="if:pagename=='guestbook'">Guestbook</span>
15
+ <a class="menu" href="/guestbook_kwartz/gb.cgi?act=view" kw:d="if pagename!='guestbook'">
16
+ Guestbook
17
+ </a>
18
+ |
19
+ <span class="menusel" kw:d="if pagename=='cv'">Curriculum Vitae</span>
20
+ <a class="menu" href="/cv_it.html" kw:d="if:pagename!='cv'">Curriculum Vitae</a>
21
+ |
22
+ <span class="menusel" kw:d="if pagename=='contactme'">Contact Me</span>
23
+ <a class="menu" href="/contactme/contactme.cgi" kw:d="if:pagename!='contactme'">Contact Me</a>
24
+ </td>
25
+ </tr>
26
+
27
+ <tr id="mark:row_language">
28
+ <td align="left">
29
+ <!--
30
+ <span class="menutext"> style: </span>
31
+ -->
32
+ <script language="javascript" type="text/javascript">
33
+ <!--
34
+ writemenu(style);
35
+ // -->
36
+ </script>
37
+ </td>
38
+ <td align="right" kw:d="if language!=null">
39
+ <span class="menutext"> language: </span>
40
+ <span class="menusel" kw:d="if language=='it'">it</span>
41
+ <a class="menu" href="@{pagename}@_it.html" kw:d="if language!='it'">it</a>
42
+ |
43
+ <span class="menusel" kw:d="if:language=='en'">en</span>
44
+ <a class="menu" href="@{pagename}@_en.html" kw:d="if language!='en'">en</a>
45
+ </td>
46
+ </tr>
47
+
48
+ <!-- begin bottom menu -->
49
+ <table id="mark:menu_bottom" align="center" summary="">
50
+ <span kw:d="replace_element_with_element:row_menu"></span>
51
+ <span kw:d="replace_element_with_element:row_language"></span>
52
+ </table>
53
+ <!-- end bottom menu -->
@@ -0,0 +1,71 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html kw:d="set pagename='albums'">
3
+ <head kw:d="set language=nil">
4
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
5
+ <title>Giovanni Ferro - @{@album.name}@</title>
6
+ <meta name="description" content="Giovanni Ferro photos"/>
7
+ <meta name="keywords" content="Giovanni Ferro,photo,pictures,digital photography"/>
8
+ <link rel="stylesheet" type="text/css" href="../res/style1.css" media="screen" title="style1"/>
9
+ <link rel="alternate stylesheet" type="text/css" href="../res/style2.css" media="screen" title="style2"/>
10
+ <script type="text/javascript" src="../res/prototype.js"></script>
11
+ <script type="text/javascript" src="../res/styleswitcher.js"></script>
12
+ </head>
13
+ <body>
14
+
15
+
16
+ <table id="mark:menu_top" align="center" summary="" width="100%">
17
+ <tr>
18
+ <td align="center">
19
+
20
+ <span class="menusel" kw:d="if pagename=='index'">Home</span>
21
+ <a class="menu" href="/index.html" kw:d="if pagename!='index'">Home</a>
22
+ |
23
+ <span class="menusel" kw:d="if:pagename=='albums'">Albums</span>
24
+ <a class="menu" href="/albums/html/" kw:d="if pagename!='albums'">Albums</a>
25
+ |
26
+ <!--
27
+ <span class="menusel" id="if:pagename=='projects'">Projects</span>
28
+ <a class="menu" href="/projects.html" id="if:pagename!='projects'">Projects</a>
29
+ |
30
+ -->
31
+ <span class="menusel" kw:d="if pagename=='guestbook'">Guestbook</span>
32
+ <a class="menu" href="/guestbook/gb.cgi?act=view" kw:d="if pagename!='guestbook'">
33
+ Guestbook
34
+ </a>
35
+ |
36
+ <span class="menusel" kw:d="if pagename=='cv'">Curriculum</span>
37
+ <a class="menu" href="/cv_it.html" kw:d="if:pagename!='cv'">Curriculum</a>
38
+ |
39
+ <span class="menusel" kw:d="if pagename=='contactme'">Contact Me</span>
40
+ <a class="menu" href="/contactme/contactme.cgi" kw:d="if pagename!='contactme'">Contact Me</a>
41
+
42
+ -
43
+
44
+ <span class="menutext"> style: </span>
45
+ <a class="menu" href="#" onclick="javascript: as.enable('style1');return false;">1</a>
46
+ <span class="menutext"> | </span>
47
+ <a class="menu" href="#" onclick="javascript: as.enable('style2'); return false;">2</a>
48
+
49
+ <!--
50
+ <script language="javascript" type="text/javascript">
51
+ writemenu();
52
+ </script>
53
+ -->
54
+
55
+ <span kw:d="if not language.nil?">
56
+ -
57
+ <span class="menutext"> lang: </span>
58
+ <span class="menusel" kw:d="if language=='it'">it</span>
59
+ <a class="menu" href="@{pagename}@_it.html" kw:d="if language!='it'">it</a>
60
+ |
61
+ <span class="menusel" kw:d="if language=='en'">en</span>
62
+ <a class="menu" href="@{pagename}@_en.html" kw:d="if language!='en'">en</a>
63
+ </span>
64
+
65
+ </td>
66
+ </tr>
67
+ </table>
68
+
69
+ </body>
70
+ </html>
71
+
@@ -0,0 +1,28 @@
1
+ <div id="footer" kw:d="id: page_footer">
2
+ <div class="left">
3
+ Copyright &copy; 2002-2004, <b>Giovanni Ferro</b>
4
+ </div>
5
+
6
+ <div class="right">
7
+ <a href="http://validator.w3.org/check?uri=referer"><img
8
+ kw:d="mark:valid_xhtml_png"
9
+ style="border:0;" src="../res/valid-xhtml.png"
10
+ alt="Valid XHTML"/></a>
11
+ &nbsp; &nbsp;
12
+ <a href="http://jigsaw.w3.org/css-validator/check/referer/"><img
13
+ kw:d="mark:valid_css_png"
14
+ style="border:0;" src="../res/valid-css.png"
15
+ alt="Valid CSS"/></a>
16
+ </div>
17
+ </div>
18
+
19
+ <script type="text/javascript">
20
+ <!--
21
+ document.write('<img src="/axs/ax.pl?trans.gif&ref=');
22
+ document.write(document.referrer);
23
+ document.write('" height="1" width="1" alt="" />');
24
+ // -->
25
+ </script>
26
+ <noscript>
27
+ <img src="/axs/ax.pl?trans.gif" height="1" width="1" alt="" />
28
+ </noscript>
@@ -0,0 +1,3 @@
1
+ author: gf
2
+ description: gfold skin description
3
+ engine: kwartz
@@ -0,0 +1,316 @@
1
+ module View
2
+
3
+ (@@proc_table ||= {})['album_page'] = proc do
4
+ _buf = ""; _buf << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
5
+ pagename='albums'
6
+ _buf << "<html>\n";
7
+ language=nil
8
+ _buf << "<head>
9
+ <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"/>
10
+ <title>Giovanni Ferro - "; _buf << ERB::Util.h(@album.name); _buf << "</title>
11
+ <meta name=\"description\" content=\"Giovanni Ferro photos\"/>
12
+ <meta name=\"keywords\" content=\"Giovanni Ferro,photo,pictures,digital photography\"/>
13
+ <link rel=\"stylesheet\" type=\"text/css\" href=\""; _buf << ("#{@album.relroot}res/style1.css").to_s; _buf << "\" media=\"screen\" title=\"style1\"/>
14
+ <link rel=\"alternate stylesheet\" type=\"text/css\" href=\""; _buf << ("#{@album.relroot}res/style2.css").to_s; _buf << "\" media=\"screen\" title=\"style2\"/>
15
+ <script type=\"text/javascript\" src=\""; _buf << ("#{@album.relroot}res/prototype.js").to_s; _buf << "\"></script>
16
+ <script type=\"text/javascript\" src=\""; _buf << ("#{@album.relroot}res/styleswitcher.js").to_s; _buf << "\"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <table align=\"center\" summary=\"\" width=\"100%\">
21
+ <tr>
22
+ <td align=\"center\">
23
+ \n";
24
+ if pagename=='index' then
25
+ _buf << " <span class=\"menusel\">Home</span>\n";
26
+ end
27
+ if pagename!='index' then
28
+ _buf << " <a class=\"menu\" href=\"/index.html\">Home</a>\n";
29
+ end
30
+ _buf << " | \n";
31
+ if pagename=='albums' then
32
+ _buf << " <span class=\"menusel\">Albums</span>\n";
33
+ end
34
+ if pagename!='albums' then
35
+ _buf << " <a class=\"menu\" href=\"/albums/html/\">Albums</a>\n";
36
+ end
37
+ _buf << " |
38
+ <!--
39
+ <span class=\"menusel\" id=\"if:pagename=='projects'\">Projects</span>
40
+ <a class=\"menu\" href=\"/projects.html\" id=\"if:pagename!='projects'\">Projects</a>
41
+ |
42
+ -->\n";
43
+ if pagename=='guestbook' then
44
+ _buf << " <span class=\"menusel\">Guestbook</span>\n";
45
+ end
46
+ if pagename!='guestbook' then
47
+ _buf << " <a class=\"menu\" href=\"/guestbook/gb.cgi?act=view\">
48
+ Guestbook
49
+ </a>\n";
50
+ end
51
+ _buf << " | \n";
52
+ if pagename=='cv' then
53
+ _buf << " <span class=\"menusel\">Curriculum</span>\n";
54
+ end
55
+ if pagename!='cv' then
56
+ _buf << " <a class=\"menu\" href=\"/cv_it.html\">Curriculum</a>\n";
57
+ end
58
+ _buf << " | \n";
59
+ if pagename=='contactme' then
60
+ _buf << " <span class=\"menusel\">Contact Me</span>\n";
61
+ end
62
+ if pagename!='contactme' then
63
+ _buf << " <a class=\"menu\" href=\"/contactme/contactme.cgi\">Contact Me</a>\n";
64
+ end
65
+ _buf << "
66
+ -
67
+
68
+ <span class=\"menutext\"> style: </span>
69
+ <a class=\"menu\" href=\"#\" onclick=\"javascript: as.enable('style1');return false;\">1</a>
70
+ <span class=\"menutext\"> | </span>
71
+ <a class=\"menu\" href=\"#\" onclick=\"javascript: as.enable('style2'); return false;\">2</a>
72
+
73
+ <!--
74
+ <script language=\"javascript\" type=\"text/javascript\">
75
+ writemenu();
76
+ </script>
77
+ -->
78
+ \n";
79
+ if not language.nil? then
80
+ _buf << " -
81
+ <span class=\"menutext\"> lang: </span> \n";
82
+ if language=='it' then
83
+ _buf << " <span class=\"menusel\">it</span> \n";
84
+ end
85
+ if language!='it' then
86
+ _buf << " <a class=\"menu\" href=\""; _buf << ERB::Util.h(pagename); _buf << "_it.html\">it</a> \n";
87
+ end
88
+ _buf << " |\n";
89
+ if language=='en' then
90
+ _buf << " <span class=\"menusel\">en</span> \n";
91
+ end
92
+ if language!='en' then
93
+ _buf << " <a class=\"menu\" href=\""; _buf << ERB::Util.h(pagename); _buf << "_en.html\">en</a> \n";
94
+ end
95
+ end
96
+ _buf << "
97
+ </td>
98
+ </tr>
99
+ </table>
100
+
101
+ <table class=\"album_maintable\" align=\"center\"
102
+ border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
103
+ <tr>
104
+ <td>
105
+
106
+ <!-- begin header table -->
107
+ <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\">
108
+
109
+ <!-- breadcrumbs or Trail -->
110
+ <tr>
111
+ <td class=\"album_breadcrumbs\" align=\"left\">\n";
112
+ item_ctr = 0
113
+ for item in @album.breadcrumbs
114
+ item_ctr += 1
115
+ if item_ctr > 1
116
+ _buf << " <span class=\"album_treepathdots\">::</span>\n";
117
+ end
118
+ item_path = item[:path] # retrieve path and
119
+ item_title = item[:title] # title from a hash
120
+ if item_path.nil? # if path is null then
121
+ _buf << (item_title).to_s; else
122
+ _buf << " <a class=\"album_treepath\"
123
+ href=\""; _buf << ERB::Util.h(@album.relroot + item_path); _buf << "\">\n";
124
+ _buf << (item_title).to_s; _buf << " </a>\n";
125
+ end
126
+ end
127
+ _buf << " </td>
128
+ <td class=\"album_breadcrumbs\" align=\"right\" nowrap=\"nowrap\">
129
+ "; _buf << ERB::Util.h(@album.nr_leaves); _buf << "&nbsp;"; _buf << ERB::Util.h(@resource.photos); _buf << "\n";
130
+ if @album.nr_childs>0 then
131
+ _buf << " "; _buf << ERB::Util.h(@album.nr_childs); _buf << "&nbsp;sub-albums\n";
132
+ end
133
+ _buf << " </td>
134
+ </tr>
135
+
136
+ <tr>
137
+ <td width=\"80%\" align=\"left\">
138
+ "; _buf << ERB::Util.h(@album.description); _buf << "
139
+ </td>
140
+ \n";
141
+ if not @album.root? then
142
+ _buf << " <td width=\"20%\" align=\"right\">
143
+ <a href=\""; _buf << ERB::Util.h(@album.relroot_with_prefix); _buf << "index.html\" title=\"Up to top\"><img
144
+ src=\""; _buf << ("#{@album.relroot}res/top.gif").to_s; _buf << "\" border=\"0\" alt=\"Top\"/></a>
145
+ &nbsp;
146
+ <a title=\"Up to album\" href=\"../index.html\"><img
147
+ src=\""; _buf << ("#{@album.relroot}res/up.gif").to_s; _buf << "\" border=\"0\" alt=\"Up\"/></a>
148
+ &nbsp;&nbsp;&nbsp;
149
+ </td>\n";
150
+ end
151
+ _buf << "
152
+ </tr>
153
+ </table>
154
+ <!-- End header table -->
155
+ </td>
156
+ </tr>
157
+
158
+ <!-- thumbnails header table -->\n";
159
+ if @album.leaves.length>0 then
160
+ _buf << " <tr>
161
+ <td>
162
+ <!-- begin thumbnails header table -->
163
+ <table width=\"100%\"
164
+ border=\"0\" cellspacing=\"0\" cellpadding=\"3\">
165
+ <tr>
166
+ <td class=\"album_section\" align=\"left\">"; _buf << ERB::Util.h(@resource.thumbnails); _buf << "</td>
167
+ </tr>
168
+ </table>
169
+ <!-- end thumbnails header table -->
170
+ </td>
171
+ </tr>\n";
172
+ end
173
+ _buf << "
174
+ <!-- thumbnails body -->\n";
175
+ if @album.leaves.length>0 then
176
+ _buf << " <tr>
177
+ <td align=\"center\">
178
+ <!-- begin thumbnail table -->
179
+ <table class=\"album_thumbnails_table\">\n";
180
+ start_pos = 1
181
+ while start_pos <= @album.leaves.length
182
+ idx = start_pos
183
+ _buf << " <tr
184
+ class=\"album_thumbnail_image_row\">\n";
185
+ while idx <= @album.leaves.length && idx % 7 != 0
186
+ photo = @album.leaves[ idx-1 ]
187
+ _buf << " <td
188
+ class=\"album_thumbnail_image\">
189
+ <a href=\""; _buf << ERB::Util.h(photo.defaultImageFile.pageurl); _buf << "\"
190
+ title=\""; _buf << ERB::Util.h(photo.name); _buf << "\"><img
191
+ src=\""; _buf << ("#{@album.relroot + photo.thumb.url}").to_s; _buf << "\"
192
+ alt=\"Giovanni Ferro - "; _buf << ERB::Util.h(photo.name); _buf << "\"
193
+ border=\"0\"/></a>
194
+ </td>\n";
195
+ idx += 1
196
+ end
197
+ _buf << " </tr>\n";
198
+ idx = start_pos
199
+ _buf << " <tr class=\"album_thumbnail_title_row\">\n";
200
+ while idx <= @album.leaves.length && idx % 7 != 0
201
+ photo = @album.leaves[ idx-1 ]
202
+ _buf << " <td class=\"album_thumbnail_title\">
203
+ "; _buf << ERB::Util.h(photo.name); _buf << "
204
+ </td>\n";
205
+ idx += 1
206
+ end
207
+ _buf << " </tr>\n";
208
+ start_pos += 7
209
+ end
210
+ _buf << " </table>
211
+ <!-- end thumbnail table -->
212
+ </td>
213
+ </tr>\n";
214
+ end
215
+ _buf << "
216
+ <!-- subalbums header -->\n";
217
+ if @album.childs.length>0 then
218
+ _buf << " <tr>
219
+ <td>
220
+ <!-- begin subalbums header table -->
221
+ <table width=\"100%\"
222
+ border=\"0\" cellspacing=\"0\" cellpadding=\"3\">
223
+ <tr>
224
+ <td class=\"album_section\" align=\"left\">"; _buf << ERB::Util.h(@resource.subalbums); _buf << "</td>
225
+ </tr>
226
+ </table>
227
+ <!-- end header table -->
228
+ </td>
229
+ </tr>\n";
230
+ end
231
+ _buf << "
232
+ <!-- sub-albums body -->\n";
233
+ if @album.childs.length>0 then
234
+ _buf << " <tr>
235
+ <td>
236
+ <!-- begin sub-album table -->
237
+ <table width=\"100%\"
238
+ border=\"0\" cellspacing=\"5\" cellpadding=\"2\">
239
+ \n";
240
+ col = 1
241
+ for subalbum in @album.childs
242
+ if col == 1
243
+ _buf << " <tr>\n";
244
+ end
245
+
246
+ _buf << "
247
+ <td class=\"album_subalbum_image\">
248
+ <a href=\""; _buf << ERB::Util.h(subalbum.pageurl); _buf << "\"
249
+ title=\""; _buf << ERB::Util.h(subalbum.name); _buf << "\"><img
250
+ src=\""; _buf << ("#{@album.relroot + subalbum.defaultImagePool.thumb.url}").to_s; _buf << "\"
251
+ alt=\""; _buf << ERB::Util.h(subalbum.defaultImagePool.name); _buf << "\"
252
+ border=\"1\"/></a>
253
+ </td>
254
+ <td>
255
+ <a href=\""; _buf << ERB::Util.h(subalbum.pageurl); _buf << "\">"; _buf << ERB::Util.h(subalbum.name); _buf << "</a>
256
+ <br/>
257
+ "; _buf << ERB::Util.h(subalbum.nr_leaves); _buf << "&nbsp;photos\n";
258
+ if subalbum.nr_childs>0 then
259
+ _buf << " ,&nbsp;"; _buf << ERB::Util.h(subalbum.nr_childs); _buf << "&nbsp;sub-albums\n";
260
+ end
261
+ _buf << " <br/>
262
+ "; _buf << ERB::Util.h(subalbum.description); _buf << "
263
+ </td>
264
+ \n";
265
+ col += 1
266
+ if col == 3
267
+ col = 1
268
+ _buf << " </tr>\n";
269
+ end
270
+ end
271
+ if col != 1
272
+ _buf << " </tr>\n";
273
+ end
274
+ _buf << "
275
+ </table>
276
+ <!-- end sub-album table -->
277
+ </td>
278
+ </tr>\n";
279
+ end
280
+ _buf << "
281
+ </table>
282
+
283
+ <div id=\"footer\">
284
+ <div class=\"left\">
285
+ Copyright &copy; 2002-2004, <b>Giovanni Ferro</b>
286
+ </div>
287
+
288
+ <div class=\"right\">
289
+ <a href=\"http://validator.w3.org/check?uri=referer\"><img
290
+ style=\"border:0;\" src=\""; _buf << ("#{@album.relroot}res/valid-xhtml.png").to_s; _buf << "\"
291
+ alt=\"Valid XHTML\"/></a>
292
+ &nbsp; &nbsp;
293
+ <a href=\"http://jigsaw.w3.org/css-validator/check/referer/\"><img
294
+ style=\"border:0;\" src=\""; _buf << ("#{@album.relroot}res/valid-css.png").to_s; _buf << "\"
295
+ alt=\"Valid CSS\"/></a>
296
+ </div>
297
+ </div>
298
+
299
+ </body>
300
+ </html>
301
+ \n";
302
+ ; _buf
303
+ end#proc
304
+
305
+ module_function
306
+ def expand_album_page(context={})
307
+ if context.is_a?(Hash)
308
+ hash = context
309
+ context = Object.new
310
+ hash.each { |key, val| context.instance_variable_set("@#{key}", val) }
311
+ end
312
+ proc_obj = @@proc_table['album_page']
313
+ context.instance_eval(&proc_obj)
314
+ end
315
+
316
+ end