admin_it 1.0.11 → 1.1.0

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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile +8 -1
  4. data/README.md +4 -2
  5. data/admin_it.gemspec +1 -0
  6. data/lib/admin_it.rb +7 -5
  7. data/lib/admin_it/actions/action.rb +5 -2
  8. data/lib/admin_it/config.rb +1 -0
  9. data/lib/admin_it/context/collection_context.rb +10 -4
  10. data/lib/admin_it/context/context.rb +12 -13
  11. data/lib/admin_it/context/show_context.rb +6 -5
  12. data/lib/admin_it/context/single_context.rb +19 -8
  13. data/lib/admin_it/context/table_context.rb +9 -7
  14. data/lib/admin_it/context/tiles_context.rb +1 -0
  15. data/lib/admin_it/controller.rb +3 -1
  16. data/lib/admin_it/data.rb +4 -2
  17. data/lib/admin_it/data/active_record.rb +10 -301
  18. data/lib/admin_it/data/active_record/collection_context.rb +47 -0
  19. data/lib/admin_it/data/active_record/field.rb +64 -0
  20. data/lib/admin_it/data/active_record/filter.rb +36 -0
  21. data/lib/admin_it/data/active_record/resource.rb +66 -0
  22. data/lib/admin_it/data/active_record/single_context.rb +102 -0
  23. data/lib/admin_it/data/data_behavior.rb +2 -0
  24. data/lib/admin_it/data/hash.rb +3 -0
  25. data/lib/admin_it/data/mongoid.rb +14 -0
  26. data/lib/admin_it/data/mongoid/field.rb +58 -0
  27. data/lib/admin_it/data/mongoid/resource.rb +67 -0
  28. data/lib/admin_it/data/object.rb +3 -0
  29. data/lib/admin_it/engine.rb +4 -1
  30. data/lib/admin_it/env.rb +21 -2
  31. data/lib/admin_it/field/field.rb +15 -26
  32. data/lib/admin_it/filters/field_filter.rb +1 -0
  33. data/lib/admin_it/filters/filter.rb +8 -13
  34. data/lib/admin_it/filters/value_filter.rb +1 -0
  35. data/lib/admin_it/helpers.rb +2 -0
  36. data/lib/admin_it/helpers/field.rb +3 -3
  37. data/lib/admin_it/helpers/input.rb +1 -0
  38. data/lib/admin_it/helpers/page.rb +2 -0
  39. data/lib/admin_it/helpers/table.rb +12 -8
  40. data/lib/admin_it/helpers/tiles.rb +2 -0
  41. data/lib/admin_it/helpers/toolbar.rb +4 -0
  42. data/lib/admin_it/helpers/top_menu.rb +3 -0
  43. data/lib/admin_it/resource.rb +16 -21
  44. data/lib/admin_it/version.rb +1 -1
  45. data/lib/extend_it.rb +8 -4
  46. data/lib/extend_it/array_of.rb +12 -10
  47. data/lib/extend_it/base.rb +9 -8
  48. data/lib/extend_it/callbacks.rb +11 -12
  49. data/lib/extend_it/dsl.rb +33 -44
  50. data/spec/extend_it/dsl_spec.rb +21 -32
  51. data/spec/lib/data/mongoid/field_spec.rb +28 -0
  52. data/spec/lib/data/mongoid/resource_spec.rb +50 -0
  53. data/spec/spec_helper.rb +8 -3
  54. data/spec/support/module_helpers.rb +20 -0
  55. metadata +30 -13
  56. data/.ruby-version +0 -1
  57. data/lib/admin_it/definitions.rb +0 -89
  58. data/lib/admin_it/utils.rb +0 -21
  59. data/lib/extend_it/asserts.rb +0 -40
  60. data/lib/extend_it/caller.rb +0 -35
  61. data/lib/extend_it/config.rb +0 -30
  62. data/lib/extend_it/ensures.rb +0 -193
  63. data/spec/extend_it/config_spec.rb +0 -52
  64. data/spec/extend_it/ensures_spec.rb +0 -39
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ if ENV['USE_MONGOID']
4
+ describe AdminIt::MongoidData::Field do
5
+ before do
6
+ #
7
+ class MongoTestEmbed
8
+ include Mongoid::Document
9
+ field :name, type: String
10
+ embedded_in :mongo_test_parent
11
+ end
12
+ #
13
+ class MongoTestParent
14
+ include Mongoid::Document
15
+ field :name, type: String
16
+ embeds_many :mongo_test_embeds
17
+ end
18
+ end
19
+
20
+ after do
21
+ if Object.const_defined?(:MongoTestParent)
22
+ Object.send(:remove_const, :MongoTestParent)
23
+ end
24
+ end
25
+
26
+ let(:resource) { AdminIt::Resource.new(:mongo_test, MongoTestParent) }
27
+ end
28
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ if ENV['USE_MONGOID']
4
+ describe AdminIt::MongoidData::Resource do
5
+ before do
6
+ #
7
+ class MongoTestEmbed
8
+ include Mongoid::Document
9
+ field :name, type: String
10
+ embedded_in :mongo_test_parent
11
+ end
12
+ #
13
+ class MongoTestParent
14
+ include Mongoid::Document
15
+ field :name, type: String
16
+ embeds_many :mongo_test_embeds
17
+ end
18
+ end
19
+
20
+ after do
21
+ if Object.const_defined?(:MongoTestParent)
22
+ Object.send(:remove_const, :MongoTestParent)
23
+ end
24
+ end
25
+
26
+ let(:resource) { AdminIt::Resource.new(:mongo_test, MongoTestParent) }
27
+
28
+ it 'provides default fields' do
29
+ expect(
30
+ resource.fields(scope: :all).map(&:field_name)
31
+ ).to match_array %i(id name mongo_test_embeds)
32
+ end
33
+
34
+ it 'hides id field' do
35
+ expect(resource.field(:id).visible?).to be_false
36
+ end
37
+
38
+ it 'gives right field types' do
39
+ expect(resource.field(:id).type).to eq :integer
40
+ expect(resource.field(:name).type).to eq :string
41
+ expect(resource.field(:mongo_test_embeds).type).to eq :relation
42
+ end
43
+
44
+ it 'provides default filters' do
45
+ expect(
46
+ resource.filters.map(&:filter_name)
47
+ ).to match_array %i(name_value)
48
+ end
49
+ end
50
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,11 +1,16 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
3
 
