contents_core 0.2.0 → 0.2.2

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: 638db7f2736f8122e4d3df7fd00c14be26b5968b
4
- data.tar.gz: 2939dfe17490c73f03a9ca541c15cfb9959a5726
3
+ metadata.gz: da496467b39f33f60cba8e1ce3356a83cf26f804
4
+ data.tar.gz: a81d0b06211ffaf5c3aa262fd82167c9e88f88ac
5
5
  SHA512:
6
- metadata.gz: dc24cccc25294ddaaf58900d936ecaab4b7ffb3e91c212daa96259b329699109180f8b1c816f5df46594363be3fa91a407b2f07dd904407b6487aaac80177ae0
7
- data.tar.gz: 12fdb14837f0275ed3cdf34abc74087fb615c6439975f4b2fa9713470480ae6c61a786c28701c94399af22c7e5be6238acf923182d2ca3beb7a6803b459d0be6
6
+ metadata.gz: 47c86fbecb6193acb88816373765193d7c60cf68ae81ca4ae781675d9b27794ed58b617fb733d32cd70ba7ab3f4d5cd25e106288d5698c23c1a5dcd897c9511e
7
+ data.tar.gz: 3dd11bae3f087cf3ad7d6569c6387d5c3aa57240bda029b7cb1b97945974c1979f74de165eed0e8384340b0cb8111c2f6292bd361e1619db3869335be1be4945
data/README.md CHANGED
@@ -104,7 +104,7 @@ To set a field value: `block.set( 'new-field', 'Some value' )`
104
104
 
105
105
  #### ActiveAdmin
106
106
 
107
- If you use ActiveAdmin as admin interface you can find a sample model configuration [here](extra/activeadmin_page.rb)
107
+ If you use ActiveAdmin as admin interface you can find a sample model configuration: [page](extra/active_admin_page.rb) plus a js [page](extra/active_admin.js)
108
108
 
109
109
  ### Notes
110
110
 
@@ -51,10 +51,25 @@ module ContentsCore
51
51
  #
52
52
  # # scope :published, -> { where( published: true ) unless ApplicationController.edit_mode }
53
53
 
54
+ def initialize( params = {} )
55
+ super
56
+ self.group = config[:group]
57
+ self.block_type = parent.config[:children_type] if params[:block_type].nil? && self.parent_type == 'ContentsCore::Block'
58
+ end
59
+
60
+ def as_json
61
+ # binding.pry
62
+ super({ only: [:id, :block_type, :name, :group, :position, :published], methods: [:blocks_collection, :items_collection]}.merge(options || {}))
63
+ end
64
+
54
65
  def attr_id
55
66
  "#{self.class.to_s.split('::').last}-#{self.id}"
56
67
  end
57
68
 
69
+ def blocks_collection
70
+ self.cc_blocks.map &:as_json
71
+ end
72
+
58
73
  def children_type
59
74
  config[:children_type]
60
75
  end
@@ -86,11 +101,16 @@ module ContentsCore
86
101
 
87
102
  # Returns an item by name
88
103
  def get( name )
104
+ item = get_item( name )
105
+ item.data if item
106
+ end
107
+
108
+ def get_item( name )
89
109
  unless @_items
90
110
  @_items = {}
91
111
  items.each { |item| @_items[item.name] = item }
92
112
  end
93
- @_items[name] ? @_items[name].data : nil
113
+ @_items[name]
94
114
  end
95
115
 
96
116
  def has_parent?
@@ -105,6 +125,10 @@ module ContentsCore
105
125
  parent.present? && parent_type == 'ContentsCore::Block'
106
126
  end
107
127
 
128
+ def items_collection
129
+ self.items.map &:as_json
130
+ end
131
+
108
132
  def on_after_create
109
133
  # TODO: validates type before creation!
110
134
  Block::init_items( self, config[:items] ) if Block::block_types.include?( self.block_type.to_sym )
@@ -161,7 +185,7 @@ module ContentsCore
161
185
  end
162
186
 
163
187
  def self.block_list
164
- @@block_list ||= ContentsCore.config[:cc_blocks].map{|k, v| [v[:name], k.to_s]}.sort_by{|b| b[0]}
188
+ @@block_list ||= ContentsCore.config[:cc_blocks].map{|k, v| [v[:name], k.to_s] unless v[:child_only]}.compact.sort_by{|b| b[0]}
165
189
  end
166
190
 
167
191
  def self.block_types
@@ -191,7 +215,7 @@ module ContentsCore
191
215
  end
192
216
 
193
217
  def config
194
- @config ||= ContentsCore.config[:cc_blocks][block_type.to_sym] ? ContentsCore.config[:cc_blocks][block_type.to_sym] : {}
218
+ ContentsCore.config[:cc_blocks][block_type.to_sym] ? ContentsCore.config[:cc_blocks][block_type.to_sym] : {}
195
219
  end
196
220
  end
197
221
  end
@@ -6,6 +6,10 @@ module ContentsCore
6
6
 
7
7
  belongs_to :block
8
8
 
9
+ def as_json
10
+ super( {only: [:id, :name, :type], methods: [:data]} )
11
+ end
12
+
9
13
  def attr_id
10
14
  "#{self.class_name}-#{self.id}"
11
15
  end
@@ -1,11 +1,11 @@
1
1
  module ContentsCore
2
- class ItemEnum < Item
2
+ class ItemArray < Item
3
3
  alias_attribute :data, :data_string
4
4
 
5
5
  serialize :data_hash, Array
6
6
 
7
7
  def enum
8
- config[:values] ? config[:values] : self.data_hash
8
+ config[:values] ? config[:values] : ( config[:values_method] ? config[:values_method].call : self.data_hash )
9
9
  end
10
10
 
11
11
  def init
@@ -22,7 +22,7 @@ module ContentsCore
22
22
  end
23
23
 
24
24
  def self.type_name
25
- 'enum'
25
+ 'array'
26
26
  end
27
27
  end
28
28
  end
@@ -47,9 +47,9 @@ module ContentsCore
47
47
  },
48
48
  },
49
49
  items: {
50
+ array: {},
50
51
  boolean: {},
51
52
  datetime: {},
52
- enum: {},
53
53
  float: {},
54
54
  hash: {},
55
55
  file: {
@@ -4,7 +4,7 @@ class AddExtraItems < ActiveRecord::Migration[5.0]
4
4
  add_column :contents_core_items, :data_datetime, :datetime
5
5
  add_column :contents_core_items, :data_file, :string # , null: false, default: ''
6
6
  add_column :contents_core_items, :data_float, :float
7
- add_column :contents_core_items, :data_hash, :string # , null: false, default: ''
7
+ add_column :contents_core_items, :data_hash, :text # , null: false, default: ''
8
8
  add_column :contents_core_items, :data_integer, :integer
9
9
  add_column :contents_core_items, :data_string, :string # , null: false, default: ''
10
10
  add_column :contents_core_items, :data_text, :text
@@ -7,6 +7,16 @@ module ContentsCore
7
7
  @@config
8
8
  end
9
9
 
10
+ def self.create_block_in_parent( parent, type = :text, params = {} )
11
+ block = Block.new( block_type: type )
12
+ block.name = params[:name] if params[:name]
13
+ block.options = params[:options] if params[:options]
14
+ block.validations = params[:validations] if params[:validations]
15
+ parent.cc_blocks << block
16
+ Block::init_items block, params[:schema] if params[:schema]
17
+ block
18
+ end
19
+
10
20
  def self.editing( editing = nil )
11
21
  @@editing = editing unless editing.nil?
12
22
  @@editing
@@ -8,13 +8,7 @@ module ContentsCore
8
8
  accepts_nested_attributes_for :cc_blocks, allow_destroy: true
9
9
 
10
10
  def create_block( type = :text, params = {} )
11
- block = Block.new( block_type: type )
12
- block.name = params[:name] if params[:name]
13
- block.options = params[:options] if params[:options]
14
- block.validations = params[:validations] if params[:validations]
15
- cc_blocks << block
16
- Block::init_items block, params[:schema] if params[:schema]
17
- block
11
+ ContentsCore::create_block_in_parent( self, type, params )
18
12
  end
19
13
 
20
14
  def current_blocks( version = 0 )
@@ -1,3 +1,3 @@
1
1
  module ContentsCore
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contents_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-25 00:00:00.000000000 Z
11
+ date: 2017-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,9 +38,9 @@ files:
38
38
  - app/models/contents_core/application_record.rb
39
39
  - app/models/contents_core/block.rb
40
40
  - app/models/contents_core/item.rb
41
+ - app/models/contents_core/item_array.rb
41
42
  - app/models/contents_core/item_boolean.rb
42
43
  - app/models/contents_core/item_datetime.rb
43
- - app/models/contents_core/item_enum.rb
44
44
  - app/models/contents_core/item_file.rb
45
45
  - app/models/contents_core/item_float.rb
46
46
  - app/models/contents_core/item_hash.rb