forest_liana 1.3.18 → 1.3.19

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 955d15f645596627b92e43fe1b7789615234a49b
4
- data.tar.gz: 22b0a3836b0645ad68fa19993b5dbc23850b406a
3
+ metadata.gz: 3a6ef592b7aec3837d2dc0e9aa0c0e53ef769edc
4
+ data.tar.gz: 73a6c573d1e7b47e6a20a41c3e79d98d603c8f75
5
5
  SHA512:
6
- metadata.gz: 42fab6206ac400eb4c5a67feee644a8ed7df4d0c481b38bf4c39c656d7869e99dc0c739cd0e84eb17804170b6d290585b32bd1d981d9a79a70d3c401e42b9bf2
7
- data.tar.gz: 10a9e4ff18f6c2a1a66e8fde0f63c860476dca03bd96058b7b475bdb67e9c5ae3a87ced73a42b92cb2c6446af7deb02d0dfa6447e3c09101746d8d131419a6e8
6
+ metadata.gz: 0f756eaac706fc386c56804745e04dc07ce576bc9553528b5b7979b4928e91f2eb892b901412878e797045032a926f271dc94604903ae5bff4e950be237545ba
7
+ data.tar.gz: b33f900ac08db1e5c24d977be7658ac83b710339e7394697bd7f63c11a6df0d95d7609ca1df7b5268ae2d4b4592a70c38aacfccfda8d7d6a3a4a70dd1723b685
@@ -73,6 +73,13 @@ module ForestLiana
73
73
  def relationship_related_link(attribute_name)
74
74
  ret = {}
75
75
 
76
+ # Has many smart field
77
+ current = self.has_many_relationships[attribute_name]
78
+ if current.try(:[], :options).try(:[], :name) == attribute_name
79
+ ret[:href] = "/forest/#{object.class.table_name}/#{object.id}/#{attribute_name}"
80
+ return ret
81
+ end
82
+
76
83
  if intercom_integration?
77
84
  case attribute_name
78
85
  when :intercom_conversations
@@ -20,6 +20,7 @@ More info at: https://github.com/ForestAdmin/forest-rails/releases/tag/1.2.0"
20
20
 
21
21
  if ForestLiana.secret_key
22
22
  create_apimap
23
+ require_lib_forest_liana
23
24
  send_apimap
24
25
  end
25
26
  end
@@ -58,6 +59,13 @@ More info at: https://github.com/ForestAdmin/forest-rails/releases/tag/1.2.0"
58
59
  setup_intercom_integration if intercom_integration?
59
60
  end
60
61
 
62
+ def require_lib_forest_liana
63
+ path = Rails.root.join('lib', 'forest_liana', '**', '*.rb')
64
+ Dir.glob(File.expand_path(path, __FILE__)).each do |file|
65
+ require file
66
+ end
67
+ end
68
+
61
69
  def send_apimap
62
70
  json = JSONAPI::Serializer.serialize(ForestLiana.apimap, {
63
71
  is_collection: true,
@@ -2,12 +2,13 @@ module ForestLiana::Collection
2
2
  extend ActiveSupport::Concern
3
3
 
4
4
  module ClassMethods
5
+ attr_accessor :active_record_class
5
6
  attr_accessor :collection_name
6
7
  attr_accessor :is_read_only
7
8
  attr_accessor :is_searchable
8
9
 
9
- def collection(name, opts = {})
10
- self.collection_name = name.to_s
10
+ def collection(collection_name, opts = {})
11
+ self.collection_name = collection_name.to_s
11
12
  self.is_read_only = opts[:read_only] || false
12
13
  self.is_searchable = opts[:is_searchable] || true
13
14
  end
@@ -17,8 +18,23 @@ module ForestLiana::Collection
17
18
  model.actions << ForestLiana::Model::Action.new(opts)
18
19
  end
19
20
 
20
- def field(name, opts)
21
- model.fields << opts.merge({ field: name })
21
+ def field(name, opts, &block)
22
+ model.fields << opts.merge({ field: name, is_searchable: false })
23
+ ForestLiana::UserSpace.const_get(serializer_name).class_eval do
24
+ attribute(name, &block)
25
+ end
26
+ end
27
+
28
+ def has_many(name, opts, &block)
29
+ model.fields << opts.merge({
30
+ field: name,
31
+ is_searchable: false,
32
+ type: ['String']
33
+ })
34
+
35
+ ForestLiana::UserSpace.const_get(serializer_name).class_eval do
36
+ has_many(name, name: name)
37
+ end
22
38
  end
23
39
 
24
40
  private
@@ -41,6 +57,31 @@ module ForestLiana::Collection
41
57
 
42
58
  collection
43
59
  end
60
+
61
+ def active_record_class
62
+ ForestLiana::SchemaUtils.find_model_from_table_name(self.collection_name)
63
+ end
64
+
65
+ def serializer_name
66
+ class_name = active_record_class.table_name.classify
67
+ module_name = class_name.deconstantize
68
+
69
+ name = module_name if module_name
70
+ name += class_name.demodulize
71
+
72
+ "ForestLiana::UserSpace::#{name}Serializer"
73
+ end
74
+
75
+ def serializer_name_for_reference(reference)
76
+ association = opts[:reference].split('.').first
77
+ class_name = association.classify
78
+ module_name = class_name.deconstantize
79
+
80
+ name = module_name if module_name
81
+ name += class_name.demodulize
82
+
83
+ "ForestLiana::UserSpace::#{name}Serializer"
84
+ end
44
85
  end
45
86
  end
46
87
 
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "1.3.18"
2
+ VERSION = "1.3.19"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_liana
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.18
4
+ version: 1.3.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-02 00:00:00.000000000 Z
11
+ date: 2016-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails