diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-12-30 10:48:11 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-12-30 10:48:11 +0000 |
commit | 66420fe4b7ece872c992a91e935a79258482068b (patch) | |
tree | 97079d769d5f0b1cb9b805e9f4d62702fbb8c405 /lib | |
parent | 5bc7dc77e24a947a005625971c42d20d6bdf8e5b (diff) | |
download | redmine-66420fe4b7ece872c992a91e935a79258482068b.tar.gz redmine-66420fe4b7ece872c992a91e935a79258482068b.zip |
TabularFormBuilder moved out of application_helper.rb
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1028 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib')
-rw-r--r-- | lib/tabular_form_builder.rb | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/tabular_form_builder.rb b/lib/tabular_form_builder.rb new file mode 100644 index 000000000..5b331fe3f --- /dev/null +++ b/lib/tabular_form_builder.rb @@ -0,0 +1,51 @@ +# redMine - project management software +# Copyright (C) 2006-2007 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require 'action_view/helpers/form_helper' + +class TabularFormBuilder < ActionView::Helpers::FormBuilder + include GLoc + + def initialize(object_name, object, template, options, proc) + set_language_if_valid options.delete(:lang) + @object_name, @object, @template, @options, @proc = object_name, object, template, options, proc + end + + (field_helpers - %w(radio_button hidden_field) + %w(date_select)).each do |selector| + src = <<-END_SRC + def #{selector}(field, options = {}) + return super if options.delete :no_label + label_text = l(options[:label]) if options[:label] + label_text ||= l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + label_text << @template.content_tag("span", " *", :class => "required") if options.delete(:required) + label = @template.content_tag("label", label_text, + :class => (@object && @object.errors[field] ? "error" : nil), + :for => (@object_name.to_s + "_" + field.to_s)) + label + super + end + END_SRC + class_eval src, __FILE__, __LINE__ + end + + def select(field, choices, options = {}, html_options = {}) + label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "") + label = @template.content_tag("label", label_text, + :class => (@object && @object.errors[field] ? "error" : nil), + :for => (@object_name.to_s + "_" + field.to_s)) + label + super + end +end |