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,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,3 @@
1
+ author: gf
2
+ description: cgi skin description
3
+ engine: kwartz
@@ -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
+