Commit c8179af44abaff89d99512df6017ec35a7f0c011

Authored by Antonio Terceiro
1 parent 0eb56fb7

ActionItem1143: fix "Edit appearance screen"

  * don't display "Select themes" if there are no themes to choose from
  * don't display "New theme" button if user themes are disabled
app/views/themes/index.rhtml
@@ -33,35 +33,37 @@ @@ -33,35 +33,37 @@
33 <% end %> 33 <% end %>
34 34
35 35
36 - <tr>  
37 - <td colspan='6'>  
38 - <h2><%= _('Select theme') %></h2>  
39 - </td>  
40 - </tr>  
41 - <% for themes in @themes.in_groups_of(3) %> 36 + <% if !@themes.empty? %>
42 <tr> 37 <tr>
43 - <% for theme in themes %>  
44 - <%  
45 - selected = (!theme.nil? && (theme.id == @current_theme))  
46 - %>  
47 - <td>  
48 - <%# FIXME add proper thumbnails %>  
49 - <% if theme %>  
50 - <%= image_tag('/images/icons-app/design-editor.png', :alt => (_('The "%s" theme.') % theme.name)) %>  
51 - <% end %>  
52 - </td>  
53 - <td <%= 'class="selected theme"' if selected %>>  
54 - <% if theme %>  
55 - <strong><%= theme.name %> <%= _('(current)') if selected %></strong><br/>  
56 - <%= link_to(_('Use this theme'), :action => 'set', :id => theme.id) unless selected %>  
57 - <% end %>  
58 - </td>  
59 - <td>  
60 - &nbsp;&nbsp;&nbsp;&nbsp;  
61 - </td>  
62 - <% end %> 38 + <td colspan='6'>
  39 + <h2><%= _('Select theme') %></h2>
  40 + </td>
63 </tr> 41 </tr>
64 - <tr><td colspan='3'>&nbsp;</td></tr> 42 + <% for themes in @themes.in_groups_of(3) %>
  43 + <tr>
  44 + <% for theme in themes %>
  45 + <%
  46 + selected = (!theme.nil? && (theme.id == @current_theme))
  47 + %>
  48 + <td>
  49 + <%# FIXME add proper thumbnails %>
  50 + <% if theme %>
  51 + <%= image_tag('/images/icons-app/design-editor.png', :alt => (_('The "%s" theme.') % theme.name)) %>
  52 + <% end %>
  53 + </td>
  54 + <td <%= 'class="selected theme"' if selected %>>
  55 + <% if theme %>
  56 + <strong><%= theme.name %> <%= _('(current)') if selected %></strong><br/>
  57 + <%= link_to(_('Use this theme'), :action => 'set', :id => theme.id) unless selected %>
  58 + <% end %>
  59 + </td>
  60 + <td>
  61 + &nbsp;&nbsp;&nbsp;&nbsp;
  62 + </td>
  63 + <% end %>
  64 + </tr>
  65 + <tr><td colspan='3'>&nbsp;</td></tr>
  66 + <% end %>
65 <% end %> 67 <% end %>
66 68
67 69
@@ -96,6 +98,8 @@ @@ -96,6 +98,8 @@
96 </table> 98 </table>
97 99
98 <% button_bar do %> 100 <% button_bar do %>
99 - <%= lightbox_button(:add, _('New theme ...'), :action => 'new') %> 101 + <% if environment.enabled?('user_themes') %>
  102 + <%= lightbox_button(:add, _('New theme ...'), :action => 'new') %>
  103 + <% end %>
100 <%= button(:back, _('Back'), :controller => 'profile_editor', :action => 'index') %> 104 <%= button(:back, _('Back'), :controller => 'profile_editor', :action => 'index') %>
101 <% end %> 105 <% end %>
test/functional/themes_controller_test.rb
@@ -16,11 +16,11 @@ class ThemesControllerTest &lt; Test::Unit::TestCase @@ -16,11 +16,11 @@ class ThemesControllerTest &lt; Test::Unit::TestCase
16 @profile = create_user('testinguser').person 16 @profile = create_user('testinguser').person
17 login_as('testinguser') 17 login_as('testinguser')
18 18
19 - env = Environment.default  
20 - env.enable('user_themes')  
21 - env.save! 19 + @env = Environment.default
  20 + @env.enable('user_themes')
  21 + @env.save!
22 end 22 end
23 - attr_reader :profile 23 + attr_reader :profile, :env
24 24
25 def teardown 25 def teardown
26 FileUtils.rm_rf(TMP_THEMES_DIR) 26 FileUtils.rm_rf(TMP_THEMES_DIR)
@@ -258,4 +258,18 @@ class ThemesControllerTest &lt; Test::Unit::TestCase @@ -258,4 +258,18 @@ class ThemesControllerTest &lt; Test::Unit::TestCase
258 assert_redirected_to :action => 'index' 258 assert_redirected_to :action => 'index'
259 end 259 end
260 260
  261 + should 'not display "new theme" button when user themes are disabled' do
  262 + env.disable('user_themes')
  263 + env.save!
  264 + get :index, :profile => 'testinguser'
  265 + assert_no_tag :tag => 'a', :attributes => { :href => '/myprofile/testinguser/themes/new' }
  266 + end
  267 +
  268 + should 'not display the "Select themes" section if there are no themes to choose from' do
  269 + env.themes = []; env.save!
  270 + Theme.stubs(:system_themes_dir).returns(TMP_THEMES_DIR) # an empty dir
  271 + get :index, :profile => "testinguser"
  272 + assert_no_tag :content => "Select theme"
  273 + end
  274 +
261 end 275 end