cortex-plugins-core 0.4.6 → 0.4.7

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: 1d1a73688bdd9211a0a2d10cc2684e1f4da60273
4
- data.tar.gz: e90bb298eded507752ba92394a8060c79caf98b3
3
+ metadata.gz: 6ab0c34b932761efc4ebd2026af72662f94922c2
4
+ data.tar.gz: e6d838af5da99b6747a8a892623d724a848e4e21
5
5
  SHA512:
6
- metadata.gz: 6583a84706ff696839b07effd2a6a972e8a7d4be9d0ebcbec729d33bd6942daa1a016ead31411f8b99c0a5222f94542fdd8d4f651e64dd59d5f001e496abc310
7
- data.tar.gz: a29a15fa4cf916975acd3b6b4c1d011486764a5d5da7f31c8bf174ff5595beb4ba9f95447600dfa38bced1b683aeeda859b8d6a987b53d6de0a1180179317b86
6
+ metadata.gz: 67587d700272125c526c62fd6449099e6ecf031143750d966cf920cfe60f681e49c3e5fe3bc11da511a5d3a5466e0b40c45afc523565a5f23fa22e066a6199ef
7
+ data.tar.gz: 817f9b3353b1437faad67083447209e2c1aff059c08196ca5b08e833208d528cf35f609835feee3c3c4ac3d351bb6d197776be0bb7fc9affe7adc20aa6d36358
@@ -1,7 +1,7 @@
1
1
  %label.mdl-checkbox.mdl-js-checkbox.mdl-js-ripple-effect{ for: @options[:node]["id"] }
2
- = context[:form].check_box "data[values][#{@options[:node]['id']}]", { checked: value, class: 'mdl-checkbox__input', id: @options[:node]["id"] }, 1, nil
3
- = context[:form].label :data, display_lineage, class: 'mdl-checkbox__label'
2
+ = @options[:form].check_box "data[values][#{@options[:node]['id']}]", { checked: value, class: 'mdl-checkbox__input', id: @options[:node]["id"] }, 1, nil
3
+ = @options[:form].label :data, display_lineage, class: 'mdl-checkbox__label'
4
4
 
5
5
  - if @options[:node]["children"].any?
6
6
  - @options[:node]["children"].each do |child|
7
- = cell(Plugins::Core::CheckboxCell, nil, node: child, child: child_identifier, data: @options[:data]).(:checkbox)
7
+ = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node: child, child: child_identifier, data: @options[:data]).(:checkbox)
@@ -0,0 +1,13 @@
1
+ = render_label
2
+ %br
3
+ %button.content_item_button.text-center.popup--open
4
+ .button_content
5
+ %i{ class: "material-icons icon" }
6
+ cloud_upload
7
+ %br
8
+ %span.content_item_button-text
9
+ Click to add a
10
+ = field.name
11
+ from the media library
12
+ %small
13
+ Recommended size: 1452px x 530px with a live area of 930px x 530px
@@ -0,0 +1,15 @@
1
+ module Plugins
2
+ module Core
3
+ class ContentItemCell < Plugins::Core::Cell
4
+ def popup
5
+ render
6
+ end
7
+
8
+ private
9
+
10
+ def render_label
11
+ "Add #{field.name}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ .mdl-textfield.mdl-js-textfield.mdl-textfield--floating-label
2
+ = render_field_id
3
+ = render_label
4
+ = render_input
5
+
@@ -0,0 +1,47 @@
1
+ module Plugins
2
+ module Core
3
+ class FloatCell < Plugins::Core::Cell
4
+ def input
5
+ render
6
+ end
7
+
8
+ private
9
+
10
+ def max
11
+ field.validations[:max]
12
+ end
13
+
14
+ def min
15
+ field.validations[:min]
16
+ end
17
+
18
+ def step
19
+ field.validations[:step] || 0.01
20
+ end
21
+
22
+ def input_display
23
+ @options[:input_options]&.[](:display)
24
+ end
25
+
26
+ def input_classes
27
+ input_display&.[](:classes)
28
+ end
29
+
30
+ def input_styles
31
+ input_display&.[](:styles)
32
+ end
33
+
34
+ def value
35
+ data&.[]('float') || @options[:default_value]
36
+ end
37
+
38
+ def render_label
39
+ @options[:form].label 'data[float]', field.name, class: 'mdl-textfield__label'
40
+ end
41
+
42
+ def render_input
43
+ @options[:form].number_field 'data[float]', value: value, placeholder: @options[:placeholder], step: step, max: max, min: min , class: 'mdl-textfield__input'
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,5 @@
1
+ .mdl-textfield.mdl-js-textfield
2
+ = render_field_id
3
+ = render_label
4
+ = render_input
5
+
@@ -0,0 +1,43 @@
1
+ module Plugins
2
+ module Core
3
+ class IntegerCell < Plugins::Core::Cell
4
+ def input
5
+ render
6
+ end
7
+
8
+ private
9
+
10
+ def max
11
+ field.validations[:max]
12
+ end
13
+
14
+ def min
15
+ field.validations[:min]
16
+ end
17
+
18
+ def input_display
19
+ @options[:input_options]&.[](:display)
20
+ end
21
+
22
+ def input_classes
23
+ input_display&.[](:classes)
24
+ end
25
+
26
+ def input_styles
27
+ input_display&.[](:styles)
28
+ end
29
+
30
+ def value
31
+ data&.[]('integer') || @options[:default_value]
32
+ end
33
+
34
+ def render_label
35
+ @options[:form].label 'data[integer]', field.name, class: 'mdl-textfield__label'
36
+ end
37
+
38
+ def render_input
39
+ @options[:form].number_field 'data[integer]', value: value, placeholder: @options[:placeholder] , max: max, min: min, class: 'mdl-textfield__input'
40
+ end
41
+ end
42
+ end
43
+ end
@@ -26,7 +26,7 @@ module Plugins
26
26
  def input_styles
27
27
  input_display&.[](:styles)
28
28
  end
29
-
29
+
30
30
  def value
31
31
  data&.[]('text') || @options[:default_value]
32
32
  end
@@ -1,6 +1,9 @@
1
1
  %h4
2
2
  = render_label
3
3
 
4
+ %p
5
+ Please select 1-2 Categories.
6
+
4
7
  - @options[:metadata]["data"]["tree_array"].each do |node|
5
8
  = render_field_id
6
- = cell(Plugins::Core::CheckboxCell, nil, node: node, data: data).(:checkbox)
9
+ = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node: node, data: data).(:checkbox)
@@ -0,0 +1,11 @@
1
+ class ContentItemFieldType < FieldType
2
+ def mapping
3
+ { name: mapping_field_name, type: :string, analyzer: :snowball }
4
+ end
5
+
6
+ private
7
+
8
+ def mapping_field_name
9
+ "#{field_name.parameterize('_')}_content_item"
10
+ end
11
+ end
@@ -0,0 +1,40 @@
1
+ class FloatFieldType < FieldType
2
+ attr_accessor :float
3
+
4
+ validates :float, presence: true, if: Proc.new { |float| validate_key(:presence) }
5
+ validates_numericality_of :float, unless: "float.nil?"
6
+ validate :less_than, if: Proc.new { |float| validate_key(:max) }
7
+ validate :greater_than, if: Proc.new { |float| validate_key(:min) }
8
+
9
+ def data=(data_hash)
10
+ @float = data_hash.deep_symbolize_keys[:float]
11
+ end
12
+
13
+ def field_item_as_indexed_json_for_field_type(field_item, options = {})
14
+ json = {}
15
+ json[mapping_field_name] = field_item.data['float']
16
+ json
17
+ end
18
+
19
+ def mapping
20
+ {name: mapping_field_name, type: :float}
21
+ end
22
+
23
+ private
24
+
25
+ def mapping_field_name
26
+ "#{field_name.parameterize('_')}_float"
27
+ end
28
+
29
+ def validate_key(key)
30
+ @validations.key? key
31
+ end
32
+
33
+ def less_than
34
+ errors.add(:float, "must be less_than #{@validations[:max]}") if :float <= @validations[:max]
35
+ end
36
+
37
+ def greater_than
38
+ errors.add(:float, "must be greater_than #{@validations[:min]}") if :float >= @validations[:min]
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ class IntegerFieldType < FieldType
2
+ attr_accessor :integer
3
+
4
+ validates :integer, presence: true, if: Proc.new { |int| validate_key(:presence) }
5
+ validates_numericality_of :integer, unless: "integer.nil?"
6
+ validate :less_than, if: Proc.new { |int| validate_key(:max) }
7
+ validate :greater_than, if: Proc.new { |int| validate_key(:min) }
8
+
9
+ def data=(data_hash)
10
+ @integer = data_hash.deep_symbolize_keys[:integer]
11
+ end
12
+
13
+ def field_item_as_indexed_json_for_field_type(field_item, options = {})
14
+ json = {}
15
+ json[mapping_field_name] = field_item.data['integer']
16
+ json
17
+ end
18
+
19
+ def mapping
20
+ {name: mapping_field_name, type: :integer}
21
+ end
22
+
23
+ private
24
+
25
+ def mapping_field_name
26
+ "#{field_name.parameterize('_')}_integer"
27
+ end
28
+
29
+ def validate_key
30
+ @validations.key? key
31
+ end
32
+
33
+ def less_than
34
+ errors.add(:integer, "must be less_than #{@validations[:max]}") if :integer <= @validations[:max]
35
+ end
36
+
37
+ def greater_than
38
+ errors.add(:integer, "must be greater_than #{@validations[:min]}") if :integer >= @validations[:min]
39
+ end
40
+ end
@@ -5,13 +5,17 @@ class TreeFieldType < FieldType
5
5
  validate :minimum, if: :validate_minimum?
