eac_rails_utils 0.8.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +2 -0
  3. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper.rb +8 -1
  4. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder.rb +12 -2
  5. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/association_select_field.rb +5 -2
  6. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/common_text_fields.rb +4 -3
  7. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/currency_field.rb +14 -12
  8. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/date_field.rb +3 -1
  9. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/fields_for.rb +3 -1
  10. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/file_field.rb +2 -1
  11. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/radio_select_field.rb +5 -2
  12. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/searchable_association_field.rb +7 -3
  13. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/select_field.rb +3 -1
  14. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/time_field.rb +2 -1
  15. data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/year_month_field.rb +2 -1
  16. data/app/helpers/eac_rails_utils/data_table_helper.rb +13 -0
  17. data/{lib/eac → app/helpers/eac_rails_utils}/data_table_helper/column.rb +6 -3
  18. data/{lib/eac → app/helpers/eac_rails_utils}/data_table_helper/data_table.rb +13 -11
  19. data/{lib/eac → app/helpers/eac_rails_utils}/data_table_helper/setup.rb +3 -2
  20. data/app/helpers/eac_rails_utils/formatter_helper.rb +2 -0
  21. data/app/helpers/eac_rails_utils/links_helper.rb +12 -2
  22. data/{lib/eac → app/helpers/eac_rails_utils}/menus_helper.rb +10 -2
  23. data/{lib/eac → app/helpers/eac_rails_utils}/menus_helper/bootstrap_gui_builder.rb +8 -5
  24. data/{lib/eac → app/helpers/eac_rails_utils}/menus_helper/data_builder.rb +7 -2
  25. data/{lib/eac → app/helpers/eac_rails_utils}/menus_helper/gui_builder.rb +6 -3
  26. data/app/helpers/eac_rails_utils/open_graph_protocol_helper.rb +2 -0
  27. data/{lib/eac → app/validators/eac_rails_utils}/cpf_validator.rb +8 -4
  28. data/{lib/eac → app/validators/eac_rails_utils}/no_presence_validator.rb +3 -3
  29. data/lib/assets/javascripts/jMenu.jquery.min.js +12 -12
  30. data/lib/eac_rails_utils.rb +3 -41
  31. data/lib/eac_rails_utils/engine.rb +3 -0
  32. data/lib/{eac → eac_rails_utils}/htmlbeautifier.rb +3 -1
  33. data/lib/eac_rails_utils/models.rb +9 -0
  34. data/lib/eac_rails_utils/models/attribute_required.rb +43 -0
  35. data/lib/eac_rails_utils/models/fetch_errors.rb +92 -0
  36. data/lib/eac_rails_utils/models/inequality_queries.rb +39 -0
  37. data/lib/eac_rails_utils/models/tableless.rb +97 -0
  38. data/lib/eac_rails_utils/models/test_utils.rb +65 -0
  39. data/lib/eac_rails_utils/patches.rb +9 -0
  40. data/lib/eac_rails_utils/patches/action_controller_base.rb +3 -0
  41. data/lib/eac_rails_utils/version.rb +2 -1
  42. data/test/dummy/Rakefile +3 -1
  43. data/test/dummy/app/models/job.rb +2 -0
  44. data/test/dummy/app/models/user.rb +6 -0
  45. data/test/dummy/config.ru +2 -0
  46. data/test/dummy/config/application.rb +3 -1
  47. data/test/dummy/config/boot.rb +3 -1
  48. data/test/dummy/config/environment.rb +3 -1
  49. data/test/dummy/config/environments/test.rb +2 -0
  50. data/test/dummy/config/routes.rb +2 -0
  51. data/test/dummy/db/migrate/20160415125333_create_users.rb +2 -0
  52. data/test/dummy/db/migrate/20160415143123_create_jobs.rb +2 -0
  53. data/test/dummy/db/migrate/20160415143229_add_job_to_users.rb +2 -0
  54. data/test/{lib/eac → helpers/eac_rails_utils}/common_form_helper_test.rb +4 -2
  55. data/test/{lib/eac/data_table_test_helper.rb → helpers/eac_rails_utils/data_table_test_helper_test.rb} +4 -3
  56. data/test/{app/helpers → helpers}/eac_rails_utils/formatter_helper_test.rb +1 -0
  57. data/test/lib/eac_rails_utils/{patches/model_attribute_required_test.rb → models/attribute_required_test.rb} +3 -0
  58. data/test/lib/eac_rails_utils/models/fetch_errors_test.rb +80 -0
  59. data/test/lib/eac_rails_utils/models/tableless_test.rb +25 -0
  60. data/test/test_helper.rb +3 -1
  61. data/test/{lib/eac → validators}/cpf_validator_test.rb +4 -2
  62. metadata +91 -98
  63. data/lib/eac/data_table_helper.rb +0 -12
  64. data/lib/eac/inequality_queries.rb +0 -36
  65. data/lib/eac/model.rb +0 -87
  66. data/lib/eac/parsers/files_test.rb +0 -63
  67. data/lib/eac/source_target_fixtures.rb +0 -66
  68. data/lib/eac/test_utils.rb +0 -56
  69. data/lib/eac_rails_utils/patches/model_attribute_required.rb +0 -31
  70. data/lib/eac_rails_utils/patches/ofx_parser.rb +0 -42
  71. data/lib/eac_rails_utils/tableless_model.rb +0 -90
  72. data/test/lib/eac/model_test.rb +0 -76
  73. data/test/lib/eac/parsers/files_test_test.rb +0 -27
  74. data/test/lib/eac/parsers/ok_test_files/a.source.yaml +0 -1
  75. data/test/lib/eac/parsers/ok_test_files/a.target.yaml +0 -1
  76. data/test/lib/eac/parsers/ok_test_files/b.source.yaml +0 -1
  77. data/test/lib/eac/parsers/ok_test_files/b.target.yaml +0 -1
  78. data/test/lib/eac/source_target_fixtures_test.rb +0 -41
  79. data/test/lib/eac/source_target_fixtures_test_files/a.source.html +0 -1
  80. data/test/lib/eac/source_target_fixtures_test_files/a.target.yaml +0 -1
  81. data/test/lib/eac/source_target_fixtures_test_files/b.source.html +0 -1
  82. data/test/lib/eac/source_target_fixtures_test_files/c.target.yaml +0 -1
  83. data/test/lib/eac_rails_utils/tableless_model_test.rb +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6110af17107237d774ea52a1ca25220fd711671526b1eeda16db466f62bdca6
4
- data.tar.gz: 67908bcdc2622d86dc2b9f7960963e2efba51150320542f028d7d433c1190b8d
3
+ metadata.gz: fdc60e761e13bcdf41dd921a5501fa3d6e4e372f3d3c2af48eef03a3f7bee723
4
+ data.tar.gz: 6121db8bfd8023c7360fea7d7f40c159a8411462970b37705e3d5c0217e8238f
5
5
  SHA512:
6
- metadata.gz: 0a183c0e6065f379848fac12323028fc466cf910de11585ca09855a2c915f54aaffc0371424fef0e392a598291986148ba3af6f2d737f46de5d50314f008491e
7
- data.tar.gz: 5f9fb0839dcbf3db537cfdfc736accde82399f74452c283044a7f7cf97e844e90fd05191c6c7b1d3fb5b94af71c6a8d654ad9ac716980316eb95d122800a0748
6
+ metadata.gz: 5171b49a17923a648dc8a94b45d4386f1aec8c9079941da2ff66744347b07bc46ab6f64f42c0a46475fb258fa41fe78e755a8d0d1140497fafd10e19cbbfe902
7
+ data.tar.gz: 486f7961912a84ee2cc74ff6b91c13e9c19364a42b41ee75af835a6cda82fed07c097bf9ba15007f0207eb9f6f986a84fa329c3be87b0b6776dfe147f14a7bb7
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
4
  require 'bundler/setup'
3
5
  rescue LoadError
@@ -1,5 +1,11 @@
1
- module Eac
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+
5
+ module EacRailsUtils
2
6
  module CommonFormHelper
7
+ ::EacRubyUtils.require_sub __FILE__
8
+
3
9
  def common_form(model_instance, options = {}, &block)
4
10
  submit_label = options.delete(:submit_label)
5
11
  options[:html] ||= {}
@@ -29,6 +35,7 @@ module Eac
29
35
  s = ActiveSupport::SafeBuffer.new
30
36
  model_instance.errors.each do |k, v|
31
37
  next if field_errors_showed.include?(k)
38
+
32
39
  s << content_tag(:div, "#{k}: #{v}", class: 'error')
33
40
  end
34
41
  s
@@ -1,7 +1,13 @@
1
1
  # frozen_string_literal: true
2
- module Eac
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+ require 'eac_rails_utils/models/attribute_required'
5
+
6
+ module EacRailsUtils
3
7
  module CommonFormHelper
4
8
  class FormBuilder
9
+ ::EacRubyUtils.require_sub __FILE__
10
+
5
11
  include AssociationSelectField
6
12
  include CommonTextFields
7
13
  include CurrencyField
