gf-ralbum 0.0.2 → 0.0.5
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/VERSION +1 -0
- data/bin/{ralbum.rb → ralbum} +1 -1
- data/example/example.sh +2 -1
- data/example/test_jalbum_phototree/jalbum-settings.jap +321 -0
- data/example/test_jalbum_phototree/src/albumfiles.txt +9 -0
- data/example/test_jalbum_phototree/src/comments.properties +0 -0
- data/example/test_jalbum_phototree/src/flowers/albumfiles.txt +14 -0
- data/example/test_jalbum_phototree/src/meta.properties +2 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/album.xml +0 -0
- data/example/test_rubyphoto_phototree/flowers/IMG_1469.wt.jpg +0 -0
- data/example/test_rubyphoto_phototree/flowers/IMG_2291.jpg +0 -0
- data/example/test_rubyphoto_phototree/flowers/IMG_2598.jpg +0 -0
- data/example/test_rubyphoto_phototree/flowers/IMG_3068.jpg +0 -0
- data/example/test_rubyphoto_phototree/flowers/IMG_3323.jpg +0 -0
- data/example/test_rubyphoto_phototree/flowers/IMG_3348.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/r_photo01.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/r_photo01.jpg.xml +0 -0
- data/example/{test_phototree/catalog_data → test_rubyphoto_phototree/ralbum}/md5_to_key.yaml +0 -0
- data/example/{test_phototree/catalog_data → test_rubyphoto_phototree/ralbum}/md5_to_key.yaml.test +0 -0
- data/example/{test_phototree/catalog_data → test_rubyphoto_phototree/ralbum}/project.xml +206 -3
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/album.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo01.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo01.jpg.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo02.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo02.jpg.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo03.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo03.jpg.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo04.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo04.jpg.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/album.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo01.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo01.jpg.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo02.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo02.jpg.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo03.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo03.jpg.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo04.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo04.jpg.xml +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo05.jpg +0 -0
- data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo05.jpg.xml +0 -0
- data/lib/ralbum.rb +9 -5
- data/lib/ralbum/album_tree/album.rb +74 -0
- data/lib/ralbum/album_tree/generate_album_tree_node_visitor.rb +73 -0
- data/lib/ralbum/album_tree/image_file.rb +88 -0
- data/lib/ralbum/{image_pool.rb → album_tree/image_pool.rb} +16 -4
- data/lib/ralbum/catalog.rb +7 -7
- data/lib/ralbum/cli/cli_ralbum.rb +66 -25
- data/lib/ralbum/image_strategies/copy_image_strategy.rb +16 -0
- data/lib/ralbum/image_strategies/linked_image_strategy.rb +18 -0
- data/lib/ralbum/image_strategies/scaled_image_strategy.rb +52 -0
- data/lib/ralbum/image_strategies/sepia_scaled_image_strategy.rb +50 -0
- data/lib/{ralbum-common → ralbum}/object_with_properties.rb +0 -0
- data/lib/{ralbum-common → ralbum}/object_with_validation.rb +0 -0
- data/lib/ralbum/photo_tree/jalbum_photo_tree.rb +83 -0
- data/lib/ralbum/photo_tree/photo_file.rb +149 -0
- data/lib/ralbum/photo_tree/photo_tree_item.rb +68 -0
- data/lib/ralbum/{photo_tree_node.rb → photo_tree/photo_tree_node.rb} +16 -13
- data/lib/ralbum/{photo_tree_builder.rb → photo_tree/rubyphoto_photo_tree.rb} +64 -46
- data/lib/ralbum/project.rb +48 -12
- data/lib/ralbum/skin.rb +34 -27
- data/lib/ralbum/skin_engine.rb +32 -17
- data/lib/ralbum/skin_engines/erb_skin_engine.rb +2 -5
- data/lib/ralbum/skin_engines/kwartz_skin_engine.rb +6 -9
- data/lib/ralbum/skin_manager.rb +11 -2
- data/lib/ralbum/skins/cgi/cgi_skin.rb +21 -23
- data/lib/ralbum/skins/cgi/res/model.rb +30 -32
- data/lib/ralbum/skins/gfold/inc/menu_bottom.html +53 -53
- data/lib/ralbum/skins/gfold/inc/menu_top.html +71 -71
- data/lib/ralbum/skins/gfold/inc/page_footer.html +28 -28
- data/lib/ralbum/skins/gfold/out/album_page.rb +316 -316
- data/lib/ralbum/skins/gfold/out/image_page.rb +231 -231
- data/lib/ralbum/skins/gfold/out/tree_page.rb +96 -96
- data/lib/ralbum/skins/gfold/res/prototype.js +3277 -3277
- data/lib/ralbum/skins/gfold/template/album_page.html +161 -161
- data/lib/ralbum/skins/gfold/template/album_page.plogic +127 -127
- data/lib/ralbum/skins/gfold/template/image_page.html +91 -91
- data/lib/ralbum/skins/gfold/template/image_page.plogic +70 -70
- data/lib/ralbum/skins/gfold/template/tree_page.html +79 -79
- data/lib/ralbum/skins/gfold/template/tree_page.plogic +45 -45
- data/lib/ralbum/skins/js/out/album_page.rb +2 -2
- data/lib/ralbum/skins/js/out/tree_page.rb +18 -17
- data/lib/ralbum/skins/js/template/album_page.html +2 -2
- data/lib/ralbum/skins/js/template/tree_page.html +1 -1
- data/lib/ralbum/skins/test_erb/template/album_page.rhtml +22 -0
- data/lib/ralbum/skins/test_erb/template/image_page.rhtml +44 -0
- data/lib/ralbum/tasks/compile_skins.rb +8 -0
- data/test/ralbum/cli/tc_cli_ralbum.rb +35 -0
- data/test/ralbum/image_strategies/tc_scaled_image_strategy.rb +18 -0
- data/test/ralbum/image_strategies/tc_sepia_scaled_image_strategy.rb +18 -0
- data/test/ralbum/photo_tree/tc_jalbum_photo_tree.rb +39 -0
- data/test/ralbum/photo_tree/tc_photo_file.rb +13 -0
- data/test/ralbum/{tc_01_photo_tree.rb → photo_tree/tc_photo_tree.rb} +10 -12
- data/test/ralbum/photo_tree/tc_rubyalbum_photo_tree.rb +20 -0
- data/test/ralbum/tc_album.rb +55 -0
- data/test/ralbum/tc_catalog.rb +8 -4
- data/test/ralbum/tc_image_pool.rb +37 -0
- data/test/ralbum/{tc_05_kwartz_skin_engine.rb → tc_kwartz_skin_engine.rb} +1 -1
- data/test/ralbum/{tc_04_skin_manager.rb → tc_skin_manager.rb} +8 -3
- data/test/ralbum/test_helper.rb +16 -1
- data/test_data/ralbum/test_data/is_test/dummy.txt +0 -0
- metadata +78 -81
- data/bin/ralbum-JPG2jpg.rb +0 -90
- data/bin/ralbum-compile_skins.rb +0 -18
- data/bin/ralbum-myconv.rb +0 -81
- data/bin/ralbum-readexif.rb +0 -18
- data/bin/ralbum-reorder.rb +0 -200
- data/lib/ralbum/album.rb +0 -66
- data/lib/ralbum/generate_album_tree_node_visitor.rb +0 -60
- data/lib/ralbum/image_file.rb +0 -81
- data/lib/ralbum/image_strategy.rb +0 -143
- data/lib/ralbum/photo_tree_item.rb +0 -89
- data/test/ralbum/cli/test_cli_ralbum.rb +0 -13
- data/test/ralbum/tc_02_photo_tree_builder.rb +0 -20
- data/test/ralbum/tc_03_album.rb +0 -42
- data/test/ralbum/tc_06_image_strategy.rb +0 -21
- data/test/test_ralbum.rb +0 -14
- 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
@@ -1,7 +1,8 @@
|
|
1
|
-
# ralbum
|
2
1
|
require 'rubygems'
|
3
|
-
require '
|
4
|
-
|
2
|
+
require 'treevisitor/tree_node'
|
3
|
+
|
4
|
+
# ralbum
|
5
|
+
require 'ralbum/object_with_properties'
|
5
6
|
|
6
7
|
|
7
8
|
#
|
@@ -13,10 +14,20 @@ class PhotoTreeNode < TreeNode
|
|
13
14
|
|
14
15
|
def initialize( dirname, parentPhotoTreeNode = nil )
|
15
16
|
super( dirname, parentPhotoTreeNode )
|
16
|
-
|
17
17
|
init_object_with_properties
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
|
+
def to_s
|
21
|
+
if self['title'] and not self['title'].empty?
|
22
|
+
"'#{name}'" + ": '" + self['title'] +"'"
|
23
|
+
else
|
24
|
+
"'#{name}'"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
#############################################################################
|
29
|
+
# configurations
|
30
|
+
|
20
31
|
def write_xml( xml_el )
|
21
32
|
xml_album = xml_el.add_element( "album" )
|
22
33
|
xml_album.add_element("title").text = name
|
@@ -28,13 +39,5 @@ class PhotoTreeNode < TreeNode
|
|
28
39
|
xml_album
|
29
40
|
end
|
30
41
|
|
31
|
-
def to_str( prefix = "" )
|
32
|
-
str << ""
|
33
|
-
str += prefix + name + "\n"
|
34
|
-
str += prefix + " photoItems: "
|
35
|
-
@childs.each{ |c| str += c.name }
|
36
|
-
str
|
37
|
-
end
|
38
|
-
|
39
42
|
end
|
40
43
|
|
@@ -2,11 +2,16 @@
|
|
2
2
|
require 'rubygems'
|
3
3
|
require "rexml/document"
|
4
4
|
|
5
|
+
# treevisitor
|
6
|
+
require 'treevisitor/tree_node_visitor'
|
7
|
+
require 'treevisitor/dir_tree_walker'
|
8
|
+
require 'treevisitor/visitors/callback_tree_node_visitor2'
|
9
|
+
require 'treevisitor/visitors/callback_tree_node_visitor'
|
10
|
+
|
5
11
|
# ralbum
|
6
|
-
require '
|
7
|
-
require '
|
8
|
-
require 'ralbum/
|
9
|
-
require 'ralbum/photo_tree_node'
|
12
|
+
require 'ralbum/photo_tree/photo_tree_item'
|
13
|
+
require 'ralbum/photo_tree/photo_tree_node'
|
14
|
+
require 'ralbum/catalog'
|
10
15
|
|
11
16
|
#
|
12
17
|
# Crea un PhotoTree a partire da una
|
@@ -15,9 +20,9 @@ require 'ralbum/photo_tree_node'
|
|
15
20
|
class PhotoTreeBuilder
|
16
21
|
|
17
22
|
def run( phototree_dirname )
|
18
|
-
photoTree =
|
19
|
-
|
20
|
-
|
23
|
+
photoTree = build_photo_tree_from_directory( phototree_dirname )
|
24
|
+
read_meta_info_old_format( photoTree )
|
25
|
+
update_meta_info( photoTree )
|
21
26
|
photoTree
|
22
27
|
end
|
23
28
|
|
@@ -26,88 +31,102 @@ class PhotoTreeBuilder
|
|
26
31
|
# build photo tree senza metainfo
|
27
32
|
#
|
28
33
|
|
29
|
-
def
|
34
|
+
def build_photo_tree_from_directory( phototree_dirname )
|
30
35
|
ralbum_verbose( 1, "phototree - building phototree from #{phototree_dirname}" )
|
36
|
+
|
37
|
+
dtw = DirTreeWalker.new( phototree_dirname )
|
38
|
+
|
39
|
+
# TODO: ignorare tutti le directory che iniziano per "." questa deve essere un'opzione di DirTreeWalker
|
40
|
+
dtw.add_ignore_dir( ".svn" )
|
41
|
+
dtw.add_ignore_dir( ".csv" )
|
42
|
+
dtw.add_ignore_dir( ".git" )
|
43
|
+
|
44
|
+
dtw.add_ignore_dir( Catalog::DEFAULT_CATALOG_DIRNAME )
|
45
|
+
dtw.add_inspect_file( /.jpg/ )
|
46
|
+
dtw.add_ignore_file( /.xml/ )
|
47
|
+
dtw.add_ignore_file( /(ignore)|(orig)/ )
|
48
|
+
|
31
49
|
visitor = CallbackTreeNodeVisitor2.new
|
32
50
|
|
33
|
-
visitor.
|
51
|
+
visitor.on_enter_tree_node { |pathname, parent|
|
34
52
|
if not parent.nil?
|
35
53
|
pathname = File.basename( pathname )
|
36
54
|
end
|
37
55
|
PhotoTreeNode.new( pathname, parent )
|
38
56
|
}
|
39
57
|
|
40
|
-
visitor.
|
58
|
+
visitor.on_visit_leaf_node{ |pathname, parent|
|
41
59
|
PhotoTreeItem.new(File.basename( pathname ), parent )
|
42
60
|
}
|
43
|
-
|
44
|
-
dtw
|
45
|
-
dtw.add_ignore_dir( ".svn" )
|
46
|
-
dtw.add_ignore_dir( "catalog_data" )
|
47
|
-
dtw.add_inspect_file( /.jpg/ )
|
48
|
-
dtw.add_ignore_file( /.xml/ )
|
49
|
-
dtw.add_ignore_file( /(ignore)|(orig)/ )
|
50
|
-
|
51
|
-
photoTree = dtw.run( visitor )
|
52
|
-
# puts "------------------------------------ PhotoTree"
|
53
|
-
# photoTree.accept( PrintTreeNodeVisitor.new )
|
54
|
-
photoTree
|
61
|
+
|
62
|
+
dtw.run( visitor ).root # return a photo_tree
|
55
63
|
end
|
56
64
|
|
57
65
|
# ---------------------------------------------------------------------------------------
|
58
66
|
#
|
59
67
|
# Read Metainfo vecchio formato
|
60
68
|
#
|
61
|
-
def
|
69
|
+
def read_meta_info_old_format( photo_tree )
|
62
70
|
ralbum_verbose( 1, "phototree - reading metainfo" )
|
63
71
|
visitor = CallbackTreeNodeVisitor.new
|
64
|
-
visitor.
|
72
|
+
visitor.on_enter_tree_node { |photoTreeNode|
|
65
73
|
read_photo_tree_node_xml( photoTreeNode )
|
66
74
|
}
|
67
|
-
visitor.
|
75
|
+
visitor.on_visit_leaf_node{ |photoTreeItem|
|
68
76
|
read_photo_item_xml( photoTreeItem )
|
69
77
|
}
|
70
|
-
|
78
|
+
photo_tree.accept( visitor )
|
71
79
|
end
|
72
80
|
|
73
81
|
#
|
74
82
|
# old metainfo
|
75
83
|
#
|
76
84
|
|
77
|
-
def read_photo_item_xml(
|
78
|
-
xml_file = File.join(
|
85
|
+
def read_photo_item_xml(photo_tree_item)
|
86
|
+
xml_file = File.join( photo_tree_item.parent.path, photo_tree_item.basename + ".xml" )
|
79
87
|
|
80
88
|
if File.exist?(xml_file)
|
81
|
-
ralbum_verbose( 2, "NOTE: reading file xml for #{
|
89
|
+
ralbum_verbose( 2, "NOTE: reading file xml for #{photo_tree_item.name}" )
|
82
90
|
else
|
83
|
-
ralbum_verbose( 1, "WARNING: file xml for #{
|
91
|
+
ralbum_verbose( 1, "WARNING: file xml for #{photo_tree_item.name} not exists" )
|
84
92
|
return
|
85
93
|
end
|
86
94
|
|
87
95
|
doc = REXML::Document.new File.new( xml_file )
|
88
96
|
doc.elements["photo"].each_element { |e|
|
89
|
-
|
97
|
+
#
|
98
|
+
# photo_tree_item[e.name.to_s] = e.text.to_s.strip.gsub( /\n/, "" ).gsub( /\s+/, " " )
|
99
|
+
#
|
100
|
+
key = e.name.to_s
|
101
|
+
value = e.text.to_s.strip.gsub( /\n/, "" ).gsub( /\s+/, " " )
|
102
|
+
case key
|
103
|
+
when "title"
|
104
|
+
photo_tree_item.title = value
|
105
|
+
when "description"
|
106
|
+
photo_tree_item.description = value
|
107
|
+
else
|
108
|
+
ralbum_verbose(1, "rubyphoto - read_photo_item_xml unknow #{key} found")
|
109
|
+
end
|
90
110
|
}
|
91
111
|
end
|
92
112
|
|
93
|
-
def read_photo_tree_node_xml(
|
94
|
-
xml_file = File.join(
|
113
|
+
def read_photo_tree_node_xml( photo_tree_node )
|
114
|
+
xml_file = File.join(photo_tree_node.path, "album.xml")
|
95
115
|
|
96
116
|
if File.exist?(xml_file)
|
97
|
-
ralbum_verbose( 2, "NOTE: reading xml for node '#{
|
117
|
+
ralbum_verbose( 2, "NOTE: reading xml for node '#{photo_tree_node.path}'" )
|
98
118
|
else
|
99
|
-
ralbum_verbose( 1, "WARNING: xml for node '#{
|
119
|
+
ralbum_verbose( 1, "WARNING: xml for node '#{photo_tree_node.path}' not exists" )
|
100
120
|
return
|
101
121
|
end
|
102
122
|
|
103
123
|
doc = REXML::Document.new File.new( xml_file )
|
104
124
|
doc.elements["album"].each_element { |e|
|
105
|
-
|
125
|
+
photo_tree_node[e.name.to_s] = e.text.to_s.strip.gsub( /\n/, "" ).gsub( /\s+/, " " )
|
106
126
|
}
|
107
127
|
end
|
108
128
|
|
109
|
-
#
|
110
|
-
#
|
129
|
+
# ---------------------------------------------------------------------------
|
111
130
|
# TODO: read meta info nuovo formato
|
112
131
|
|
113
132
|
def readMetaInfoNewFormat( photoTree, catalog_dirname )
|
@@ -122,21 +141,20 @@ class PhotoTreeBuilder
|
|
122
141
|
end
|
123
142
|
|
124
143
|
doc = REXML::Document.new File.new( xml_project )
|
125
|
-
|
126
144
|
end
|
127
145
|
|
128
146
|
# ---------------------------------------------------------------------------------------
|
129
147
|
#
|
130
148
|
# check meta info nuovo formato
|
131
149
|
#
|
132
|
-
def
|
150
|
+
def update_meta_info( photoTree )
|
133
151
|
ralbum_verbose( 1, "phototree - updating metainfo" )
|
134
152
|
visitor = CallbackTreeNodeVisitor.new
|
135
|
-
visitor.
|
153
|
+
visitor.on_visit_leaf_node{ |photoTreeItem|
|
136
154
|
# TODO: updatare metainfo solo se il file della photo e' piu' aggionato del metainfo
|
137
|
-
if photoTreeItem['file_date'].empty? or photoTreeItem['file_date'] < photoTreeItem.time
|
138
|
-
|
139
|
-
end
|
155
|
+
# if photoTreeItem['file_date'].empty? or photoTreeItem['file_date'] < photoTreeItem.time
|
156
|
+
# photoTreeItem.force_read_metainfo
|
157
|
+
# end
|
140
158
|
}
|
141
159
|
photoTree.accept( visitor )
|
142
160
|
|
@@ -152,10 +170,10 @@ class PhotoTreeBuilder
|
|
152
170
|
def write_xml( photoTree, xml_project )
|
153
171
|
xml_photo_tree = xml_project.add_element("photo_tree")
|
154
172
|
visitor = CallbackTreeNodeVisitor2.new( xml_photo_tree )
|
155
|
-
visitor.
|
173
|
+
visitor.on_enter_tree_node { |photoTreeNode, xml_el|
|
156
174
|
photoTreeNode.write_xml( xml_el )
|
157
175
|
}
|
158
|
-
visitor.
|
176
|
+
visitor.on_visit_leaf_node{ |photoTreeItem, xml_el|
|
159
177
|
photoTreeItem.write_xml( xml_el )
|
160
178
|
}
|
161
179
|
photoTree.accept( visitor )
|
data/lib/ralbum/project.rb
CHANGED
@@ -1,10 +1,19 @@
|
|
1
|
+
require 'ralbum/catalog'
|
2
|
+
require 'ralbum/skin_manager'
|
3
|
+
require 'ralbum/album_tree/generate_album_tree_node_visitor'
|
4
|
+
|
1
5
|
class Project
|
2
6
|
|
3
7
|
attr_accessor :phototree_dirname
|
8
|
+
attr_accessor :photo_tree_type
|
9
|
+
|
4
10
|
attr_accessor :album_dirname
|
5
11
|
|
6
12
|
attr_accessor :skin_names
|
7
13
|
|
14
|
+
attr_accessor :debug_photo_tree
|
15
|
+
attr_accessor :debug_album_tree
|
16
|
+
|
8
17
|
def initialize(skin_manager)
|
9
18
|
@skin_manager = skin_manager
|
10
19
|
end
|
@@ -17,7 +26,7 @@ class Project
|
|
17
26
|
|
18
27
|
@phototree_dirname = File.expand_path( @phototree_dirname )
|
19
28
|
@album_dirname = File.expand_path( @album_dirname )
|
20
|
-
catalog_dirname = File.join( @phototree_dirname,
|
29
|
+
catalog_dirname = File.join( @phototree_dirname, Catalog::DEFAULT_CATALOG_DIRNAME )
|
21
30
|
FileUtils.mkpath( catalog_dirname ) unless File.directory?( catalog_dirname )
|
22
31
|
|
23
32
|
#
|
@@ -25,17 +34,36 @@ class Project
|
|
25
34
|
#
|
26
35
|
skin_name = @skin_names.first
|
27
36
|
skin = @skin_manager.get_skin( skin_name )
|
28
|
-
skin.
|
37
|
+
skin.engine.album_dirname = @album_dirname
|
29
38
|
# TODO: skin.configure( xml_project )
|
30
39
|
|
31
40
|
#
|
32
41
|
# step 1: reading phototree
|
33
42
|
#
|
34
|
-
|
35
|
-
|
36
|
-
|
43
|
+
|
44
|
+
case @photo_tree_type
|
45
|
+
when "rubyphoto"
|
46
|
+
require 'ralbum/photo_tree/rubyphoto_photo_tree'
|
47
|
+
photo_tree_builder = PhotoTreeBuilder.new
|
48
|
+
when "jalbum"
|
49
|
+
require 'ralbum/photo_tree/jalbum_photo_tree'
|
50
|
+
photo_tree_builder = JalbumPhotoTreeBuilder.new
|
51
|
+
else
|
52
|
+
raise RAlbumException.new("photo tree type '#{@photo_tree_type}' unknow" )
|
53
|
+
end
|
54
|
+
photo_tree = photo_tree_builder.run( phototree_dirname )
|
37
55
|
# TODO: photoTreeBuilder.configure( xml_project )
|
38
|
-
|
56
|
+
|
57
|
+
|
58
|
+
if(@debug_photo_tree)
|
59
|
+
puts "---------- PhotoTree"
|
60
|
+
puts "root is " + photo_tree.path_with_prefix
|
61
|
+
puts photo_tree.to_str
|
62
|
+
puts "----------"
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
|
39
67
|
#
|
40
68
|
# step 2: build catalog
|
41
69
|
#
|
@@ -49,10 +77,15 @@ class Project
|
|
49
77
|
# step : generate album_tree
|
50
78
|
#
|
51
79
|
# TODO: l'album tree e' generato in base allo skin
|
52
|
-
generator = GenerateAlbumTreeNodeVisitor.new( album_dirname, catalog, skin.
|
53
|
-
|
54
|
-
|
80
|
+
generator = GenerateAlbumTreeNodeVisitor.new( album_dirname, catalog, skin.engine.image_strategies )
|
81
|
+
album_tree = generator.run( photo_tree )
|
55
82
|
|
83
|
+
if(@debug_album_tree)
|
84
|
+
puts "---------- AlbumTree"
|
85
|
+
puts "root is " + album_tree.path_with_prefix
|
86
|
+
puts album_tree.to_str
|
87
|
+
puts "----------"
|
88
|
+
end
|
56
89
|
|
57
90
|
#
|
58
91
|
# step 3: generate albums
|
@@ -70,8 +103,10 @@ class Project
|
|
70
103
|
# albumTree.accept( PrintTreeNodeVisitor.new )
|
71
104
|
|
72
105
|
# TODO: se generare l'album nella directory "skin_name" oppure nella root
|
73
|
-
skin.create(
|
106
|
+
skin.create( album_tree )
|
74
107
|
|
108
|
+
retun 0
|
109
|
+
|
75
110
|
#
|
76
111
|
# save project
|
77
112
|
#
|
@@ -79,11 +114,12 @@ class Project
|
|
79
114
|
doc = REXML::Document.new
|
80
115
|
doc << REXML::XMLDecl.new
|
81
116
|
xml_project = doc.add_element( "project" )
|
82
|
-
|
117
|
+
photo_tree_builder.write_xml(photo_tree, xml_project)
|
83
118
|
xml_project = File.join( catalog_dirname, "project.xml")
|
84
119
|
File.open( xml_project, "w") {|f|
|
85
120
|
doc.write( f, 0 )
|
86
|
-
}
|
121
|
+
}
|
122
|
+
return 0
|
87
123
|
end
|
88
124
|
|
89
125
|
end
|
data/lib/ralbum/skin.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'rubygems'
|
3
3
|
|
4
4
|
#ralbum
|
5
|
-
require '
|
5
|
+
require 'gf_utilities/file_utilities'
|
6
6
|
require 'ralbum/skin_engine'
|
7
7
|
|
8
8
|
class Skin
|
@@ -14,8 +14,8 @@ class Skin
|
|
14
14
|
attr_reader :skin_author
|
15
15
|
|
16
16
|
def initialize( skin_name, skin_dirname )
|
17
|
-
@metainfo
|
18
|
-
@
|
17
|
+
@metainfo = {}
|
18
|
+
@engine = nil
|
19
19
|
@skin_dirname = skin_dirname
|
20
20
|
|
21
21
|
@skin_name = skin_name
|
@@ -26,48 +26,55 @@ class Skin
|
|
26
26
|
|
27
27
|
def load_info
|
28
28
|
info_filename = File.join( @skin_dirname, "info.yml" )
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
29
|
+
|
30
|
+
unless File.exist?( info_filename )
|
31
|
+
ralbum_verbose(1, "information file for skin '#{@skin_name}' doesn't exist")
|
32
|
+
return
|
33
|
+
end
|
34
|
+
info = YAML::load( File.read(info_filename) )
|
35
|
+
if not info.kind_of?(Hash)
|
36
|
+
ralbum_verbose(1, "description skin file '#{info_filename}' is incorrect")
|
37
|
+
else
|
38
|
+
@metainfo = info
|
39
|
+
@skin_author = info["author"]
|
40
|
+
@skin_description = info["description"]
|
38
41
|
end
|
39
42
|
end
|
40
43
|
|
41
|
-
def create(
|
42
|
-
|
44
|
+
def create( album_tree )
|
45
|
+
engine.create( album_tree )
|
43
46
|
end
|
44
47
|
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
|
48
|
+
def compile
|
49
|
+
engine.compile
|
50
|
+
end
|
51
|
+
|
52
|
+
def engine
|
53
|
+
return @engine if @engine
|
49
54
|
|
50
|
-
|
51
|
-
if File.exist?(
|
52
|
-
require
|
53
|
-
|
54
|
-
|
55
|
-
|
55
|
+
engine_rb = File.join( @skin_dirname, @skin_name + "_skin_engine.rb" )
|
56
|
+
if File.exist?( engine_rb )
|
57
|
+
require engine_rb
|
58
|
+
engine_class_name = @skin_name.capitalize + "SkinEngine"
|
59
|
+
clss = Class.const_get( engine_class_name.to_sym )
|
60
|
+
@engine = clss.new( self )
|
61
|
+
return @engine
|
56
62
|
end
|
57
63
|
|
58
64
|
engine = @metainfo['engine']
|
59
65
|
unless engine
|
60
|
-
|
66
|
+
msg = "warning no engine defined for skin '#{skin_name}': I will be use ErbSkinEngine"
|
67
|
+
ralbum_verbose(0, msg)
|
61
68
|
engine = 'erb'
|
62
69
|
end
|
63
70
|
|
64
71
|
case engine
|
65
72
|
when 'erb' then
|
66
73
|
require 'ralbum/skin_engines/erb_skin_engine'
|
67
|
-
@
|
74
|
+
@engine = ErbSkinEngine.new( self )
|
68
75
|
when 'kwartz' then
|
69
76
|
require 'ralbum/skin_engines/kwartz_skin_engine'
|
70
|
-
@
|
77
|
+
@engine = KwartzSkinEngine.new( self )
|
71
78
|
else
|
72
79
|
raise RAlbumException.new, "skin engine #{engine} unknow"
|
73
80
|
end
|