godmin 0.9.6 → 0.9.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/MIT-LICENSE +1 -1
- data/README.md +14 -1
- data/app/views/godmin/resource/_form.html.erb +8 -10
- data/config/locales/en.yml +3 -0
- data/config/locales/sv.yml +3 -0
- data/godmin.gemspec +3 -3
- data/lib/godmin.rb +1 -1
- data/lib/godmin/helpers/forms.rb +56 -7
- data/lib/godmin/version.rb +1 -1
- data/test/dummy/config/environments/test.rb +3 -0
- metadata +18 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b2b9de0c881d61fc5e85818c2d335da6f291957
|
4
|
+
data.tar.gz: a6622de98d4b80f5713db91c2246a181034c8b91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 662aa94de5c99b574781a967cc6e8f4ef29223563028b26cb19c1b57c261a955e783b7c8a96e8115ac407bbc54e3b7d5be31eb31d494ddc4efc2a0641d6391f7
|
7
|
+
data.tar.gz: 26755fad1ee306f90dc5d3ca7be7f30b31757229a7efdda7018d97016c037dc762461f2218432486bbce6516f92bea5e529c1c3202829435ecaedf054bfd76b4
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
### 0.9.7 - 2015-01-07
|
4
|
+
Features
|
5
|
+
- Support for Rails 4.2
|
6
|
+
- New form system (https://github.com/varvet/godmin/pull/50)
|
7
|
+
|
3
8
|
### 0.9.6 - 2014-12-18
|
4
9
|
Features
|
5
10
|
- Bundled [datetimepicker](https://github.com/Eonasdan/bootstrap-datetimepicker/)
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -19,6 +19,7 @@ Godmin is an admin engine for Rails 4+.
|
|
19
19
|
- [Redirecting](#redirecting)
|
20
20
|
- [Pagination](#pagination)
|
21
21
|
- [Views](#views)
|
22
|
+
- [Forms](#forms)
|
22
23
|
- [Models](#models)
|
23
24
|
- [Authentication](#authentication)
|
24
25
|
- [Simple authentication](#simple-authentication)
|
@@ -368,12 +369,24 @@ It is easy to override view templates and partials in Godmin, both globally and
|
|
368
369
|
|
369
370
|
If you wish to customize the content of a table column, you can place a partial under `app/views/{resource}/columns/{column_name}.html.erb`, e.g. `app/views/articles/columns/_title.html.erb`. The resource is available to the partial through the `resource` variable.
|
370
371
|
|
371
|
-
Oftentimes, the default form provided by Godmin doesn't cut it. The `godmin/resource/_form.html.erb` partial is therefore one of the most common to override per resource.
|
372
|
+
Oftentimes, the default form provided by Godmin doesn't cut it. The `godmin/resource/_form.html.erb` partial is therefore one of the most common to override per resource. See below for more on form building.
|
372
373
|
|
373
374
|
Likewise, the `godmin/shared/_navigation.html.erb` partial can be overridden to build a custom navigation bar.
|
374
375
|
|
375
376
|
The full list of templates and partials that can be overridden [can be found here](https://github.com/varvet/godmin/tree/master/app/views/godmin)
|
376
377
|
|
378
|
+
### Forms
|
379
|
+
|
380
|
+
Godmin comes with its own FormBuilder that automatically generates bootstrapped markup. It is based on the [Rails Bootstrap Forms](https://github.com/bootstrap-ruby/rails-bootstrap-forms) FormBuilder, and all its methods are directly available. In addition it has a few convenience methods that can be leveraged.
|
381
|
+
|
382
|
+
The `input` method will automatically detect the type of field from the database and generate an appropriate form field:
|
383
|
+
|
384
|
+
```ruby
|
385
|
+
form_for @resource do |f|
|
386
|
+
f.input :attribute
|
387
|
+
end
|
388
|
+
```
|
389
|
+
|
377
390
|
## Models
|
378
391
|
|
379
392
|
## Authentication
|
@@ -1,12 +1,10 @@
|
|
1
|
-
<%=
|
2
|
-
<% attrs_for_form.each do |
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
<% end %>
|
9
|
-
</div>
|
1
|
+
<%= form_for @resource do |f| %>
|
2
|
+
<% attrs_for_form.each do |attribute| %>
|
3
|
+
<% if f.object.class.reflect_on_association(attribute) %>
|
4
|
+
<%= f.association attribute %>
|
5
|
+
<% else %>
|
6
|
+
<%= f.input attribute %>
|
7
|
+
<% end %>
|
10
8
|
<% end %>
|
11
|
-
<%= f.
|
9
|
+
<%= f.submit %>
|
12
10
|
<% end %>
|
data/config/locales/en.yml
CHANGED
data/config/locales/sv.yml
CHANGED
data/godmin.gemspec
CHANGED
@@ -21,12 +21,12 @@ Gem::Specification.new do |gem|
|
|
21
21
|
|
22
22
|
gem.add_dependency "bcrypt", "~> 3.1.7"
|
23
23
|
gem.add_dependency "bootstrap-sass", "~> 3.3.1.0"
|
24
|
+
gem.add_dependency "bootstrap_form", "~> 2.2.0"
|
24
25
|
gem.add_dependency "coffee-rails", [">= 4.0", "< 4.2"]
|
25
26
|
gem.add_dependency "momentjs-rails", ">= 2.8.1"
|
26
|
-
gem.add_dependency "rails",
|
27
|
-
gem.add_dependency "sass-rails",
|
27
|
+
gem.add_dependency "rails", "~> 4.0"
|
28
|
+
gem.add_dependency "sass-rails", ">= 4.0"
|
28
29
|
gem.add_dependency "selectize-rails", "~> 0.11.2"
|
29
|
-
gem.add_dependency "simple_form", "~> 3.0.0"
|
30
30
|
|
31
31
|
gem.add_development_dependency "sqlite3"
|
32
32
|
end
|
data/lib/godmin.rb
CHANGED
data/lib/godmin/helpers/forms.rb
CHANGED
@@ -2,17 +2,66 @@ module Godmin
|
|
2
2
|
module Helpers
|
3
3
|
module Forms
|
4
4
|
def form_for(record, options = {}, &block)
|
5
|
-
super(record, { builder: FormBuilders::FormBuilder }.merge(options), &block)
|
6
|
-
end
|
7
|
-
|
8
|
-
def simple_form_for(record, options = {}, &block)
|
9
|
-
super(record, { builder: FormBuilders::SimpleFormBuilder }.merge(options), &block)
|
5
|
+
super(record, { builder: FormBuilders::FormBuilder, inline_errors: false }.merge(options), &block)
|
10
6
|
end
|
11
7
|
end
|
12
8
|
end
|
13
9
|
|
14
10
|
module FormBuilders
|
15
|
-
class FormBuilder <
|
16
|
-
|
11
|
+
class FormBuilder < BootstrapForm::FormBuilder
|
12
|
+
def input(attribute, options = {})
|
13
|
+
case attribute_type(attribute)
|
14
|
+
when :text
|
15
|
+
text_area(attribute, options)
|
16
|
+
when :boolean
|
17
|
+
check_box(attribute, options)
|
18
|
+
when :date
|
19
|
+
date_field(attribute, options)
|
20
|
+
when :datetime
|
21
|
+
datetime_field(attribute, options)
|
22
|
+
else
|
23
|
+
text_field(attribute, options)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def association(attribute, options = {})
|
28
|
+
case association_type(attribute)
|
29
|
+
when :belongs_to
|
30
|
+
select attribute, association_collection(attribute), {}, data: { behavior: "select-box" }
|
31
|
+
else
|
32
|
+
input(attribute, options)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def date_field(attribute, options = {})
|
37
|
+
text_field(attribute, value: datetime_value(attribute, :datepicker), data: { behavior: "datepicker" })
|
38
|
+
end
|
39
|
+
|
40
|
+
def datetime_field(attribute, options = {})
|
41
|
+
text_field(attribute, value: datetime_value(attribute, :datetimepicker), data: { behavior: "datetimepicker" })
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def attribute_type(attribute)
|
47
|
+
@object.column_for_attribute(attribute).try(:type)
|
48
|
+
end
|
49
|
+
|
50
|
+
def association_type(attribute)
|
51
|
+
association_reflection(attribute).try(:macro)
|
52
|
+
end
|
53
|
+
|
54
|
+
def association_collection(attribute)
|
55
|
+
association_reflection(attribute).try(:klass).try(:all)
|
56
|
+
end
|
57
|
+
|
58
|
+
def association_reflection(attribute)
|
59
|
+
@object.class.reflect_on_association(attribute)
|
60
|
+
end
|
61
|
+
|
62
|
+
def datetime_value(attribute, format)
|
63
|
+
@object.send(attribute).try(:strftime, @template.translate_scoped("datetimepickers.#{format}"))
|
64
|
+
end
|
65
|
+
end
|
17
66
|
end
|
18
67
|
end
|
data/lib/godmin/version.rb
CHANGED
@@ -31,6 +31,9 @@ Dummy::Application.configure do
|
|
31
31
|
# ActionMailer::Base.deliveries array.
|
32
32
|
config.action_mailer.delivery_method = :test
|
33
33
|
|
34
|
+
# Randomize the order test cases are executed.
|
35
|
+
config.active_support.test_order = :random
|
36
|
+
|
34
37
|
# Print deprecation notices to the stderr.
|
35
38
|
config.active_support.deprecation = :stderr
|
36
39
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: godmin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Ljungblad
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-01-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bcrypt
|
@@ -40,6 +40,20 @@ dependencies:
|
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: 3.3.1.0
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: bootstrap_form
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 2.2.0
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 2.2.0
|
43
57
|
- !ruby/object:Gem::Dependency
|
44
58
|
name: coffee-rails
|
45
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,22 +92,16 @@ dependencies:
|
|
78
92
|
name: rails
|
79
93
|
requirement: !ruby/object:Gem::Requirement
|
80
94
|
requirements:
|
81
|
-
- - "
|
95
|
+
- - "~>"
|
82
96
|
- !ruby/object:Gem::Version
|
83
97
|
version: '4.0'
|
84
|
-
- - "<"
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: '4.2'
|
87
98
|
type: :runtime
|
88
99
|
prerelease: false
|
89
100
|
version_requirements: !ruby/object:Gem::Requirement
|
90
101
|
requirements:
|
91
|
-
- - "
|
102
|
+
- - "~>"
|
92
103
|
- !ruby/object:Gem::Version
|
93
104
|
version: '4.0'
|
94
|
-
- - "<"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '4.2'
|
97
105
|
- !ruby/object:Gem::Dependency
|
98
106
|
name: sass-rails
|
99
107
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,9 +109,6 @@ dependencies:
|
|
101
109
|
- - ">="
|
102
110
|
- !ruby/object:Gem::Version
|
103
111
|
version: '4.0'
|
104
|
-
- - "<"
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
version: '4.2'
|
107
112
|
type: :runtime
|
108
113
|
prerelease: false
|
109
114
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -111,9 +116,6 @@ dependencies:
|
|
111
116
|
- - ">="
|
112
117
|
- !ruby/object:Gem::Version
|
113
118
|
version: '4.0'
|
114
|
-
- - "<"
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: '4.2'
|
117
119
|
- !ruby/object:Gem::Dependency
|
118
120
|
name: selectize-rails
|
119
121
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,20 +130,6 @@ dependencies:
|
|
128
130
|
- - "~>"
|
129
131
|
- !ruby/object:Gem::Version
|
130
132
|
version: 0.11.2
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: simple_form
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
134
|
-
requirements:
|
135
|
-
- - "~>"
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: 3.0.0
|
138
|
-
type: :runtime
|
139
|
-
prerelease: false
|
140
|
-
version_requirements: !ruby/object:Gem::Requirement
|
141
|
-
requirements:
|
142
|
-
- - "~>"
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: 3.0.0
|
145
133
|
- !ruby/object:Gem::Dependency
|
146
134
|
name: sqlite3
|
147
135
|
requirement: !ruby/object:Gem::Requirement
|