Commit 3133d012e364cc121c42f1769937e374d35e611b
1 parent
d76b9e3b
Exists in
master
and in
29 other branches
Allowing slideshow block to use better the space.
* Adding new image size: slideshow * SlideshowBlock can choose which size to use (thumb or slideshow) (ActionItem1493)
Showing
5 changed files
with
50 additions
and
2 deletions
Show diff stats
app/models/slideshow_block.rb
... | ... | @@ -4,6 +4,7 @@ class SlideshowBlock < Block |
4 | 4 | settings_items :interval, :type => 'integer', :default => 4 |
5 | 5 | settings_items :shuffle, :type => 'boolean', :default => false |
6 | 6 | settings_items :navigation, :type => 'boolean', :default => false |
7 | + settings_items :image_size, :type => 'string', :default => 'thumb' | |
7 | 8 | |
8 | 9 | def self.description |
9 | 10 | _('Slideshow') |
... | ... | @@ -13,6 +14,19 @@ class SlideshowBlock < Block |
13 | 14 | gallery_id ? Folder.find(:first, :conditions => { :id => gallery_id }) : nil |
14 | 15 | end |
15 | 16 | |
17 | + def public_filename_for(image) | |
18 | + check_filename(image, image_size) || check_filename(image, 'thumb') | |
19 | + end | |
20 | + | |
21 | + def check_filename(image, size) | |
22 | + filename = image.public_filename(size) | |
23 | + if File.exists?(File.join(Rails.root, 'public', filename)) | |
24 | + filename | |
25 | + else | |
26 | + nil | |
27 | + end | |
28 | + end | |
29 | + | |
16 | 30 | def block_images |
17 | 31 | gallery.images.reject {|item| item.folder?} |
18 | 32 | end | ... | ... |
app/models/uploaded_file.rb
... | ... | @@ -21,7 +21,7 @@ class UploadedFile < Article |
21 | 21 | # :min_size => 2.megabytes |
22 | 22 | # :max_size => 5.megabytes |
23 | 23 | has_attachment :storage => :file_system, |
24 | - :thumbnails => { :icon => [24,24], :thumb => '130x130>', :display => '640X480>' }, | |
24 | + :thumbnails => { :icon => [24,24], :thumb => '130x130>', :slideshow => '320x240>', :display => '640X480>' }, | |
25 | 25 | :thumbnail_class => Thumbnail, |
26 | 26 | :max_size => 5.megabytes # remember to update validate message below |
27 | 27 | ... | ... |
app/views/blocks/slideshow.rhtml
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | <div class='slideshow-container'> |
6 | 6 | <% images.each do |img| %> |
7 | 7 | <a href="<%= url_for(img.external_link.blank? ? img.view_url: img.external_link) %>"> |
8 | - <%= content_tag('div', '', :style => "background-image: url(#{img.public_filename(:thumb)})", :title => (img.abstract.blank? ? '' : img.abstract)) %> | |
8 | + <%= content_tag('div', '', :style => "background-image: url(#{block.public_filename_for(img)})", :title => (img.abstract.blank? ? '' : img.abstract)) %> | |
9 | 9 | <% if !img.abstract.blank? %> |
10 | 10 | <span class='image-description'><%= img.abstract %></span> |
11 | 11 | <% end %> | ... | ... |
app/views/box_organizer/_slideshow_block.rhtml
... | ... | @@ -3,6 +3,8 @@ |
3 | 3 | [ _('%{gallery} (%{count} images)') % {:gallery => item.path, :count => item.images.reject{|image| image.folder?}.count}, item.id ] |
4 | 4 | }) %> |
5 | 5 | |
6 | +<%= labelled_form_field(_('Image size'), select('block', 'image_size', [[_('Miniatura'), 'thumb'],[_('Slideshow size'), 'slideshow']])) %> | |
7 | + | |
6 | 8 | <%= labelled_form_field _('Image transition:'), select('block', 'interval', [[_('No automatic transition'), 0]] + [1, 2, 3, 4, 5, 10, 20, 30, 60].map {|item| [n_('Every 1 second', 'Every %d seconds', item) % item, item]}) %> |
7 | 9 | |
8 | 10 | <%= labelled_form_field check_box(:block, :shuffle) + _('Show images in random order'), '' %> | ... | ... |
test/unit/slideshow_block_test.rb
... | ... | @@ -65,4 +65,36 @@ class SlideshowBlockTest < ActiveSupport::TestCase |
65 | 65 | assert_not_includes block.block_images, folder |
66 | 66 | end |
67 | 67 | |
68 | + should 'display "thumb" size by default' do | |
69 | + assert_equal 'thumb', SlideshowBlock.new.image_size | |
70 | + end | |
71 | + | |
72 | + should 'set different image size' do | |
73 | + block = SlideshowBlock.new(:image_size => 'slideshow') | |
74 | + assert_equal 'slideshow', block.image_size | |
75 | + end | |
76 | + | |
77 | + should 'decide correct public filename for image' do | |
78 | + image = mock | |
79 | + image.expects(:public_filename).with('slideshow').returns('/bli/slideshow.png') | |
80 | + File.expects(:exists?).with("#{Rails.root}/public/bli/slideshow.png").returns(true) | |
81 | + | |
82 | + assert_equal '/bli/slideshow.png', SlideshowBlock.new(:image_size => 'slideshow').public_filename_for(image) | |
83 | + end | |
84 | + | |
85 | + should 'fallback to existing size in case the requested size does not exist' do | |
86 | + block = SlideshowBlock.new(:image_size => 'slideshow') | |
87 | + | |
88 | + image = mock | |
89 | + # "slideshow" size does not exist | |
90 | + image.expects(:public_filename).with('slideshow').returns('/bli/slideshow.png') | |
91 | + File.expects(:exists?).with("#{Rails.root}/public/bli/slideshow.png").returns(false) # <<<<< | |
92 | + | |
93 | + # thumb size does exist | |
94 | + image.expects(:public_filename).with('thumb').returns('/bli/thumb.png') | |
95 | + File.expects(:exists?).with("#{Rails.root}/public/bli/thumb.png").returns(true) # <<<<< | |
96 | + | |
97 | + assert_equal '/bli/thumb.png', block.public_filename_for(image) | |
98 | + end | |
99 | + | |
68 | 100 | end | ... | ... |