Commit e7b563e65a9c4e39270d00bbc52967834def1552

Authored by Rodrigo Souto
1 parent cb16e304

[language-selection] Available languages interface and params treatment

app/controllers/admin/admin_panel_controller.rb
... ... @@ -8,6 +8,9 @@ class AdminPanelController < AdminController
8 8  
9 9 def site_info
10 10 if request.post?
  11 + if params[:environment][:languages]
  12 + params[:environment][:languages] = params[:environment][:languages].map {|lang, value| lang if value=='true'}.compact
  13 + end
11 14 if @environment.update_attributes(params[:environment])
12 15 session[:notice] = _('Environment settings updated')
13 16 redirect_to :action => 'index'
... ...
app/helpers/forms_helper.rb
... ... @@ -123,6 +123,25 @@ module FormsHelper
123 123 options_for_select.join("\n")
124 124 end
125 125  
  126 + def balanced_table(items, per_row=3)
  127 + items = items.map {|item| content_tag('td', item, :style => 'border: none; background: transparent;')}
  128 + rows = []
  129 + row = []
  130 + counter = 0
  131 + items.each do |item|
  132 + counter += 1
  133 + row << item
  134 + if counter % per_row == 0
  135 + rows << content_tag('tr', row.join("\n"))
  136 + counter = 0
  137 + row = []
  138 + end
  139 + end
  140 + rows << content_tag('tr', row.join("\n"))
  141 +
  142 + content_tag('table',rows.join("\n"))
  143 + end
  144 +
126 145 protected
127 146 def self.next_id_number
128 147 if defined? @@id_num
... ...
app/views/admin_panel/_site_info.rhtml
... ... @@ -3,14 +3,13 @@
3 3 <%= labelled_form_field(_('Default language'), select(:environment, :default_language, environment.locales.invert, { :selected => environment.default_locale, :include_blank => true })) %>
4 4 <%= label_tag :languages, _('Available languages') %>
5 5 <br />
6   -<% counter = 0 %>
7   -<table>
8   -<% Noosfero.locales.each do |value, name| %>
9   - <%= "<tr>" if counter%3==0 %>
10   - <% counter += 1 %>
11   - <%= content_tag('td', labelled_check_box(name, "environment[languages][#{value}]", true, environment.available_locales.include?(value))) %>
12   - <%= "</tr>" if counter%3==0 %>
13   -<% end %>
14   -</table>
  6 +
  7 +<%
  8 + fields = Noosfero.locales.map do |value, name|
  9 + labelled_check_box(name, "environment[languages][#{value}]", true, environment.available_locales.include?(value))
  10 + end
  11 +%>
  12 +<%= balanced_table(fields)%>
  13 +
15 14 <br />
16 15 <%= labelled_form_field _('Homepage content'), text_area(:environment, :description, :cols => 40, :style => 'width: 90%', :class => 'mceEditor') %>
... ...
test/functional/admin_panel_controller_test.rb
... ... @@ -351,4 +351,13 @@ class AdminPanelControllerTest &lt; ActionController::TestCase
351 351 assert_tag :tag => 'a', :content => /Plugin2 link/, :attributes => {:href => /plugin2.com/}
352 352 end
353 353  
  354 + should 'save available languages and default language properly' do
  355 + post :site_info, :environment => {:default_language => 'pt', :languages => {'pt' => 'true', 'en' => 'false'}}
  356 + environment = Environment.default
  357 +
  358 + assert_equal 'pt', environment.default_language
  359 + assert_includes environment.languages, 'pt'
  360 + assert_not_includes environment.languages, 'en'
  361 + end
  362 +
354 363 end
... ...