6
6
  validate :maximum, if: :validate_maximum?
7
7
 
8
+ def data
9
+ @values
10
+ end
11
+
8
12
  def data=(data_hash)
9
13
  values = data_hash.deep_symbolize_keys[:values]
10
14
 
11
15
  if values.is_a?(Hash)
12
- @values = values.keys
16
+ @values = { values: values.keys }
13
17
  else
14
- @values = [values]
18
+ @values = { values: [values] }
15
19
  end
16
20
  end
17
21
 
@@ -1,7 +1,7 @@
1
1
  module Cortex
2
2
  module Plugins
3
3
  module Core
4
- VERSION = '0.4.6'
4
+ VERSION = '0.4.7'
5
5
  end
6
6
  end
7
7
  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.4.6
4
+ version: 0.4.7
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-26 00:00:00.000000000 Z
11
+ date: 2016-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -130,8 +130,14 @@ files:
130
130
  - app/cells/plugins/core/cell.rb
131
131
  - app/cells/plugins/core/checkbox/checkbox.haml
132
132
  - app/cells/plugins/core/checkbox_cell.rb
133
+ - app/cells/plugins/core/content_item/popup.haml
134
+ - app/cells/plugins/core/content_item_cell.rb
133
135
  - app/cells/plugins/core/date_time/datepicker.haml
134
136
  - app/cells/plugins/core/date_time_cell.rb
137
+ - app/cells/plugins/core/float/input.haml
138
+ - app/cells/plugins/core/float_cell.rb
139
+ - app/cells/plugins/core/integer/input.haml
140
+ - app/cells/plugins/core/integer_cell.rb
135
141
  - app/cells/plugins/core/tag/tag_picker.haml
136
142
  - app/cells/plugins/core/tag_cell.rb
137
143
  - app/cells/plugins/core/text/input.haml
@@ -144,9 +150,11 @@ files:
144
150
  - app/cells/plugins/core/user/dropdown.haml
145
151
  - app/cells/plugins/core/user_cell.rb
146
152
  - app/models/asset_field_type.rb
147
- - app/models/asset_field_type.rb.orig
148
153
  - app/models/boolean_field_type.rb
154
+ - app/models/content_item_field_type.rb
149
155
  - app/models/date_time_field_type.rb
156
+ - app/models/float_field_type.rb
157
+ - app/models/integer_field_type.rb
150
158
  - app/models/tag_field_type.rb
151
159
  - app/models/text_field_type.rb
152
160
  - app/models/tree_field_type.rb
@@ -176,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
184
  version: '0'
177
185
  requirements: []
178
186
  rubyforge_project:
179
- rubygems_version: 2.5.1
187
+ rubygems_version: 2.5.2
180
188
  signing_key:
181
189
  specification_version: 4
182
190
  summary: The combined set of Core FieldTypes for the Cortex CMS platform
