diff --git a/app/helpers/folder_helper.rb b/app/helpers/folder_helper.rb index 429f71c..e236a89 100644 --- a/app/helpers/folder_helper.rb +++ b/app/helpers/folder_helper.rb @@ -19,7 +19,7 @@ module FolderHelper def display_article_in_listing(article, recursive = false, level = 0) result = content_tag( 'tr', - content_tag('td', link_to((' ' * (level * 4) ) + image_tag(icon_for_article(article)) + article.name, article.url.merge(:view => true)))+ + content_tag('td', link_to((' ' * (level * 4) ) + image_tag(icon_for_article(article)) + short_filename(article.name), article.url.merge(:view => true)))+ content_tag('td', show_date(article.updated_at), :class => 'last-update'), :class => 'sitemap-item' ) @@ -69,4 +69,11 @@ 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/views/cms/view.rhtml b/app/views/cms/view.rhtml index 380497a..1d5d268 100644 --- a/app/views/cms/view.rhtml +++ b/app/views/cms/view.rhtml @@ -72,7 +72,7 @@ <%= image_tag(icon_for_article(item)) %> - <%= link_to item.name, :action => 'edit', :id => item.id %> + <%= link_to short_filename(item.name,30), :action => 'edit', :id => item.id %> <%= item.class.short_description %> diff --git a/features/short_filename.feature b/features/short_filename.feature new file mode 100644 index 0000000..bbd7a9c --- /dev/null +++ b/features/short_filename.feature @@ -0,0 +1,21 @@ +Feature: sitemap + As a noosfero user + I want to list articles + + Background: + Given I am on the homepage + And the following users + | login | name | + | joaosilva | Joao Silva | + And the following files + | owner | file | mime | + | joaosilva | AGENDA_CULTURA_-_FESTA_DE_VAQUEIROS_PONTO_DE_SERRA_PRETA_BAIXA.txt | text/plain | + + Scenario: view a folder page + When I am on /profile/joaosilva/sitemap + Then I should see "AGENDA_CULTURA_-_FESTA_DE_VAQUEIRO(...).txt" + + Scenario: view a folder page + Given I am logged in as "joaosilva" + When I am on /myprofile/joaosilva/cms + Then I should see "AGENDA_CULTURA_-_FEST(...).txt" diff --git a/test/unit/application_helper_test.rb b/test/unit/application_helper_test.rb index 5f2e628..5042554 100644 --- a/test/unit/application_helper_test.rb +++ b/test/unit/application_helper_test.rb @@ -558,6 +558,18 @@ 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 = {}) -- libgit2 0.21.2