@@ -67,6 +73,7 @@ module Eac
67
73
 
68
74
  def field_errors_errors(field_name)
69
75
  return nil unless model_instance.errors.messages[field_name]
76
+
70
77
  s = ActiveSupport::SafeBuffer.new
71
78
  model_instance.errors.messages[field_name].each { |error| s << field_error(error) }
72
79
  @field_errors_showed.add(field_name)
@@ -85,7 +92,10 @@ module Eac
85
92
  end
86
93
 
87
94
  def field_label(field_name, label, required)
88
- required = model_instance.attribute_required?(field_name) if required.nil?
95
+ if required.nil?
96
+ required = ::EacRailsUtils::Models::AttributeRequired
97
+ .required?(model_instance, field_name)
98
+ end
89
99
  @form.label(field_name, label, class: required ? 'required' : 'optional')
90
100
  end
91
101
  end
@@ -1,4 +1,6 @@
1
- module Eac
1
+ # frozen_string_literal: true
2
+
3
+ module EacRailsUtils
2
4
  module CommonFormHelper
3
5
  class FormBuilder
4
6
  module AssociationSelectField
@@ -31,7 +33,8 @@ module Eac
31
33
  if model_instance.class.respond_to?(:reflect_on_association)
32
34
  return model_instance.class.reflect_on_association(field_name).send(method)
33
35
  end
34
- fail "#{model_instance.class} não possui um método \"reflect_on_association\". " \
36
+
37
+ raise "#{model_instance.class} não possui um método \"reflect_on_association\". " \
35
38
  "Defina explicitamente a opção :#{key}"
36
39
  end
37
40
  end
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
- module Eac
2
+
3
+ module EacRailsUtils
3
4
  module CommonFormHelper
4
5
  class FormBuilder
5
6
  module CommonTextFields
6
- %w(email password text).each do |t|
7
+ %w[email password text].each do |t|
7
8
  class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
8
9
  def #{t}_field(field_name, options = {}) # def text_field(field_name, options = {})
9
10
  field(field_name, options) do # field(field_name, options) do
@@ -13,7 +14,7 @@ module Eac
13
14
  input_options) # class: 'form-control')
14
15
  end # end
15
16
  end # end
16
- RUBY_EVAL
17
+ RUBY_EVAL
17
18
  end
18
19
  end
19
20
  end
@@ -1,4 +1,6 @@
1
- module Eac
1
+ # frozen_string_literal: true
2
+
3
+ module EacRailsUtils
2
4
  module CommonFormHelper
3
5
  class FormBuilder
4
6
  module CurrencyField
@@ -7,8 +9,8 @@ module Eac
7
9
  visible_id = SecureRandom.hex(5)
8
10
  cf = field(field_name, options) do
9
11
  form.hidden_field(field_name, id: hidden_id) <<
10
- helper.text_field_tag("#{field_name}_visible", '',
11
- id: visible_id, class: 'form-control')
12
+ helper.text_field_tag("#{field_name}_visible", '',
13
+ id: visible_id, class: 'form-control')
12
14
  end
13
15
  cf << javascript_currency_mask(hidden_id, visible_id)
14
16
  end
@@ -23,15 +25,15 @@ module Eac
23
25
  end
24
26
 
25
27
  def mask_money_options
26
- <<-eos
27
- {
28
- prefix: '#{I18n.t('number.currency.format.unit')} ',
29
- allowNegative: true,
30
- thousands: '#{I18n.t('number.currency.format.delimiter')}',
31
- decimal: '#{I18n.t('number.currency.format.separator')}',
32
- affixesStay: false
33
- }
34
- eos
28
+ <<~JSON_CODE
29
+ {
30
+ prefix: '#{I18n.t('number.currency.format.unit')} ',
31
+ allowNegative: true,
32
+ thousands: '#{I18n.t('number.currency.format.delimiter')}',
33
+ decimal: '#{I18n.t('number.currency.format.separator')}',
34
+ affixesStay: false
35
+ }
36
+ JSON_CODE
35
37
  end
36
38
  end
37
39
  end
@@ -1,4 +1,6 @@
1
- module Eac
1
+ # frozen_string_literal: true
2
+
3
+ module EacRailsUtils
2
4
  module CommonFormHelper
3
5
  class FormBuilder
4
6
  module DateField
@@ -1,4 +1,6 @@
1
- module Eac
1
+ # frozen_string_literal: true
2
+
3
+ module EacRailsUtils
2
4
  module CommonFormHelper
3
5
  class FormBuilder
4
6
  module FieldsFor
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- module Eac
2
+
3
+ module EacRailsUtils
3
4
  module CommonFormHelper
