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,98 @@
|
|
1
|
+
class SkinEngine
|
2
|
+
|
3
|
+
attr_reader :skin
|
4
|
+
attr_reader :image_strategies
|
5
|
+
attr_accessor :album_dirname
|
6
|
+
|
7
|
+
def initialize(skin)
|
8
|
+
@skin = skin
|
9
|
+
@image_strategies = {
|
10
|
+
"thumb" => ScaledImageStrategy.new( "100x100", 100, 100, 75 ),
|
11
|
+
"default" => ScaledImageStrategy.new( "640x480", 640, 480, 75 ) }
|
12
|
+
end
|
13
|
+
|
14
|
+
def copy_skin_res
|
15
|
+
skin_res_dir = File.join( skin.skin_dirname, "res" )
|
16
|
+
album_res_dir = File.join(@album_dirname, "res")
|
17
|
+
if File.directory?( skin_res_dir )
|
18
|
+
copy_dir( skin_res_dir, album_res_dir, /(.gif$)|(.css$)|(.js$)|(.png$)/ )
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def configure_skin( xml_skin )
|
23
|
+
end
|
24
|
+
|
25
|
+
def write_xml( xml_skins)
|
26
|
+
skin_el = xml_skins.add_element( "skin" )
|
27
|
+
skin_el.attributes["name"] = skin.skin_name
|
28
|
+
xml_is = skin_el.add_element( "image_stategies" )
|
29
|
+
@image_strategies.each_pair{ |name,is|
|
30
|
+
is.write_xml( xml_is )
|
31
|
+
}
|
32
|
+
# xml_res = skin.add_element( "resources")
|
33
|
+
# @resources.each{ |r|
|
34
|
+
# xml_r = xml_res.add_element("resource")
|
35
|
+
# xml_r.attributes[r.name] = r.value
|
36
|
+
# }
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
def create( albumTree )
|
41
|
+
ralbum_verbose(1, "skin create #{skin.skin_name}")
|
42
|
+
copy_skin_res
|
43
|
+
|
44
|
+
# TODO: aggiungere parametro di configurazione per dire se si vuole una sottodirectory per lo skin
|
45
|
+
albumTree.prefix_path = skin.skin_name + "/"
|
46
|
+
|
47
|
+
|
48
|
+
# visitor = PrintTreeNodeVisitor2.new
|
49
|
+
# albumTree.accept( visitor )
|
50
|
+
|
51
|
+
# exit
|
52
|
+
|
53
|
+
visitor = CallbackTreeNodeVisitor.new
|
54
|
+
visitor.onEnterTreeNode { |album| self.create_album_page( album ) }
|
55
|
+
visitor.onVisitLeafNode { |image| self.create_image_page( image ) }
|
56
|
+
albumTree.accept( visitor )
|
57
|
+
|
58
|
+
# create_tree_page( album )
|
59
|
+
end
|
60
|
+
|
61
|
+
#
|
62
|
+
# create album page
|
63
|
+
#
|
64
|
+
def create_album_page( albumNode )
|
65
|
+
page = render_album_page( albumNode )
|
66
|
+
album_dirname = File.join( @album_dirname, albumNode.path_from_root )
|
67
|
+
FileUtils.mkpath( album_dirname ) unless File.exist?( album_dirname )
|
68
|
+
outpath = File.join( album_dirname, "index.html" )
|
69
|
+
ralbum_verbose(2, "Writing #{album_dirname}" )
|
70
|
+
File.open( outpath , "w" ) { |f|
|
71
|
+
f.puts page
|
72
|
+
}
|
73
|
+
end
|
74
|
+
|
75
|
+
def create_image_page( imagePoolNode )
|
76
|
+
page = render_image_page(imagePoolNode)
|
77
|
+
outpath = File.join( @album_dirname, imagePoolNode.parent.path_from_root, imagePoolNode.defaultImageFile.pageurl )
|
78
|
+
ralbum_verbose( 2, " Writing #{imagePoolNode.defaultImageFile.pageurl} " )
|
79
|
+
File.open( outpath , "w" ) { |f|
|
80
|
+
f.puts page
|
81
|
+
}
|
82
|
+
end
|
83
|
+
|
84
|
+
# def create_tree_page( album )
|
85
|
+
# require "inc/skins/#{skin.skin_name}/tree_page"
|
86
|
+
# args = {
|
87
|
+
# :array => Array,
|
88
|
+
# :rootalbum => album,
|
89
|
+
# }
|
90
|
+
# page = view_tree_page args
|
91
|
+
# outpath = @albums_dir + File::Separator + "tree.html"
|
92
|
+
# puts " Writing in #{outpath}"
|
93
|
+
# File.open( outpath , "w" ) { |f|
|
94
|
+
# f.puts page
|
95
|
+
# }
|
96
|
+
# end
|
97
|
+
|
98
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# stdlib
|
2
|
+
require 'rubygems'
|
3
|
+
require 'tree_visitor'
|
4
|
+
require 'erb'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
# ralbum
|
8
|
+
# require 'tree_visitor/visitor/print_node_visitor2'
|
9
|
+
require 'ralbum/options'
|
10
|
+
require 'ralbum/skin'
|
11
|
+
require 'ralbum/resource'
|
12
|
+
require 'ralbum/image_strategy'
|
13
|
+
|
14
|
+
class ErbSkinEngine < SkinEngine
|
15
|
+
|
16
|
+
def initialize( skin )
|
17
|
+
super( skin )
|
18
|
+
end
|
19
|
+
|
20
|
+
def render_album_page(albumNode)
|
21
|
+
template_filename = File.join($RALBUM_HOME, "lib/ralbum/skins/#{skin.skin_name}/template/album_page.rhtml" )
|
22
|
+
template = ERB.new( File.read(template_filename) )
|
23
|
+
resource = Resource.new
|
24
|
+
album = albumNode
|
25
|
+
template.result(binding)
|
26
|
+
end
|
27
|
+
|
28
|
+
def render_image_page(imagePoolNode)
|
29
|
+
template_filename = File.join($RALBUM_HOME, "lib/ralbum/skins/#{skin.skin_name}/template/image_page.rhtml" )
|
30
|
+
template = ERB.new( File.read(template_filename) )
|
31
|
+
image = imagePoolNode.image("default")
|
32
|
+
template.result(binding)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# stdlib
|
2
|
+
require 'rubygems'
|
3
|
+
require 'tree_visitor'
|
4
|
+
require 'erb'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
# ralbum
|
8
|
+
require 'gf_utility/kwartzhelper'
|
9
|
+
# require 'tree_visitor/visitor/print_node_visitor2'
|
10
|
+
require 'ralbum/options'
|
11
|
+
require 'ralbum/skin'
|
12
|
+
require 'ralbum/resource'
|
13
|
+
require 'ralbum/image_strategy'
|
14
|
+
|
15
|
+
class KwartzSkinEngine < SkinEngine
|
16
|
+
|
17
|
+
def initialize( skin )
|
18
|
+
super( skin )
|
19
|
+
compile_skin
|
20
|
+
end
|
21
|
+
|
22
|
+
def compile_skin
|
23
|
+
ralbum_verbose(1, "compile kwartz skin #{skin.skin_name}")
|
24
|
+
skin_template_dir = File.join( skin.skin_dirname, "template" )
|
25
|
+
skin_template_include = File.join( skin.skin_dirname, "inc" )
|
26
|
+
skin_template_out = File.join( skin.skin_dirname, "out" )
|
27
|
+
|
28
|
+
if not File.directory?(skin_template_include)
|
29
|
+
skin_template_include = nil
|
30
|
+
end
|
31
|
+
if not File.directory?(skin_template_out)
|
32
|
+
FileUtils.mkpath( skin_template_out )
|
33
|
+
end
|
34
|
+
kwartz_compile( skin_template_dir, skin_template_include, skin_template_out )
|
35
|
+
end
|
36
|
+
|
37
|
+
def render_album_page(albumNode)
|
38
|
+
require "ralbum/skins/#{skin.skin_name}/out/album_page"
|
39
|
+
args = {
|
40
|
+
:resource => Resource.new,
|
41
|
+
:album => albumNode,
|
42
|
+
}
|
43
|
+
View.expand_album_page( args )
|
44
|
+
end
|
45
|
+
|
46
|
+
def render_image_page(imagePoolNode)
|
47
|
+
require "ralbum/skins/#{skin.skin_name}/out/image_page"
|
48
|
+
args = {
|
49
|
+
:image => imagePoolNode.image("default"),
|
50
|
+
}
|
51
|
+
View.expand_image_page( args )
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# ralbum
|
2
|
+
require 'ralbum/options'
|
3
|
+
require 'ralbum/skin'
|
4
|
+
|
5
|
+
class SkinManager
|
6
|
+
|
7
|
+
#
|
8
|
+
# +skins_dirname+: directory contains all the skin in subdirectory
|
9
|
+
#
|
10
|
+
def initialize( skins_dirname = nil )
|
11
|
+
if skins_dirname
|
12
|
+
@skins_dirname = skins_dirname
|
13
|
+
else
|
14
|
+
@skins_dirname = File.join( $RALBUM_HOME, "lib", "ralbum", "skins" )
|
15
|
+
end
|
16
|
+
|
17
|
+
@skins = {}
|
18
|
+
Dir.new( @skins_dirname).entries.each { |dir|
|
19
|
+
next if dir =~ /^\./ # if the directory starts with dot ignore
|
20
|
+
@skins[dir] = Skin.new(dir, File.expand_path(File.join(@skins_dirname, dir)) )
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def has_skin?( skin_name )
|
25
|
+
@skins.has_key?( skin_name )
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_skin( skin_name )
|
29
|
+
if not has_skin?( skin_name )
|
30
|
+
raise RAlbumException.new, "Unknow skin #{skin_name}"
|
31
|
+
end
|
32
|
+
@skins[skin_name]
|
33
|
+
end
|
34
|
+
|
35
|
+
# TODO: better format
|
36
|
+
def describe_skins
|
37
|
+
str = ""
|
38
|
+
@skins.keys.sort.each do |skin_name|
|
39
|
+
skin = @skins[skin_name]
|
40
|
+
s = skin_name + "\t by '" + skin.skin_author + "' " + skin.skin_description
|
41
|
+
str += s + "\n"
|
42
|
+
end
|
43
|
+
str
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Generator
|
2
|
+
class CGISkin < Skin
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
super( "cgi" )
|
6
|
+
# compile htmlskin
|
7
|
+
HTMLTheme.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def copy_skin_res( albums_dir )
|
11
|
+
skin_data_dir = File.join( $RUBYALBUM_HOME, "inc", "skins_data", @skin_name )
|
12
|
+
outdir = albums_dir + File::Separator + "cgi"
|
13
|
+
copy_dir( skin_data_dir, outdir, /.cgi$|.rb$/ )
|
14
|
+
html_skin_dir = File.join( $RUBYALBUM_HOME, "inc", "skins", "html" )
|
15
|
+
copy_dir( html_skin_dir, outdir, /.rb$/ )
|
16
|
+
copy_dir( Catalog.instance.catalog_dir, outdir, /.txt$/ )
|
17
|
+
# res = File.join( $RUBYALBUM_HOME, "inc", "generator", "resource.rb" )
|
18
|
+
# copy_file( res, outdir )
|
19
|
+
end
|
20
|
+
|
21
|
+
def create( albums_dir, album )
|
22
|
+
copy_skin_res( albums_dir )
|
23
|
+
# nothing!
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,235 @@
|
|
1
|
+
require "singleton"
|
2
|
+
|
3
|
+
#----------------------------------------
|
4
|
+
#
|
5
|
+
|
6
|
+
class Album
|
7
|
+
attr_accessor :title, :description
|
8
|
+
attr_accessor :photos
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@photos = []
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_photo( photo )
|
15
|
+
@photos << photo
|
16
|
+
photo.album = self
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Photo
|
21
|
+
attr_accessor :title, :description
|
22
|
+
attr_accessor :thumb, :default
|
23
|
+
attr_accessor :album
|
24
|
+
end
|
25
|
+
|
26
|
+
class Image
|
27
|
+
attr_accessor :photo, :filename
|
28
|
+
attr_accessor :size, :width, :height
|
29
|
+
attr_accessor :url
|
30
|
+
def initialize( photo, filename )
|
31
|
+
@photo, @filename = photo, filename
|
32
|
+
@url = filename
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class Albums
|
37
|
+
|
38
|
+
include Singleton
|
39
|
+
|
40
|
+
attr_reader :albums
|
41
|
+
|
42
|
+
def model
|
43
|
+
album = Album.new
|
44
|
+
album.title = "Monte Mario"
|
45
|
+
album.description = "Una passeggiata in un tardo pomeriggio"
|
46
|
+
|
47
|
+
|
48
|
+
#----------------------------------------
|
49
|
+
# 1
|
50
|
+
|
51
|
+
photo = Photo.new
|
52
|
+
photo.title = "Torre dell'osservatorio"
|
53
|
+
photo.description = "Descrizione"
|
54
|
+
|
55
|
+
thumb = Image.new( photo, "../images_100x100/img_0000.jpg" )
|
56
|
+
thumb.size = 10
|
57
|
+
thumb.width = 100
|
58
|
+
thumb.height = 100
|
59
|
+
|
60
|
+
default = Image.new( photo, "../images_640x480/img_0000.jpg" )
|
61
|
+
default.size = 20
|
62
|
+
default.width = 640
|
63
|
+
default.height = 480
|
64
|
+
|
65
|
+
photo.thumb = thumb
|
66
|
+
photo.default = default
|
67
|
+
|
68
|
+
album.add_photo( photo )
|
69
|
+
|
70
|
+
|
71
|
+
#----------------------------------------
|
72
|
+
# 2
|
73
|
+
|
74
|
+
photo = Photo.new
|
75
|
+
photo.title = "Seconda foto"
|
76
|
+
|
77
|
+
thumb = Image.new( photo, "../images_100x100/img_0001.jpg" )
|
78
|
+
thumb.size = 10
|
79
|
+
thumb.width = 100
|
80
|
+
thumb.height = 100
|
81
|
+
|
82
|
+
default = Image.new( photo, "../images_640x480/img_0001.jpg" )
|
83
|
+
default.size = 20
|
84
|
+
default.width = 640
|
85
|
+
default.height = 480
|
86
|
+
|
87
|
+
photo.thumb = thumb
|
88
|
+
photo.default = default
|
89
|
+
|
90
|
+
album.add_photo( photo )
|
91
|
+
|
92
|
+
|
93
|
+
#----------------------------------------
|
94
|
+
# 3
|
95
|
+
|
96
|
+
photo = Photo.new
|
97
|
+
photo.title = "Terza foto"
|
98
|
+
|
99
|
+
thumb = Image.new( photo, "../images_100x100/img_0002.jpg" )
|
100
|
+
thumb.size = 10
|
101
|
+
thumb.width = 100
|
102
|
+
thumb.height = 100
|
103
|
+
|
104
|
+
default = Image.new( photo, "../images_640x480/img_0002.jpg" )
|
105
|
+
default.size = 20
|
106
|
+
default.width = 640
|
107
|
+
default.height = 480
|
108
|
+
|
109
|
+
photo.thumb = thumb
|
110
|
+
photo.default = default
|
111
|
+
|
112
|
+
album.add_photo( photo )
|
113
|
+
|
114
|
+
#----------------------------------------
|
115
|
+
# 4
|
116
|
+
|
117
|
+
photo = Photo.new
|
118
|
+
photo.title = "Terza foto"
|
119
|
+
|
120
|
+
thumb = Image.new( photo, "../images_100x100/img_0003.jpg" )
|
121
|
+
thumb.size = 10
|
122
|
+
thumb.width = 100
|
123
|
+
thumb.height = 100
|
124
|
+
|
125
|
+
|
126
|
+
default = Image.new( photo, "../images_640x480/img_0003.jpg" )
|
127
|
+
default.size = 20
|
128
|
+
default.width = 640
|
129
|
+
default.height = 480
|
130
|
+
|
131
|
+
photo.thumb = thumb
|
132
|
+
photo.default = default
|
133
|
+
|
134
|
+
album.add_photo( photo )
|
135
|
+
|
136
|
+
#----------------------------------------
|
137
|
+
# 5
|
138
|
+
|
139
|
+
photo = Photo.new
|
140
|
+
photo.title = "Terza foto"
|
141
|
+
|
142
|
+
thumb = Image.new( photo, "../images_100x100/img_0004.jpg" )
|
143
|
+
thumb.size = 10
|
144
|
+
thumb.width = 100
|
145
|
+
thumb.height = 100
|
146
|
+
|
147
|
+
|
148
|
+
default = Image.new( photo, "../images_640x480/img_0004.jpg" )
|
149
|
+
default.size = 20
|
150
|
+
default.width = 640
|
151
|
+
default.height = 480
|
152
|
+
|
153
|
+
photo.thumb = thumb
|
154
|
+
photo.default = default
|
155
|
+
|
156
|
+
album.add_photo( photo )
|
157
|
+
|
158
|
+
#----------------------------------------
|
159
|
+
# 6
|
160
|
+
|
161
|
+
photo = Photo.new
|
162
|
+
photo.title = "Terza foto"
|
163
|
+
|
164
|
+
thumb = Image.new( photo, "../images_100x100/img_0005.jpg" )
|
165
|
+
thumb.size = 10
|
166
|
+
thumb.width = 100
|
167
|
+
thumb.height = 100
|
168
|
+
|
169
|
+
|
170
|
+
default = Image.new( photo, "../images_640x480/img_0005.jpg" )
|
171
|
+
default.size = 20
|
172
|
+
default.width = 640
|
173
|
+
default.height = 480
|
174
|
+
|
175
|
+
photo.thumb = thumb
|
176
|
+
photo.default = default
|
177
|
+
|
178
|
+
album.add_photo( photo )
|
179
|
+
|
180
|
+
#----------------------------------------
|
181
|
+
# 7
|
182
|
+
|
183
|
+
photo = Photo.new
|
184
|
+
photo.title = "Settima foto"
|
185
|
+
|
186
|
+
thumb = Image.new( photo, "../images_100x100/img_0006.jpg" )
|
187
|
+
thumb.size = 10
|
188
|
+
thumb.width = 100
|
189
|
+
thumb.height = 100
|
190
|
+
|
191
|
+
|
192
|
+
default = Image.new( photo, "../images_640x480/img_0006.jpg" )
|
193
|
+
default.size = 20
|
194
|
+
default.width = 640
|
195
|
+
default.height = 480
|
196
|
+
|
197
|
+
photo.thumb = thumb
|
198
|
+
photo.default = default
|
199
|
+
|
200
|
+
album.add_photo( photo )
|
201
|
+
|
202
|
+
#----------------------------------------
|
203
|
+
# 8
|
204
|
+
|
205
|
+
photo = Photo.new
|
206
|
+
photo.title = "Ottava foto"
|
207
|
+
|
208
|
+
thumb = Image.new( photo, "../images_100x100/img_0007.jpg" )
|
209
|
+
thumb.size = 10
|
210
|
+
thumb.width = 100
|
211
|
+
thumb.height = 100
|
212
|
+
|
213
|
+
|
214
|
+
default = Image.new( photo, "../images_640x480/img_0007.jpg" )
|
215
|
+
default.size = 20
|
216
|
+
default.width = 640
|
217
|
+
default.height = 480
|
218
|
+
|
219
|
+
photo.thumb = thumb
|
220
|
+
photo.default = default
|
221
|
+
|
222
|
+
album.add_photo( photo )
|
223
|
+
|
224
|
+
#---------------------------------------
|
225
|
+
#
|
226
|
+
|
227
|
+
@albums = []
|
228
|
+
@albums << album
|
229
|
+
end
|
230
|
+
|
231
|
+
end
|
232
|
+
|
233
|
+
Albums.instance.model
|
234
|
+
|
235
|
+
|