app/helpers/katello/katello_form_builder.rb in katello-1.5.0 vs app/helpers/katello/katello_form_builder.rb in katello-2.2.2
- old
+ new
@@ -1,7 +1,7 @@
#
-# Copyright 2013 Red Hat, Inc.
+# Copyright 2014 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public
# License as published by the Free Software Foundation; either version
# 2 of the License (GPLv2) or (at your option) any later version.
# There is NO WARRANTY for this software, express or implied,
@@ -9,154 +9,155 @@
# NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
# have received a copy of GPLv2 along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
module Katello
-class KatelloFormBuilder < ActionView::Helpers::FormBuilder
+ class KatelloFormBuilder < ActionView::Helpers::FormBuilder
+ delegate :content_tag, :tag, :to => :@template
- delegate :content_tag, :tag, :to => :@template
+ %w(text_field text_area select file_field).each do |m|
+ define_method m do |name, *args|
+ base(name, *args) { super(name, *args) }
+ end
+ end
- %w(text_field text_area select file_field).each do |m|
- define_method m do |name, *args|
- base(name, *args) { super(name, *args) }
+ def field(name, *args, &block)
+ base(name, *args, &block)
end
- end
- def field(name, *args, &block)
- base(name, *args, &block)
- end
+ # Support for rendering jquery.jeditable fields.
+ # Instead of writing complete html code for the field and the label
+ # it allows to use 'editable' form helper.
+ #
+ # @example usage
+ # kt_form_for @record, :data_url => record_path(@record) do |form|
+ # form.editable :name, :label => _("Name:")
+ # end
+ #
+ # kt_form_for @record do |form|
+ # form.editable :name, :data_url => record_path_1(@record)
+ # form.editable :surname, :data_url => record_path_2(@record)
+ # end
+ #
+ # kt_form_for @record, :data_url => record_path(@record) do |form|
+ # form.editable :name do
+ # # Some custom value
+ # end
+ # end
+ #
+ # @param [Hash] options
+ # @option options [String] :label label text
+ # @option options [true,false] :editable boolean flag, switches possibility to edit the field
+ # @option options [String] :class additional css class
+ # @option options [String] :help help string
+ # @option options [String] :type editable type, eg. edit_textarea, edit_number. Default is edit_panel_element
+ # @option options [Hash] :tag options passed directly to the element
+ def editable(name, options)
+ options.symbolize_keys!
+ options[:editable] = true if options[:editable].nil?
+ options[:type] ||= "edit_panel_element"
- # Support for rendering jquery.jeditable fields.
- # Instead of writing complete html code for the field and the label
- # it allows to use 'editable' form helper.
- #
- # @example usage
- # kt_form_for @record, :data_url => record_path(@record) do |form|
- # form.editable :name, :label => _("Name:")
- # end
- #
- # kt_form_for @record do |form|
- # form.editable :name, :data_url => record_path_1(@record)
- # form.editable :surname, :data_url => record_path_2(@record)
- # end
- #
- # kt_form_for @record, :data_url => record_path(@record) do |form|
- # form.editable :name do
- # # Some custom value
- # end
- # end
- #
- # @param [Hash] options
- # @option options [String] :label label text
- # @option options [true,false] :editable boolean flag, switches possibility to edit the field
- # @option options [String] :class additional css class
- # @option options [String] :help help string
- # @option options [String] :type editable type, eg. edit_textarea, edit_number. Default is edit_panel_element
- # @option options [Hash] :tag options passed directly to the element
- def editable(name, options)
- options.symbolize_keys!
- options[:editable] = true if options[:editable].nil?
- options[:type] ||= "edit_panel_element"
+ tag_options = {}
+ tag_options[:name] = "%s[%s]" % [@object_name, name.to_s]
+ # rubocop:disable SymbolName
+ tag_options[:'data-url'] = options[:'data-url'] || options[:data_url] || @options[:data_url]
+ tag_options.update(options[:tag]) if options.key? :tag
- tag_options = {}
- tag_options[:name] = "%s[%s]" % [@object_name, name.to_s]
- # rubocop:disable SymbolName
- tag_options[:'data-url'] = options[:'data-url'] || options[:data_url] || @options[:data_url]
- tag_options.update(options[:tag]) if options.key? :tag
+ css_class = "%s " % options[:class].to_s
+ css_class += "editable %s" % options[:type].to_s if options[:editable]
+ css_class.strip!
- css_class = "%s " % options[:class].to_s
- css_class += "editable %s" % options[:type].to_s if options[:editable]
- css_class.strip!
+ field_options = {}
+ field_options[:label] = options[:label]
+ field_options[:help] = options[:help]
+ field_options[:label_help] = options[:label_help]
+ field_options[:input_wrapper] = {}
+ field_options[:input_wrapper][:class] = css_class
+ field_options[:input_wrapper][:tag_options] = tag_options
- field_options = {}
- field_options[:label] = options[:label]
- field_options[:help] = options[:help]
- field_options[:label_help] = options[:label_help]
- field_options[:input_wrapper] = {}
- field_options[:input_wrapper][:class] = css_class
- field_options[:input_wrapper][:tag_options] = tag_options
+ base(name, field_options) do
+ if block_given?
+ yield
+ else
+ @object.send(name)
+ end
+ end
+ end
- base(name, field_options) do
- if block_given?
- yield
- else
- @object.send(name)
+ def submit(*args)
+ options = args.extract_options!
+ options.symbolize_keys!
+ options[:tabindex] ||= tabindex
+ args.push options
+ content_tag :div, :class => "grid_5 la prefix_2" do
+ super
end
end
- end
- def submit(*args)
- options = args.extract_options!
- options.symbolize_keys!
- options[:tabindex] ||= tabindex
- args.push options
- content_tag :div, :class => "grid_5 la prefix_2" do
- super
+ def tabindex
+ @tabindex ||= @options[:tabindex] || 0
+ @tabindex += 1
end
- end
- def tabindex
- @tabindex ||= @options[:tabindex] || 0
- @tabindex += 1
- end
+ private
- private
+ def base(name, *args)
+ options = args.extract_options!
+ options.symbolize_keys!
+ options[:grid] ||= [2, 5]
+ unless options[:grid].is_a?(Array) && options[:grid].size == 2
+ fail ArgumentError, "#{name}[grid]: expecting array of size 2"
+ end
+ # check if user added some class for wrappers and add grid and align classes
+ [:label_wrapper, :input_wrapper].each_with_index do |wrapper, i|
+ options[wrapper] ||= {}
+ unless options[wrapper][:class].is_a?(Array)
+ options[wrapper][:class] = (options[wrapper][:class] || '').split
+ end
+ options[wrapper][:class] ||= ["grid_#{options[:grid][i]}", (i == 0 ? "ra" : "la")]
+ end
+ options[:tabindex] ||= tabindex
+ options[:wrapper] ||= {}
+ options[:size] ||= '30'
- def base(name, *args)
- options = args.extract_options!
- options.symbolize_keys!
- options[:grid] ||= [2, 5]
- unless options[:grid].is_a?(Array) && options[:grid].size == 2
- fail ArgumentError, "#{name}[grid]: expecting array of size 2"
- end
- # check if user added some class for wrappers and add grid and align classes
- [:label_wrapper, :input_wrapper].each_with_index do |wrapper, i|
- options[wrapper] ||= {}
- unless options[wrapper][:class].is_a?(Array)
- options[wrapper][:class] = (options[wrapper][:class] || '').split
+ content_tag(:div, :class => "clearfix") do
+ content_tag :div, :class => "form-group'}" do
+ content_tag :fieldset, :id => options[:wrapper][:id] do
+ @template.concat label_wrapper(options) { field_label(name, options) }
+ @template.concat input_wrapper(options) { yield if block_given? }
+ end
+ end
end
- options[wrapper][:class] |= ["grid_#{options[:grid][i]}", (i == 0 ? "ra" : "la")]
end
- options[:tabindex] ||= tabindex
- options[:wrapper] ||= {}
- options[:size] ||= '30'
- content_tag :fieldset, :id => options[:wrapper][:id] do
- @template.concat label_wrapper(options) { field_label(name, options) }
- @template.concat input_wrapper(options) { yield if block_given? }
+ def label_wrapper(options)
+ tag_options = options[:label_wrapper][:tag_options] || {}
+ tag_options.merge!(:class => options[:label_wrapper][:class])
+
+ content_tag(:div, tag_options) { yield }
end
- end
+ def input_wrapper(options)
+ tag_options = options[:input_wrapper][:tag_options] || {}
+ tag_options.merge!(:class => options[:input_wrapper][:class])
- def label_wrapper(options)
- tag_options = options[:label_wrapper][:tag_options] || {}
- tag_options.merge!(:class => options[:label_wrapper][:class])
+ content_tag(:div, tag_options) { yield } +
+ (content_tag(:i, '', :class => 'details-icon', 'data-help' => options[:help]) if options[:help])
+ end
- content_tag(:div, tag_options) { yield }
- end
+ def field_label(name, options)
+ required = object.class.validators_on(name).any? do|v|
+ v.is_a? ActiveModel::Validations::PresenceValidator
+ end
- def input_wrapper(options)
- tag_options = options[:input_wrapper][:tag_options] || {}
- tag_options.merge!(:class => options[:input_wrapper][:class])
+ label_content = label(name, options[:label], :class => ("required" if required))
+ return label_content if options[:label_help].nil?
- content_tag(:div, tag_options) { yield } +
- (content_tag(:i, '', :class => 'details-icon', 'data-help' => options[:help]) if options[:help])
- end
-
- def field_label(name, options)
- required = object.class.validators_on(name).any? do|v|
- v.kind_of? ActiveModel::Validations::PresenceValidator
+ help_content = content_tag(:i, '', :class => 'details_icon-grey tipsify col-md-2 control-label', 'title' => options[:label_help])
+ return help_content + label_content
end
- label_content = label(name, options[:label], :class => ("required" if required))
- return label_content if options[:label_help].nil?
-
- help_content = content_tag(:i, '', :class => 'details_icon-grey tipsify', 'title' => options[:label_help])
- return help_content + label_content
+ def objectify_options(options)
+ super.except(:label, :label_wrapper, :input_wrapper, :grid, :wrapper)
+ end
end
-
- def objectify_options(options)
- super.except(:label, :label_wrapper, :input_wrapper, :grid, :wrapper)
- end
-
-end
end