4
5
  class FormBuilder
5
6
  module FileField
@@ -1,4 +1,6 @@
1
- module Eac
1
+ # frozen_string_literal: true
2
+
3
+ module EacRailsUtils
2
4
  module CommonFormHelper
3
5
  class FormBuilder
4
6
  module RadioSelectField
@@ -35,7 +37,8 @@ module Eac
35
37
  if model_instance.class.respond_to?(:reflect_on_association)
36
38
  return model_instance.class.reflect_on_association(field_name).send(method)
37
39
  end
38
- fail "#{model_instance.class} não possui um método \"reflect_on_association\". " \
40
+
41
+ raise "#{model_instance.class} não possui um método \"reflect_on_association\". " \
39
42
  "Defina explicitamente a opção :#{key}"
40
43
  end
41
44
  end
@@ -1,4 +1,6 @@
1
- module Eac
1
+ # frozen_string_literal: true
2
+
3
+ module EacRailsUtils
2
4
  module CommonFormHelper
3
5
  class FormBuilder
4
6
  class SearchableAssociationField
@@ -42,17 +44,19 @@ module Eac
42
44
  end
43
45
 
44
46
  def association_column
45
- @form_builder.model_instance && @form_builder.model_instance.send(@field_name)
47
+ @form_builder.model_instance&.send(@field_name)
46
48
  end
47
49
 
48
50
  def initial_id
49
51
  return association_column.id if association_column
52
+
50
53
  ''
51
54
  end
52
55
 
53
56
  def initial_label
54
57
  return association_column.to_s if association_column
55
58
  return params[visible_input_name] if params.key?(visible_input_name)
59
+
56
60
  ''
57
61
  end
58
62
 
@@ -66,7 +70,7 @@ module Eac
66
70
 
67
71
  def json_options
68
72
  r = {}
69
- [:hidden_input_id, :visible_input_id, :initial_id, :initial_label, :url].each do |k|
73
+ %i[hidden_input_id visible_input_id initial_id initial_label url].each do |k|
70
74
  r[k] = send(k)
71
75
  end
72
76
  r.to_json
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- module Eac
2
+
3
+ module EacRailsUtils
3
4
  module CommonFormHelper
4
5
  class FormBuilder
5
6
  module SelectField
@@ -19,6 +20,7 @@ module Eac
19
20
  def listable_select_options(field_name)
20
21
  return nil unless model_instance.class.respond_to?(:lists)
21
22
  return nil unless model_instance.class.lists.respond_to?(field_name)
23
+
22
24
  model_instance.class.lists.send(field_name).options
23
25
  end
24
26
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- module Eac
2
+
3
+ module EacRailsUtils
3
4
  module CommonFormHelper
4
5
  class FormBuilder
5
6
  module TimeField
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- module Eac
2
+
3
+ module EacRailsUtils
3
4
  module CommonFormHelper
4
5
  class FormBuilder
5
6
  module YearMonthField
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+
5
+ module EacRailsUtils
6
+ module DataTableHelper
7
+ ::EacRubyUtils.require_sub __FILE__
8
+
9
+ def data_table(dataset, &block)
10
+ ::EacRailsUtils::DataTableHelper::DataTable.new(self, dataset, &block).output
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- module Eac
2
+
3
+ module EacRailsUtils
3
4
  module DataTableHelper
4
5
  class Column
5
6
  EMPTY_VALUE = '-'
@@ -12,8 +13,8 @@ module Eac
12
13
  @block = block
13
14
  end
14
15
 
15
- def record_value(r)
16
- v = Node.new(r, @path).value
16
+ def record_value(record)
17
+ v = Node.new(record, @path).value
17
18
  if v.present?
18
19
  @block ? @block.call(v) : v
19
20
  else
@@ -35,9 +36,11 @@ module Eac
35
36
 
36
37
  def value
37
38
  return @node if @node.nil? || @path.empty?
39
+
38
40
  subpath = @path.dup
39
41
  n = subpath.shift
40
42
  return Node.new(@node.send(n), subpath).value if @node.respond_to?(n)
43
+
41
44
  raise "Instance of #{@node.class} does not respond to #{n}"
42
45
  end
43
46
  end
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Eac
3
+ module EacRailsUtils
4
4
  module DataTableHelper
5
5
  class DataTable
6
6
  def initialize(view, dataset)
7
7
  @view = view
8
8
  @dataset = dataset
9
- @setup = ::Eac::DataTableHelper::Setup.new
9
+ @setup = ::EacRailsUtils::DataTableHelper::Setup.new
10
10
  yield(@setup)
