bhf 0.10.14 → 0.10.15
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.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/VERSION +1 -1
- data/app/assets/javascripts/bhf/application.js +3 -0
- data/app/controllers/bhf/entries_controller.rb +52 -4
- data/app/views/bhf/form/has_and_belongs_to_many/_check_box.html.haml +3 -2
- data/app/views/bhf/form/has_many/_check_box.html.haml +1 -0
- data/app/views/bhf/form/has_one/_select.html.haml +23 -0
- data/bhf.gemspec +5 -3
- data/lib/bhf/action_view/form_builder.rb +9 -2
- data/lib/bhf/platform/attribute/reflection.rb +2 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73abb1591371e3997fe6b22fc5760e151d3907f6
|
4
|
+
data.tar.gz: eb7cb00592990c0462232f92931ad13f1ab9f635
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c076188d9fd8c68e5db03dd4acfe98774480f7d170443f30b895d92da8a5ba18de040380314bff892ec787ebe1866b311e3f1327a38e4a9f182df682b98bcd0f
|
7
|
+
data.tar.gz: 89b699f76a6a52f0b45ba45601e29719b86c10059ae18aed696001f5a60f1e8d8149b926e9d4c55ccfbb94219c4df441f8dbbfd3c75a548b31377f572e9dcfa1
|
data/README.md
CHANGED
@@ -18,6 +18,8 @@ Also see [Getting Started](Getting_Started.md) document for additional info.
|
|
18
18
|
|
19
19
|
* Adding unit tests and integration tests
|
20
20
|
* Adding bulk edit for the table view (aka platform)
|
21
|
+
* Manage relations with help of autocomplete inputs
|
22
|
+
* Move from MooTools to jQuery
|
21
23
|
|
22
24
|
## Support
|
23
25
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.10.
|
1
|
+
0.10.15
|
@@ -327,6 +327,9 @@ Turbolinks.pagesCached(0);
|
|
327
327
|
element.removeClass('dragged');
|
328
328
|
new Request({
|
329
329
|
method: 'put',
|
330
|
+
headers: {
|
331
|
+
'X-CSRF-Token': rails && rails.csrf && rails.csrf.token
|
332
|
+
},
|
330
333
|
url: sortableElems.get('data-sort-url')
|
331
334
|
}).send({data: {order: this.serialize()}});
|
332
335
|
}
|
@@ -29,7 +29,7 @@ class Bhf::EntriesController < Bhf::ApplicationController
|
|
29
29
|
def create
|
30
30
|
before_save
|
31
31
|
if @object.save
|
32
|
-
|
32
|
+
manage_relations
|
33
33
|
after_save
|
34
34
|
|
35
35
|
if @quick_edit
|
@@ -54,7 +54,7 @@ class Bhf::EntriesController < Bhf::ApplicationController
|
|
54
54
|
|
55
55
|
before_save
|
56
56
|
if @object.update_attributes(@permited_params)
|
57
|
-
|
57
|
+
manage_relations
|
58
58
|
after_save
|
59
59
|
|
60
60
|
if @quick_edit
|
@@ -166,9 +166,8 @@ class Bhf::EntriesController < Bhf::ApplicationController
|
|
166
166
|
def manage_many_to_many
|
167
167
|
return unless params[:has_and_belongs_to_many]
|
168
168
|
params[:has_and_belongs_to_many].each_pair do |relation, ids|
|
169
|
-
reflection = @model.reflections[relation]
|
170
|
-
|
171
169
|
next unless ids.any?
|
170
|
+
reflection = @model.reflections[relation]
|
172
171
|
relation_array = @object.send(relation)
|
173
172
|
reflection.klass.unscoped.find(ids.keys).each do |relation_obj|
|
174
173
|
has_relation = relation_array.include?(relation_obj)
|
@@ -186,6 +185,55 @@ class Bhf::EntriesController < Bhf::ApplicationController
|
|
186
185
|
end
|
187
186
|
end
|
188
187
|
|
188
|
+
def manage_has_one
|
189
|
+
return unless params[:has_one]
|
190
|
+
object_id = @object.send(@model.bhf_primary_key)
|
191
|
+
params[:has_one].each_pair do |relation, id|
|
192
|
+
reflection = @model.reflections[relation]
|
193
|
+
reflection.klass.where(reflection.foreign_key, object_id).each do |ref_object|
|
194
|
+
next if ref_object.send(reflection.klass.bhf_primary_key) == id
|
195
|
+
ref_object.update_attribute(reflection.foreign_key, nil)
|
196
|
+
end
|
197
|
+
unless id.blank?
|
198
|
+
ref_object = reflection.klass.find(id)
|
199
|
+
next if ref_object.send(reflection.foreign_key) == object_id
|
200
|
+
ref_object.update_attribute(reflection.foreign_key, object_id)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def manage_has_many
|
206
|
+
return unless params[:has_many]
|
207
|
+
object_id = @object.send(@model.bhf_primary_key)
|
208
|
+
params[:has_many].each_pair do |relation, ids|
|
209
|
+
next unless ids.any?
|
210
|
+
reflection = @model.reflections[relation]
|
211
|
+
preset_ids = @object.send(relation).collect do |object|
|
212
|
+
object.send(object.class.bhf_primary_key).to_s
|
213
|
+
end
|
214
|
+
@object.send(relation).klass.find(ids.keys).each do |relation_obj|
|
215
|
+
fk = relation_obj.class.reflections[reflection.inverse_of.name.to_s].foreign_key
|
216
|
+
relation_obj_id_as_string = relation_obj.send(relation_obj.class.bhf_primary_key).to_s
|
217
|
+
|
218
|
+
if ids[relation_obj_id_as_string].blank?
|
219
|
+
if preset_ids.include?(relation_obj_id_as_string)
|
220
|
+
relation_obj.update_attribute(fk, nil)
|
221
|
+
end
|
222
|
+
else
|
223
|
+
if ! preset_ids.include?(relation_obj_id_as_string)
|
224
|
+
relation_obj.update_attribute(fk, object_id)
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
def manage_relations
|
232
|
+
manage_many_to_many
|
233
|
+
manage_has_many
|
234
|
+
manage_has_one
|
235
|
+
end
|
236
|
+
|
189
237
|
def after_load
|
190
238
|
@object.send(@platform.hooks(:after_load)) if @platform.hooks(:after_load)
|
191
239
|
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
- data_source ||= field.link ? field.link.get_objects : field.reflection.klass.all
|
2
|
+
- check_box_type ||= :many_to_many_check_box
|
2
3
|
= reflection_node f, field do
|
3
4
|
.quick_edit_block
|
4
5
|
%ul.relation.quick_edit_inject
|
5
6
|
- data_source.each do |ref_object|
|
6
7
|
%li.quick_edit_entry
|
7
|
-
= f.
|
8
|
+
= f.send(check_box_type, ref_object, field.reflection.name, params, field.link && ! field.link.hide_edit)
|
8
9
|
- if field.link && ! field.link.hide_edit
|
9
10
|
= link_to ref_object.to_bhf_s, edit_entry_path(field.link.name, ref_object), class: 'js_edit_field qe_button quick_edit'
|
10
11
|
- if field.link && ! field.link.hide_delete
|
@@ -12,7 +13,7 @@
|
|
12
13
|
|
13
14
|
.quick_edit_template{type: 'text/template'}
|
14
15
|
%li.quick_edit_entry
|
15
|
-
= f.
|
16
|
+
= f.send(check_box_type, OpenStruct.new(to_bhf_s: '{to_bhf_s}'), field.reflection.name, params, field.link && ! field.link.hide_edit, true, "{object_id}", {class: 'js_remove_disabled', disabled: true}).gsub('_object_id_', '{object_id}').html_safe # fix for id attr
|
16
17
|
- if field.link && ! field.link.hide_edit
|
17
18
|
= link_to '{to_bhf_s}', edit_entry_path(field.link.name, '{object_id}'), class: 'js_edit_field qe_button quick_edit'
|
18
19
|
- if field.link && ! field.link.hide_delete
|
@@ -0,0 +1 @@
|
|
1
|
+
= render partial: "bhf/form/has_and_belongs_to_many/check_box", locals: {f: f, field: field, check_box_type: :has_many_check_box}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
- data_source ||= field.link ? field.link.get_objects : field.reflection.klass.all
|
2
|
+
- fk = field.reflection.name
|
3
|
+
- ref_obj = f.object.send(fk)
|
4
|
+
- ref_obj_id = ref_obj ? ref_obj.send(field.reflection.klass.bhf_primary_key) : nil
|
5
|
+
.node
|
6
|
+
.label= f.label fk, reflection_title(f, field, 1)
|
7
|
+
.input.select_input.quick_edit_block
|
8
|
+
- if field.link
|
9
|
+
.quick_edit_template{type: 'text/template'}
|
10
|
+
= options_for_select([['{to_bhf_s}', '{object_id}', {data: {edit: edit_entry_path(field.link.name, '{object_id}'), delete: entry_path(field.link.name, '{object_id}')}}]])
|
11
|
+
- select_options ||= options_from_collection_for_select_with_html_attrs(data_source, :id, :to_bhf_s, ref_obj_id, Proc.new {|obj| {data: {edit: edit_entry_path(field.link.name, obj), delete: entry_path(field.link.name, obj)}}})
|
12
|
+
- else
|
13
|
+
- select_options ||= options_from_collection_for_select(data_source, :id, :to_bhf_s, ref_obj_id)
|
14
|
+
|
15
|
+
= select :has_one, fk, select_options, {include_blank: true}, {class: ('quick_edit_inject quick_edit_select' if field.link)}
|
16
|
+
= render partial: 'bhf/helper/field_errors', locals: {f: f, field: fk}
|
17
|
+
|
18
|
+
- if field.link && ! field.link.hide_edit
|
19
|
+
= link_to edit_t(field.link), '', class: 'js_edit_field icon edit quick_edit'
|
20
|
+
- if field.link && ! field.link.hide_delete
|
21
|
+
= link_to '×'.html_safe, '', method: :delete, class: 'qe_delete js_delete', remote: true, data: {confirm: t('bhf.helpers.promts.confirm', platform_title: field.link.title_singular)}
|
22
|
+
- if field.link && ! field.link.hide_create
|
23
|
+
= link_to '+', new_entry_path(field.link.name), class: 'js_add_field plus_button qe_button quick_edit'
|
data/bhf.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: bhf 0.10.
|
5
|
+
# stub: bhf 0.10.15 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "bhf"
|
9
|
-
s.version = "0.10.
|
9
|
+
s.version = "0.10.15"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Anton Pawlik"]
|
14
|
-
s.date = "
|
14
|
+
s.date = "2016-03-08"
|
15
15
|
s.description = "A simple to use Rails-Engine-Gem that offers an admin interface for trusted user. Easy integratable and highly configurable and agnostic. Works with ActiveRecord and Mongoid."
|
16
16
|
s.email = "anton.pawlik@gmail.com"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -101,7 +101,9 @@ Gem::Specification.new do |s|
|
|
101
101
|
"app/views/bhf/form/embeds_one/_static.html.haml",
|
102
102
|
"app/views/bhf/form/has_and_belongs_to_many/_check_box.html.haml",
|
103
103
|
"app/views/bhf/form/has_and_belongs_to_many/_static.html.haml",
|
104
|
+
"app/views/bhf/form/has_many/_check_box.html.haml",
|
104
105
|
"app/views/bhf/form/has_many/_static.html.haml",
|
106
|
+
"app/views/bhf/form/has_one/_select.html.haml",
|
105
107
|
"app/views/bhf/form/has_one/_static.html.haml",
|
106
108
|
"app/views/bhf/helper/_definition_item.html.haml",
|
107
109
|
"app/views/bhf/helper/_field_errors.html.haml",
|
@@ -14,8 +14,7 @@ module Bhf::ActionView
|
|
14
14
|
field_errors(field).any?
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
mm = :has_and_belongs_to_many
|
17
|
+
def many_to_many_or_has_many_check_box(mm, obj, ref_name, params, hide_label = false, checked = false, bhf_primary_key = nil, extra_html_attrs = {})
|
19
18
|
bhf_primary_key ||= obj.send(obj.class.bhf_primary_key).to_s
|
20
19
|
unless checked
|
21
20
|
checked = if params[mm] && params[mm][ref_name]
|
@@ -32,5 +31,13 @@ module Bhf::ActionView
|
|
32
31
|
html
|
33
32
|
end
|
34
33
|
|
34
|
+
def many_to_many_check_box(obj, ref_name, params, hide_label = false, checked = false, bhf_primary_key = nil, extra_html_attrs = {})
|
35
|
+
many_to_many_or_has_many_check_box(:has_and_belongs_to_many, obj, ref_name, params, hide_label, checked, bhf_primary_key, extra_html_attrs)
|
36
|
+
end
|
37
|
+
|
38
|
+
def has_many_check_box(obj, ref_name, params, hide_label = false, checked = false, bhf_primary_key = nil, extra_html_attrs = {})
|
39
|
+
many_to_many_or_has_many_check_box(:has_many, obj, ref_name, params, hide_label, checked, bhf_primary_key, extra_html_attrs)
|
40
|
+
end
|
41
|
+
|
35
42
|
end
|
36
43
|
end
|
@@ -42,9 +42,9 @@ module Bhf::Platform::Attribute
|
|
42
42
|
def type
|
43
43
|
return @options_form_type if @options_form_type
|
44
44
|
|
45
|
-
if macro == :has_and_belongs_to_many
|
45
|
+
if macro == :has_and_belongs_to_many or macro == :has_many
|
46
46
|
:check_box
|
47
|
-
elsif macro == :belongs_to
|
47
|
+
elsif macro == :belongs_to or macro == :has_one
|
48
48
|
:select
|
49
49
|
else
|
50
50
|
:static
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bhf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Pawlik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -242,7 +242,9 @@ files:
|
|
242
242
|
- app/views/bhf/form/embeds_one/_static.html.haml
|
243
243
|
- app/views/bhf/form/has_and_belongs_to_many/_check_box.html.haml
|
244
244
|
- app/views/bhf/form/has_and_belongs_to_many/_static.html.haml
|
245
|
+
- app/views/bhf/form/has_many/_check_box.html.haml
|
245
246
|
- app/views/bhf/form/has_many/_static.html.haml
|
247
|
+
- app/views/bhf/form/has_one/_select.html.haml
|
246
248
|
- app/views/bhf/form/has_one/_static.html.haml
|
247
249
|
- app/views/bhf/helper/_definition_item.html.haml
|
248
250
|
- app/views/bhf/helper/_field_errors.html.haml
|