4
- # --- ExtendIt
5
- require 'extend_it'
4
+ # --- EnsureIt
6
5
  if ENV['USE_REFINES']
7
- ExtendIt.config.use_refines(true)
6
+ require 'ensure_it_refined'
7
+ else
8
+ require 'ensure_it'
8
9
  end
10
+ # --- EOF EnsureIt
11
+
12
+ # --- ExtendIt
13
+ require 'extend_it'
9
14
  # --- EOF ExtendIt
10
15
 
11
16
  require 'combustion'
@@ -0,0 +1,20 @@
1
+ #
2
+ module ModuleHelpers
3
+ def self.included(base)
4
+ base.class_eval do
5
+ let :includer_class do
6
+ mod = described_class
7
+ Class.new { include mod }
8
+ end
9
+
10
+ let(:includer_obj) { includer_class.new }
11
+
12
+ let :extender_class do
13
+ mod = described_class
14
+ Class.new { extend mod }
15
+ end
16
+
17
+ let(:extender_obj) { extender_class.new }
18
+ end
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: admin_it
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.11
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Ovchinnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-28 00:00:00.000000000 Z
11
+ date: 2014-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ensure_it
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -188,7 +202,6 @@ files:
188
202
  - ".gitignore"
189
203
  - ".rspec"
190
204
  - ".rubocop.yml"
191
- - ".ruby-version"
192
205
  - ".yardopts"
193
206
  - Gemfile
194
207
  - README.md
@@ -242,10 +255,17 @@ files:
242
255
  - lib/admin_it/controller.rb
243
256
  - lib/admin_it/data.rb
244
257
  - lib/admin_it/data/active_record.rb
258
+ - lib/admin_it/data/active_record/collection_context.rb
259
+ - lib/admin_it/data/active_record/field.rb
260
+ - lib/admin_it/data/active_record/filter.rb
261
+ - lib/admin_it/data/active_record/resource.rb
262
+ - lib/admin_it/data/active_record/single_context.rb
245
263
  - lib/admin_it/data/data_behavior.rb
246
264
  - lib/admin_it/data/hash.rb
265
+ - lib/admin_it/data/mongoid.rb
266
+ - lib/admin_it/data/mongoid/field.rb
267
+ - lib/admin_it/data/mongoid/resource.rb
247
268
  - lib/admin_it/data/object.rb
248
- - lib/admin_it/definitions.rb
249
269
  - lib/admin_it/engine.rb
250
270
  - lib/admin_it/env.rb
251
271
  - lib/admin_it/errors.rb
@@ -268,20 +288,13 @@ files:
268
288
  - lib/admin_it/locales/ru.yml
269
289
  - lib/admin_it/resource.rb
270
290
  - lib/admin_it/shared.rb
271
- - lib/admin_it/utils.rb
272
291
  - lib/admin_it/version.rb
273
292
  - lib/extend_it.rb
274
293
  - lib/extend_it/array_of.rb
275
- - lib/extend_it/asserts.rb
276
294
  - lib/extend_it/base.rb
277
295
  - lib/extend_it/callbacks.rb
278
- - lib/extend_it/caller.rb
279
- - lib/extend_it/config.rb
280
296
  - lib/extend_it/dsl.rb
281
- - lib/extend_it/ensures.rb
282
- - spec/extend_it/config_spec.rb
283
297
  - spec/extend_it/dsl_spec.rb
284
- - spec/extend_it/ensures_spec.rb
285
298
  - spec/internal/config/database.yml
286
299
  - spec/internal/config/routes.rb
287
300
  - spec/internal/db/combustion_test.sqlite
@@ -291,11 +304,14 @@ files:
291
304
  - spec/lib/context/collection_context_spec.rb
292
305
  - spec/lib/context/context_spec.rb
293
306
  - spec/lib/context/single_context_spec.rb
307
+ - spec/lib/data/mongoid/field_spec.rb
308
+ - spec/lib/data/mongoid/resource_spec.rb
294
309
  - spec/lib/data/object_spec.rb
295
310
  - spec/lib/field_spec.rb
296
311
  - spec/lib/resource_spec.rb
297
312
  - spec/spec_helper.rb
298
313
  - spec/support/example_groups/context_example_group.rb
314
+ - spec/support/module_helpers.rb
299
315
  - spec/support/shared_examples/context.rb
300
316
  homepage: https://github.com/cybernetlab/admin_it
301
317
  licenses:
@@ -323,9 +339,7 @@ signing_key:
323
339
  specification_version: 4
324
340
  summary: Admin interface
325
341
  test_files:
326
- - spec/extend_it/config_spec.rb
327
342
  - spec/extend_it/dsl_spec.rb
328
- - spec/extend_it/ensures_spec.rb
329
343
  - spec/internal/config/database.yml
330
344
  - spec/internal/config/routes.rb
331
345
  - spec/internal/db/combustion_test.sqlite
@@ -335,10 +349,13 @@ test_files:
335
349
  - spec/lib/context/collection_context_spec.rb
336
350
  - spec/lib/context/context_spec.rb
337
351
  - spec/lib/context/single_context_spec.rb
352
+ - spec/lib/data/mongoid/field_spec.rb
353
+ - spec/lib/data/mongoid/resource_spec.rb
338
354
  - spec/lib/data/object_spec.rb
339
355
  - spec/lib/field_spec.rb
340
356
  - spec/lib/resource_spec.rb
341
357
  - spec/spec_helper.rb
342
358
  - spec/support/example_groups/context_example_group.rb
359
+ - spec/support/module_helpers.rb
343
360
  - spec/support/shared_examples/context.rb
