cortex-plugins-core 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8028ca2e5f6a83dcc117fd1639f54e6a446fd5bd
4
- data.tar.gz: 7e6c5d0fb06c16d83d75539e8e1d1138943fb487
3
+ metadata.gz: 52ba8f598906bf3fcbcb195dfeba41cc2e3cc060
4
+ data.tar.gz: 5eeb2df6aaca564832b6995120194382d1246f57
5
5
  SHA512:
6
- metadata.gz: a6d2abfe35254f3d5b184cf4768e42bb5bb584533accf90fa3ce43964015f5783dc8c82606a29039a4d2c87e132b55c28914f0dd61c3642dc860fbb3ec13b0b9
7
- data.tar.gz: c98241dab31c5372e2f685fa7ea1e6a2555a3650ba6699869db233bf340fc15b6883794de1c9939009d53a963091a40718131c37caa97ae92267642fe568a952
6
+ metadata.gz: 0530f8c7a10dc9a770c4a67a316b58311c1dac467fc6007b7a0fa4dd5e98fbe25ca916729fcf90b24fcdc57b51508b17dad972188957468e1d373d39b63a0ea9
7
+ data.tar.gz: dd131c537b78e03bd4941d903b826df82c5b0f998f496a2ce49075ef5ccacbe02dc2e90e3d0784a42f2031d2b4f510721990d8a5f85eb2e95ccbf471eb37825a
@@ -1,3 +1,9 @@
1
+ %strong Allowed extensions:
2
+ = render_allowed_asset_extensions
3
+ %br
4
+ %strong Allowed filesize:
5
+ = render_max_asset_size
6
+ %br
1
7
  = render_field_id
2
8
  = render_label
3
9
  = render_input
@@ -1,6 +1,7 @@
1
1
  module Plugins
2
2
  module Core
3
3
  class AssetCell < Plugins::Core::Cell
4
+ include ActionView::Helpers::NumberHelper
4
5
  include UtilityHelper
5
6
 
6
7
  def input
@@ -9,6 +10,14 @@ module Plugins
9
10
 
10
11
  private
11
12
 
13
+ def render_allowed_asset_extensions
14
+ field.validations['allowed_extensions']&.join(', ')
15
+ end
16
+
17
+ def render_max_asset_size
18
+ number_to_human_size(field.validations['size']&.[]('less_than'))
19
+ end
20
+
12
21
  def input_classes
13
22
  @options[:input_options]&.[](:display)&.[](:classes)
14
23
  end
@@ -2,3 +2,4 @@
2
2
  = render_field_id
3
3
  = render_label
4
4
  = render_input
5
+
@@ -1,3 +1,4 @@
1
- = render_label
2
- = render_field_id
3
- = render_multiline_input
1
+ .mdl-textfield.mdl-js-textfield
2
+ = render_label
3
+ = render_field_id
4
+ = render_multiline_input
@@ -15,14 +15,18 @@ module Plugins
15
15
 
16
16
  private
17
17
 
18
+ def input_display
19
+ @options[:input_options]&.[](:display)
20
+ end
21
+
18
22
  def input_classes
19
- @options[:input_options]&.[](:display)&.[](:classes)
23
+ input_display&.[](:classes)
20
24
  end
21
25
 
22
26
  def input_styles
23
- @options[:input_options]&.[](:display)&.[](:styles)
27
+ input_display&.[](:styles)
24
28
  end
25
-
29
+
26
30
  def value
27
31
  data&.[]('text') || @options[:default_value]
28
32
  end
@@ -46,7 +50,7 @@ module Plugins
46
50
  end
47
51
 
48
52
  def render_multiline_input
49
- @options[:form].text_area_tag 'data[text]', value: value # , cols: @options[:cols], rows: @options[:rows]
53
+ @options[:form].text_area 'data[text]', value: value , placeholder: @options[:placeholder], rows: input_display&.[](:rows) , class: 'mdl-textfield__input'
50
54
  end
51
55
  end
52
56
  end
@@ -1,26 +1,22 @@
1
1
  class AssetFieldType < FieldType
2
- VALIDATION_TYPES = {
3
- presence: :valid_presence_validation?,
4
- size: :valid_size_validation?,
5
- content_type: :valid_content_type_validation?
6
- }.freeze
7
-
8
2
  attr_accessor :asset_file_name,
9
3
  :asset_content_type,
10
4
  :asset_file_size,
11
5
  :asset_updated_at,
12
- :field_name
6
+ :asset
13
7
 