@@ -1,154 +0,0 @@
1
- class AssetFieldType < FieldType
2
- attr_accessor :asset_file_name,
3
- :asset_content_type,
4
- :asset_file_size,
5
- :asset_updated_at,
6
- :asset
7
-
8
- attr_reader :dimensions,
9
- :existing_data
10
-
11
- before_save :extract_dimensions
12
-
13
- do_not_validate_attachment_file_type :asset
14
- validates :asset, attachment_presence: true, if: :validate_presence?
15
- validate :validate_asset_size, if: :validate_size?
16
- validate :validate_asset_content_type, if: :validate_content_type?
17
-
18
- def metadata=(metadata_hash)
19
- @metadata = metadata_hash.deep_symbolize_keys
20
- @existing_data = metadata_hash[:existing_data]
21
- Paperclip::HasAttachedFile.define_on(self.class, :asset, existing_metadata)
22
- end
23
-
24
- def data=(data_hash)
25
- self.asset = data_hash.deep_symbolize_keys[:asset]
26
- end
27
-
28
- def data
29
- {
30
- <<<<<<< HEAD
31
- 'asset': {
32
- 'file_name': asset_file_name,
33
- 'url': asset.url,
34
- 'dimensions': dimensions,
35
- 'content_type': asset_content_type,
36
- 'file_size': asset_file_size,
37
- 'updated_at': asset_updated_at
38
- },
39
- 'asset_field_type_id': id
40
- =======
41
- 'asset': {
42
- 'file_name': asset_file_name,
43
- 'url': asset.url,
44
- 'style_urls': style_urls,
45
- 'dimensions': dimensions,
46
- 'content_type': asset_content_type,
47
- 'file_size': asset_file_size,
48
- 'updated_at': asset_updated_at
49
- }
50
- >>>>>>> Implement storage of thumbnail/style URLs, asset wizard info box, and asset thumbnail in index
51
- }
52
- end
53
-
54
- def field_item_as_indexed_json_for_field_type(field_item, options = {})
55
- json = {}
56
- json[mapping_field_name] = asset_file_name
57
- json
58
- end
59
-
60
- def mapping
61
- {name: mapping_field_name, type: :string, analyzer: :keyword}
62
- end
63
-
64
- private
65
-
66
- def image?
67
- asset_content_type =~ %r{^(image|(x-)?application)/(bmp|gif|jpeg|jpg|pjpeg|png|x-png)$}
68
- end
69
-
70
- def extract_dimensions
71
- return unless image?
72
- tempfile = asset.queued_for_write[:original]
73
- unless tempfile.nil?
74
- geometry = Paperclip::Geometry.from_file(tempfile)
75
- @dimensions = {
76
- width: geometry.width.to_i,
77
- height: geometry.height.to_i
78
- }
79
- end
80
- end
81
-
82
- def allowed_content_types
83
- validations[:allowed_extensions].collect do |allowed_content_type|
84
- MimeMagic.by_extension(allowed_content_type).type
85
- end
86
- end
87
-
88
- def mapping_field_name
89
- "#{field_name.parameterize('_')}_asset_file_name"
90
- end
91
-
92
- def validate_presence?
93
- validations.key? :presence
94
- end
95
-
96
- def attachment_size_validator
97
- AttachmentSizeValidator.new(validations[:size].merge(attributes: :asset))
98
- end
99
-
100
- def attachment_content_type_validator
101
- AttachmentContentTypeValidator.new({content_type: allowed_content_types}.merge(attributes: :asset))
102
- end
103
-
104
- alias_method :valid_presence_validation?, :validate_presence?
105
-
106
- def validate_size?
107
- begin
108
- attachment_size_validator
109
- true
110
- rescue ArgumentError, NoMethodError
111
- false
112
- end
113
- end
114
-
115
- def validate_content_type?
116
- begin
117
- attachment_content_type_validator
118
- true
119
- rescue ArgumentError, NoMethodError
120
- false
121
- end
122
- end
123
-
124
- def validate_asset_size
125
- attachment_size_validator.validate_each(self, :asset, asset)
126
- end
127
-
128
- def validate_asset_content_type
129
- attachment_content_type_validator.validate_each(self, :asset, asset)
130
- end
131
-
132
- def style_urls
133
- if existing_data.empty?
134
- (metadata[:styles].map { |key, value| [key, asset.url(key)] }).to_h
135
- else
136
- existing_data[:asset][:style_urls]
137
- end
138
- end
139
-
140
- def existing_metadata
141
- metadata.except!(:existing_data)
142
-
143
- <<<<<<< HEAD
144
- unless @existing_data.empty?
145
- metadata[:path].gsub(":id", @existing_data['asset_field_type_id']) if metadata[:path]
146
- =======
147
- unless existing_data.empty?
148
- metadata[:path] = updated_url(existing_data['asset']['url'])
149
- >>>>>>> Implement storage of thumbnail/style URLs, asset wizard info box, and asset thumbnail in index
150
- end
151
-
152
- metadata
153
- end
154
- end