11
11
  end
12
12
 
@@ -32,20 +32,22 @@ module Eac
32
32
  end
33
33
  end
34
34
 
35
- def row(r)
35
+ def row(record)
36
36
  @view.content_tag(:tr) do
37
- @view.safe_join(@setup.columns.map { |c| @view.content_tag('td', c.record_value(r)) << "\n" })
37
+ @view.safe_join(
38
+ @setup.columns.map { |c| @view.content_tag('td', c.record_value(record)) << "\n" }
39
+ )
38
40
  end << "\n"
39
41
  end
40
42
 
41
43
  def script
42
- @view.javascript_tag <<EOS
43
- $(document).ready(function () {
44
- $('##{id}').DataTable({
45
- paging: #{@setup.paging ? 'true' : 'false'}
46
- });
47
- });
48
- EOS
44
+ @view.javascript_tag <<~JS_CODE
45
+ $(document).ready(function () {
46
+ $('##{id}').DataTable({
47
+ paging: #{@setup.paging ? 'true' : 'false'}
48
+ });
49
+ });
50
+ JS_CODE
49
51
  end
50
52
 
51
53
  def id
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- module Eac
2
+
3
+ module EacRailsUtils
3
4
  module DataTableHelper
4
5
  class Setup
5
6
  attr_reader :columns
@@ -11,7 +12,7 @@ module Eac
11
12
  end
12
13
 
13
14
  def column(label, path = nil, &block)
14
- @columns << ::Eac::DataTableHelper::Column.new(label, path, block)
15
+ @columns << ::EacRailsUtils::DataTableHelper::Column.new(label, path, block)
15
16
  end
16
17
  end
17
18
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module EacRailsUtils
3
4
  module FormatterHelper
4
5
  extend ::ActiveSupport::Concern
@@ -10,6 +11,7 @@ module EacRailsUtils
10
11
  def value_or_sign(value, sign = '-', &block)
11
12
  return sign if value.blank?
12
13
  return yield(value) if block
14
+
13
15
  value
14
16
  end
15
17
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module EacRailsUtils
3
4
  module LinksHelper
4
5
  def short_delete_link(object)
@@ -20,7 +21,8 @@ module EacRailsUtils
20
21
  def short_goto_link(url)
21
22
  value_or_sign(url, '') do |value|
22
23
  link_to '', value, class: 'goto_link', target: '_blank',
23
- title: ::I18n.t('eac_rails_base0.links.goto_url', url: value.to_s)
24
+ title: ::I18n.t('eac_rails_base0.links.goto_url', url: value.to_s),
25
+ rel: 'noopener'
24
26
  end
25
27
  end
26
28
 
@@ -33,11 +35,12 @@ module EacRailsUtils
33
35
  end
34
36
 
35
37
  def object_path(object, action = nil)
36
- current_class = object.class
38
+ current_class = object_class(object)
37
39
  tried_paths = []
38
40
  while current_class
39
41
  path = object_path_by_class(current_class, action)
40
42
  return send(path, object) if respond_to?(path)
43
+
41
44
  tried_paths << path
42
45
  current_class = current_class.superclass
43
46
  end
@@ -65,5 +68,12 @@ module EacRailsUtils
65
68
  path = "#{action}_#{path}" if action.present?
66
69
  path
67
70
  end
71
+
72
+ def object_class(object)
73
+ return object.entity_class if object.respond_to?(:entity_class)
74
+ return object.__getobj__.class if object.respond_to?(:__getobj__)
75
+
76
+ object.class
77
+ end
68
78
  end
69
79
  end
@@ -1,16 +1,24 @@
1
- module Eac
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+
5
+ module EacRailsUtils
2
6
  module MenusHelper
7
+ ::EacRubyUtils.require_sub __FILE__
8
+
3
9
  def dropdown_menu(entries)
4
10
  entries = DataBuilder.new(self).build(entries)
5
11
  return nil unless entries
12
+
6
13
  id = SecureRandom.hex(5)
7
14
  GuiBuilder.new(self).build(entries, id: id, class: 'jMenu') <<
8
- content_tag(:script) { raw("$(document).ready(function(){$('\##{id}').jMenu();});") }
15
+ javascript_tag("$(document).ready(function(){$('\##{id}').jMenu();});")
9
16
  end
10
17
 
11
18
  def bootstrap_dropdown_menu(entries, options = {})
12
19
  entries = DataBuilder.new(self).build(entries)
13
20
  return nil unless entries
21
+
14
22
  BootstrapGuiBuilder.new(self, options).build(entries)
15
23
  end
16
24
  end