14
- attr_reader :data, :validations, :dimensions
8
+ attr_reader :dimensions
15
9
 
16
- has_attached_file :asset
17
- do_not_validate_attachment_file_type :asset
18
10
  before_save :extract_dimensions
19
11
 
12
+ do_not_validate_attachment_file_type :asset
20
13
  validates :asset, attachment_presence: true, if: :validate_presence?
14
+ validate :validate_asset_size, if: :validate_size?
15
+ validate :validate_asset_content_type, if: :validate_content_type?
21
16
 
22
- def validations=(validations_hash)
23
- @validations = validations_hash.deep_symbolize_keys
17
+ def metadata=(metadata_hash)
18
+ @metadata = metadata_hash.deep_symbolize_keys
19
+ Paperclip::HasAttachedFile.define_on(self.class, :asset, metadata)
24
20
  end
25
21
 
26
22
  def data=(data_hash)
@@ -40,10 +36,6 @@ class AssetFieldType < FieldType
40
36
  }
41
37
  end
42
38
 
43
- def acceptable_validations?
44
- valid_types? && valid_options?
45
- end
46
-
47
39
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
48
40
  json = {}
49
41
  json[mapping_field_name] = asset_file_name
@@ -72,43 +64,53 @@ class AssetFieldType < FieldType
72
64
  end
73
65
  end
74
66
 
67
+ def allowed_content_types
68
+ validations[:allowed_extensions].collect do |allowed_content_type|
69
+ MimeMagic.by_extension(allowed_content_type).type
70
+ end
71
+ end
72
+
75
73
  def mapping_field_name
76
74
  "#{field_name.parameterize('_')}_asset_file_name"
77
75
  end
78
76
 
79
- def valid_types?
80
- validations.all? do |type, options|
81
- VALIDATION_TYPES.include?(type.to_sym)
82
- end
77
+ def validate_presence?
78
+ @validations.key? :presence
83
79
  end
84
80
 
85
- def valid_options?
86
- validations.all? do |type, options|
87
- self.send(VALIDATION_TYPES[type])
88
- end
81
+ def attachment_size_validator
82
+ AttachmentSizeValidator.new(validations[:size].merge(attributes: :asset))
89
83
  end
90
84
 
91
- def validate_presence?
92
- @validations.key? :presence
85
+ def attachment_content_type_validator
86
+ AttachmentContentTypeValidator.new({content_type: allowed_content_types}.merge(attributes: :asset))
93
87
  end
94
88
 
95
89
  alias_method :valid_presence_validation?, :validate_presence?
96
90
 
97
- def valid_size_validation?
91
+ def validate_size?
98
92
  begin
99
- AttachmentSizeValidator.new(validations[:size].merge(attributes: :asset))
93
+ attachment_size_validator
100
94
  true
101
95
  rescue ArgumentError, NoMethodError
102
96
  false
103
97
  end
104
98
  end
105
99
 
106
- def valid_content_type_validation?
100
+ def validate_content_type?
107
101
  begin
108
- AttachmentContentTypeValidator.new(validations[:content_type].merge(attributes: :asset))
102
+ attachment_content_type_validator
109
103
  true
110
104
  rescue ArgumentError, NoMethodError
111
105
  false
112
106
  end
113
107
  end
108
+
109
+ def validate_asset_size
110
+ attachment_size_validator.validate_each(self, :asset, asset)
111
+ end
112
+
113
+ def validate_asset_content_type
114
+ attachment_content_type_validator.validate_each(self, :asset, asset)
115
+ end
114
116
  end
@@ -1,19 +1,10 @@
1
1
  class BooleanFieldType < FieldType
2
- attr_accessor :data, :value, :field_name
3
- attr_reader :validations, :metadata
4
-
5
- def validations=(validations_hash)
6
- @validations = {}
7
- end
2
+ attr_accessor :value
8
3
 
9
4
  def data=(data_hash)
10
5
  @value = data_hash.deep_symbolize_keys[:value]
11
6
  end
12
7
 
13
- def metadata=(metadata_hash)
14
- @metadata = metadata_hash.deep_symbolize_keys
15
- end
16
-
17
8
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
18
9
  json = {}
19
10
  json[mapping_field_name] = field_item.data['boolean']
@@ -24,10 +15,6 @@ class BooleanFieldType < FieldType
24
15
  { name: mapping_field_name, type: :string, analyzer: :snowball }
25
16
  end
26
17
 
27
- def acceptable_validations?
28
- true
29
- end
30
-
31
18
  private
32
19
 
33
20
  def mapping_field_name
@@ -1,30 +1,13 @@
1
1
  class DateTimeFieldType < FieldType
2
- VALIDATION_TYPES = {
3
- presence: :valid_presence_validation?
4
- }.freeze
5
-
6
- attr_accessor :data, :timestamp, :field_name
7
- attr_reader :validations, :metadata
2
+ attr_accessor :timestamp
8
3
 
9
4
  validates :timestamp, presence: true, if: :validate_presence?
10
- validate :timestamp_is_valid?
11
-
12
- def validations=(validations_hash)
13
- @validations = validations_hash.deep_symbolize_keys
14
- end
5
+ validate :timestamp_is_valid?, if: :validate_presence?
15
6
 
16
7
  def data=(data_hash)
17
8
  @timestamp = data_hash.deep_symbolize_keys[:timestamp]
18
9
  end
19
10
 
20
- def metadata=(metadata_hash)
21
- @metadata = metadata_hash.deep_symbolize_keys
22
- end
23
-
24
- def acceptable_validations?
25
- valid_types? && valid_options?
26
- end
27
-
28
11
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
29
12
  json = {}
30
13
  json[mapping_field_name] = field_item.data['date_time']
@@ -42,35 +25,15 @@ class DateTimeFieldType < FieldType
42
25
  end
43
26
 
44
27
  def timestamp_is_valid?
45
- if @timestamp.blank?
28
+ begin
29
+ DateTime.parse(@timestamp)
46
30
  true
47
- else
48
- begin
49
- DateTime.parse(@timestamp)
50
- true
51
- rescue ArgumentError
52
- errors.add(:timestamp, 'must be a valid date')
53
- false
54
- end
55
- end
56
- end
57
-
58
- def valid_types?
59
- validations.all? do |type, options|
60
- VALIDATION_TYPES.include?(type)
61
- end
62
- end
63
-
64
- def valid_options?
65
- validations.all? do |type, options|
66
- self.send(VALIDATION_TYPES[type])
31
+ rescue ArgumentError
32
+ errors.add(:timestamp, 'must be a valid date')
33
+ false
67
34
  end
68
35
  end
69
36
 
70
- def valid_presence_validation?
71
- @validations.key? :presence
72
- end
73
-
74
37
  def validate_presence?
75
38
  @validations.key? :presence
76
39
  end
@@ -1,30 +1,13 @@
1
1
  class TagFieldType < FieldType
2
- VALIDATION_TYPES = {
3
- presence: :valid_presence_validation?
4
- }.freeze
5
-
6
- attr_accessor :data, :tag_list, :field_name
7
- attr_reader :validations, :metadata
2
+ attr_accessor :tag_list
8
3
 
9
4
  validates :tag_list, presence: true, if: :validate_presence?
10
5
 
11
- def validations=(validations_hash)
12
- @validations = validations_hash.deep_symbolize_keys
13
- end
14
-
15
6
  def data=(data_hash)
16
7
  @tag_list = data_hash.deep_symbolize_keys[:tag_list]
17
8
  @tag_list.nil? ? nil : (@tag_list = @tag_list.split(","))
18
9
  end
19
10
 
20
- def metadata=(metadata_hash)
21
- @metadata = metadata_hash.deep_symbolize_keys
22
- end
23
-
24
- def acceptable_validations?
25
- valid_types? && valid_options?
26
- end
27
-
28
11
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
29
12
  json = {}
30
13
  json[mapping_field_name] = field_item.data['tag']
@@ -41,22 +24,6 @@ class TagFieldType < FieldType
41
24
  "#{field_name.parameterize('_')}_tag"
42
25
  end
43
26
 
44
- def valid_types?
45
- validations.all? do |type, options|
46
- VALIDATION_TYPES.include?(type)
47
- end
48
- end
49
-
50
- def valid_options?
51
- validations.all? do |type, options|
52
- self.send(VALIDATION_TYPES[type])
53
- end
54
- end
55
-
56
- def valid_presence_validation?
57
- @validations.key? :presence
58
- end
59
-
60
27
  def validate_presence?
61
28
  @validations.key? :presence
62
29
  end
@@ -1,31 +1,13 @@
1
1
  class TextFieldType < FieldType
2
- VALIDATION_TYPES = {
3
- length: :valid_length_validation?,
4
- presence: :valid_presence_validation?
5
- }.freeze
6
-
7
- attr_accessor :data, :text, :field_name
8
- attr_reader :validations, :metadata
2
+ attr_accessor :text
9
3
 
10
4
  validates :text, presence: true, if: :validate_presence?
11
5
  validate :text_length, if: :validate_length?
12
6
 
13
- def validations=(validations_hash)
14
- @validations = validations_hash.deep_symbolize_keys
15
- end
16
-
17
7
  def data=(data_hash)
18
8
  @text = data_hash.deep_symbolize_keys[:text]
19
9
  end
20
10
 
21
- def metadata=(metadata_hash)
22
- @metadata = metadata_hash.deep_symbolize_keys
23
- end
24
-
25
- def acceptable_validations?
26
- valid_types? && valid_options?
27
- end
28
-
29
11
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
30
12
  json = {}
31
13
  json[mapping_field_name] = field_item.data['text']
@@ -42,31 +24,6 @@ class TextFieldType < FieldType
42
24
  "#{field_name.parameterize('_')}_text"
43
25
  end
44
26
 
45
- def valid_types?
46
- validations.all? do |type, options|
47
- VALIDATION_TYPES.include?(type)
48
- end
49
- end
50
-
51
- def valid_options?
52
- validations.all? do |type, options|
53
- self.send(VALIDATION_TYPES[type])
54
- end
55
- end
56
-
57
- def valid_length_validation?
58
- begin
59
- LengthValidator.new(validations[:length].merge(attributes: [:text]))
60
- true
61
- rescue ArgumentError, NoMethodError
62
- false
63
- end
64
- end
65
-
66
- def valid_presence_validation?
67
- @validations.key? :presence
68
- end
69
-
70
27
  def text_present
71
28
  errors.add(:text, "must be present") if @text.empty?
72
29
  end
@@ -1,21 +1,10 @@
1
1
  class TreeFieldType < FieldType
2
- VALIDATION_TYPES = {
3
- presence: :valid_presence_validation?,
4
- maximum: :valid_maximum_validation?,
5
- minimum: :valid_minimum_validation?
6
- }.freeze
7
-
8
- attr_accessor :data, :values, :field_name
9
- attr_reader :validations, :metadata
2
+ attr_accessor :values
10
3
 
11
4
  validates :values, presence: true, if: :validate_presence?
12
5
  validate :minimum, if: :validate_minimum?
13
6
  validate :maximum, if: :validate_maximum?
14
7
 
15
- def validations=(validations_hash)
16
- @validations = validations_hash.deep_symbolize_keys
17
- end
18
-
19
8
  def data=(data_hash)
20
9
  values = data_hash.deep_symbolize_keys[:values]
21
10
 
@@ -26,14 +15,6 @@ class TreeFieldType < FieldType
26
15
  end
27
16
  end
28
17
 
29
- def metadata=(metadata_hash)
30
- @metadata = metadata_hash.deep_symbolize_keys.extend(Hashie::Extensions::DeepLocate)
31
- end
32
-
33
- def acceptable_validations?
34
- valid_types? && valid_options?
35
- end
36
-
37
18
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
38
19
  json = {}
39
20
  json[mapping_field_name] = field_item.data['tree']
@@ -72,30 +53,6 @@ class TreeFieldType < FieldType
72
53
  end
73
54
  end
74
55
 
75
- def valid_types?
76
- validations.all? do |type, options|
77
- VALIDATION_TYPES.include?(type)
78
- end
79
- end
80
-
81
- def valid_options?
82
- validations.all? do |type, options|
83
- self.send(VALIDATION_TYPES[type])
84
- end
85
- end
86
-
87
- def valid_presence_validation?
88
- @validations.key? :presence
89
- end
90
-
91
- def valid_maximum_validation?
92
- @validations.key? :maximum
93
- end
94
-
95
- def valid_minimum_validation?
96
- @validations.key? :minimum
97
- end
98
-
99
56
  def validate_presence?
100
57
  @validations.key? :presence
101
58
  end
@@ -107,5 +64,4 @@ class TreeFieldType < FieldType
107
64
  def validate_maximum?
108
65
  @validations.key? :maximum
109
66
  end
110
-
111
67
  end
@@ -1,30 +1,13 @@
1
1
  class UserFieldType < FieldType
2
- VALIDATION_TYPES = {
3
- presence: :valid_presence_validation?
4
- }.freeze
5
-
6
- attr_accessor :data, :user_id, :field_name
7
- attr_reader :validations, :metadata
2
+ attr_accessor :user_id
8
3
 
9
4
  validates :user_id, presence: true, if: :validate_presence?
10
5
  validate :valid_user_id?
11
6
 
12
- def validations=(validations_hash)
13
- @validations = validations_hash.deep_symbolize_keys
14
- end
15
-
16
7
  def data=(data_hash)
17
8
  @user_id = data_hash.deep_symbolize_keys[:user_id]
18
9
  end
19
10
 
20
- def metadata=(metadata_hash)
21
- @metadata = metadata_hash.deep_symbolize_keys
22
- end
23
-
24
- def acceptable_validations?
25
- valid_types? && valid_options?
26
- end
27
-
28
11
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
29
12
  json = {}
30
13
  json[mapping_field_name] = field_item.data['user']
@@ -50,22 +33,6 @@ class UserFieldType < FieldType
50
33
  end
51
34
  end
52
35
 
53
- def valid_types?
54
- validations.all? do |type, options|
55
- VALIDATION_TYPES.include?(type)
56
- end
57
- end
58
-
59
- def valid_options?
60
- validations.all? do |type, options|
61
- self.send(VALIDATION_TYPES[type])
62
- end
63
- end
64
-
65
- def valid_presence_validation?
66
- @validations.key? :presence
67
- end
68
-
69
36
  def validate_presence?
70
37
  @validations.key? :presence
71
38
  end
@@ -1,7 +1,7 @@
1
1
  module Cortex
2
2
  module Plugins
3
3
  module Core
4
- VERSION = '0.3.1'
4
+ VERSION = '0.4.0'
5
5
  end
6
6
  end
7
7
  end
@@ -7,21 +7,46 @@ namespace :cortex do
7
7
  task seed: :environment do
8
8
  puts "Creating Media ContentType..."
9
9
  media = ContentType.new({
10
- name: "Media",
11
- description: "Media for Cortex",
12
- icon: "collections",
13
- creator_id: 1,
14
- contract_id: 1
15
- })
10
+ name: "Media",
11
+ description: "Media for Cortex",
12
+ icon: "collections",
13
+ creator_id: 1,
14
+ contract_id: 1
15
+ })
16
16
  media.save
17
17
 
18
18
  puts "Creating Fields..."
19
- media.fields.new(name: 'Asset', field_type: 'asset_field_type', order_position: 1, validations: { presence: true })
20
- media.fields.new(name: 'Title', field_type: 'text_field_type', order_position: 2, validations: { presence: true })
21
- media.fields.new(name: 'Description', field_type: 'text_field_type', order_position: 3, validations: { presence: true })
22
- media.fields.new(name: 'Tags', field_type: 'tag_field_type', order_position: 4, validations: {})
23
- media.fields.new(name: 'Expiration Date', field_type: 'date_time_field_type', order_position: 5, validations: {})
24
- media.fields.new(name: 'Alt Tag', field_type: 'text_field_type', order_position: 6, validations: {})
19
+
20
+ allowed_asset_content_types = %w(txt pdf doc docx xls xlsx png jpg gif bmp)
21
+ media.fields.new(name: 'Asset', field_type: 'asset_field_type',
22
+ validations:
23
+ {
24
+ presence: true,
25
+ allowed_extensions: allowed_asset_content_types,
26
+ size: {
27
+ less_than: 50.megabytes
28
+ }
29
+ },
30
+ metadata:
31
+ {
32
+ styles: {
33
+ large: {geometry: '1800x1800>', format: :jpg},
34
+ medium: {geometry: '800x800>', format: :jpg},
35
+ default: {geometry: '300x300>', format: :jpg},
36
+ mini: {geometry: '100x100>', format: :jpg},
37
+ micro: {geometry: '50x50>', format: :jpg},
38
+ post_tile: {geometry: '1140x', format: :jpg}
39
+ },
40
+ processors: [:thumbnail, :paperclip_optimizer],
41
+ preserve_files: true,
42
+ path: ':class/:attachment/careerbuilder-:style-:id.:extension',
43
+ s3_headers: {'Cache-Control': 'public, max-age=315576000'}
44
+ })
45
+ media.fields.new(name: 'Title', field_type: 'text_field_type', validations: {presence: true})
46
+ media.fields.new(name: 'Description', field_type: 'text_field_type', validations: {presence: true})
47
+ media.fields.new(name: 'Tags', field_type: 'tag_field_type')
48
+ media.fields.new(name: 'Expiration Date', field_type: 'date_time_field_type')
49
+ media.fields.new(name: 'Alt Tag', field_type: 'text_field_type', order_position: 6)
25
50
  media.save
26
51
 
27
52
  puts "Creating Wizard Decorators..."
@@ -54,7 +79,11 @@ namespace :cortex do
54
79
  "id": media.fields[1].id
55
80
  },
56
81
  {
57
- "id": media.fields[2].id
82
+ "id": media.fields[2].id,
83
+ "render_method": "multiline_input",
84
+ "display": {
85
+ "rows": 3
86
+ }
58
87
  },
59
88
  {
60
89
  "id": media.fields[3].id
@@ -76,89 +105,89 @@ namespace :cortex do
76
105
  media_wizard_decorator.save
77
106
 
78
107
  ContentableDecorator.create({
79
- decorator_id: media_wizard_decorator.id,
80
- contentable_id: media.id,
81
- contentable_type: 'ContentType'
82
- })
108
+ decorator_id: media_wizard_decorator.id,
109
+ contentable_id: media.id,
110
+ contentable_type: 'ContentType'
111
+ })
83
112
 
84
113
  puts "Creating Index Decorators..."
85
114
  index_hash = {
86
- "columns":
87
- [
88
- {
89
- "name": "Thumbnail",
90
- "cells": [{
91
- "field": {
92
- "method": "author_image"
93
- },
94
- "display": {
95
- "classes": [
96
- "circular"
97
- ]
98
- }
99
- }]
100
- },
101
- {
102
- "name": "Creator",
103
- "cells": [{
104
- "field": {
105
- "method": "author_image"
106
- },
107
- "display": {
108
- "classes": [
109
- "circular"
110
- ]
111
- }
112
- }]
113
- },
114
- {
115
- "name": "Details",
116
- "cells": [
117
- {
118
- "field": {
119
- "id": media.fields[0].id
115
+ "columns":
116
+ [
117
+ {
118
+ "name": "Thumbnail",
119
+ "cells": [{
120
+ "field": {
121
+ "method": "author_image"
122
+ },
123
+ "display": {
124
+ "classes": [
125
+ "circular"
126
+ ]
127
+ }
128
+ }]
129
+ },
130
+ {
131
+ "name": "Creator",
132
+ "cells": [{
133
+ "field": {
134
+ "method": "author_image"
135
+ },
136
+ "display": {
137
+ "classes": [
138
+ "circular"
139
+ ]
140
+ }
141
+ }]
142
+ },
143
+ {
144
+ "name": "Details",
145
+ "cells": [
146
+ {
147
+ "field": {
148
+ "id": media.fields[1].id
149
+ },
150
+ "display": {
151
+ "classes": [
152
+ "bold",
153
+ "upcase"
154
+ ]
155
+ }
120
156
  },
121
- "display": {
122
- "classes": [
123
- "bold",
124
- "upcase"
125
- ]
126
- }
127
- },
128
- {
129
- "field": {
130
- "id": media.fields[1].id
157
+ {
158
+ "field": {
159
+ "id": media.fields[2].id
160
+ }
131
161
  }
132
- }
133
- ]
134
- },
135
- {
136
- "name": "Tags",
137
- "cells": [
138
- {
139
- "field": {
140
- "id": media.fields[2].id
141
- },
142
- "display": {
143
- "classes": [
144
- "tag",
145
- "rounded"
146
- ]
162
+ ]
163
+ },
164
+ {
165
+ "name": "Tags",
166
+ "cells": [
167
+ {
168
+ "field": {
169
+ "id": media.fields[3].id
170
+ },
171
+ "display": {
172
+ "classes": [
173
+ "tag",
174
+ "rounded"
175
+ ]
176
+ }
147
177
  }
148
- }
149
- ]
150
- }
151
- ]
178
+ ]
179
+ }
180
+ ]
152
181
  }
153
182
 
154
183
  media_index_decorator = Decorator.new(name: "Index", data: index_hash)
155
184
  media_index_decorator.save
156
185
 
157
186
  ContentableDecorator.create({
158
- decorator_id: media_index_decorator.id,
159
- contentable_id: media.id,
160
- contentable_type: 'ContentType'
161
- })
187
+ decorator_id: media_index_decorator.id,
188
+ contentable_id: media.id,
189
+ contentable_type: 'ContentType'
190
+ })
162
191
  end
163
192
  end
164
193
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cortex-plugins-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - CareerBuilder Employer Site & Content Products
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-19 00:00:00.000000000 Z
11
+ date: 2016-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.0.10
69
+ - !ruby/object:Gem::Dependency
70
+ name: mimemagic
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.3.2
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.3.2
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: ckeditor
71
85
  requirement: !ruby/object:Gem::Requirement