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.
- data/LICENSE +20 -0
- data/README.rdoc +80 -0
- data/bin/ralbum-JPG2jpg.rb +90 -0
- data/bin/ralbum-compile_skins.rb +18 -0
- data/bin/ralbum-myconv.rb +81 -0
- data/bin/ralbum-readexif.rb +18 -0
- data/bin/ralbum-reorder.rb +200 -0
- data/bin/ralbum.rb +12 -0
- data/example/README.txt +8 -0
- data/example/example.sh +3 -0
- data/example/httpd.rb +35 -0
- data/example/test_phototree/album.xml +21 -0
- data/example/test_phototree/catalog_data/md5_to_key.yaml +4 -0
- data/example/test_phototree/catalog_data/md5_to_key.yaml.test +4 -0
- data/example/test_phototree/catalog_data/project.xml +329 -0
- data/example/test_phototree/r_photo01.jpg +0 -0
- data/example/test_phototree/r_photo01.jpg.xml +17 -0
- data/example/test_phototree/subalbum01/album.xml +21 -0
- data/example/test_phototree/subalbum01/subalbum01_photo01.jpg +0 -0
- data/example/test_phototree/subalbum01/subalbum01_photo01.jpg.xml +15 -0
- data/example/test_phototree/subalbum01/subalbum01_photo02.jpg +0 -0
- data/example/test_phototree/subalbum01/subalbum01_photo02.jpg.xml +15 -0
- data/example/test_phototree/subalbum01/subalbum01_photo03.jpg +0 -0
- data/example/test_phototree/subalbum01/subalbum01_photo03.jpg.xml +15 -0
- data/example/test_phototree/subalbum01/subalbum01_photo04.jpg +0 -0
- data/example/test_phototree/subalbum01/subalbum01_photo04.jpg.xml +15 -0
- data/example/test_phototree/subalbum02/album.xml +10 -0
- data/example/test_phototree/subalbum02/subalbum02_photo01.jpg +0 -0
- data/example/test_phototree/subalbum02/subalbum02_photo01.jpg.xml +15 -0
- data/example/test_phototree/subalbum02/subalbum02_photo02.jpg +0 -0
- data/example/test_phototree/subalbum02/subalbum02_photo02.jpg.xml +15 -0
- data/example/test_phototree/subalbum02/subalbum02_photo03.jpg +0 -0
- data/example/test_phototree/subalbum02/subalbum02_photo03.jpg.xml +15 -0
- data/example/test_phototree/subalbum02/subalbum02_photo04.jpg +0 -0
- data/example/test_phototree/subalbum02/subalbum02_photo04.jpg.xml +15 -0
- data/example/test_phototree/subalbum02/subalbum02_photo05.jpg +0 -0
- data/example/test_phototree/subalbum02/subalbum02_photo05.jpg.xml +15 -0
- data/lib/ralbum-common/object_with_properties.rb +14 -0
- data/lib/ralbum-common/object_with_validation.rb +50 -0
- data/lib/ralbum.rb +19 -0
- data/lib/ralbum/album.rb +66 -0
- data/lib/ralbum/catalog.rb +178 -0
- data/lib/ralbum/cli/cli_ralbum.rb +116 -0
- data/lib/ralbum/generate_album_tree_node_visitor.rb +60 -0
- data/lib/ralbum/image_file.rb +81 -0
- data/lib/ralbum/image_pool.rb +71 -0
- data/lib/ralbum/image_strategy.rb +143 -0
- data/lib/ralbum/options.rb +15 -0
- data/lib/ralbum/photo_tree_builder.rb +165 -0
- data/lib/ralbum/photo_tree_item.rb +89 -0
- data/lib/ralbum/photo_tree_node.rb +40 -0
- data/lib/ralbum/project.rb +89 -0
- data/lib/ralbum/ralbum_exception.rb +2 -0
- data/lib/ralbum/resource.rb +17 -0
- data/lib/ralbum/skin.rb +76 -0
- data/lib/ralbum/skin_engine.rb +98 -0
- data/lib/ralbum/skin_engines/erb_skin_engine.rb +35 -0
- data/lib/ralbum/skin_engines/kwartz_skin_engine.rb +54 -0
- data/lib/ralbum/skin_manager.rb +46 -0
- data/lib/ralbum/skins/cgi/cgi_skin.rb +27 -0
- data/lib/ralbum/skins/cgi/info.yml +3 -0
- data/lib/ralbum/skins/cgi/res/model.rb +235 -0
- data/lib/ralbum/skins/cgi/res/resource.rb +17 -0
- data/lib/ralbum/skins/gfold/inc/menu_bottom.html +53 -0
- data/lib/ralbum/skins/gfold/inc/menu_top.html +71 -0
- data/lib/ralbum/skins/gfold/inc/page_footer.html +28 -0
- data/lib/ralbum/skins/gfold/info.yml +3 -0
- data/lib/ralbum/skins/gfold/out/album_page.rb +316 -0
- data/lib/ralbum/skins/gfold/out/image_page.rb +231 -0
- data/lib/ralbum/skins/gfold/out/tree_page.rb +96 -0
- data/lib/ralbum/skins/gfold/res/16-arrow-down.png +0 -0
- data/lib/ralbum/skins/gfold/res/16-arrow-left.png +0 -0
- data/lib/ralbum/skins/gfold/res/16-arrow-right.png +0 -0
- data/lib/ralbum/skins/gfold/res/16-arrow-up.png +0 -0
- data/lib/ralbum/skins/gfold/res/left.gif +0 -0
- data/lib/ralbum/skins/gfold/res/prototype.js +3277 -0
- data/lib/ralbum/skins/gfold/res/right.gif +0 -0
- data/lib/ralbum/skins/gfold/res/style1.css +453 -0
- data/lib/ralbum/skins/gfold/res/style2.css +414 -0
- data/lib/ralbum/skins/gfold/res/styleswitcher.js +89 -0
- data/lib/ralbum/skins/gfold/res/top.gif +0 -0
- data/lib/ralbum/skins/gfold/res/up.gif +0 -0
- data/lib/ralbum/skins/gfold/res/valid-css.png +0 -0
- data/lib/ralbum/skins/gfold/res/valid-xhtml.png +0 -0
- data/lib/ralbum/skins/gfold/res/valid-xhtml11.png +0 -0
- data/lib/ralbum/skins/gfold/res/vcss.gif +0 -0
- data/lib/ralbum/skins/gfold/template/album_page.html +161 -0
- data/lib/ralbum/skins/gfold/template/album_page.plogic +127 -0
- data/lib/ralbum/skins/gfold/template/image_page.html +91 -0
- data/lib/ralbum/skins/gfold/template/image_page.plogic +70 -0
- data/lib/ralbum/skins/gfold/template/tree_page.html +79 -0
- data/lib/ralbum/skins/gfold/template/tree_page.plogic +45 -0
- data/lib/ralbum/skins/js/info.yml +3 -0
- data/lib/ralbum/skins/js/js_skin.rb +50 -0
- data/lib/ralbum/skins/js/out/album_page.rb +181 -0
- data/lib/ralbum/skins/js/out/slideshow_page.rb +187 -0
- data/lib/ralbum/skins/js/out/tree_page.rb +134 -0
- data/lib/ralbum/skins/js/res/left.gif +0 -0
- data/lib/ralbum/skins/js/res/right.gif +0 -0
- data/lib/ralbum/skins/js/res/style.css +76 -0
- data/lib/ralbum/skins/js/res/top.gif +0 -0
- data/lib/ralbum/skins/js/res/up.gif +0 -0
- data/lib/ralbum/skins/js/template/album_page.html +178 -0
- data/lib/ralbum/skins/js/template/album_page.plogic +88 -0
- data/lib/ralbum/skins/js/template/slideshow_page.html +169 -0
- data/lib/ralbum/skins/js/template/slideshow_page.plogic +1 -0
- data/lib/ralbum/skins/js/template/tree_page.html +118 -0
- data/lib/ralbum/skins/js/template/tree_page.plogic +43 -0
- data/lib/ralbum/skins/test_erb/info.yml +3 -0
- data/lib/ralbum/skins/test_erb/out/album_page.rb +54 -0
- data/lib/ralbum/skins/test_erb/out/image_page.rb +54 -0
- data/lib/ralbum/skins/test_kwartz/info.yml +3 -0
- data/lib/ralbum/skins/test_kwartz/out/album_page.rb +54 -0
- data/lib/ralbum/skins/test_kwartz/out/image_page.rb +54 -0
- data/lib/ralbum/skins/test_kwartz/template/album_page.html +37 -0
- data/lib/ralbum/skins/test_kwartz/template/image_page.html +37 -0
- data/test/ralbum/cli/test_cli_ralbum.rb +13 -0
- data/test/ralbum/tc_01_photo_tree.rb +37 -0
- data/test/ralbum/tc_02_photo_tree_builder.rb +20 -0
- data/test/ralbum/tc_03_album.rb +42 -0
- data/test/ralbum/tc_04_skin_manager.rb +30 -0
- data/test/ralbum/tc_05_kwartz_skin_engine.rb +50 -0
- data/test/ralbum/tc_06_image_strategy.rb +21 -0
- data/test/ralbum/tc_catalog.rb +31 -0
- data/test/ralbum/test_helper.rb +13 -0
- data/test/test_ralbum.rb +14 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_1/img_0004.jpg.html +148 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_1/img_0005.jpg.html +152 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_1/img_0006.jpg.html +152 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_1/img_0007.jpg.html +148 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_1/index.html +195 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0008.jpg.html +148 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0009.jpg.html +152 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0010.jpg.html +152 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0011.jpg.html +152 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_2/img_0012.jpg.html +148 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/album_2/index.html +206 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/img_0003.jpg.html +141 -0
- data/test_data/ralbum/test_data/albums_directory/gfold/index.html +208 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0003.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0004.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0005.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0006.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0007.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0008.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0009.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0010.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0011.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_100x100/img_0012.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0003.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0004.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0005.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0006.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0007.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0008.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0009.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0010.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0011.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/images_640x480/img_0012.jpg +0 -0
- data/test_data/ralbum/test_data/albums_directory/res/left.gif +0 -0
- data/test_data/ralbum/test_data/albums_directory/res/prototype.js +3277 -0
- data/test_data/ralbum/test_data/albums_directory/res/right.gif +0 -0
- data/test_data/ralbum/test_data/albums_directory/res/style1.css +453 -0
- data/test_data/ralbum/test_data/albums_directory/res/style2.css +414 -0
- data/test_data/ralbum/test_data/albums_directory/res/styleswitcher.js +89 -0
- data/test_data/ralbum/test_data/albums_directory/res/top.gif +0 -0
- data/test_data/ralbum/test_data/albums_directory/res/up.gif +0 -0
- data/test_data/ralbum/test_data/albums_directory/res/valid-css.png +0 -0
- data/test_data/ralbum/test_data/albums_directory/res/valid-xhtml.png +0 -0
- data/test_data/ralbum/test_data/albums_directory/res/valid-xhtml11.png +0 -0
- data/test_data/ralbum/test_data/albums_directory/res/vcss.gif +0 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_1/img_0004.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_1/img_0005.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_1/img_0006.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_1/img_0007.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_1/index.html +13 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0008.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0009.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0010.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0011.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_2/img_0012.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/album_2/index.html +13 -0
- data/test_data/ralbum/test_data/albums_directory/test/img_0003.jpg.html +11 -0
- data/test_data/ralbum/test_data/albums_directory/test/index.html +13 -0
- data/test_data/ralbum/test_data/is_test/r_photo01_scaled.jpg +0 -0
- data/test_data/ralbum/test_data/is_test/r_photo01_sepia_scaled.jpg +0 -0
- metadata +276 -0
@@ -0,0 +1,79 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
5
|
+
<title>Album Tree</title>
|
6
|
+
<link rel="stylesheet" type="text/css" href="rubyphoto.css">
|
7
|
+
</head>
|
8
|
+
<body/>
|
9
|
+
|
10
|
+
<table align="center" border="0" cellspacing="0" cellpadding="3" width="650">
|
11
|
+
|
12
|
+
<!-- title -->
|
13
|
+
<tr>
|
14
|
+
<td class="shade">
|
15
|
+
<span class="title">Album Tree</span>
|
16
|
+
</td>
|
17
|
+
</tr>
|
18
|
+
|
19
|
+
<tr>
|
20
|
+
<td>
|
21
|
+
<span id="mark:albumstree">
|
22
|
+
<li id="mark:treenode"><a href="@{album.pageurl}@">@{album.title}@</a></li>
|
23
|
+
<ul id="mark:tree"></ul>
|
24
|
+
</span>
|
25
|
+
</td>
|
26
|
+
</tr>
|
27
|
+
|
28
|
+
<tr>
|
29
|
+
<td>
|
30
|
+
<br>
|
31
|
+
<ul>
|
32
|
+
<li><a href="/index.html">foto</a>
|
33
|
+
<ul>
|
34
|
+
<li><a href="10_Roma/index.html">Roma</a>
|
35
|
+
<ul>
|
36
|
+
<li><a href="10_Roma/Campidoglio/index.html">Campidoglio</a>
|
37
|
+
<li><a href="10_Roma/Celio/index.html">Celio</a>
|
38
|
+
<li><a href="10_Roma/CircoMassimo/index.html">Circo Massimo</a>
|
39
|
+
<li><a href="10_Roma/Colosseo/index.html">Colosseo</a>
|
40
|
+
<li><a href="10_Roma/Farnese/index.html">Piazza Farnese e Dintorni</a>
|
41
|
+
<li><a href="10_Roma/FontanaTrevi/index.html">Fontana di Trevi</a>
|
42
|
+
<li><a href="10_Roma/ForiRomani/index.html">Fori Romani</a>
|
43
|
+
<li><a href="10_Roma/Ghetto/index.html">Ghetto</a>
|
44
|
+
<li><a href="10_Roma/Gianicolo/index.html">Gianicolo</a>
|
45
|
+
<li><a href="10_Roma/GianicoloAlba/index.html">Il gianicolo all'alba</a>
|
46
|
+
<li><a href="10_Roma/MonteMario/index.html">Monte Mario</a>
|
47
|
+
</ul>
|
48
|
+
<li><a href="20_BreveViaggioInToscana/index.html">Breve viaggio in Toscana</a>
|
49
|
+
<ul>
|
50
|
+
<li><a href="20_BreveViaggioInToscana/VersoPisa/index.html">Verso Pisa</a>
|
51
|
+
<li><a href="20_BreveViaggioInToscana/Pisa/index.html">Pisa</a>
|
52
|
+
<li><a href="20_BreveViaggioInToscana/Firenze/index.html">Un giorno a Firenze</a>
|
53
|
+
<li><a href="20_BreveViaggioInToscana/Livorno/index.html">Un giorno a Livorno</a>
|
54
|
+
<li><a href="20_BreveViaggioInToscana/Meo/index.html">Meo: il gatto!</a>
|
55
|
+
</ul>
|
56
|
+
<li><a href="30_GitaInToscana/index.html">Gita In Toscana</a>
|
57
|
+
<ul>
|
58
|
+
<li><a href="30_GitaInToscana/00_VersoPisa/index.html">Verso Pisa</a>
|
59
|
+
<li><a href="30_GitaInToscana/01_Viareggio/index.html">Viareggio</a>
|
60
|
+
<li><a href="30_GitaInToscana/02_Luminara/index.html">Luminara San Ranieri</a>
|
61
|
+
</ul>
|
62
|
+
<li><a href="40_Montepulciano/index.html">Montepulciano</a>
|
63
|
+
<li><a href="45_Calabria/index.html">Calabria</a>
|
64
|
+
<ul>
|
65
|
+
<li><a href="45_Calabria/00_Vibo/index.html">Vibo Valentia</a>
|
66
|
+
<li><a href="45_Calabria/05_Pizzo/index.html">Pizzo</a>
|
67
|
+
</ul>
|
68
|
+
<li><a href="50_Oggetti/index.html">Oggetti</a>
|
69
|
+
<li><a href="60_Flora/index.html">Fiori e Piante</a>
|
70
|
+
</ul>
|
71
|
+
</ul>
|
72
|
+
<br>
|
73
|
+
</td>
|
74
|
+
</tr>
|
75
|
+
</table>
|
76
|
+
|
77
|
+
</body>
|
78
|
+
</html>
|
79
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#albumstree {
|
2
|
+
logic: {
|
3
|
+
stack = array.new
|
4
|
+
album = rootalbum
|
5
|
+
// @elem_tree
|
6
|
+
}
|
7
|
+
}
|
8
|
+
|
9
|
+
/**
|
10
|
+
// :elem(albumstree)
|
11
|
+
// :set( stack = array.new )
|
12
|
+
// :set( album = rootalbum )
|
13
|
+
// #@elem_tree
|
14
|
+
// :end
|
15
|
+
**/
|
16
|
+
|
17
|
+
#tree {
|
18
|
+
logic: {
|
19
|
+
_stag
|
20
|
+
// @stag(treenode);
|
21
|
+
// @cont(treenode);
|
22
|
+
album = album.childs;
|
23
|
+
while album
|
24
|
+
// @elem_tree
|
25
|
+
end
|
26
|
+
// @etag(treenode);
|
27
|
+
_etag;
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
/**
|
32
|
+
//:elem( tree )
|
33
|
+
// @stag
|
34
|
+
// @stag_treenode
|
35
|
+
// @cont_treenode
|
36
|
+
// :set( album = album.subalbums )
|
37
|
+
// :while( album )
|
38
|
+
// # @elem_tree
|
39
|
+
// :end
|
40
|
+
// @etag_treenode
|
41
|
+
// @etag
|
42
|
+
//:end
|
43
|
+
**/
|
44
|
+
|
45
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#require "inc/utility"
|
2
|
+
|
3
|
+
module Generator
|
4
|
+
|
5
|
+
class JSSkin < HTMLSkin
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
super( "js" )
|
9
|
+
end
|
10
|
+
|
11
|
+
def create( albums_dir, album )
|
12
|
+
@albums_dir = albums_dir
|
13
|
+
copy_skin_res( albums_dir )
|
14
|
+
rec_albums( album )
|
15
|
+
end
|
16
|
+
|
17
|
+
def rec_albums( album )
|
18
|
+
# outdir: where to write html files
|
19
|
+
outdir = @albums_dir + File::Separator + "js"
|
20
|
+
if album.reldir != "."
|
21
|
+
outdir += File::Separator + album.reldir
|
22
|
+
end
|
23
|
+
File.mkpath( outdir ) unless File.exist?( outdir )
|
24
|
+
create_album_page( album, outdir )
|
25
|
+
create_slideshow( album, outdir )
|
26
|
+
# recurse on each subnode
|
27
|
+
album.subalbums.each{ |subalbum|
|
28
|
+
rec_albums( subalbum )
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
def create_slideshow( album, outdir )
|
33
|
+
require "inc/generator/resource"
|
34
|
+
require "inc/skins/#{skin_name}/slideshow_page"
|
35
|
+
|
36
|
+
args = {
|
37
|
+
:relroot => "../" * ( album.depth + 1 ),
|
38
|
+
:resource => Resource.new,
|
39
|
+
:album => album,
|
40
|
+
}
|
41
|
+
page = view_slideshow_page args
|
42
|
+
outpath = outdir + File::Separator + "slideshow.html"
|
43
|
+
File.open( outpath , "w" ) { |f|
|
44
|
+
f.puts page
|
45
|
+
}
|
46
|
+
end
|
47
|
+
end # JSTheme
|
48
|
+
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
module View
|
2
|
+
|
3
|
+
(@@proc_table ||= {})['album_page'] = proc do
|
4
|
+
_buf = ""; _buf << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
|
5
|
+
<html id=\"set:pagename='albums'\">
|
6
|
+
<head id=\"set:language=null\">
|
7
|
+
<title>#{album.title}#</title>
|
8
|
+
<link rel=\"stylesheet\" type=\"text/css\" href=\"#{relroot}#data/style.css\">
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
|
12
|
+
<table class=\"maintable\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">
|
13
|
+
<tr>
|
14
|
+
<td>
|
15
|
+
|
16
|
+
<!-- begin header table -->
|
17
|
+
<table border=\"0\" cellspacing=\"0\" cellpadding=\"3\" width=\"100%\">
|
18
|
+
<tr>
|
19
|
+
<td class=\"shade\" align=\"left\">
|
20
|
+
<span class=\"title\">#{album.title}#</span>
|
21
|
+
</td>
|
22
|
+
<td class=\"shade\" align=\"right\"> </td>
|
23
|
+
</tr>
|
24
|
+
|
25
|
+
<!-- breadcrumbs or Trail -->
|
26
|
+
<tr>
|
27
|
+
<td class=\"lightshade\">
|
28
|
+
\n";
|
29
|
+
item_ctr = 0
|
30
|
+
for item in breadcrumbs
|
31
|
+
item_ctr += 1
|
32
|
+
if(item_ctr > 1)
|
33
|
+
_element("arrow") // expand element marked with arrow
|
34
|
+
end
|
35
|
+
_element("item") // expand element marked with item
|
36
|
+
end
|
37
|
+
_buf << "
|
38
|
+
</td>
|
39
|
+
<td class=\"lightshade\" align=\"right\" nowrap=\"true\">
|
40
|
+
#{album.num_photos}# #{resource.photos}#
|
41
|
+
<span id=\"if:album.num_subalbums>0\">
|
42
|
+
#{album.num_subalbums}# sub-albums
|
43
|
+
</span>
|
44
|
+
</td>
|
45
|
+
</tr>
|
46
|
+
|
47
|
+
<tr>
|
48
|
+
<td width=\"80%\">
|
49
|
+
#{album.description}#
|
50
|
+
</td>
|
51
|
+
<td width=\"20%\" align=\"right\">
|
52
|
+
<a href=\"../../index.html\" title=\"Up to top\"><img
|
53
|
+
src=\"../top.gif\" border=\"0\" width=\"15\" height=\"15\"
|
54
|
+
alt=\"Top\"></a>
|
55
|
+
|
56
|
+
<a href=\"../index.html\" title=\"Up to parent\"><img
|
57
|
+
src=\"../up.gif\" border=\"0\" width=\"15\" height=\"15\"
|
58
|
+
alt=\"Up\"></a>
|
59
|
+
|
60
|
+
</td>
|
61
|
+
</tr>
|
62
|
+
</table>
|
63
|
+
<!-- End header table -->
|
64
|
+
</td>
|
65
|
+
</tr>
|
66
|
+
|
67
|
+
<!-- thumbnails header table -->\n";
|
68
|
+
if album.leaves.length>0 then
|
69
|
+
_buf << " <tr>
|
70
|
+
<td>
|
71
|
+
<!-- begin thumbnails header table -->
|
72
|
+
<table border=\"0\" cellspacing=\"0\" cellpadding=\"3\" width=\"100%\">
|
73
|
+
<tr>
|
74
|
+
<td class=\"shade\" align=\"left\"><b>#{resource.thumbnails}#</b></td>
|
75
|
+
<td class=\"shade\" align=\"right\"> </td>
|
76
|
+
</tr>
|
77
|
+
</table>
|
78
|
+
<!-- end thumbnails header table -->
|
79
|
+
</td>
|
80
|
+
</tr>\n";
|
81
|
+
end
|
82
|
+
_buf << "
|
83
|
+
<!-- thumbnails body -->\n";
|
84
|
+
if album.leaves.length>0 then
|
85
|
+
_buf << " <tr>
|
86
|
+
<td align=\"center\">
|
87
|
+
<!-- begin thumbnail table -->
|
88
|
+
<table border=\"0\" cellspacing=\"5\" cellpadding=\"2\">
|
89
|
+
\n";
|
90
|
+
col = 1
|
91
|
+
for photo in album.leaves
|
92
|
+
if col == 1
|
93
|
+
_buf << " <tr align=\"left\" valign=\"bottom\">\n";
|
94
|
+
end
|
95
|
+
@cont
|
96
|
+
col += 1;
|
97
|
+
if col == 7
|
98
|
+
col = 1
|
99
|
+
_buf << " </tr>\n";
|
100
|
+
end
|
101
|
+
end
|
102
|
+
_buf << "
|
103
|
+
</table>
|
104
|
+
<!-- end thumbnail table -->
|
105
|
+
</td>
|
106
|
+
</tr>\n";
|
107
|
+
end
|
108
|
+
_buf << "
|
109
|
+
<!-- subalbums header -->
|
110
|
+
<tr id=\"if:album.subalbums.length>0\">
|
111
|
+
<td>
|
112
|
+
<!-- begin subalbums header table -->
|
113
|
+
<table border=\"0\" cellspacing=\"0\" cellpadding=\"3\" width=\"100%\">
|
114
|
+
<tr>
|
115
|
+
<td class=\"shade\"><b>#{resource.subalbums}#</b></td>
|
116
|
+
</tr>
|
117
|
+
</table>
|
118
|
+
<!-- end header table -->
|
119
|
+
</td>
|
120
|
+
</tr>
|
121
|
+
|
122
|
+
<!-- sub-albums body -->
|
123
|
+
<tr id=\"if:album.subalbums.length>0\">
|
124
|
+
<td>
|
125
|
+
<!-- begin sub-album table -->
|
126
|
+
<table border=\"0\" cellspacing=\"5\" cellpadding=\"2\" width=\"650\">
|
127
|
+
<tr id=\"Foreach:subalbum=album.subalbums\">
|
128
|
+
<td class=\"indexthumb\">
|
129
|
+
<a href=\"#{relroot + subalbum.pageurl}#\"
|
130
|
+
title=\"#{subalbum.title}#\"><img
|
131
|
+
src=\"#{relroot + subalbum.defaultphoto.thumb.url}#\"
|
132
|
+
alt=\"#{subalbum.defaultphoto.title}#\"
|
133
|
+
border=\"1\"></a>
|
134
|
+
</td>
|
135
|
+
<td>
|
136
|
+
<table width=\"100%\">
|
137
|
+
<tr>
|
138
|
+
<td>
|
139
|
+
<a href=\"#{relroot + subalbum.pageurl}#\">#{subalbum.title}#</a>
|
140
|
+
</td>
|
141
|
+
<td align=\"right\" width=\"40%\">
|
142
|
+
#{subalbum.num_photos}# photos
|
143
|
+
<span id=\"if:subalbum.num_subalbums>0\">
|
144
|
+
, #{subalbum.num_subalbums}# sub-albums
|
145
|
+
</span>
|
146
|
+
</td>
|
147
|
+
</tr>
|
148
|
+
<tr>
|
149
|
+
<td>#{subalbum.description}#</td>
|
150
|
+
<td> </td>
|
151
|
+
</tr>
|
152
|
+
</table>
|
153
|
+
</td>
|
154
|
+
</tr>
|
155
|
+
</table>
|
156
|
+
<!-- end sub-album table -->
|
157
|
+
</td>
|
158
|
+
</tr>
|
159
|
+
|
160
|
+
<!-- filler -->
|
161
|
+
|
162
|
+
</table>
|
163
|
+
|
164
|
+
</body>
|
165
|
+
</html>
|
166
|
+
\n";
|
167
|
+
; _buf
|
168
|
+
end#proc
|
169
|
+
|
170
|
+
module_function
|
171
|
+
def expand_album_page(context={})
|
172
|
+
if context.is_a?(Hash)
|
173
|
+
hash = context
|
174
|
+
context = Object.new
|
175
|
+
hash.each { |key, val| context.instance_variable_set("@#{key}", val) }
|
176
|
+
end
|
177
|
+
proc_obj = @@proc_table['album_page']
|
178
|
+
context.instance_eval(&proc_obj)
|
179
|
+
end
|
180
|
+
|
181
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
module View
|
2
|
+
|
3
|
+
(@@proc_table ||= {})['slideshow_page'] = proc do
|
4
|
+
_buf = ""; _buf << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
|
5
|
+
<html>
|
6
|
+
<head>
|
7
|
+
<title>#{album.title}#</title>
|
8
|
+
<link rel=\"stylesheet\" type=\"text/css\" href=\"#{relroot}#data/style.css\">
|
9
|
+
|
10
|
+
<script LANGUAGE=\"JavaScript\">
|
11
|
+
<!--
|
12
|
+
|
13
|
+
// ----- getParams
|
14
|
+
|
15
|
+
function getParams()
|
16
|
+
{
|
17
|
+
var idx = document.URL.indexOf(\"?\");
|
18
|
+
var params = new Array();
|
19
|
+
if (idx != -1) {
|
20
|
+
var pairs =
|
21
|
+
document.URL.substring( idx + 1, document.URL.lenght ).split(\"&\");
|
22
|
+
for( var i = 0; i < pairs.length; i++ ) {
|
23
|
+
nomeVal = pairs[ i ].split(\"=\");
|
24
|
+
params[ nomeVal[0] ] = nomeVal[1];
|
25
|
+
}
|
26
|
+
}
|
27
|
+
return params;
|
28
|
+
}
|
29
|
+
|
30
|
+
|
31
|
+
// ----- slide show
|
32
|
+
|
33
|
+
var rotate_delay = 5000; // delay in milliseconds (5000 = 5 secs)
|
34
|
+
current = 0;
|
35
|
+
|
36
|
+
// change displayed image
|
37
|
+
function change()
|
38
|
+
{
|
39
|
+
current = document.slideform.slide.selectedIndex;
|
40
|
+
document.images.show.src =
|
41
|
+
\"#{relroot}#images_640x480/img_\" +
|
42
|
+
document.slideform.slide[ current ].value
|
43
|
+
+ \".jpg\";
|
44
|
+
}
|
45
|
+
|
46
|
+
function next()
|
47
|
+
{
|
48
|
+
if ( document.slideform.slide[ current+1 ] ) {
|
49
|
+
document.slideform.slide.selectedIndex = ++current;
|
50
|
+
change();
|
51
|
+
} else {
|
52
|
+
first();
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
function previous()
|
57
|
+
{
|
58
|
+
if ( current-1 >= 0 ) {
|
59
|
+
document.slideform.slide.selectedIndex = --current;
|
60
|
+
change();
|
61
|
+
} else {
|
62
|
+
last();
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
function first()
|
67
|
+
{
|
68
|
+
current = 0;
|
69
|
+
document.slideform.slide.selectedIndex = 0;
|
70
|
+
change();
|
71
|
+
}
|
72
|
+
|
73
|
+
function last()
|
74
|
+
{
|
75
|
+
current = document.slideform.slide.length-1;
|
76
|
+
document.slideform.slide.selectedIndex = current;
|
77
|
+
change();
|
78
|
+
}
|
79
|
+
|
80
|
+
function ap(text)
|
81
|
+
{
|
82
|
+
document.slideform.slidebutton.value = (text == \"Stop\") ? \"Start\" : \"Stop\";
|
83
|
+
rotate();
|
84
|
+
}
|
85
|
+
|
86
|
+
function rotate()
|
87
|
+
{
|
88
|
+
if (document.slideform.slidebutton.value == \"Stop\") {
|
89
|
+
current = (current == document.slideform.slide.length-1) ? 0 : current+1;
|
90
|
+
document.slideform.slide.selectedIndex = current;
|
91
|
+
change();
|
92
|
+
window.setTimeout(\"rotate()\", rotate_delay);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
function select( photokey )
|
97
|
+
{
|
98
|
+
var i = 0;
|
99
|
+
while( i < document.slideform.slide.length &&
|
100
|
+
photokey != document.slideform.slide[ i ].value ) {
|
101
|
+
i++;
|
102
|
+
}
|
103
|
+
if( i < document.slideform.slide.length ) {
|
104
|
+
document.slideform.slide.selectedIndex = i;
|
105
|
+
change();
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
// -->
|
110
|
+
</script>
|
111
|
+
</head>
|
112
|
+
|
113
|
+
|
114
|
+
<body>
|
115
|
+
|
116
|
+
|
117
|
+
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"650\" align=\"center\">
|
118
|
+
<!-- album title -->
|
119
|
+
<tr>
|
120
|
+
<td class=\"shade\" align=\"center\" colspan=\"2\">
|
121
|
+
<span class=\"title\">#{album.title}#</span>
|
122
|
+
</td>
|
123
|
+
</tr>
|
124
|
+
|
125
|
+
<!-- description + navigation buttons -->
|
126
|
+
<tr>
|
127
|
+
<td align=\"left\">
|
128
|
+
|
129
|
+
<form name=\"slideform\">
|
130
|
+
<select name=\"slide\" onChange=\"change();\">
|
131
|
+
<option id=\"Foreach:photo=album.leaves\" value=\"#{photo.key}#\">#{photo.title}#</option>
|
132
|
+
</select>
|
133
|
+
<input type=button onClick=\"first();\" value=\"|<<\" title=\"Beginning\">
|
134
|
+
|
135
|
+
<a title=\"Prev photo\" href=\"javascript:previous()\"><img
|
136
|
+
src=\"#{relroot}#data/left.gif\" border=\"0\" width=\"15\" height=\"15\"
|
137
|
+
alt=\"Prev\"></a>
|
138
|
+
|
139
|
+
<input type=button name=\"slidebutton\" onClick=\"ap(this.value);\" value=\"Start\" title=\"AutoPlay\">
|
140
|
+
|
141
|
+
<a title=\"Next photo\" href=\"javascript:next();\"><img
|
142
|
+
src=\"#{relroot }#data/right.gif\" border=\"0\" width=\"15\" height=\"15\" alt=\"Next\"></a>
|
143
|
+
|
144
|
+
<input type=button onClick=\"last();\" value=\">>|\" title=\"End\">
|
145
|
+
</form>
|
146
|
+
</td>
|
147
|
+
<td align=\"right\">
|
148
|
+
<a href=\"#{relroot}#/html/index.html\" title=\"Up to top\"><img src=\"#{relroot}#data/top.gif\"
|
149
|
+
border=\"0\" width=\"15\" height=\"15\" alt=\"Top\"></a>
|
150
|
+
<a title=\"Up to album\" href=\"index.html\"><img
|
151
|
+
src=\"#{relroot}#data/up.gif\" border=\"0\" width=\"15\" height=\"15\" alt=\"Up\"></a>
|
152
|
+
</td>
|
153
|
+
</tr>
|
154
|
+
|
155
|
+
<!-- image -->
|
156
|
+
<tr>
|
157
|
+
<td colspan=\"2\" align=\"center\">
|
158
|
+
<img name=\"show\" border=\"0\">
|
159
|
+
</td>
|
160
|
+
</tr>
|
161
|
+
|
162
|
+
</table>
|
163
|
+
|
164
|
+
<script language=\"javascript\">
|
165
|
+
params = getParams();
|
166
|
+
photokey = unescape(params[\"photokey\"]);
|
167
|
+
// document.write(\"photokey = \" + photokey + \"<br>\");
|
168
|
+
select( photokey );
|
169
|
+
</script>
|
170
|
+
|
171
|
+
</body>
|
172
|
+
</html>\n";
|
173
|
+
; _buf
|
174
|
+
end#proc
|
175
|
+
|
176
|
+
module_function
|
177
|
+
def expand_slideshow_page(context={})
|
178
|
+
if context.is_a?(Hash)
|
179
|
+
hash = context
|
180
|
+
context = Object.new
|
181
|
+
hash.each { |key, val| context.instance_variable_set("@#{key}", val) }
|
182
|
+
end
|
183
|
+
proc_obj = @@proc_table['slideshow_page']
|
184
|
+
context.instance_eval(&proc_obj)
|
185
|
+
end
|
186
|
+
|
187
|
+
end
|