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
Binary file
Binary file
Binary file
@@ -0,0 +1,161 @@
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 kw:d="mark:stylesheet1" rel="stylesheet" type="text/css" href="../res/style1.css" media="screen" title="style1"/>
9
+ <link kw:d="mark:stylesheet2" rel="alternate stylesheet" type="text/css" href="../res/style2.css" media="screen" title="style2"/>
10
+ <script kw:d="mark:prototype" type="text/javascript" src="../res/prototype.js"></script>
11
+ <script kw:d="mark:styleswitcher" type="text/javascript" src="../res/styleswitcher.js"></script>
12
+ </head>
13
+ <body>
14
+
15
+ <div id="replace_element_with_element:menu_top" style="text-align:center; border: solid 1px black;">Menu del sito</div>
16
+
17
+ <table class="album_maintable" align="center"
18
+ border="0" cellspacing="0" cellpadding="0">
19
+ <tr>
20
+ <td>
21
+
22
+ <!-- begin header table -->
23
+ <table width="100%" border="0" cellspacing="0" cellpadding="3">
24
+
25
+ <!-- breadcrumbs or Trail -->
26
+ <tr>
27
+ <td class="album_breadcrumbs" align="left">
28
+ <span id="mark:breadcrumbs">
29
+ <a id="mark:item" class="album_treepath"
30
+ href="@{@album.relroot + item_path}@">
31
+ <span kw:d="value:item_title">Home</span>
32
+ </a>
33
+ <span id="mark:arrow" class="album_treepathdots">::</span>
34
+ </span>
35
+ </td>
36
+ <td class="album_breadcrumbs" align="right" nowrap="nowrap">
37
+ @{@album.nr_leaves}@&nbsp;@{@resource.photos}@
38
+ <span kw:d="if @album.nr_childs>0">
39
+ @{@album.nr_childs}@&nbsp;sub-albums
40
+ </span>
41
+ </td>
42
+ </tr>
43
+
44
+ <tr>
45
+ <td width="80%" align="left">
46
+ @{@album.description}@
47
+ </td>
48
+
49
+ <td kw:d="if not @album.root?" width="20%" align="right">
50
+ <a href="@{@album.relroot_with_prefix}@index.html" title="Up to top"><img kw:d="mark:topgif"
51
+ src="../res/top.gif" border="0" alt="Top"/></a>
52
+ &nbsp;
53
+ <a title="Up to album" href="../index.html"><img kw:d="mark:upgif"
54
+ src="../res/up.gif" border="0" alt="Up"/></a>
55
+ &nbsp;&nbsp;&nbsp;
56
+ </td>
57
+
58
+ </tr>
59
+ </table>
60
+ <!-- End header table -->
61
+ </td>
62
+ </tr>
63
+
64
+ <!-- thumbnails header table -->
65
+ <tr kw:d="if @album.leaves.length>0">
66
+ <td>
67
+ <!-- begin thumbnails header table -->
68
+ <table width="100%"
69
+ border="0" cellspacing="0" cellpadding="3">
70
+ <tr>
71
+ <td class="album_section" align="left">@{@resource.thumbnails}@</td>
72
+ </tr>
73
+ </table>
74
+ <!-- end thumbnails header table -->
75
+ </td>
76
+ </tr>
77
+
78
+ <!-- thumbnails body -->
79
+ <tr kw:d="if @album.leaves.length>0">
80
+ <td align="center">
81
+ <!-- begin thumbnail table -->
82
+ <table id="mark:thumbnails_table" class="album_thumbnails_table">
83
+
84
+ <tr id="mark:thumbnail_image_row"
85
+ class="album_thumbnail_image_row">
86
+ <td id="mark:thumbnail_image"
87
+ class="album_thumbnail_image">
88
+ <a href="@{photo.defaultImageFile.pageurl}@"
89
+ title="@{photo.name}@"><img kw:d="mark:thumb_image"
90
+ src="../res_preview/thumb_image.jpg"
91
+ alt="Giovanni Ferro - @{photo.name}@"
92
+ border="0"/></a>
93
+ </td>
94
+ </tr>
95
+
96
+ <tr id="mark:thumbnail_title_row" class="album_thumbnail_title_row">
97
+ <td id="mark:thumbnail_title" class="album_thumbnail_title">
98
+ @{photo.name}@
99
+ </td>
100
+ </tr>
101
+
102
+ </table>
103
+ <!-- end thumbnail table -->
104
+ </td>
105
+ </tr>
106
+
107
+ <!-- subalbums header -->
108
+ <tr kw:d="if @album.childs.length>0">
109
+ <td>
110
+ <!-- begin subalbums header table -->
111
+ <table width="100%"
112
+ border="0" cellspacing="0" cellpadding="3">
113
+ <tr>
114
+ <td class="album_section" align="left">@{@resource.subalbums}@</td>
115
+ </tr>
116
+ </table>
117
+ <!-- end header table -->
118
+ </td>
119
+ </tr>
120
+
121
+ <!-- sub-albums body -->
122
+ <tr kw:d="if @album.childs.length>0">
123
+ <td>
124
+ <!-- begin sub-album table -->
125
+ <table width="100%"
126
+ border="0" cellspacing="5" cellpadding="2">
127
+
128
+ <tr id="mark:subalbums_row">
129
+
130
+ <td class="album_subalbum_image">
131
+ <a href="@{subalbum.pageurl}@"
132
+ title="@{subalbum.name}@"><img kw:d="mark:thumb_subalbum"
133
+ src="../res_preview/thumb_subalbum.jpg"
134
+ alt="@{subalbum.defaultImagePool.name}@"
135
+ border="1"/></a>
136
+ </td>
137
+ <td>
138
+ <a href="@{subalbum.pageurl}@">@{subalbum.name}@</a>
139
+ <br/>
140
+ @{subalbum.nr_leaves}@&nbsp;photos
141
+ <span kw:d="if subalbum.nr_childs>0">
142
+ ,&nbsp;@{subalbum.nr_childs}@&nbsp;sub-albums
143
+ </span>
144
+ <br/>
145
+ @{subalbum.description}@
146
+ </td>
147
+
148
+ </tr>
149
+
150
+ </table>
151
+ <!-- end sub-album table -->
152
+ </td>
153
+ </tr>
154
+
155
+ </table>
156
+
157
+ <div id="replace_element_with_element:page_footer" style="text-align:center; border: solid 1px black;">Page footer</div>
158
+
159
+ </body>
160
+ </html>
161
+
@@ -0,0 +1,127 @@
1
+ #stylesheet1 {
2
+ attrs: 'href' "#{@album.relroot}res/style1.css";
3
+ }
4
+
5
+ #stylesheet2 {
6
+ attrs: 'href' "#{@album.relroot}res/style2.css";
7
+ }
8
+
9
+ #styleswitcher {
10
+ attrs: 'src' "#{@album.relroot}res/styleswitcher.js";
11
+ }
12
+
13
+ #prototype {
14
+ attrs: 'src' "#{@album.relroot}res/prototype.js";
15
+ }
16
+
17
+ #topgif {
18
+ attrs: 'src' "#{@album.relroot}res/top.gif";
19
+ }
20
+
21
+ #upgif {
22
+ attrs: 'src' "#{@album.relroot}res/up.gif";
23
+ }
24
+
25
+ #valid_xhtml_png {
26
+ attrs: 'src' "#{@album.relroot}res/valid-xhtml.png";
27
+ }
28
+
29
+ #valid_css_png {
30
+ attrs: 'src' "#{@album.relroot}res/valid-css.png";
31
+ }
32
+
33
+ #thumb_image {
34
+ attrs: 'src' "#{@album.relroot + photo.thumb.url}";
35
+ }
36
+
37
+ #thumb_subalbum {
38
+ attrs: 'src' "#{@album.relroot + subalbum.defaultImagePool.thumb.url}";
39
+ }
40
+
41
+ #breadcrumbs {
42
+ logic: {
43
+ item_ctr = 0
44
+ for item in @album.breadcrumbs
45
+ item_ctr += 1
46
+ if item_ctr > 1
47
+ _element("arrow") # expand element marked with arrow
48
+ end
49
+ _element("item") # expand element marked with item
50
+ end
51
+ }
52
+ }
53
+
54
+ #item {
55
+ logic: {
56
+ item_path = item[:path] # retrieve path and
57
+ item_title = item[:title] # title from a hash
58
+ if item_path.nil? # if path is null then
59
+ _cont # don't print <a></a>.
60
+ else
61
+ _stag
62
+ _cont
63
+ _etag
64
+ end
65
+ }
66
+ }
67
+
68
+ #thumbnails_table {
69
+ logic: {
70
+ _stag
71
+ start_pos = 1
72
+ while start_pos <= @album.leaves.length
73
+ idx = start_pos
74
+ _element("thumbnail_image_row")
75
+ idx = start_pos
76
+ _element("thumbnail_title_row")
77
+ start_pos += 7
78
+ end
79
+ _etag
80
+ }
81
+ }
82
+
83
+ #thumbnail_image_row {
84
+ logic: {
85
+ _stag
86
+ while idx <= @album.leaves.length && idx % 7 != 0
87
+ photo = @album.leaves[ idx-1 ]
88
+ _cont
89
+ idx += 1
90
+ end
91
+ _etag
92
+ }
93
+ }
94
+
95
+ #thumbnail_title_row {
96
+ logic: {
97
+ _stag
98
+ while idx <= @album.leaves.length && idx % 7 != 0
99
+ photo = @album.leaves[ idx-1 ]
100
+ _cont
101
+ idx += 1
102
+ end
103
+ _etag
104
+ }
105
+ }
106
+
107
+
108
+ #subalbums_row {
109
+ logic: {
110
+ col = 1
111
+ for subalbum in @album.childs
112
+ if col == 1
113
+ _stag
114
+ end
115
+
116
+ _cont;
117
+ col += 1
118
+ if col == 3
119
+ col = 1
120
+ _etag
121
+ end
122
+ end
123
+ if col != 1
124
+ _etag
125
+ end
126
+ }
127
+ }
@@ -0,0 +1,91 @@
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 - @{@image.name}@</title>
6
+ <meta name="Description" content="Giovanni Ferro photos"/>
7
+ <meta name="keywords" content="Giovanni Ferro,photo,pictures,digital photography"/>
8
+ <link kw:d="mark:stylesheet1" rel="stylesheet" type="text/css" href="../res/style1.css" media="screen" title="style1"/>
9
+ <link kw:d="mark:stylesheet2" rel="alternate stylesheet" type="text/css" href="../res/style2.css" media="screen" title="style2"/>
10
+ <script kw:d="mark:prototype" type="text/javascript" src="../res/prototype.js"></script>
11
+ <script kw:d="mark:styleswitcher" type="text/javascript" src="../res/styleswitcher.js"></script>
12
+ </head>
13
+ <body>
14
+
15
+ <div id="replace_element_with_element:menu_top" style="text-align:center; border: solid 1px black;">Menu del sito</div>
16
+
17
+ <table class="maintable" align="center"
18
+ border="0" cellspacing="0" cellpadding="0">
19
+
20
+ <!-- Breadcrumbs or Trail -->
21
+ <tr>
22
+ <td class="album_breadcrumbs">
23
+ <span id="mark:breadcrumbs">
24
+ <a class="album_treepath" id="mark:item" href="@{@image.relroot + item_path}@">
25
+ <span kw:d="value item_title">Home</span>
26
+ </a>
27
+ <span id="mark:arrow" class="album_treepathdots">::</span>
28
+ </span>
29
+ </td>
30
+ <td class="album_breadcrumbs" align="right">
31
+ @{@image.name}@
32
+ </td>
33
+ </tr>
34
+
35
+ <!-- description + navigation buttons -->
36
+ <tr>
37
+ <td>
38
+ @{@image.description}@
39
+ </td>
40
+ <td align="right" valign="top" width="30%" nowrap="nowrap">
41
+
42
+ <span id="nav_buttons">
43
+ <a href="@{@image.relroot_with_prefix}@index.html" title="Up to top"><img kw:d="mark:topgif"
44
+ src="../res/top.gif" border="0" alt="Top"/></a>
45
+ &nbsp;
46
+ <a title="Up to album" href="index.html"><img kw:d="mark: upgif"
47
+ src="../res/up.gif" border="0" alt="Up"/></a>
48
+ &nbsp;&nbsp;&nbsp;
49
+ <a kw:d="if @image.prev_pageurl!=nil" title="Prev photo" href="@{@image.prev_pageurl}@"><img kw:d="mark:leftgif"
50
+ src="../res/left.gif" border="0" alt="Prev"/></a>
51
+ <a kw:d="if @image.next_pageurl!=nil" title="Next photo" href="@{@image.next_pageurl}@"><img kw:d="mark:rightgif"
52
+ src="../res/right.gif" border="0" alt="Next"/></a>
53
+ </span>
54
+
55
+ </td>
56
+ </tr>
57
+
58
+ <!-- image -->
59
+ <tr>
60
+ <td colspan="2" align="center">
61
+ <a href="@{@image.relroot + @image.url}@"><img kw:d="mark:image" border="0"
62
+ src="../res_preview/image.jpg"
63
+ alt="Giovanni Ferro - @{@image.name}@"/></a>
64
+ </td>
65
+ </tr>
66
+
67
+ <!-- image footer -->
68
+ <tr>
69
+ <td colspan="2">
70
+ <table width="100%">
71
+ <tr>
72
+ <td align="left" class="small">
73
+ @{@image.size}@K&nbsp;JPEG image,&nbsp;
74
+ @{@image.width}@X@{@image.height}@&nbsp;pixels
75
+ </td>
76
+ <td align="right">
77
+ <span id="replace_element_with_element:nav_buttons"> Buttons </span>
78
+ </td>
79
+ </tr>
80
+ </table>
81
+ </td>
82
+ </tr>
83
+
84
+ </table>
85
+
86
+ <div id="replace_element_with_element:page_footer" style="text-align:center; border: solid 1px black;">Page footer</div>
87
+
88
+ </body>
89
+ </html>
90
+
91
+
@@ -0,0 +1,70 @@
1
+ #stylesheet1 {
2
+ attrs: 'href' "#{@image.relroot}res/style1.css";
3
+ }
4
+
5
+ #stylesheet2 {
6
+ attrs: 'href' "#{@image.relroot}res/style2.css";
7
+ }
8
+
9
+ #styleswitcher {
10
+ attrs: 'src' "#{@image.relroot}res/styleswitcher.js";
11
+ }
12
+
13
+ #prototype {
14
+ attrs: 'src' "#{@image.relroot}res/prototype.js";
15
+ }
16
+
17
+ #topgif {
18
+ attrs: 'src' "#{@image.relroot}res/top.gif";
19
+ }
20
+
21
+ #upgif {
22
+ attrs: 'src' "#{@image.relroot}res/up.gif";
23
+ }
24
+
25
+ #leftgif {
26
+ attrs: 'src' "#{@image.relroot}res/left.gif";
27
+ }
28
+
29
+ #rightgif {
30
+ attrs: 'src' "#{@image.relroot}res/right.gif";
31
+ }
32
+
33
+ #valid_xhtml_png {
34
+ attrs: 'src' "#{@image.relroot}res/valid-xhtml.png";
35
+ }
36
+
37
+ #valid_css_png {
38
+ attrs: 'src' "#{@image.relroot}res/valid-css.png";
39
+ }
40
+
41
+ #image {
42
+ attrs: 'src' "#{@image.relroot + @image.url}";
43
+ }
44
+
45
+ #breadcrumbs {
46
+ logic: {
47
+ item_ctr = 0
48
+ for item in @image.breadcrumbs
49
+ item_ctr += 1
50
+ if item_ctr > 1
51
+ _element("arrow") # expand element marked with arrow
52
+ end
53
+ _element("item") # expand element marked with item
54
+ end
55
+ }
56
+ }
57
+
58
+ #item {
59
+ logic: {
60
+ item_path = item[:path] # retrieve path and
61
+ item_title = item[:title] # title from a hash
62
+ if item_path.nil? # if path is null then
63
+ _cont # don't print <a></a>
64
+ else
65
+ _stag
66
+ _cont
67
+ _etag
68
+ end
69
+ }
70
+ }