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 |