mongoid_form 0.0.3 → 0.0.4
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.
- data/CHANGELOG.md +6 -0
- data/README.md +31 -15
- data/lib/generators/mongoid_form/templates/config.rb +1 -0
- data/lib/mongoid_form/form_builder.rb +12 -3
- data/lib/mongoid_form/helpers/form_helper.rb +25 -4
- data/lib/mongoid_form/version.rb +1 -1
- data/mongoid_form.gemspec +2 -2
- metadata +4 -4
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.0.4
|
4
|
+
* Added support for associations
|
5
|
+
* Added helper radios_from_collection
|
6
|
+
* Type of field passing to a label class for better customization
|
7
|
+
* Fixed bug with passing params for input
|
8
|
+
|
3
9
|
## 0.0.3
|
4
10
|
* Localized fields for text_field and text_area
|
5
11
|
* Fix issue with flag block rendering if field is not required
|
data/README.md
CHANGED
@@ -9,18 +9,25 @@ It makes your life easy when you develop forms and your app use [mongoid](https:
|
|
9
9
|
``` ruby
|
10
10
|
# app/models/category.rb
|
11
11
|
field :name, localize: true
|
12
|
+
field :content, localize: true
|
12
13
|
|
13
14
|
# views/category/_form.rb
|
14
15
|
= form_for @category, wrapper: :default, html: { class: 'form-horizontal' } do |f|
|
15
|
-
|
16
|
+
# text_field type by default
|
16
17
|
# generates input fields for each locales in your config.i18n.available_locales
|
18
|
+
= f.localized :name
|
19
|
+
|
20
|
+
# pass text_area type and some class for example
|
21
|
+
# generates text_area fields for each locales in your config.i18n.available_locales
|
22
|
+
= f.localized :content, :text_area, class: "tinymce"
|
23
|
+
|
17
24
|
...
|
18
25
|
```
|
19
26
|
|
20
27
|
### Can show flag block with each localized fields
|
21
28
|
|
29
|
+
``config/initializers/mongoid_form_config.rb``
|
22
30
|
``` ruby
|
23
|
-
# config/initializers/mongoid_form_config.rb
|
24
31
|
...
|
25
32
|
# this option add after label text "<div class=\"flag flags-en\" />" to each locale fo localized fields
|
26
33
|
# you should styling .flag and .flags-en (.flags-ru etc.) in your css.
|
@@ -30,8 +37,8 @@ It makes your life easy when you develop forms and your app use [mongoid](https:
|
|
30
37
|
|
31
38
|
### Shows asterisk for required fields!
|
32
39
|
|
40
|
+
``config/initializers/mongoid_form_config.rb``
|
33
41
|
``` ruby
|
34
|
-
# config/initializers/mongoid_form_config.rb
|
35
42
|
...
|
36
43
|
# this option add before label text "<abbr title=\"required field\">*</abbr>" to required fields
|
37
44
|
add_if_required :abbr, '*', title: I18n::t('required')
|
@@ -55,12 +62,19 @@ Run installer for generate sample config:
|
|
55
62
|
## Usage
|
56
63
|
|
57
64
|
``` haml
|
58
|
-
= form_for @category, wrapper: :
|
65
|
+
= form_for @category, wrapper: :default, html: { class: 'form-horizontal' } do |f|
|
59
66
|
= f.error_notification
|
60
67
|
|
61
68
|
= f.localized :name
|
62
|
-
= f.input :alias
|
63
|
-
= f.input :visible, :
|
69
|
+
= f.input :alias # text_field by default
|
70
|
+
= f.input :visible, :check_box # passed type of field
|
71
|
+
|
72
|
+
= f.association :location do |lf|
|
73
|
+
= f.input :country # -> category[location_attributes][country]
|
74
|
+
= f.input :city # -> category[location_attributes][city]
|
75
|
+
|
76
|
+
= f.radios_from_collection :gender, collection: { 1 => t('genders.male'), 2 => t('genders.female') }
|
77
|
+
|
64
78
|
```
|
65
79
|
|
66
80
|
### Types of fields supported:
|
@@ -85,15 +99,17 @@ All options for this time:
|
|
85
99
|
MongoidForm.setup do |config|
|
86
100
|
|
87
101
|
config.wrapper :default do
|
88
|
-
alert_error_wrapper :div, class: 'alert alert-error'
|
89
|
-
main_error_i18n_key 'errors.form.error_notification'
|
90
|
-
group_wrapper :div, class: 'control-group'
|
91
|
-
group_error_class 'error'
|
92
|
-
label_options class: 'control-label'
|
93
|
-
add_if_required :abbr, '*', title: I18n::t('required')
|
94
|
-
error_block :span, class: 'help-inline'
|
95
|
-
input_wrapper :div, class: 'controls'
|
96
|
-
flag_for_localized true
|
102
|
+
alert_error_wrapper :div, class: 'alert alert-error' # wrapper for form main error
|
103
|
+
main_error_i18n_key 'errors.form.error_notification' # i18n key for form main error
|
104
|
+
group_wrapper :div, class: 'control-group' # it wrap group of label + input
|
105
|
+
group_error_class 'error' # that class will added to group wrapper if errors for field
|
106
|
+
label_options class: 'control-label' # options for label field
|
107
|
+
add_if_required :abbr, '*', title: I18n::t('required') # appears before label text if field is required
|
108
|
+
error_block :span, class: 'help-inline' # element containing error message, appears after input
|
109
|
+
input_wrapper :div, class: 'controls' # wrapper element for each input
|
110
|
+
flag_for_localized true # show block with class "flag flags-#{locale}" after label text
|
111
|
+
# of localized fields
|
112
|
+
radios_wrapper :div, class: 'radios' # wrapper for radios group
|
97
113
|
end
|
98
114
|
|
99
115
|
end
|
@@ -12,6 +12,7 @@ module MongoidForm
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def localized_field(type, attribute, options = {})
|
15
|
+
@type = type
|
15
16
|
attribute, options = value_field(attribute, options)
|
16
17
|
case type
|
17
18
|
when :text
|
@@ -51,6 +52,7 @@ module MongoidForm
|
|
51
52
|
private
|
52
53
|
|
53
54
|
def factory(type, name, options = {})
|
55
|
+
@type = type
|
54
56
|
input = case type
|
55
57
|
when :text
|
56
58
|
text_field name, options
|
@@ -74,7 +76,13 @@ module MongoidForm
|
|
74
76
|
end
|
75
77
|
|
76
78
|
def wrap_field(input, name)
|
77
|
-
|
79
|
+
label_options = wrapper.label_options.dup
|
80
|
+
extracted = label_options.extract_options!
|
81
|
+
extracted_class = extracted[:class] ? extracted[:class] + ' ' : ''
|
82
|
+
options = extracted.merge(class: extracted_class + @type.to_s)
|
83
|
+
label_options << options
|
84
|
+
|
85
|
+
label = label(name, *label_options) do
|
78
86
|
asterisk(name) + @object.class.human_attribute_name(name)
|
79
87
|
end
|
80
88
|
|
@@ -139,13 +147,14 @@ module MongoidForm
|
|
139
147
|
|
140
148
|
if has_error?(name) && wrapper.group_error_class
|
141
149
|
extracted = group_wrapper.extract_options!
|
142
|
-
|
150
|
+
extracted_class = extracted[:class] ? extracted[:class] + ' ' : ''
|
151
|
+
options = extracted.merge(class: extracted_class + wrapper.group_error_class.first)
|
143
152
|
group_wrapper << options
|
144
153
|
end
|
145
154
|
|
146
155
|
wrap (label + input_wrapped(input, name)), group_wrapper
|
147
156
|
else
|
148
|
-
|
157
|
+
label + input_wrapped(input, name)
|
149
158
|
end
|
150
159
|
end
|
151
160
|
|
@@ -2,20 +2,41 @@ module MongoidForm
|
|
2
2
|
module Helpers
|
3
3
|
module FormHelper
|
4
4
|
|
5
|
+
def input(name, *args)
|
6
|
+
type, options = get_options(args)
|
7
|
+
factory type, name, options
|
8
|
+
end
|
9
|
+
|
5
10
|
def localized(name, *args)
|
6
11
|
type, options = get_options(args)
|
7
12
|
localized_fields(name) { |lf| @template.concat wrap_localized_fields(lf, type, options) }
|
8
13
|
end
|
9
14
|
|
10
|
-
def
|
11
|
-
|
12
|
-
|
15
|
+
def association(*args, &block)
|
16
|
+
options = args.extract_options!
|
17
|
+
options[:wrapper] = self.options[:wrapper] if options[:wrapper].nil?
|
18
|
+
options[:builder] ||= MongoidForm::FormBuilder
|
19
|
+
|
20
|
+
fields_for(*(args << options), &block)
|
21
|
+
end
|
22
|
+
|
23
|
+
def radios_from_collection(name, *args)
|
24
|
+
options = args.extract_options!
|
25
|
+
raise "Collection for radios not passed" unless options[:collection]
|
26
|
+
result = ''
|
27
|
+
options[:collection].each do |value, text|
|
28
|
+
result << radio_button(name, value) + label(name, text)
|
29
|
+
end
|
30
|
+
radios_block = wrapper.radios_wrapper.present? ? wrap(result.html_safe, wrapper.radios_wrapper) : result.html_safe
|
31
|
+
wrap_field(radios_block, name)
|
13
32
|
end
|
14
33
|
|
15
34
|
private
|
16
35
|
|
17
36
|
def get_options(args)
|
18
|
-
|
37
|
+
if args.present?
|
38
|
+
type = args.first unless args.first.is_a?(Hash)
|
39
|
+
end
|
19
40
|
options = args.extract_options!
|
20
41
|
type ||= :text
|
21
42
|
return type, options
|
data/lib/mongoid_form/version.rb
CHANGED
data/mongoid_form.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = MongoidForm::VERSION
|
9
9
|
spec.authors = ["Ivan Teplyakov"]
|
10
10
|
spec.email = ["exreanimator@gmail.com"]
|
11
|
-
spec.description = %q{
|
12
|
-
spec.summary = %q{
|
11
|
+
spec.description = %q{Form builder for apps which use mongoid}
|
12
|
+
spec.summary = %q{It makes your life easy when you develop forms and your apps uses mongoid}
|
13
13
|
spec.homepage = "https://github.com/ExReanimator/mongoid_form"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_form
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
@@ -107,7 +107,7 @@ dependencies:
|
|
107
107
|
- - ! '>='
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
|
-
description:
|
110
|
+
description: Form builder for apps which use mongoid
|
111
111
|
email:
|
112
112
|
- exreanimator@gmail.com
|
113
113
|
executables: []
|
@@ -153,5 +153,5 @@ rubyforge_project:
|
|
153
153
|
rubygems_version: 1.8.25
|
154
154
|
signing_key:
|
155
155
|
specification_version: 3
|
156
|
-
summary:
|
156
|
+
summary: It makes your life easy when you develop forms and your apps uses mongoid
|
157
157
|
test_files: []
|