summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/helpers/projects_helper.rb2
-rw-r--r--config/initializers/10-patches.rb37
-rw-r--r--test/functional/boards_controller_test.rb2
3 files changed, 39 insertions, 2 deletions
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 4ec54d8dd..8f236bed6 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -46,7 +46,7 @@ module ProjectsHelper
end
options = ''
- options << "<option value=''></option>" if project.allowed_parents.include?(nil)
+ options << "<option value=''>&nbsp;</option>" if project.allowed_parents.include?(nil)
options << project_tree_options_for_select(project.allowed_parents.compact, :selected => selected)
content_tag('select', options.html_safe, :name => 'project[parent_id]', :id => 'project_parent_id')
end
diff --git a/config/initializers/10-patches.rb b/config/initializers/10-patches.rb
index 79641513e..d186bcdc4 100644
--- a/config/initializers/10-patches.rb
+++ b/config/initializers/10-patches.rb
@@ -91,6 +91,43 @@ end
ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| html_tag || ''.html_safe }
+# HTML5: <option value=""></option> is invalid, use <option value="">&nbsp;</option> instead
+module ActionView
+ module Helpers
+ class InstanceTag
+ private
+ def add_options_with_non_empty_blank_option(option_tags, options, value = nil)
+ if options[:include_blank] == true
+ options = options.dup
+ options[:include_blank] = '&nbsp;'.html_safe
+ end
+ add_options_without_non_empty_blank_option(option_tags, options, value)
+ end
+ alias_method_chain :add_options, :non_empty_blank_option
+ end
+
+ module FormTagHelper
+ def select_tag_with_non_empty_blank_option(name, option_tags = nil, options = {})
+ if options.delete(:include_blank)
+ options[:prompt] = '&nbsp;'.html_safe
+ end
+ select_tag_without_non_empty_blank_option(name, option_tags, options)
+ end
+ alias_method_chain :select_tag, :non_empty_blank_option
+ end
+
+ module FormOptionsHelper
+ def options_for_select_with_non_empty_blank_option(container, selected = nil)
+ if container.is_a?(Array)
+ container = container.map {|element| element.blank? ? ["&nbsp;".html_safe, ""] : element}
+ end
+ options_for_select_without_non_empty_blank_option(container, selected)
+ end
+ alias_method_chain :options_for_select, :non_empty_blank_option
+ end
+ end
+end
+
require 'mail'
module DeliveryMethods
diff --git a/test/functional/boards_controller_test.rb b/test/functional/boards_controller_test.rb
index 910f16e9a..6b07b900c 100644
--- a/test/functional/boards_controller_test.rb
+++ b/test/functional/boards_controller_test.rb
@@ -117,7 +117,7 @@ class BoardsControllerTest < ActionController::TestCase
assert_select 'select[name=?]', 'board[parent_id]' do
assert_select 'option', (Project.find(1).boards.size + 1)
- assert_select 'option[value=]', :text => ''
+ assert_select 'option[value=]', :text => '&nbsp;'
assert_select 'option[value=1]', :text => 'Help'
end
end