From e162f87964bd2f9721c415b2feb5a228e85644b6 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 26 Oct 2013 08:08:45 +0000 Subject: [PATCH] Replaces which is not HTML5 valid (#15191). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12237 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/helpers/projects_helper.rb | 2 +- config/initializers/10-patches.rb | 37 +++++++++++++++++++++++ test/functional/boards_controller_test.rb | 2 +- 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 << "" if project.allowed_parents.include?(nil) + options << "" 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: is invalid, use 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] = ' '.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] = ' '.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? ? [" ".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 => ' ' assert_select 'option[value=1]', :text => 'Help' end end