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,169 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
+ <html>
3
+ <head>
4
+ <title>#{album.title}#</title>
5
+ <link rel="stylesheet" type="text/css" href="#{relroot}#data/style.css">
6
+
7
+ <script LANGUAGE="JavaScript">
8
+ <!--
9
+
10
+ // ----- getParams
11
+
12
+ function getParams()
13
+ {
14
+ var idx = document.URL.indexOf("?");
15
+ var params = new Array();
16
+ if (idx != -1) {
17
+ var pairs =
18
+ document.URL.substring( idx + 1, document.URL.lenght ).split("&");
19
+ for( var i = 0; i < pairs.length; i++ ) {
20
+ nomeVal = pairs[ i ].split("=");
21
+ params[ nomeVal[0] ] = nomeVal[1];
22
+ }
23
+ }
24
+ return params;
25
+ }
26
+
27
+
28
+ // ----- slide show
29
+
30
+ var rotate_delay = 5000; // delay in milliseconds (5000 = 5 secs)
31
+ current = 0;
32
+
33
+ // change displayed image
34
+ function change()
35
+ {
36
+ current = document.slideform.slide.selectedIndex;
37
+ document.images.show.src =
38
+ "#{relroot}#images_640x480/img_" +
39
+ document.slideform.slide[ current ].value
40
+ + ".jpg";
41
+ }
42
+
43
+ function next()
44
+ {
45
+ if ( document.slideform.slide[ current+1 ] ) {
46
+ document.slideform.slide.selectedIndex = ++current;
47
+ change();
48
+ } else {
49
+ first();
50
+ }
51
+ }
52
+
53
+ function previous()
54
+ {
55
+ if ( current-1 >= 0 ) {
56
+ document.slideform.slide.selectedIndex = --current;
57
+ change();
58
+ } else {
59
+ last();
60
+ }
61
+ }
62
+
63
+ function first()
64
+ {
65
+ current = 0;
66
+ document.slideform.slide.selectedIndex = 0;
67
+ change();
68
+ }
69
+
70
+ function last()
71
+ {
72
+ current = document.slideform.slide.length-1;
73
+ document.slideform.slide.selectedIndex = current;
74
+ change();
75
+ }
76
+
77
+ function ap(text)
78
+ {
79
+ document.slideform.slidebutton.value = (text == "Stop") ? "Start" : "Stop";
80
+ rotate();
81
+ }
82
+
83
+ function rotate()
84
+ {
85
+ if (document.slideform.slidebutton.value == "Stop") {
86
+ current = (current == document.slideform.slide.length-1) ? 0 : current+1;
87
+ document.slideform.slide.selectedIndex = current;
88
+ change();
89
+ window.setTimeout("rotate()", rotate_delay);
90
+ }
91
+ }
92
+
93
+ function select( photokey )
94
+ {
95
+ var i = 0;
96
+ while( i < document.slideform.slide.length &&
97
+ photokey != document.slideform.slide[ i ].value ) {
98
+ i++;
99
+ }
100
+ if( i < document.slideform.slide.length ) {
101
+ document.slideform.slide.selectedIndex = i;
102
+ change();
103
+ }
104
+ }
105
+
106
+ // -->
107
+ </script>
108
+ </head>
109
+
110
+
111
+ <body>
112
+
113
+
114
+ <table border="0" cellspacing="0" cellpadding="0" width="650" align="center">
115
+ <!-- album title -->
116
+ <tr>
117
+ <td class="shade" align="center" colspan="2">
118
+ <span class="title">#{album.title}#</span>
119
+ </td>
120
+ </tr>
121
+
122
+ <!-- description + navigation buttons -->
123
+ <tr>
124
+ <td align="left">
125
+
126
+ <form name="slideform">
127
+ <select name="slide" onChange="change();">
128
+ <option id="Foreach:photo=album.leaves" value="#{photo.key}#">#{photo.title}#</option>
129
+ </select>
130
+ <input type=button onClick="first();" value="|<<" title="Beginning">
131
+
132
+ <a title="Prev photo" href="javascript:previous()"><img
133
+ src="#{relroot}#data/left.gif" border="0" width="15" height="15"
134
+ alt="Prev"></a>
135
+
136
+ <input type=button name="slidebutton" onClick="ap(this.value);" value="Start" title="AutoPlay">
137
+
138
+ <a title="Next photo" href="javascript:next();"><img
139
+ src="#{relroot }#data/right.gif" border="0" width="15" height="15" alt="Next"></a>
140
+
141
+ <input type=button onClick="last();" value=">>|" title="End">
142
+ </form>
143
+ </td>
144
+ <td align="right">
145
+ <a href="#{relroot}#/html/index.html" title="Up to top"><img src="#{relroot}#data/top.gif"
146
+ border="0" width="15" height="15" alt="Top"></a>
147
+ <a title="Up to album" href="index.html"><img
148
+ src="#{relroot}#data/up.gif" border="0" width="15" height="15" alt="Up"></a>
149
+ </td>
150
+ </tr>
151
+
152
+ <!-- image -->
153
+ <tr>
154
+ <td colspan="2" align="center">
155
+ <img name="show" border="0">
156
+ </td>
157
+ </tr>
158
+
159
+ </table>
160
+
161
+ <script language="javascript">
162
+ params = getParams();
163
+ photokey = unescape(params["photokey"]);
164
+ // document.write("photokey = " + photokey + "<br>");
165
+ select( photokey );
166
+ </script>
167
+
168
+ </body>
169
+ </html>
@@ -0,0 +1,118 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
+ <html>
3
+ <head>
4
+ <link rel="stylesheet" type="text/css" href="rubyphoto.css">
5
+ <title>Album Tree</title>
6
+ </head>
7
+ <body/>
8
+
9
+ <table align="center" border="0" cellspacing="0" cellpadding="3" width="650">
10
+
11
+ <!-- title -->
12
+ <tr>
13
+ <td class="shade">
14
+ <span class="title">Album Tree</span>
15
+ </td>
16
+ </tr>
17
+
18
+ <tr>
19
+ <td>
20
+ <span id="mark:albumstree">
21
+ <li id="mark:treenode"><a href="#{album.pageurl}#">#{album.title}#</a></li>
22
+ <ul id="mark:tree"></ul>
23
+ </span>
24
+ </td>
25
+ </tr>
26
+
27
+ <tr>
28
+ <td>
29
+ <br>
30
+ <ul>
31
+ <li><a href="/index.html">foto</a>
32
+ <ul>
33
+ <li><a href="10_Roma/index.html">Roma</a>
34
+ <ul>
35
+ <li><a href="10_Roma/Campidoglio/index.html">Campidoglio</a>
36
+ <li><a href="10_Roma/Celio/index.html">Celio</a>
37
+ <li><a href="10_Roma/CircoMassimo/index.html">Circo Massimo</a>
38
+ <li><a href="10_Roma/Colosseo/index.html">Colosseo</a>
39
+ <li><a href="10_Roma/Farnese/index.html">Piazza Farnese e Dintorni</a>
40
+ <li><a href="10_Roma/FontanaTrevi/index.html">Fontana di Trevi</a>
41
+ <li><a href="10_Roma/ForiRomani/index.html">Fori Romani</a>
42
+ <li><a href="10_Roma/Ghetto/index.html">Ghetto</a>
43
+ <li><a href="10_Roma/Gianicolo/index.html">Gianicolo</a>
44
+ <li><a href="10_Roma/GianicoloAlba/index.html">Il gianicolo all'alba</a>
45
+ <li><a href="10_Roma/MonteMario/index.html">Monte Mario</a>
46
+ <li><a href="10_Roma/Olimpico%2DFarnesina/index.html">Olimpico e Farnesina</a>
47
+ <li><a href="10_Roma/Orologio/index.html">Piazza dell'Orologio</a>
48
+ <li><a href="10_Roma/Periferie/index.html">Periferie</a>
49
+ <li><a href="10_Roma/PiazzaBarberini/index.html">Piazza Barberini</a>
50
+ <li><a href="10_Roma/PiazzaBoccaDellaVerita/index.html">Piazza Bocca della Verita'</a>
51
+ <li><a href="10_Roma/PiazzaDelPopolo/index.html">Piazza del Popolo</a>
52
+ <li><a href="10_Roma/PiazzaNavona/index.html">Piazza Navona</a>
53
+ <li><a href="10_Roma/PiazzaRepubblica/index.html">Piazza Repubblica</a>
54
+ <li><a href="10_Roma/PinetaSacchetti/index.html">Pineta Sacchetti</a>
55
+ <li><a href="10_Roma/PonteNomentano/index.html">Ponte Momentano</a>
56
+ <li><a href="10_Roma/Quirinale/index.html">Il Quirinale</a>
57
+ <li><a href="10_Roma/SanGiovanni/index.html">San Giovanni</a>
58
+ <li><a href="10_Roma/SanPietro/index.html">San Pietro</a>
59
+ <li><a href="10_Roma/TeatroMarcello/index.html">Teatro Marcello</a>
60
+ <li><a href="10_Roma/TermeCaracalla/index.html">Terme di Caracalla</a>
61
+ <li><a href="10_Roma/Tevere%2DCastelSantAngelo/index.html">Tevere - Castel Sant'Angelo</a>
62
+ <li><a href="10_Roma/Tevere%2DCastelSantAngelo%2DNotte/index.html">Tevere - Castel Sant'Angelo</a>
63
+ <li><a href="10_Roma/Tevere%2DIsolaTiberina/index.html">Tevere - Isola Tiberina</a>
64
+ <li><a href="10_Roma/Tevere%2DPonteMargherita/index.html">Tevere - Ponte Margheria e Ponte Cavour di notte</a>
65
+ <li><a href="10_Roma/Tevere%2DPonteMilvio/index.html">Tevere - Ponte Milvio</a>
66
+ <li><a href="10_Roma/Trastevere/index.html">Trastevere</a>
67
+ <li><a href="10_Roma/TrinitaDeiMonti/index.html">Trinita dei Monti</a>
68
+ <li><a href="10_Roma/Varie/index.html">Varie</a>
69
+ <li><a href="10_Roma/VillaBorghese/index.html">Villa Borghese</a>
70
+ <li><a href="10_Roma/VillaBorghese%2DPincio/index.html">Villa Borghese: il Pincio</a>
71
+ <li><a href="10_Roma/VillaggioOlimpico/index.html">Villaggio Olimpico</a>
72
+ <li><a href="10_Roma/Vittoriano/index.html">Vittoriano</a>
73
+ </ul>
74
+ <li><a href="20_BreveViaggioInToscana/index.html">Breve viaggio in Toscana</a>
75
+ <ul>
76
+ <li><a href="20_BreveViaggioInToscana/VersoPisa/index.html">Verso Pisa</a>
77
+ <li><a href="20_BreveViaggioInToscana/Pisa/index.html">Pisa</a>
78
+ <li><a href="20_BreveViaggioInToscana/MarinaDiPisa/index.html">Una passeggiata a Marina di Pisa</a>
79
+ <li><a href="20_BreveViaggioInToscana/Firenze/index.html">Un giorno a Firenze</a>
80
+ <li><a href="20_BreveViaggioInToscana/Livorno/index.html">Un giorno a Livorno</a>
81
+ <li><a href="20_BreveViaggioInToscana/Meo/index.html">Meo: il gatto!</a>
82
+ </ul>
83
+ <li><a href="30_GitaInToscana/index.html">Gita In Toscana</a>
84
+ <ul>
85
+ <li><a href="30_GitaInToscana/00_VersoPisa/index.html">Verso Pisa</a>
86
+ <li><a href="30_GitaInToscana/01_Viareggio/index.html">Viareggio</a>
87
+ <li><a href="30_GitaInToscana/02_Luminara/index.html">Luminara San Ranieri</a>
88
+ <li><a href="30_GitaInToscana/03_regatasranieri/index.html">Arno</a>
89
+ <li><a href="30_GitaInToscana/04_cittadella/index.html">Cittadella</a>
90
+ <li><a href="30_GitaInToscana/05_varie/index.html">Varie</a>
91
+ </ul>
92
+ <li><a href="40_Montepulciano/index.html">Montepulciano</a>
93
+ <li><a href="45_Calabria/index.html">Calabria</a>
94
+ <ul>
95
+ <li><a href="45_Calabria/00_Vibo/index.html">Vibo Valentia</a>
96
+ <li><a href="45_Calabria/05_Pizzo/index.html">Pizzo</a>
97
+ <li><a href="45_Calabria/10_Briatico/index.html">Briatico</a>
98
+ <li><a href="45_Calabria/15_Tropea/index.html">Tropea</a>
99
+ <li><a href="45_Calabria/20_capovaticano/index.html">Capo Vaticano</a>
100
+ </ul>
101
+ <li><a href="50_Oggetti/index.html">Oggetti</a>
102
+ <li><a href="60_Flora/index.html">Fiori e Piante</a>
103
+ </ul>
104
+
105
+ </ul>
106
+ <br>
107
+ </td>
108
+ </tr>
109
+
110
+ <!-- footer -->
111
+ <tr>
112
+ <td class="shade">&nbsp;</tr>
113
+ </tr>
114
+ </table>
115
+
116
+ </body>
117
+ </html>
118
+
@@ -0,0 +1,43 @@
1
+ #albumstree {
2
+ logic: {
3
+ stack = Array.new;
4
+ @element(tree);
5
+ }
6
+ }
7
+
8
+ /**
9
+ //:elem(albumstree)
10
+ // :set( stack = Array.new )
11
+ // @elem_tree
12
+ //:end
13
+ **/
14
+
15
+ #tree {
16
+ logic: {
17
+ @stag;
18
+ // @stag(treenode);
19
+ // @cont(treenode);
20
+ album = album.subalbus;
21
+ while album
22
+ // # @elem_tree
23
+ end
24
+ // @etag(treenode);
25
+ @etag;
26
+ }
27
+ }
28
+
29
+ /***
30
+ //:elem( tree )
31
+ // @stag
32
+ // @stag_treenode
33
+ // @cont_treenode
34
+ // :set( album = album.subalbus )
35
+ // :while( album )
36
+ // # @elem_tree
37
+ // :end
38
+ // @etag_treenode
39
+ // @etag
40
+ //:end
41
+ **/
42
+
43
+
@@ -0,0 +1,3 @@
1
+ author: gf
2
+ description: skin used only for test erb skin_engine
3
+ engine: erb
@@ -0,0 +1,54 @@
1
+ module View
2
+
3
+ (@@proc_table ||= {})['album_page'] = proc do
4
+ _buf = ""; _buf << "<html>
5
+ <head>
6
+ </head>
7
+ <body>
8
+ <table>
9
+
10
+ <h1>Variables in album page</h1>
11
+ <tr>
12
+ <td>
13
+ <pre>album.name</pre>
14
+ </td>
15
+ <td>
16
+ <%= album.name %>
17
+ </td>
18
+ </tr>
19
+
20
+ <tr>
21
+ <td>
22
+ <pre>album.description</pre>
23
+ </td>
24
+ <td>
25
+ <%= album.description %>
26
+ </td>
27
+ </tr>
28
+
29
+ <tr>
30
+ <td>
31
+ <pre>album.relroot</pre>
32
+ </td>
33
+ <td>
34
+ <%= album.relroot %>
35
+ </td>
36
+ </tr>
37
+
38
+ </table>
39
+ </body>
40
+ </html>"; ; _buf
41
+ end#proc
42
+
43
+ module_function
44
+ def expand_album_page(context={})
45
+ if context.is_a?(Hash)
46
+ hash = context
47
+ context = Object.new
48
+ hash.each { |key, val| context.instance_variable_set("@#{key}", val) }
49
+ end
50
+ proc_obj = @@proc_table['album_page']
51
+ context.instance_eval(&proc_obj)
52
+ end
53
+
54
+ end
@@ -0,0 +1,54 @@
1
+ module View
2
+
3
+ (@@proc_table ||= {})['image_page'] = proc do
4
+ _buf = ""; _buf << "<html>
5
+ <head>
6
+ </head>
7
+ <body>
8
+
9
+ <h1>Variable in image page</h1>
10
+ <table>
11
+ <tr>
12
+ <td>
13
+ image.name
14
+ </td>
15
+ <td>
16
+ <%= image.name %>
17
+ </td>
18
+ </tr>
19
+
20
+ <tr>
21
+ <td>
22
+ image.description
23
+ </td>
24
+ <td>
25
+ <%= image.description %>
26
+ </td>
27
+ </tr>
28
+
29
+ <tr>
30
+ <td>
31
+ <pre>image.relroot</pre>
32
+ </td>
33
+ <td>
34
+ <%= image.relroot %>
35
+ </td>
36
+ </tr>
37
+
38
+ </table>
39
+ </body>
40
+ </html>"; ; _buf
41
+ end#proc
42
+
43
+ module_function
44
+ def expand_image_page(context={})
45
+ if context.is_a?(Hash)
46
+ hash = context
47
+ context = Object.new
48
+ hash.each { |key, val| context.instance_variable_set("@#{key}", val) }
49
+ end
50
+ proc_obj = @@proc_table['image_page']
51
+ context.instance_eval(&proc_obj)
52
+ end
53
+
54
+ end