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,6 +4,7 @@ class SlideshowBlock < Block | ||
4 | settings_items :interval, :type => 'integer', :default => 4 | 4 | settings_items :interval, :type => 'integer', :default => 4 |
5 | settings_items :shuffle, :type => 'boolean', :default => false | 5 | settings_items :shuffle, :type => 'boolean', :default => false |
6 | settings_items :navigation, :type => 'boolean', :default => false | 6 | settings_items :navigation, :type => 'boolean', :default => false |
7 | + settings_items :image_size, :type => 'string', :default => 'thumb' | ||
7 | 8 | ||
8 | def self.description | 9 | def self.description |
9 | _('Slideshow') | 10 | _('Slideshow') |
@@ -13,6 +14,19 @@ class SlideshowBlock < Block | @@ -13,6 +14,19 @@ class SlideshowBlock < Block | ||
13 | gallery_id ? Folder.find(:first, :conditions => { :id => gallery_id }) : nil | 14 | gallery_id ? Folder.find(:first, :conditions => { :id => gallery_id }) : nil |
14 | end | 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 | def block_images | 30 | def block_images |
17 | gallery.images.reject {|item| item.folder?} | 31 | gallery.images.reject {|item| item.folder?} |
18 | end | 32 | end |
app/models/uploaded_file.rb
@@ -21,7 +21,7 @@ class UploadedFile < Article | @@ -21,7 +21,7 @@ class UploadedFile < Article | ||
21 | # :min_size => 2.megabytes | 21 | # :min_size => 2.megabytes |
22 | # :max_size => 5.megabytes | 22 | # :max_size => 5.megabytes |
23 | has_attachment :storage => :file_system, | 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 | :thumbnail_class => Thumbnail, | 25 | :thumbnail_class => Thumbnail, |
26 | :max_size => 5.megabytes # remember to update validate message below | 26 | :max_size => 5.megabytes # remember to update validate message below |
27 | 27 |
app/views/blocks/slideshow.rhtml
@@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
5 | <div class='slideshow-container'> | 5 | <div class='slideshow-container'> |
6 | <% images.each do |img| %> | 6 | <% images.each do |img| %> |
7 | <a href="<%= url_for(img.external_link.blank? ? img.view_url: img.external_link) %>"> | 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 | <% if !img.abstract.blank? %> | 9 | <% if !img.abstract.blank? %> |
10 | <span class='image-description'><%= img.abstract %></span> | 10 | <span class='image-description'><%= img.abstract %></span> |
11 | <% end %> | 11 | <% end %> |
app/views/box_organizer/_slideshow_block.rhtml
@@ -3,6 +3,8 @@ | @@ -3,6 +3,8 @@ | ||
3 | [ _('%{gallery} (%{count} images)') % {:gallery => item.path, :count => item.images.reject{|image| image.folder?}.count}, item.id ] | 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 | <%= 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]}) %> | 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 | <%= labelled_form_field check_box(:block, :shuffle) + _('Show images in random order'), '' %> | 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,4 +65,36 @@ class SlideshowBlockTest < ActiveSupport::TestCase | ||
65 | assert_not_includes block.block_images, folder | 65 | assert_not_includes block.block_images, folder |
66 | end | 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 | end | 100 | end |