diff --git a/app/controllers/admin/admin_panel_controller.rb b/app/controllers/admin/admin_panel_controller.rb index 7a74c98..e31e33c 100644 --- a/app/controllers/admin/admin_panel_controller.rb +++ b/app/controllers/admin/admin_panel_controller.rb @@ -8,6 +8,9 @@ class AdminPanelController < AdminController def site_info if request.post? + if params[:environment][:languages] + params[:environment][:languages] = params[:environment][:languages].map {|lang, value| lang if value=='true'}.compact + end if @environment.update_attributes(params[:environment]) session[:notice] = _('Environment settings updated') redirect_to :action => 'index' diff --git a/app/helpers/forms_helper.rb b/app/helpers/forms_helper.rb index 3f7724c..8018513 100644 --- a/app/helpers/forms_helper.rb +++ b/app/helpers/forms_helper.rb @@ -123,6 +123,25 @@ module FormsHelper options_for_select.join("\n") end + def balanced_table(items, per_row=3) + items = items.map {|item| content_tag('td', item, :style => 'border: none; background: transparent;')} + rows = [] + row = [] + counter = 0 + items.each do |item| + counter += 1 + row << item + if counter % per_row == 0 + rows << content_tag('tr', row.join("\n")) + counter = 0 + row = [] + end + end + rows << content_tag('tr', row.join("\n")) + + content_tag('table',rows.join("\n")) + end + protected def self.next_id_number if defined? @@id_num diff --git a/app/views/admin_panel/_site_info.rhtml b/app/views/admin_panel/_site_info.rhtml index 8bc828c..65a7dcb 100644 --- a/app/views/admin_panel/_site_info.rhtml +++ b/app/views/admin_panel/_site_info.rhtml @@ -3,14 +3,13 @@ <%= labelled_form_field(_('Default language'), select(:environment, :default_language, environment.locales.invert, { :selected => environment.default_locale, :include_blank => true })) %> <%= label_tag :languages, _('Available languages') %>
-<% counter = 0 %> - -<% Noosfero.locales.each do |value, name| %> - <%= "" if counter%3==0 %> - <% counter += 1 %> - <%= content_tag('td', labelled_check_box(name, "environment[languages][#{value}]", true, environment.available_locales.include?(value))) %> - <%= "" if counter%3==0 %> -<% end %> -
+ +<% + fields = Noosfero.locales.map do |value, name| + labelled_check_box(name, "environment[languages][#{value}]", true, environment.available_locales.include?(value)) + end +%> +<%= balanced_table(fields)%> +
<%= labelled_form_field _('Homepage content'), text_area(:environment, :description, :cols => 40, :style => 'width: 90%', :class => 'mceEditor') %> diff --git a/test/functional/admin_panel_controller_test.rb b/test/functional/admin_panel_controller_test.rb index d906a9a..d36b4c0 100644 --- a/test/functional/admin_panel_controller_test.rb +++ b/test/functional/admin_panel_controller_test.rb @@ -351,4 +351,13 @@ class AdminPanelControllerTest < ActionController::TestCase assert_tag :tag => 'a', :content => /Plugin2 link/, :attributes => {:href => /plugin2.com/} end + should 'save available languages and default language properly' do + post :site_info, :environment => {:default_language => 'pt', :languages => {'pt' => 'true', 'en' => 'false'}} + environment = Environment.default + + assert_equal 'pt', environment.default_language + assert_includes environment.languages, 'pt' + assert_not_includes environment.languages, 'en' + end + end -- libgit2 0.21.2