344
361
  has_rdoc:
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.1.1
@@ -1,89 +0,0 @@
1
- #require 'delegate'
2
-
3
- module AdminIt
4
- class ResourceDefinition # < SimpleDelegator
5
- COLLECTIONS = %i(table tiles list)
6
- SINGLE = %i(show new edit)
7
- CONTEXTS = COLLECTIONS + SINGLE
8
-
9
- # extend ExtendIt::ArrayOf
10
-
11
- # array_of Context do
12
- # scope(:all) { |_| true }
13
- # find_by :name
14
- # end
15
-
16
- # dsl_array :context, ArrayOfContext, create_entity: :create_context
17
-
18
- def initialize(resource)
19
- @resource = resource
20
- @resource.contexts.replace(CONTEXTS.map do |name|
21
- Object.const_get("AdminIt::#{name.capitalize}Context")
22
- .create_class(name, @resource)
23
- end)
24
- end
25
-
26
- def exclude_context(*args)
27
- args.flatten.each do |arg|
28
- arg = Utils.assert_symbol_arg(arg) { next }
29
- @resource.contexts.reject! { |c| c.context_name == arg }
30
- end
31
- end
32
-
33
- def exclude_collection
34
- @resource.contexts.reject! { |c| c.collection? }
35
- end
36
-
37
- def exclude_single
38
- @resource.contexts.reject! { |c| c.single? }
39
- end
40
-
41
- def contexts(*names, &block)
42
- unless names.empty?
43
- @resource.contexts.replace(
44
- names.flatten.uniq.map { |name| context(name) }
45
- )
46
- end
47
- if block_given?
48
- @resource.contexts.each { |context| context.instance_eval(&block) }
49
- end
50
- end
51
-
52
- def context(name, context_class: nil, &block)
53
- Utils.assert_symbol_arg!(name, 'name')
54
- context = @resource[name]
55
- if context.nil?
56
- unless context_class <= Context
57
- context_class =
58
- Object.const_get("AdminIt::#{name.capitalize}Context")
59
- end
60
- context = context_class.create_class(name, @resource)
61
- @resource.contexts << context
62
- end
63
- context.instance_eval(&block) if block_given?
64
- context
65
- end
66
-
67
- def all(&block)
68
- @resource.contexts.each { |c| c.instance_eval(&block) } if block_given?
69
- end
70
-
71
- def single(&block)
72
- @resource.singles.each { |c| c.instance_eval(&block) } if block_given?
73
- end
74
-
75
- def collection(&block)
76
- return unless block_given?
77
- @resource.collections.each { |c| c.instance_eval(&block) }
78
- end
79
-
80
- def default_context(value)
81
- return if @resource[value].nil?
82
- @resource.instance_variable_set(:@default_context, value)
83
- end
84
-
85
- def icon(value = nil)
86
- @resource.instance_variable_set(:@icon, value.to_s)
87
- end
88
- end
89
- end
@@ -1,21 +0,0 @@
1
- module AdminIt
2
- module Utils
3
- def self.assert_symbol_arg!(arg, name = nil)
4
- assert_symbol_arg(arg) do
5
- _caller = caller_locations(3, 1).first
6
- name = "#{name} " unless name.nil?
7
- fail(
8
- ArgumentError,
9
- "Argument #{name}for #{_caller.label} should be a String or Symbol",
10
- caller[3..-1]
11
- )
12
- end
13
- end
14
-
15
- def self.assert_symbol_arg(arg)
16
- return arg if arg.is_a?(Symbol)
17
- return arg.to_sym if arg.is_a?(String)
18
- yield arg if block_given?
19
- end
20
- end
21
- end
@@ -1,40 +0,0 @@
1
- require File.join %w(extend_it caller)
2
- require File.join %w(extend_it ensures)
3
-
4
- if ExtendIt.config.use_refines?
5
- using ExtendIt::Caller
6
- using ExtendIt::Ensures
7
- end
8
-
9
- module ExtendIt
10
- module Asserts
11
- private
12
-
13
- if RUBY_VERSION >= '2.1.0'
14
- def assert_symbol(*names, binding: nil)
15
- return unless binding ||= caller_binding
16
- names.each do |name|
17
- name = name.ensure_symbol || next
18
- var = binding.local_variable_get(name)
19
- var = var.ensure_symbol || fail(
20
- ArgumentError,
21
- "Argument `#{name}` should be a Symbol or String",
22
- caller[1..-1]
23
- )
24
- binding.local_variable_set(name, var)
25
- end
26
- end
27
- else
28
- def assert_symbol(*names, binding: nil)
29
- return unless binding ||= caller_binding
30
- names.each do |name|
31
- name = name.ensure_symbol || next
32
- binding.eval(
33
- "#{name} = #{name}.ensure_symbol || fail(ArgumentError," \
34
- " 'Argument `#{name}` should be a Symbol or String')"
35
- )
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,35 +0,0 @@
1
- require 'continuation' if RUBY_VERSION >= '1.9.0'
2
-
3
- module ExtendIt
4
- module Caller
5
- # http://rubychallenger.blogspot.ru/2011/07/caller-binding.html
6
- refine Object do
7
- def caller_binding
8
- cc, count = nil, 0
9
- set_trace_func(lambda { |event, file, lineno, id, binding, klass|
10
- if count == 2
11
- set_trace_func nil
12
- cc.call(binding)
13
- elsif event == 'return'
14
- count += 1
15
- end
16
- })
17
- return callcc { |cont| cc = cont }
18
- end
19
-
20
- def caller_eval(str)
21
- cc, ok = nil, false
22
- set_trace_func(lambda { |event, file, lineno, id, binding, klass|
23
- if ok
24
- set_trace_func nil
25
- cc.call(binding)
26
- else
27
- ok = event == "return"
28
- end
29
- })
30
- return unless bb = callcc { |c| cc = c; nil }
31
- eval(str, bb)
32
- end
33
- end
34
- end
35
- end
@@ -1,30 +0,0 @@
1
- module ExtendIt
2
- module Config
3
- def self.use_refines(value = nil)
4
- if value.nil?
5
- @use_refines.nil? ? @use_refines = false : @use_refines
6
- else
7
- self.use_refines = value
8
- end
9
- end
10
-
11
- def self.use_refines=(value)
12
- unless RUBY_VERSION >= '2.1.0'
13
- fail(
14
- RuntimeError,
15
- 'Refinements can be used only with ruby versions >= 2.1.0'
16
- )
17
- end
18
- @use_refines = value == true
19
- end
20
-
21
- def self.use_refines?
22
- @use_refines
23
- end
24
- end
25
-
26
- def self.config
27
- yield Config if block_given?
28
- Config
29
- end
30
- end