Commit 4f106fcd579b0b302ef75b355990964a1c6232bf

Authored by AntonioTerceiro
1 parent 1d119389

ActionItem186: not linking to unexisting stylesheets


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1475 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/helpers/application_helper.rb
@@ -324,21 +324,30 @@ module ApplicationHelper @@ -324,21 +324,30 @@ module ApplicationHelper
324 def stylesheet_import(*sources) 324 def stylesheet_import(*sources)
325 options = sources.last.is_a?(Hash) ? sources.pop : { } 325 options = sources.last.is_a?(Hash) ? sources.pop : { }
326 themed_source = options.delete(:themed_source) 326 themed_source = options.delete(:themed_source)
327 - content_tag( 'style', 327 + content_tag(
  328 + 'style',
328 "\n" + 329 "\n" +
329 sources.flatten.map do |source| 330 sources.flatten.map do |source|
330 - ' @import url(' +  
331 - ( themed_source ? theme_stylesheet_path(source.to_s) : stylesheet_path(source.to_s) ) +  
332 - ");\n"; 331 + filename = filename_for_stylesheet(source.to_s, themed_source)
  332 + if File.exists?(File.join(RAILS_ROOT, 'public', filename))
  333 + "@import url(#{filename});\n"
  334 + else
  335 + ''
  336 + end
333 end.join(), 337 end.join(),
334 { "type" => "text/css" }.merge(options) 338 { "type" => "text/css" }.merge(options)
335 ) 339 )
336 end 340 end
337 341
338 - def theme_stylesheet_path(file_name)  
339 - '/designs/templates/' + current_theme + '/stylesheets/' + file_name + '.css' 342 + def filename_for_stylesheet(name, in_theme)
  343 + result = ''
  344 + if in_theme
  345 + result << '/designs/templates/' + current_theme
  346 + end
  347 + result << '/stylesheets/' << name << '.css'
340 end 348 end
341 349
  350 + # FIXME do not hardcode 'default' like this
342 def current_theme 351 def current_theme
343 'default' 352 'default'
344 end 353 end
test/unit/application_helper_test.rb
@@ -16,7 +16,22 @@ class ApplicationHelperTest &lt; Test::Unit::TestCase @@ -16,7 +16,22 @@ class ApplicationHelperTest &lt; Test::Unit::TestCase
16 assert_equal 'runtime_error', partial_for_class(RuntimeError) 16 assert_equal 'runtime_error', partial_for_class(RuntimeError)
17 end 17 end
18 18
19 - should 'stop without reaching nil superclass' do 19 + should 'generate link to stylesheet' do
  20 + File.expects(:exists?).with(File.join(RAILS_ROOT, 'public', 'stylesheets', 'something.css')).returns(true)
  21 + expects(:filename_for_stylesheet).with('something', nil).returns('/stylesheets/something.css')
  22 + assert_match '@import url(/stylesheets/something.css)', stylesheet_import('something')
  23 + end
  24 +
  25 + should 'not generate link to unexisting stylesheet' do
  26 + File.expects(:exists?).with(File.join(RAILS_ROOT, 'public', 'stylesheets', 'something.css')).returns(false)
  27 + expects(:filename_for_stylesheet).with('something', nil).returns('/stylesheets/something.css')
  28 + assert_equal '', stylesheet_import('something')
  29 + end
  30 +
  31 + protected
  32 +
  33 + def content_tag(tag, content, options)
  34 + content.strip
20 end 35 end
21 36
22 end 37 end