3 def self.included(base)
4 base.extend ClassMethods
8 def slideshow_album(*args)
9 @@mono_album_options = {}
10 @@mono_slide_options = {}
11 define_method(:mono_album_options) { @@mono_album_options }
12 define_method(:mono_slide_options) { @@mono_slide_options }
15 @@mono_album_options[:from] = args[0]
16 @@mono_slide_options[:src] = args[1]
19 @@mono_slide_options = options.delete(:slides)
20 @@mono_album_options = options
25 define_method(:mono_album_slides) {self.send(mono_album_options[:from])}
27 define_method(:mono_album_title) do
28 self.send(mono_album_options[:title]) if mono_album_options[:title]
31 define_method(:mono_album_description) do
32 self.send(mono_album_options[:description]) if mono_album_options[:description]
35 define_method(:mono_slide_src) { |slide| slide.send mono_slide_options[:src] }
37 define_method(:mono_slide_title) do |slide|
38 slide.send mono_slide_options[:title] if mono_slide_options[:title]
41 define_method(:mono_slide_description) do |slide|
42 slide.send mono_slide_options[:description] if mono_slide_options[:description]
45 define_method(:mono_album_thumbnail) { mono_slide_src(mono_album_slides.first) }
47 include InstanceMethods
49 # default_options = { :from => :images,
51 # :description => :description,
52 # :slide => { :title => :title,
53 # :src => :public_filename,
54 # :description => :description }}
56 # options = default_options.merge(options)
57 # @@mono_slide_association = options[:from]
58 # @@mono_slide_src_method = options[:slide][:src]
59 # @@mono_slide_description_method = options[:slide][:description]
60 # @@mono_album_title = options[:title]
61 # @@mono_album_description = options[:description]
63 # define_method(:mono_slide_src_method) { @@mono_slide_src_method }
64 # define_method(:mono_slide_description_method) { @@mono_slide_description_method }
65 # define_method(:mono_album_title) { self.send(@@mono_album_title) }
66 # define_method(:mono_album_description) { self.send(@@mono_album_description) }
71 module InstanceMethods
73 def slideshow_album_xml(xml=nil)
74 xml ||= Builder::XmlMarkup.new(:indent => 4)
75 album_hash = {:title => mono_album_title,
76 :description => mono_album_description,
77 :thumbnail => mono_album_thumbnail}.reject { |k,v| v.blank? }
78 xml.album(album_hash) do
79 mono_album_slides.each do |image|
80 image_hash = {:src => mono_slide_src(image),
81 :title => mono_slide_title(image),
82 :description => mono_slide_description(image)}.reject { |k,v| v.blank? }