From 85a349c76fce607372bcb91bbf481256fbdc2392 Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Thu, 5 Aug 2010 13:35:04 -0300 Subject: [PATCH] Fix bug introduced by "Displaying image title at tag" --- app/helpers/folder_helper.rb | 7 ------- app/models/uploaded_file.rb | 4 +++- lib/noosfero/filenames.rb | 11 +++++++++++ test/unit/application_helper_test.rb | 12 ------------ test/unit/noosfero_filenames.rb | 20 ++++++++++++++++++++ test/unit/uploaded_file_test.rb | 6 ++++++ 6 files changed, 40 insertions(+), 20 deletions(-) create mode 100644 lib/noosfero/filenames.rb create mode 100644 test/unit/noosfero_filenames.rb diff --git a/app/helpers/folder_helper.rb b/app/helpers/folder_helper.rb index e236a89..a8095e4 100644 --- a/app/helpers/folder_helper.rb +++ b/app/helpers/folder_helper.rb @@ -69,11 +69,4 @@ module FolderHelper _('Edit folder') end - def short_filename(filename, limit_chars = 43) - return filename if filename.size <= limit_chars - extname = File.extname(filename) - basename = File.basename(filename,extname) - str_complement = '(...)' - return basename[0..(limit_chars - extname.size - str_complement.size - 1)] + str_complement + extname - end end diff --git a/app/models/uploaded_file.rb b/app/models/uploaded_file.rb index 0c8681a..5d97289 100644 --- a/app/models/uploaded_file.rb +++ b/app/models/uploaded_file.rb @@ -4,9 +4,11 @@ # of the file itself is kept. (FIXME?) class UploadedFile < Article + include Noosfero::Filenames + settings_items :title, :type => 'string' def title_with_default - title_without_default || name + title_without_default || short_filename(name, 60) end alias_method_chain :title, :default diff --git a/lib/noosfero/filenames.rb b/lib/noosfero/filenames.rb new file mode 100644 index 0000000..bceb119 --- /dev/null +++ b/lib/noosfero/filenames.rb @@ -0,0 +1,11 @@ +module Noosfero::Filenames + + def short_filename(filename, limit_chars = 43) + return filename if filename.size <= limit_chars + extname = File.extname(filename) + basename = File.basename(filename,extname) + str_complement = '(...)' + return basename[0..(limit_chars - extname.size - str_complement.size - 1)] + str_complement + extname + end + +end diff --git a/test/unit/application_helper_test.rb b/test/unit/application_helper_test.rb index 4c48093..186b605 100644 --- a/test/unit/application_helper_test.rb +++ b/test/unit/application_helper_test.rb @@ -567,18 +567,6 @@ class ApplicationHelperTest < Test::Unit::TestCase assert_equal environment.theme, current_theme end - should 'trunc to 15 chars the big filename' do - assert_equal 'AGENDA(...).mp3', short_filename('AGENDA_CULTURA_-_FESTA_DE_VAQUEIROS_PONTO_DE_SERRA_PRETA_BAIXA.mp3',15) - end - - should 'trunc to default limit the big filename' do - assert_equal 'AGENDA_CULTURA_-_FESTA_DE_VAQUEIRO(...).mp3', short_filename('AGENDA_CULTURA_-_FESTA_DE_VAQUEIROS_PONTO_DE_SERRA_PRETA_BAIXA.mp3') - end - - should 'does not trunc short filename' do - assert_equal 'filename.mp3', short_filename('filename.mp3') - end - protected def url_for(args = {}) diff --git a/test/unit/noosfero_filenames.rb b/test/unit/noosfero_filenames.rb new file mode 100644 index 0000000..44e6984 --- /dev/null +++ b/test/unit/noosfero_filenames.rb @@ -0,0 +1,20 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class NoosferoFilenamesTest < Test::Unit::TestCase + + include Noosfero::Filenames + + should 'trunc to 15 chars the big filename' do + assert_equal 'AGENDA(...).mp3', short_filename('AGENDA_CULTURA_-_FESTA_DE_VAQUEIROS_PONTO_DE_SERRA_PRETA_BAIXA.mp3',15) + end + + should 'trunc to default limit the big filename' do + assert_equal 'AGENDA_CULTURA_-_FESTA_DE_VAQUEIRO(...).mp3', short_filename('AGENDA_CULTURA_-_FESTA_DE_VAQUEIROS_PONTO_DE_SERRA_PRETA_BAIXA.mp3') + end + + should 'does not trunc short filename' do + assert_equal 'filename.mp3', short_filename('filename.mp3') + end + +end + diff --git a/test/unit/uploaded_file_test.rb b/test/unit/uploaded_file_test.rb index 515e561..230abe2 100644 --- a/test/unit/uploaded_file_test.rb +++ b/test/unit/uploaded_file_test.rb @@ -150,4 +150,10 @@ class UploadedFileTest < Test::Unit::TestCase assert_equal 'test.txt', upload.title end + should 'use name as title by default but cut down the title' do + upload = UploadedFile.new(:uploaded_data => fixture_file_upload('/files/AGENDA_CULTURA_-_FESTA_DE_VAQUEIROS_PONTO_DE_SERRA_PRETA_BAIXA.txt')) + upload.valid? + assert_nil upload.errors[:title] + end + end -- libgit2 0.21.2