puffer 0.0.23 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +55 -53
- data/VERSION +1 -1
- data/app/assets/javascripts/puffer/application.js +6 -3
- data/app/assets/javascripts/puffer/paginator.js +223 -0
- data/app/assets/javascripts/puffer/puffer.js +12 -0
- data/app/assets/javascripts/puffer/rails.js +1 -0
- data/app/assets/javascripts/puffer/{right-autocompleter.js → right-autocompleter-src.js} +45 -41
- data/app/assets/javascripts/puffer/{right-calendar.js → right-calendar-src.js} +53 -50
- data/app/assets/javascripts/puffer/right-dialog-src.js +768 -0
- data/app/assets/javascripts/puffer/right-slider-src.js +507 -0
- data/app/assets/javascripts/puffer/{right.js → right-src.js} +1000 -230
- data/app/assets/stylesheets/puffer/application.css +2 -0
- data/app/assets/stylesheets/puffer/paginator.css +33 -0
- data/app/assets/stylesheets/puffer/right.css +4 -0
- data/app/components/base/form.html.erb +15 -0
- data/app/components/base_component.rb +15 -0
- data/app/components/boolean/form.html.erb +3 -0
- data/app/components/boolean/index.html.erb +3 -0
- data/app/components/boolean_component.rb +13 -0
- data/app/components/date_time/form.html.erb +5 -0
- data/app/components/date_time_component.rb +12 -0
- data/app/components/file/form.html.erb +5 -0
- data/app/components/file_component.rb +3 -0
- data/app/components/hidden/form.html.erb +1 -0
- data/app/components/hidden_component.rb +3 -0
- data/app/components/password/form.html.erb +5 -0
- data/app/components/password_component.rb +7 -0
- data/app/components/references_many/form.html.erb +1 -0
- data/app/components/references_many_component.rb +7 -0
- data/app/components/references_one/choose.html.erb +9 -0
- data/app/components/references_one/form.html.erb +28 -0
- data/app/components/references_one_component.rb +12 -0
- data/app/components/select/form.html.erb +5 -0
- data/app/components/select_component.rb +15 -0
- data/app/components/string/form.html.erb +5 -0
- data/app/components/string_component.rb +3 -0
- data/app/components/text/form.html.erb +5 -0
- data/app/components/text_component.rb +3 -0
- data/app/controllers/puffer/base.rb +4 -0
- data/app/views/puffer/base/_form.html.erb +0 -1
- data/app/views/puffer/base/_table.html.erb +25 -0
- data/app/views/puffer/base/index.html.erb +14 -28
- data/app/views/puffer/tree_base/_record.html.erb +1 -1
- data/lib/generators/puffer/component/USAGE +12 -0
- data/lib/generators/puffer/component/component_generator.rb +19 -0
- data/lib/generators/puffer/component/templates/component.rb +15 -0
- data/lib/generators/puffer/component/templates/component_spec.rb +19 -0
- data/lib/puffer/component.rb +141 -0
- data/lib/puffer/controller/dsl.rb +25 -12
- data/lib/puffer/engine.rb +5 -0
- data/lib/puffer/extensions/controller.rb +11 -9
- data/lib/puffer/extensions/form.rb +2 -1
- data/lib/puffer/extensions/mapper.rb +2 -0
- data/lib/puffer/field.rb +30 -19
- data/lib/puffer/field_set.rb +17 -2
- data/lib/puffer.rb +25 -8
- data/puffer.gemspec +59 -28
- data/spec/app/components/base_component_spec.rb +19 -0
- data/spec/app/components/boolean_component_spec.rb +36 -0
- data/spec/app/components/date_time_component_spec.rb +26 -0
- data/spec/app/components/file_component_spec.rb +25 -0
- data/spec/app/components/hidden_component_spec.rb +24 -0
- data/spec/app/components/password_component_spec.rb +37 -0
- data/spec/app/components/references_many_component_spec.rb +19 -0
- data/spec/app/components/references_one_component_spec.rb +19 -0
- data/spec/app/components/select_component_spec.rb +30 -0
- data/spec/app/components/string_component_spec.rb +25 -0
- data/spec/app/components/text_component_spec.rb +25 -0
- data/spec/dummy/app/controllers/admin/categories_controller.rb +3 -3
- data/spec/dummy/app/controllers/admin/posts_controller.rb +3 -0
- data/spec/dummy/app/controllers/{puffer → admin}/sessions_controller.rb +1 -1
- data/spec/dummy/app/controllers/admin/users_controller.rb +2 -2
- data/spec/dummy/app/models/post.rb +4 -0
- data/spec/dummy/db/migrate/20100930132656_create_posts.rb +2 -0
- data/spec/dummy/db/migrate/20100930132726_create_categories.rb +1 -0
- data/spec/dummy/db/schema.rb +3 -0
- data/spec/dummy/db/seeds.rb +6 -1
- data/spec/fabricators/categories_fabricator.rb +1 -0
- data/spec/fabricators/posts_fabricator.rb +1 -0
- data/spec/lib/component_spec.rb +7 -0
- data/spec/lib/fields_spec.rb +0 -4
- metadata +85 -56
- data/app/views/puffer/base/associated/_many.html.erb +0 -56
- data/app/views/puffer/base/associated/many.rjs +0 -1
- data/app/views/puffer/base/associated/one.js.erb +0 -13
- data/app/views/puffer/base/association/_many.html.erb +0 -7
- data/lib/puffer/controller/generated.rb +0 -65
- data/lib/puffer/customs.rb +0 -64
- data/lib/puffer/inputs/association.rb +0 -38
- data/lib/puffer/inputs/base.rb +0 -51
- data/lib/puffer/inputs/boolean.rb +0 -19
- data/lib/puffer/inputs/collection_association.rb +0 -11
- data/lib/puffer/inputs/date_time.rb +0 -16
- data/lib/puffer/inputs/file.rb +0 -11
- data/lib/puffer/inputs/hidden.rb +0 -15
- data/lib/puffer/inputs/password.rb +0 -11
- data/lib/puffer/inputs/select.rb +0 -19
- data/lib/puffer/inputs/text.rb +0 -11
@@ -1,15 +1,22 @@
|
|
1
1
|
module Puffer
|
2
2
|
module Controller
|
3
3
|
module Dsl
|
4
|
+
extend ActiveSupport::Concern
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
included do
|
7
|
+
class_attribute :_members
|
8
|
+
self._members = Puffer::Controller::Actions.new
|
9
|
+
class_attribute :_collections
|
10
|
+
self._collections = Puffer::Controller::Actions.new
|
11
|
+
class_attribute :_fieldset_fallbacks
|
12
|
+
self._fieldset_fallbacks = HashWithIndifferentAccess.new
|
8
13
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
14
|
+
helper_method :_members, :_collections
|
15
|
+
end
|
16
|
+
|
17
|
+
module InstanceMethods
|
18
|
+
def fields set
|
19
|
+
self.class.fields set
|
13
20
|
end
|
14
21
|
end
|
15
22
|
|
@@ -18,6 +25,7 @@ module Puffer
|
|
18
25
|
def inherited klass
|
19
26
|
klass._members = _members.dup
|
20
27
|
klass._collections = _collections.dup
|
28
|
+
klass._fieldset_fallbacks = Marshal.load(Marshal.dump(_fieldset_fallbacks))
|
21
29
|
super
|
22
30
|
end
|
23
31
|
|
@@ -31,22 +39,24 @@ module Puffer
|
|
31
39
|
|
32
40
|
def define_fieldset *actions
|
33
41
|
options = actions.extract_options!
|
34
|
-
fallbacks = Array.wrap(options.delete(:fallbacks))
|
42
|
+
fallbacks = Array.wrap(options.delete(:fallbacks)).map(&:to_sym)
|
35
43
|
|
36
44
|
actions.each do |action|
|
45
|
+
self._fieldset_fallbacks[action] = [action] + fallbacks
|
46
|
+
|
37
47
|
class_attribute "_#{action}_fields"
|
38
48
|
send "_#{action}_fields=", Puffer::FieldSet.new unless send("_#{action}_fields?")
|
39
49
|
helper_method "#{action}_fields"
|
40
50
|
|
41
51
|
self.class.instance_eval do
|
42
52
|
define_method action do |&block|
|
43
|
-
@_fields = send("_#{action}_fields=", Puffer::FieldSet.new)
|
53
|
+
@_fields = send("_#{action}_fields=", Puffer::FieldSet.new(action))
|
44
54
|
block.call if block
|
45
55
|
remove_instance_variable :@_fields
|
46
56
|
end
|
47
57
|
|
48
58
|
define_method "#{action}_fields" do
|
49
|
-
actions = [action]
|
59
|
+
actions = self._fieldset_fallbacks[action].dup
|
50
60
|
last = actions.pop
|
51
61
|
actions.map do |action|
|
52
62
|
send("_#{action}_fields").presence
|
@@ -60,10 +70,13 @@ module Puffer
|
|
60
70
|
end
|
61
71
|
end
|
62
72
|
|
73
|
+
def fields set
|
74
|
+
send "#{set}_fields"
|
75
|
+
end
|
76
|
+
|
63
77
|
def field name, options = {}, &block
|
64
78
|
field = @_fields.field(name, model, options, &block) if @_fields
|
65
|
-
generate_association_actions field if field.reflection
|
66
|
-
#generate_change_actions field if field.toggable?
|
79
|
+
#generate_association_actions field if field.reflection
|
67
80
|
end
|
68
81
|
|
69
82
|
end
|
data/lib/puffer/engine.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
module Puffer
|
2
2
|
class Engine < Rails::Engine
|
3
|
+
config.paths.add 'app/components', :eager_load => true
|
3
4
|
config.autoload_paths << File.join(root, 'lib')
|
5
|
+
|
6
|
+
initializer "puffer.add_view_paths", :after => :add_view_paths do |app|
|
7
|
+
Puffer::Component::Base.view_paths = paths["app/components"].existent
|
8
|
+
end
|
4
9
|
end
|
5
10
|
end
|
@@ -2,19 +2,15 @@ module Puffer
|
|
2
2
|
module Extensions
|
3
3
|
module ActionController
|
4
4
|
module Base
|
5
|
+
extend ActiveSupport::Concern
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
extend ClassMethods
|
7
|
+
included do
|
8
|
+
extend ClassMethods
|
9
9
|
|
10
|
-
|
11
|
-
end
|
10
|
+
helper_method :puffer?, :render_component
|
12
11
|
end
|
13
12
|
|
14
|
-
def puffer?; false; end
|
15
|
-
|
16
13
|
module ClassMethods
|
17
|
-
|
18
14
|
def puffer?; false; end
|
19
15
|
|
20
16
|
def pufferize!
|
@@ -22,9 +18,15 @@ module Puffer
|
|
22
18
|
include Puffer::Controller::Helpers
|
23
19
|
include Puffer::Controller::Dsl
|
24
20
|
include Puffer::Controller::Config
|
25
|
-
include Puffer::Controller::Generated
|
26
21
|
end
|
22
|
+
end
|
27
23
|
|
24
|
+
module InstanceMethods
|
25
|
+
def puffer?; false; end
|
26
|
+
|
27
|
+
def render_component *args
|
28
|
+
Puffer::Component::Base.render_component self, *args
|
29
|
+
end
|
28
30
|
end
|
29
31
|
|
30
32
|
end
|
@@ -5,7 +5,8 @@ module Puffer
|
|
5
5
|
def puffer_field *args
|
6
6
|
field = args.first.is_a?(Puffer::Field) ? args.first : Puffer::Field.new(*args)
|
7
7
|
field.resource = object.class
|
8
|
-
|
8
|
+
template = instance_variable_get :@template
|
9
|
+
field.render template.controller, :form, :form => self
|
9
10
|
end
|
10
11
|
|
11
12
|
end
|
@@ -67,6 +67,7 @@ module Puffer
|
|
67
67
|
@scope[:children] = siblings
|
68
68
|
|
69
69
|
collection do
|
70
|
+
get '/event/:fieldset/:field/:event(/:identifer)', options.merge(:action => :event, :as => :event)
|
70
71
|
post :create, options
|
71
72
|
controller._collections.each do |args|
|
72
73
|
opts = args.extract_options!.dup
|
@@ -128,6 +129,7 @@ module Puffer
|
|
128
129
|
|
129
130
|
collection do
|
130
131
|
get :index, options
|
132
|
+
get '/event/:fieldset/:field/:event(/:identifer)', options.merge(:action => :event, :as => :event)
|
131
133
|
post :create, options
|
132
134
|
controller._collections.each do |args|
|
133
135
|
opts = args.extract_options!.dup
|
data/lib/puffer/field.rb
CHANGED
@@ -1,24 +1,29 @@
|
|
1
1
|
module Puffer
|
2
2
|
class Field
|
3
3
|
|
4
|
-
attr_accessor :resource, :field_name, :options, :
|
4
|
+
attr_accessor :resource, :field_name, :field_set, :options, :children
|
5
5
|
|
6
|
-
def initialize field_name, *
|
6
|
+
def initialize field_name, resource, *fieldset_and_options, &block
|
7
7
|
@field_name = field_name.to_s
|
8
|
-
@
|
9
|
-
@
|
10
|
-
@
|
8
|
+
@resource = resource
|
9
|
+
@options = fieldset_and_options.extract_options!
|
10
|
+
@field_set = fieldset_and_options.first
|
11
|
+
@children = Puffer::FieldSet.new swallow_nil{field_set.name}
|
11
12
|
block.bind(self).call if block
|
12
13
|
end
|
13
14
|
|
14
15
|
def field name, options = {}, &block
|
15
|
-
@
|
16
|
+
@children.field(name, swallow_nil{reflection.klass}, options, &block)
|
16
17
|
end
|
17
18
|
|
18
19
|
def native?
|
19
20
|
model == resource
|
20
21
|
end
|
21
22
|
|
23
|
+
def to_s
|
24
|
+
field_name
|
25
|
+
end
|
26
|
+
|
22
27
|
def name
|
23
28
|
@name ||= field_name.split('.').last
|
24
29
|
end
|
@@ -36,27 +41,33 @@ module Puffer
|
|
36
41
|
end
|
37
42
|
|
38
43
|
def type
|
39
|
-
@type ||= options[:type]
|
44
|
+
@type ||= options[:type] || custom_type || column_type || :string
|
40
45
|
end
|
41
46
|
|
42
|
-
def
|
43
|
-
|
47
|
+
def custom_type
|
48
|
+
return :select if options.key?(:select)
|
49
|
+
return :password if name =~ /password/
|
50
|
+
return reflection.macro if reflection
|
44
51
|
end
|
45
52
|
|
46
53
|
def reflection
|
47
54
|
@reflection ||= model && model.reflect_on_association(name.to_sym)
|
48
55
|
end
|
49
56
|
|
50
|
-
def collection?
|
51
|
-
[:has_many, :has_and_belongs_to_many].include? type
|
52
|
-
end
|
53
|
-
|
54
57
|
def input_options
|
55
58
|
options[:html] || {}
|
56
59
|
end
|
57
60
|
|
58
|
-
def
|
59
|
-
Puffer::
|
61
|
+
def component_class
|
62
|
+
@component_class ||= Puffer::Component.component_for type
|
63
|
+
end
|
64
|
+
|
65
|
+
def component
|
66
|
+
@component ||= component_class.new self
|
67
|
+
end
|
68
|
+
|
69
|
+
def render controller, context, *args
|
70
|
+
component.process controller, context, *args
|
60
71
|
end
|
61
72
|
|
62
73
|
def model
|
@@ -71,14 +82,14 @@ module Puffer
|
|
71
82
|
end if resource
|
72
83
|
end
|
73
84
|
|
74
|
-
def association_columns
|
75
|
-
@association_columns ||= fields
|
76
|
-
end
|
77
|
-
|
78
85
|
def column
|
79
86
|
@column ||= model && model.columns_hash[name]
|
80
87
|
end
|
81
88
|
|
89
|
+
def column_type
|
90
|
+
column.type if column
|
91
|
+
end
|
92
|
+
|
82
93
|
def query_column
|
83
94
|
"#{model.table_name}.#{name}" if column
|
84
95
|
end
|
data/lib/puffer/field_set.rb
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
module Puffer
|
2
2
|
class FieldSet < Array
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
attr_accessor :name
|
5
|
+
|
6
|
+
def initialize name = nil
|
7
|
+
@name = name
|
8
|
+
super()
|
9
|
+
end
|
10
|
+
|
11
|
+
def field name, resource, options, &block
|
12
|
+
push Puffer::Field.new(name, resource, self, options, &block)
|
6
13
|
last
|
7
14
|
end
|
8
15
|
|
@@ -22,5 +29,13 @@ module Puffer
|
|
22
29
|
@includes ||= map {|f| f.path unless f.native?}.compact.to_includes
|
23
30
|
end
|
24
31
|
|
32
|
+
def [] key
|
33
|
+
if key.is_a?(String) || key.is_a?(Symbol)
|
34
|
+
detect {|f| f.to_s == key.to_s}
|
35
|
+
else
|
36
|
+
super
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
25
40
|
end
|
26
41
|
end
|
data/lib/puffer.rb
CHANGED
@@ -1,11 +1,3 @@
|
|
1
|
-
module Puffer
|
2
|
-
|
3
|
-
def self.customs
|
4
|
-
Puffer::Customs
|
5
|
-
end
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
1
|
require 'kaminari'
|
10
2
|
|
11
3
|
require 'puffer/engine'
|
@@ -14,3 +6,28 @@ require 'puffer/extensions/controller'
|
|
14
6
|
require 'puffer/extensions/core'
|
15
7
|
require 'puffer/extensions/mapper'
|
16
8
|
require 'puffer/extensions/form'
|
9
|
+
|
10
|
+
module Puffer
|
11
|
+
|
12
|
+
module Component
|
13
|
+
autoload :Base, 'puffer/component'
|
14
|
+
|
15
|
+
mattr_accessor :_mappings
|
16
|
+
self._mappings = {}
|
17
|
+
|
18
|
+
def self.map_component *args
|
19
|
+
to = args.extract_options![:to]
|
20
|
+
args.each { |type| _mappings[type.to_sym] = to }
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.component_for type
|
24
|
+
(_mappings[type.to_sym] || "#{type}_component").to_s.camelize.constantize
|
25
|
+
end
|
26
|
+
|
27
|
+
map_component :belongs_to, :has_one, :to => :ReferencesOneComponent
|
28
|
+
map_component :has_many, :has_and_belongs_to_many, :to => :ReferencesManyComponent
|
29
|
+
map_component :date, :time, :datetime, :timestamp, :to => :DateTimeComponent
|
30
|
+
map_component :integer, :decimal, :to => :StringComponent
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/puffer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{puffer}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.24"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{2011-
|
11
|
+
s.authors = [%q{pyromaniac}]
|
12
|
+
s.date = %q{2011-09-09}
|
13
13
|
s.description = %q{In Soviet Russia puffer admins you}
|
14
14
|
s.email = %q{kinwizard@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -26,15 +26,44 @@ Gem::Specification.new do |s|
|
|
26
26
|
"Rakefile",
|
27
27
|
"VERSION",
|
28
28
|
"app/assets/javascripts/puffer/application.js",
|
29
|
+
"app/assets/javascripts/puffer/paginator.js",
|
29
30
|
"app/assets/javascripts/puffer/puffer.js",
|
30
31
|
"app/assets/javascripts/puffer/rails.js",
|
31
|
-
"app/assets/javascripts/puffer/right-autocompleter.js",
|
32
|
-
"app/assets/javascripts/puffer/right-calendar.js",
|
33
|
-
"app/assets/javascripts/puffer/right.js",
|
32
|
+
"app/assets/javascripts/puffer/right-autocompleter-src.js",
|
33
|
+
"app/assets/javascripts/puffer/right-calendar-src.js",
|
34
|
+
"app/assets/javascripts/puffer/right-dialog-src.js",
|
35
|
+
"app/assets/javascripts/puffer/right-slider-src.js",
|
36
|
+
"app/assets/javascripts/puffer/right-src.js",
|
34
37
|
"app/assets/stylesheets/puffer/application.css",
|
38
|
+
"app/assets/stylesheets/puffer/paginator.css",
|
35
39
|
"app/assets/stylesheets/puffer/puffer.css",
|
36
40
|
"app/assets/stylesheets/puffer/puffer_tree.css",
|
37
41
|
"app/assets/stylesheets/puffer/reset.css",
|
42
|
+
"app/assets/stylesheets/puffer/right.css",
|
43
|
+
"app/components/base/form.html.erb",
|
44
|
+
"app/components/base_component.rb",
|
45
|
+
"app/components/boolean/form.html.erb",
|
46
|
+
"app/components/boolean/index.html.erb",
|
47
|
+
"app/components/boolean_component.rb",
|
48
|
+
"app/components/date_time/form.html.erb",
|
49
|
+
"app/components/date_time_component.rb",
|
50
|
+
"app/components/file/form.html.erb",
|
51
|
+
"app/components/file_component.rb",
|
52
|
+
"app/components/hidden/form.html.erb",
|
53
|
+
"app/components/hidden_component.rb",
|
54
|
+
"app/components/password/form.html.erb",
|
55
|
+
"app/components/password_component.rb",
|
56
|
+
"app/components/references_many/form.html.erb",
|
57
|
+
"app/components/references_many_component.rb",
|
58
|
+
"app/components/references_one/choose.html.erb",
|
59
|
+
"app/components/references_one/form.html.erb",
|
60
|
+
"app/components/references_one_component.rb",
|
61
|
+
"app/components/select/form.html.erb",
|
62
|
+
"app/components/select_component.rb",
|
63
|
+
"app/components/string/form.html.erb",
|
64
|
+
"app/components/string_component.rb",
|
65
|
+
"app/components/text/form.html.erb",
|
66
|
+
"app/components/text_component.rb",
|
38
67
|
"app/controllers/admin/dashboard_controller.rb",
|
39
68
|
"app/controllers/admin/sessions_controller.rb",
|
40
69
|
"app/controllers/puffer/base.rb",
|
@@ -48,10 +77,7 @@ Gem::Specification.new do |s|
|
|
48
77
|
"app/views/layouts/puffer_dashboard.html.erb",
|
49
78
|
"app/views/layouts/puffer_sessions.html.erb",
|
50
79
|
"app/views/puffer/base/_form.html.erb",
|
51
|
-
"app/views/puffer/base/
|
52
|
-
"app/views/puffer/base/associated/many.rjs",
|
53
|
-
"app/views/puffer/base/associated/one.js.erb",
|
54
|
-
"app/views/puffer/base/association/_many.html.erb",
|
80
|
+
"app/views/puffer/base/_table.html.erb",
|
55
81
|
"app/views/puffer/base/edit.html.erb",
|
56
82
|
"app/views/puffer/base/index.html.erb",
|
57
83
|
"app/views/puffer/base/new.html.erb",
|
@@ -63,17 +89,20 @@ Gem::Specification.new do |s|
|
|
63
89
|
"app/views/puffer/tree_base/tree.html.erb",
|
64
90
|
"config/locales/puffer.yml",
|
65
91
|
"config/routes.rb",
|
92
|
+
"lib/generators/puffer/component/USAGE",
|
93
|
+
"lib/generators/puffer/component/component_generator.rb",
|
94
|
+
"lib/generators/puffer/component/templates/component.rb",
|
95
|
+
"lib/generators/puffer/component/templates/component_spec.rb",
|
66
96
|
"lib/generators/puffer/controller/USAGE",
|
67
97
|
"lib/generators/puffer/controller/controller_generator.rb",
|
68
98
|
"lib/generators/puffer/controller/templates/controller.rb",
|
69
99
|
"lib/puffer.rb",
|
100
|
+
"lib/puffer/component.rb",
|
70
101
|
"lib/puffer/controller/actions.rb",
|
71
102
|
"lib/puffer/controller/config.rb",
|
72
103
|
"lib/puffer/controller/dsl.rb",
|
73
|
-
"lib/puffer/controller/generated.rb",
|
74
104
|
"lib/puffer/controller/helpers.rb",
|
75
105
|
"lib/puffer/controller/mutate.rb",
|
76
|
-
"lib/puffer/customs.rb",
|
77
106
|
"lib/puffer/engine.rb",
|
78
107
|
"lib/puffer/extensions/activerecord.rb",
|
79
108
|
"lib/puffer/extensions/controller.rb",
|
@@ -82,20 +111,21 @@ Gem::Specification.new do |s|
|
|
82
111
|
"lib/puffer/extensions/mapper.rb",
|
83
112
|
"lib/puffer/field.rb",
|
84
113
|
"lib/puffer/field_set.rb",
|
85
|
-
"lib/puffer/inputs/association.rb",
|
86
|
-
"lib/puffer/inputs/base.rb",
|
87
|
-
"lib/puffer/inputs/boolean.rb",
|
88
|
-
"lib/puffer/inputs/collection_association.rb",
|
89
|
-
"lib/puffer/inputs/date_time.rb",
|
90
|
-
"lib/puffer/inputs/file.rb",
|
91
|
-
"lib/puffer/inputs/hidden.rb",
|
92
|
-
"lib/puffer/inputs/password.rb",
|
93
|
-
"lib/puffer/inputs/select.rb",
|
94
|
-
"lib/puffer/inputs/text.rb",
|
95
114
|
"lib/puffer/resource.rb",
|
96
115
|
"lib/puffer/resource/routing.rb",
|
97
116
|
"lib/puffer/resource/scoping.rb",
|
98
117
|
"puffer.gemspec",
|
118
|
+
"spec/app/components/base_component_spec.rb",
|
119
|
+
"spec/app/components/boolean_component_spec.rb",
|
120
|
+
"spec/app/components/date_time_component_spec.rb",
|
121
|
+
"spec/app/components/file_component_spec.rb",
|
122
|
+
"spec/app/components/hidden_component_spec.rb",
|
123
|
+
"spec/app/components/password_component_spec.rb",
|
124
|
+
"spec/app/components/references_many_component_spec.rb",
|
125
|
+
"spec/app/components/references_one_component_spec.rb",
|
126
|
+
"spec/app/components/select_component_spec.rb",
|
127
|
+
"spec/app/components/string_component_spec.rb",
|
128
|
+
"spec/app/components/text_component_spec.rb",
|
99
129
|
"spec/dummy/.rvmrc",
|
100
130
|
"spec/dummy/Rakefile",
|
101
131
|
"spec/dummy/app/assets/images/rails.png",
|
@@ -105,10 +135,10 @@ Gem::Specification.new do |s|
|
|
105
135
|
"spec/dummy/app/controllers/admin/news_controller.rb",
|
106
136
|
"spec/dummy/app/controllers/admin/posts_controller.rb",
|
107
137
|
"spec/dummy/app/controllers/admin/profiles_controller.rb",
|
138
|
+
"spec/dummy/app/controllers/admin/sessions_controller.rb",
|
108
139
|
"spec/dummy/app/controllers/admin/tags_controller.rb",
|
109
140
|
"spec/dummy/app/controllers/admin/users_controller.rb",
|
110
141
|
"spec/dummy/app/controllers/application_controller.rb",
|
111
|
-
"spec/dummy/app/controllers/puffer/sessions_controller.rb",
|
112
142
|
"spec/dummy/app/helpers/application_helper.rb",
|
113
143
|
"spec/dummy/app/models/category.rb",
|
114
144
|
"spec/dummy/app/models/friendship.rb",
|
@@ -160,6 +190,7 @@ Gem::Specification.new do |s|
|
|
160
190
|
"spec/fabricators/tags_fabricator.rb",
|
161
191
|
"spec/fabricators/users_fabricator.rb",
|
162
192
|
"spec/integration/navigation_spec.rb",
|
193
|
+
"spec/lib/component_spec.rb",
|
163
194
|
"spec/lib/extensions/core_spec.rb",
|
164
195
|
"spec/lib/fields_spec.rb",
|
165
196
|
"spec/lib/params_spec.rb",
|
@@ -169,15 +200,15 @@ Gem::Specification.new do |s|
|
|
169
200
|
"spec/spec_helper.rb"
|
170
201
|
]
|
171
202
|
s.homepage = %q{http://github.com/puffer/puffer}
|
172
|
-
s.require_paths = [
|
173
|
-
s.rubygems_version = %q{1.6
|
203
|
+
s.require_paths = [%q{lib}]
|
204
|
+
s.rubygems_version = %q{1.8.6}
|
174
205
|
s.summary = %q{Admin interface builder}
|
175
206
|
|
176
207
|
if s.respond_to? :specification_version then
|
177
208
|
s.specification_version = 3
|
178
209
|
|
179
210
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
180
|
-
s.add_runtime_dependency(%q<rails>, ["
|
211
|
+
s.add_runtime_dependency(%q<rails>, ["~> 3.1.0"])
|
181
212
|
s.add_runtime_dependency(%q<kaminari>, [">= 0"])
|
182
213
|
s.add_runtime_dependency(%q<apotomo>, [">= 0"])
|
183
214
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
@@ -192,7 +223,7 @@ Gem::Specification.new do |s|
|
|
192
223
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
193
224
|
s.add_development_dependency(%q<nested_set>, [">= 0"])
|
194
225
|
else
|
195
|
-
s.add_dependency(%q<rails>, ["
|
226
|
+
s.add_dependency(%q<rails>, ["~> 3.1.0"])
|
196
227
|
s.add_dependency(%q<kaminari>, [">= 0"])
|
197
228
|
s.add_dependency(%q<apotomo>, [">= 0"])
|
198
229
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
@@ -208,7 +239,7 @@ Gem::Specification.new do |s|
|
|
208
239
|
s.add_dependency(%q<nested_set>, [">= 0"])
|
209
240
|
end
|
210
241
|
else
|
211
|
-
s.add_dependency(%q<rails>, ["
|
242
|
+
s.add_dependency(%q<rails>, ["~> 3.1.0"])
|
212
243
|
s.add_dependency(%q<kaminari>, [">= 0"])
|
213
244
|
s.add_dependency(%q<apotomo>, [">= 0"])
|
214
245
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BaseComponent do
|
4
|
+
|
5
|
+
include RSpec::Rails::RequestExampleGroup
|
6
|
+
|
7
|
+
context 'index' do
|
8
|
+
|
9
|
+
it 'should render field content' do
|
10
|
+
@category = Fabricate :category
|
11
|
+
get admin_categories_path
|
12
|
+
|
13
|
+
field = controller.index_fields[:title]
|
14
|
+
Puffer::Component::Base.render_component(controller, field, :index, :record => @category).should == @category.title
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BooleanComponent do
|
4
|
+
|
5
|
+
include RSpec::Rails::RequestExampleGroup
|
6
|
+
|
7
|
+
context 'index' do
|
8
|
+
it 'should render checkbox' do
|
9
|
+
@category = Fabricate :category
|
10
|
+
get admin_categories_path
|
11
|
+
|
12
|
+
field = controller.index_fields[:hidden]
|
13
|
+
component = Puffer::Component::Base.render_component(controller, field, :index, :record => @category)
|
14
|
+
|
15
|
+
p component
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'form' do
|
20
|
+
it 'should render form field' do
|
21
|
+
@category = Fabricate :category
|
22
|
+
get admin_categories_path
|
23
|
+
|
24
|
+
field = controller.form_fields[:hidden]
|
25
|
+
component = ''
|
26
|
+
controller.view_context.form_for @category, :url => admin_category_path(@category) do |form|
|
27
|
+
component = Puffer::Component::Base.render_component(controller, field, :form, :form => form)
|
28
|
+
end
|
29
|
+
|
30
|
+
component.should have_selector("input[type=hidden][value='0']")
|
31
|
+
component.should have_selector("input[type=checkbox][value='1']")
|
32
|
+
component.should have_selector('label[for=category_hidden]')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DateTimeComponent do
|
4
|
+
|
5
|
+
include RSpec::Rails::RequestExampleGroup
|
6
|
+
|
7
|
+
context 'form' do
|
8
|
+
|
9
|
+
it 'should render form field' do
|
10
|
+
@user = Fabricate :user_with_profile
|
11
|
+
get admin_user_profile_path(@user)
|
12
|
+
|
13
|
+
field = controller.form_fields[:birth_date]
|
14
|
+
field.options[:type] = :date_time
|
15
|
+
component = ''
|
16
|
+
controller.view_context.form_for @user.profile, :url => admin_user_profile_path(@user) do |form|
|
17
|
+
component = Puffer::Component::Base.render_component(controller, field, :form, :form => form)
|
18
|
+
end
|
19
|
+
|
20
|
+
component.should have_selector('label[for=profile_birth_date]')
|
21
|
+
component.should have_selector('input[data-calendar]')
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FileComponent do
|
4
|
+
|
5
|
+
include RSpec::Rails::RequestExampleGroup
|
6
|
+
|
7
|
+
context 'form' do
|
8
|
+
|
9
|
+
it 'should render form field' do
|
10
|
+
@post = Fabricate :post
|
11
|
+
get admin_posts_path
|
12
|
+
|
13
|
+
field = controller.form_fields[:filename]
|
14
|
+
component = ''
|
15
|
+
controller.view_context.form_for @post, :url => admin_post_path(@post) do |form|
|
16
|
+
component = Puffer::Component::Base.render_component(controller, field, :form, :form => form)
|
17
|
+
end
|
18
|
+
|
19
|
+
component.should have_selector('label[for=post_filename]')
|
20
|
+
component.should have_selector('input[type=file]')
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe HiddenComponent do
|
4
|
+
|
5
|
+
include RSpec::Rails::RequestExampleGroup
|
6
|
+
|
7
|
+
context 'form' do
|
8
|
+
|
9
|
+
it 'should render form field' do
|
10
|
+
@category = Fabricate :category
|
11
|
+
get admin_categories_path
|
12
|
+
|
13
|
+
field = controller.form_fields[:parent_id]
|
14
|
+
component = ''
|
15
|
+
controller.view_context.form_for @category, :url => admin_category_path(@category) do |form|
|
16
|
+
component = Puffer::Component::Base.render_component(controller, field, :form, :form => form)
|
17
|
+
end
|
18
|
+
|
19
|
+
component.should have_selector("input[type=hidden]")
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|