populate-me 0.13.0 → 0.15.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
  SHA256:
3
- metadata.gz: 514291d44eb8b068db7c98d742dc8395a5a2821255ac31ba054522823f6c55d9
4
- data.tar.gz: 5a5c76cec480ed1c057ee70d33a38f21f1bd536c3ca5eabfdbbf2bf1d14c4b3c
3
+ metadata.gz: 85deae1b12e76c47c378e2f3843d5e840d06b95cc5359edd130fd64ffa9b88d0
4
+ data.tar.gz: 7078d10da19910b9962bfd3656c3543dd5389be624d11896e8248246f4170eeb
5
5
  SHA512:
6
- metadata.gz: 72e7c460a58523cf8cd9a1e9dadba107f5bfa810ec552b93af0fe113d4bf98f0941cb168ac4323291ab5fee478c1d018ceaa017c2f4bf5ea3460ce6d0b4a4130
7
- data.tar.gz: 41cf0a2e8705a2b184e3c840b001424cd4d69f00a447da72b89d2339ee0390a24b76c07e886b48127594ed73ad762e43560497097aa672dbc89ff2d7c9af2141
6
+ metadata.gz: 44c9c3cabe40c90112e0cc4af8e4e1b9f3105f9c7baff24e568cda0e3fb697c84ad00f62e2812fa323ac18475fe3d9d85b711409b1a07f8ba3077b0d9e8973b2
7
+ data.tar.gz: 3a9f806d103a25e7444cda57035bcd5fbfd6fbfa4492458b340c4a56324a4bca990f5e65c3f489728a0d07aa28e62f8c855c9a9cb602b7abc71ba12622d565e4
@@ -413,6 +413,8 @@ $(function() {
413
413
  process_data: function(data) {
414
414
  if (typeof data == 'object') {
415
415
  return PopulateMe.mustache_render(data);
416
+ } else if (typeof data == 'string' && data[0] == '{') {
417
+ return PopulateMe.mustache_render(JSON.parse(data));
416
418
  } else {
417
419
  return data;
418
420
  }
@@ -117,7 +117,14 @@
117
117
  </script>
118
118
 
119
119
  <script id="template-string-field" type="x-tmpl-mustache">
120
- <input name='{{input_name}}' value='{{input_value}}' {{#required}}required{{/required}}{{{build_input_attributes}}} />
120
+ <input name='{{input_name}}' value='{{input_value}}' {{#required}}required{{/required}}{{{build_input_attributes}}} {{#autocomplete.length}}list='datalist-{{id}}'{{/autocomplete.length}} />
121
+ {{#autocomplete.length}}
122
+ <datalist id='datalist-{{id}}'>
123
+ {{#autocomplete}}
124
+ <option value='{{.}}' />
125
+ {{/autocomplete}}
126
+ </datalist>
127
+ {{/autocomplete.length}}
121
128
  </script>
122
129
 
123
130
  <script id="template-text-field" type="x-tmpl-mustache">
@@ -145,7 +152,7 @@
145
152
 
146
153
  <script id="template-attachment-field" type="x-tmpl-mustache">
147
154
  {{#url}}
148
- <img src='{{url}}{{cache_buster}}' alt='Preview' width='150' />
155
+ <img src='{{url}}{{cache_buster}}' alt='Preview' width='150' onerror="this.src='<%= request.script_name %>/__assets__/img/file.png'; this.onerror=null;" />
149
156
  <button class='attachment-deleter'>x</button>
150
157
  <br />
151
158
  {{/url}}
@@ -67,6 +67,7 @@ class PopulateMe::Admin < Sinatra::Base
67
67
  if request.path_info=='/menu'
68
68
  items.push({title: '?', href: "#{request.script_name}/help", new_page: false})
69
69
  end
70
+ content_type :json
70
71
  {
71
72
  template: 'template_menu',
72
73
  page_title: page_title,
@@ -76,6 +77,7 @@ class PopulateMe::Admin < Sinatra::Base
76
77
 
77
78
  get '/list/:class_name' do
78
79
  @model_class = resolve_model_class params[:class_name]
80
+ content_type :json
79
81
  @model_class.to_admin_list(request: request, params: params).to_json
80
82
  end
81
83
 
@@ -87,6 +89,7 @@ class PopulateMe::Admin < Sinatra::Base
87
89
  else
88
90
  @model_instance = resolve_model_instance @model_class, params[:id]
89
91
  end
92
+ content_type :json
90
93
  @model_instance.to_admin_form(
91
94
  request: request,
92
95
  params: params,
@@ -102,6 +105,7 @@ class PopulateMe::Admin < Sinatra::Base
102
105
 
103
106
  not_found do
104
107
  response.headers['X-Cascade'] = 'pass'
108
+ content_type :json
105
109
  {'success'=>false,'message'=>'Not Found'}.to_json
106
110
  end
107
111
 
@@ -109,6 +113,7 @@ class PopulateMe::Admin < Sinatra::Base
109
113
  puts
110
114
  puts env['sinatra.error'].inspect
111
115
  puts
116
+ content_type :json
112
117
  {'success'=>false,'message'=>env['sinatra.error'].message}.to_json
113
118
  end
114
119
 
@@ -21,6 +21,14 @@ module PopulateMe
21
21
  end
22
22
  end
23
23
 
24
+ def outcast_string field, item, o={}
25
+ if item.key? :autocomplete
26
+ item = item.dup
27
+ item[:autocomplete] = WebUtils.deep_copy(WebUtils.get_value(item[:autocomplete],self))
28
+ end
29
+ item
30
+ end
31
+
24
32
  def outcast_list field, item, o={}
25
33
  item = item.dup
26
34
  item[:items] = self.__send__(field).map do |nested|
@@ -27,7 +27,7 @@ module PopulateMe
27
27
  end
28
28
 
29
29
  def default
30
- self.new_image_magick_job(:populate_me_thumb, :jpg, "-flatten -resize '400x225^' -gravity center -extent 400x225")
30
+ self.new_image_magick_job(:populate_me_thumb, :jpg, "-flatten -resize '400x230' -gravity center -extent 400x230")
31
31
  end
32
32
 
33
33
  end
@@ -1,4 +1,4 @@
1
1
  module PopulateMe
2
- VERSION = '0.13.0'
2
+ VERSION = '0.15.0'
3
3
  end
4
4
 
data/populate-me.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency 'sinatra', '~> 2'
22
22
  s.add_dependency 'json', '~> 2.1'
23
23
 
24
- s.add_development_dependency 'bundler', '~> 1.13'
24
+ s.add_development_dependency 'bundler', '>= 2.2.10'
25
25
  s.add_development_dependency 'minitest', '~> 5.8'
26
26
  s.add_development_dependency 'rack-test', '~> 0.6'
27
27
  s.add_development_dependency 'rack-cerberus', '~> 1.0'
@@ -6,6 +6,7 @@ class Outcasted < PopulateMe::Document
6
6
  set :default_attachment_class, PopulateMe::Attachment
7
7
 
8
8
  field :name
9
+ field :category, autocomplete: ['Fish', 'Cat', 'Bunny']
9
10
  field :size, type: :select, select_options: [
10
11
  {description: 'small', value: 's'},
11
12
  {description: 'medium', value: 'm'},
@@ -23,6 +24,10 @@ class Outcasted < PopulateMe::Document
23
24
  field :weirdo, type: :strange
24
25
  field :price, type: :price
25
26
 
27
+ def get_category_autocomplete_list
28
+ ['Horse', 'Bear']
29
+ end
30
+
26
31
  def get_size_options
27
32
  [
28
33
  [:small, :s],
@@ -65,6 +70,36 @@ describe PopulateMe::Document, 'Outcasting' do
65
70
 
66
71
  end
67
72
 
73
+ describe '#outcast_string' do
74
+
75
+ it 'Generates the autocomplete options when needed' do
76
+ original = Outcasted.fields[:category]
77
+ output = Outcasted.new.outcast(:category, original, {input_name_prefix: 'data'})
78
+ assert_equal ['Fish', 'Cat', 'Bunny'], output[:autocomplete]
79
+ refute original.equal?(output)
80
+
81
+ original = Outcasted.fields[:name]
82
+ output = Outcasted.new.outcast(:name, original, {input_name_prefix: 'data'})
83
+ refute output.key?(:autocomplete)
84
+ end
85
+
86
+ it 'Generates the autocomplete options from a proc' do
87
+ original = Outcasted.fields[:category].dup
88
+ original[:autocomplete] = proc{ ['Dog', 'Snake'] }
89
+ output = Outcasted.new.outcast(:category, original, {input_name_prefix: 'data'})
90
+ assert_equal ['Dog', 'Snake'], output[:autocomplete]
91
+ assert original[:autocomplete].is_a?(Proc)
92
+ end
93
+
94
+ it 'Generates the autocomplete options from a method name' do
95
+ original = Outcasted.fields[:category].dup
96
+ original[:autocomplete] = :get_category_autocomplete_list
97
+ output = Outcasted.new.outcast(:category, original, {input_name_prefix: 'data'})
98
+ assert_equal ['Horse', 'Bear'], output[:autocomplete]
99
+ assert original[:autocomplete].is_a?(Symbol)
100
+ end
101
+ end
102
+
68
103
  describe '#outcast_list' do
69
104
 
70
105
  it 'Has no value and an empty list of items when list is empty' do
@@ -1,5 +1,6 @@
1
1
  require 'helper'
2
2
  require 'populate_me/document'
3
+ require 'populate_me/attachment'
3
4
 
4
5
  describe PopulateMe::Document, 'Schema' do
5
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: populate-me
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mickael Riga
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-13 00:00:00.000000000 Z
11
+ date: 2021-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: web-utils
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.13'
61
+ version: 2.2.10
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.13'
68
+ version: 2.2.10
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: minitest
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -198,6 +198,7 @@ files:
198
198
  - lib/populate_me/admin/__assets__/css/asmselect.css
199
199
  - lib/populate_me/admin/__assets__/css/jquery-ui.min.css
200
200
  - lib/populate_me/admin/__assets__/css/main.css
201
+ - lib/populate_me/admin/__assets__/img/file.png
201
202
  - lib/populate_me/admin/__assets__/img/help/children.png
202
203
  - lib/populate_me/admin/__assets__/img/help/create.png
203
204
  - lib/populate_me/admin/__assets__/img/help/delete.png
@@ -257,7 +258,7 @@ homepage: https://github.com/mig-hub/populate-me
257
258
  licenses:
258
259
  - MIT
259
260
  metadata: {}
260
- post_install_message:
261
+ post_install_message:
261
262
  rdoc_options: []
262
263
  require_paths:
263
264
  - lib
@@ -272,8 +273,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
272
273
  - !ruby/object:Gem::Version
273
274
  version: '0'
274
275
  requirements: []
275
- rubygems_version: 3.0.3
276
- signing_key:
276
+ rubygems_version: 3.2.16
277
+ signing_key:
277
278
  specification_version: 4
278
279
  summary: PopulateMe is an admin system for web applications.
279
280
  test_files: