puffer 0.0.18 → 0.0.19
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.
- data/Gemfile +1 -1
- data/Gemfile.lock +54 -51
- data/VERSION +1 -1
- data/app/helpers/puffer_helper.rb +2 -2
- data/app/views/puffer_dashboard/index.html.erb +1 -1
- data/lib/generators/puffer/controller/controller_generator.rb +1 -1
- data/lib/puffer/controller/mutate.rb +1 -1
- data/lib/puffer/customs.rb +63 -0
- data/lib/puffer/extensions/form.rb +1 -2
- data/lib/puffer/fields/field.rb +5 -1
- data/lib/puffer/fields.rb +0 -21
- data/lib/puffer/inputs/base.rb +6 -2
- data/lib/puffer/resource/routing.rb +1 -1
- data/lib/puffer.rb +4 -0
- data/puffer.gemspec +14 -6
- data/spec/dummy/app/controllers/admin/news_controller.rb +17 -0
- data/spec/dummy/app/models/news.rb +2 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/db/migrate/20110301072545_create_news.rb +14 -0
- data/spec/dummy/db/schema.rb +8 -1
- data/spec/fabricators/news_fabricator.rb +5 -0
- data/spec/lib/resource/routing_spec.rb +15 -0
- metadata +16 -8
- data/lib/puffer/inputs.rb +0 -21
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -3,37 +3,37 @@ GEM
|
|
|
3
3
|
specs:
|
|
4
4
|
ZenTest (4.4.2)
|
|
5
5
|
abstract (1.0.0)
|
|
6
|
-
actionmailer (3.0.
|
|
7
|
-
actionpack (= 3.0.
|
|
8
|
-
mail (~> 2.2.
|
|
9
|
-
actionpack (3.0.
|
|
10
|
-
activemodel (= 3.0.
|
|
11
|
-
activesupport (= 3.0.
|
|
6
|
+
actionmailer (3.0.4)
|
|
7
|
+
actionpack (= 3.0.4)
|
|
8
|
+
mail (~> 2.2.15)
|
|
9
|
+
actionpack (3.0.4)
|
|
10
|
+
activemodel (= 3.0.4)
|
|
11
|
+
activesupport (= 3.0.4)
|
|
12
12
|
builder (~> 2.1.2)
|
|
13
13
|
erubis (~> 2.6.6)
|
|
14
14
|
i18n (~> 0.4)
|
|
15
15
|
rack (~> 1.2.1)
|
|
16
16
|
rack-mount (~> 0.6.13)
|
|
17
|
-
rack-test (~> 0.5.
|
|
17
|
+
rack-test (~> 0.5.7)
|
|
18
18
|
tzinfo (~> 0.3.23)
|
|
19
|
-
activemodel (3.0.
|
|
20
|
-
activesupport (= 3.0.
|
|
19
|
+
activemodel (3.0.4)
|
|
20
|
+
activesupport (= 3.0.4)
|
|
21
21
|
builder (~> 2.1.2)
|
|
22
22
|
i18n (~> 0.4)
|
|
23
|
-
activerecord (3.0.
|
|
24
|
-
activemodel (= 3.0.
|
|
25
|
-
activesupport (= 3.0.
|
|
23
|
+
activerecord (3.0.4)
|
|
24
|
+
activemodel (= 3.0.4)
|
|
25
|
+
activesupport (= 3.0.4)
|
|
26
26
|
arel (~> 2.0.2)
|
|
27
27
|
tzinfo (~> 0.3.23)
|
|
28
|
-
activeresource (3.0.
|
|
29
|
-
activemodel (= 3.0.
|
|
30
|
-
activesupport (= 3.0.
|
|
31
|
-
activesupport (3.0.
|
|
32
|
-
arel (2.0.
|
|
28
|
+
activeresource (3.0.4)
|
|
29
|
+
activemodel (= 3.0.4)
|
|
30
|
+
activesupport (= 3.0.4)
|
|
31
|
+
activesupport (3.0.4)
|
|
32
|
+
arel (2.0.8)
|
|
33
33
|
autotest (4.4.6)
|
|
34
34
|
ZenTest (>= 4.4.1)
|
|
35
35
|
builder (2.1.2)
|
|
36
|
-
capybara (0.4.
|
|
36
|
+
capybara (0.4.1.2)
|
|
37
37
|
celerity (>= 0.7.9)
|
|
38
38
|
culerity (>= 0.2.4)
|
|
39
39
|
mime-types (>= 1.16)
|
|
@@ -41,22 +41,23 @@ GEM
|
|
|
41
41
|
rack (>= 1.0.0)
|
|
42
42
|
rack-test (>= 0.5.4)
|
|
43
43
|
selenium-webdriver (>= 0.0.27)
|
|
44
|
-
xpath (~> 0.1.
|
|
45
|
-
celerity (0.8.
|
|
44
|
+
xpath (~> 0.1.3)
|
|
45
|
+
celerity (0.8.8)
|
|
46
46
|
cells (3.4.4)
|
|
47
47
|
cgi_multipart_eof_fix (2.5.0)
|
|
48
|
-
childprocess (0.1.
|
|
48
|
+
childprocess (0.1.7)
|
|
49
49
|
ffi (~> 0.6.3)
|
|
50
|
-
culerity (0.2.
|
|
50
|
+
culerity (0.2.15)
|
|
51
51
|
daemons (1.1.0)
|
|
52
52
|
diff-lcs (1.1.2)
|
|
53
53
|
erubis (2.6.6)
|
|
54
54
|
abstract (>= 1.0.0)
|
|
55
|
-
fabrication (0.9.
|
|
55
|
+
fabrication (0.9.5)
|
|
56
56
|
fastthread (1.0.7)
|
|
57
57
|
ffi (0.6.3)
|
|
58
58
|
rake (>= 0.8.7)
|
|
59
|
-
forgery (0.3.
|
|
59
|
+
forgery (0.3.7)
|
|
60
|
+
nokogiri (~> 1.4)
|
|
60
61
|
gem_plugin (0.2.3)
|
|
61
62
|
git (1.2.5)
|
|
62
63
|
i18n (0.5.0)
|
|
@@ -64,8 +65,8 @@ GEM
|
|
|
64
65
|
bundler (~> 1.0.0)
|
|
65
66
|
git (>= 1.2.5)
|
|
66
67
|
rake
|
|
67
|
-
json_pure (1.
|
|
68
|
-
mail (2.2.
|
|
68
|
+
json_pure (1.5.1)
|
|
69
|
+
mail (2.2.15)
|
|
69
70
|
activesupport (>= 2.3.6)
|
|
70
71
|
i18n (>= 0.4.0)
|
|
71
72
|
mime-types (~> 1.16)
|
|
@@ -81,48 +82,50 @@ GEM
|
|
|
81
82
|
rack (1.2.1)
|
|
82
83
|
rack-mount (0.6.13)
|
|
83
84
|
rack (>= 1.0.0)
|
|
84
|
-
rack-test (0.5.
|
|
85
|
+
rack-test (0.5.7)
|
|
85
86
|
rack (>= 1.0)
|
|
86
|
-
rails (3.0.
|
|
87
|
-
actionmailer (= 3.0.
|
|
88
|
-
actionpack (= 3.0.
|
|
89
|
-
activerecord (= 3.0.
|
|
90
|
-
activeresource (= 3.0.
|
|
91
|
-
activesupport (= 3.0.
|
|
87
|
+
rails (3.0.4)
|
|
88
|
+
actionmailer (= 3.0.4)
|
|
89
|
+
actionpack (= 3.0.4)
|
|
90
|
+
activerecord (= 3.0.4)
|
|
91
|
+
activeresource (= 3.0.4)
|
|
92
|
+
activesupport (= 3.0.4)
|
|
92
93
|
bundler (~> 1.0)
|
|
93
|
-
railties (= 3.0.
|
|
94
|
-
railties (3.0.
|
|
95
|
-
actionpack (= 3.0.
|
|
96
|
-
activesupport (= 3.0.
|
|
94
|
+
railties (= 3.0.4)
|
|
95
|
+
railties (3.0.4)
|
|
96
|
+
actionpack (= 3.0.4)
|
|
97
|
+
activesupport (= 3.0.4)
|
|
97
98
|
rake (>= 0.8.7)
|
|
98
99
|
thor (~> 0.14.4)
|
|
99
100
|
rake (0.8.7)
|
|
100
|
-
rspec (2.
|
|
101
|
-
rspec-core (~> 2.
|
|
102
|
-
rspec-expectations (~> 2.
|
|
103
|
-
rspec-mocks (~> 2.
|
|
104
|
-
rspec-core (2.
|
|
105
|
-
rspec-expectations (2.
|
|
101
|
+
rspec (2.5.0)
|
|
102
|
+
rspec-core (~> 2.5.0)
|
|
103
|
+
rspec-expectations (~> 2.5.0)
|
|
104
|
+
rspec-mocks (~> 2.5.0)
|
|
105
|
+
rspec-core (2.5.1)
|
|
106
|
+
rspec-expectations (2.5.0)
|
|
106
107
|
diff-lcs (~> 1.1.2)
|
|
107
|
-
rspec-mocks (2.
|
|
108
|
-
rspec-rails (2.
|
|
108
|
+
rspec-mocks (2.5.0)
|
|
109
|
+
rspec-rails (2.5.0)
|
|
109
110
|
actionpack (~> 3.0)
|
|
110
111
|
activesupport (~> 3.0)
|
|
111
112
|
railties (~> 3.0)
|
|
112
|
-
rspec (~> 2.
|
|
113
|
+
rspec (~> 2.5.0)
|
|
113
114
|
rubyzip (0.9.4)
|
|
114
|
-
selenium-webdriver (0.1.
|
|
115
|
+
selenium-webdriver (0.1.3)
|
|
115
116
|
childprocess (~> 0.1.5)
|
|
116
117
|
ffi (~> 0.6.3)
|
|
117
118
|
json_pure
|
|
118
119
|
rubyzip
|
|
119
|
-
sqlite3
|
|
120
|
+
sqlite3 (1.3.3)
|
|
121
|
+
sqlite3-ruby (1.3.3)
|
|
122
|
+
sqlite3 (>= 1.3.3)
|
|
120
123
|
thor (0.14.6)
|
|
121
124
|
treetop (1.4.9)
|
|
122
125
|
polyglot (>= 0.3.1)
|
|
123
|
-
tzinfo (0.3.
|
|
126
|
+
tzinfo (0.3.24)
|
|
124
127
|
will_paginate (3.0.pre2)
|
|
125
|
-
xpath (0.1.
|
|
128
|
+
xpath (0.1.3)
|
|
126
129
|
nokogiri (~> 1.3)
|
|
127
130
|
|
|
128
131
|
PLATFORMS
|
|
@@ -136,7 +139,7 @@ DEPENDENCIES
|
|
|
136
139
|
forgery
|
|
137
140
|
jeweler
|
|
138
141
|
mongrel
|
|
139
|
-
rails (~> 3.0.
|
|
142
|
+
rails (~> 3.0.4)
|
|
140
143
|
rspec-rails
|
|
141
144
|
sqlite3-ruby
|
|
142
145
|
will_paginate (~> 3.0.pre2)
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.19
|
|
@@ -13,7 +13,7 @@ module PufferHelper
|
|
|
13
13
|
def puffer_navigation
|
|
14
14
|
Rails.application.routes.puffer[namespace].values.map(&:first).each do |controller|
|
|
15
15
|
title = controller.configuration.group.to_s.humanize
|
|
16
|
-
path =
|
|
16
|
+
path = polymorphic_url [namespace, controller.model]
|
|
17
17
|
current = configuration.group && resource.root.controller.configuration.group == controller.configuration.group
|
|
18
18
|
yield title, path, current
|
|
19
19
|
end
|
|
@@ -22,7 +22,7 @@ module PufferHelper
|
|
|
22
22
|
def sidebar_puffer_navigation
|
|
23
23
|
(Rails.application.routes.puffer[namespace][configuration.group] || []).each do |controller|
|
|
24
24
|
title = controller.model.model_name.human
|
|
25
|
-
path =
|
|
25
|
+
path = polymorphic_url [namespace, controller.model]
|
|
26
26
|
current = controller.controller_name == resource.root.controller_name
|
|
27
27
|
yield title, path, current
|
|
28
28
|
end
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<ul class="additional">
|
|
8
8
|
<% controllers.each do |controller| %>
|
|
9
9
|
<li>
|
|
10
|
-
<%= link_to controller.model.model_name.human,
|
|
10
|
+
<%= link_to controller.model.model_name.human, polymorphic_url([namespace, controller.model]) %>
|
|
11
11
|
</li>
|
|
12
12
|
<% end %>
|
|
13
13
|
</ul>
|
|
@@ -2,7 +2,7 @@ class Puffer::ControllerGenerator < Rails::Generators::NamedBase
|
|
|
2
2
|
source_root File.expand_path('../templates', __FILE__)
|
|
3
3
|
|
|
4
4
|
def generate_controller
|
|
5
|
-
@modules = name.
|
|
5
|
+
@modules = name.camelize.split('::')
|
|
6
6
|
@model_name = @modules.delete_at(-1)
|
|
7
7
|
|
|
8
8
|
template 'controller.rb', "app/controllers/#{controller_name.underscore}_controller.rb"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module Puffer
|
|
2
|
+
module Customs
|
|
3
|
+
|
|
4
|
+
# Custom field types
|
|
5
|
+
|
|
6
|
+
mattr_accessor :types
|
|
7
|
+
self.types = []
|
|
8
|
+
|
|
9
|
+
def self.map_type &block
|
|
10
|
+
types.unshift block if block_given?
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.type_for field
|
|
14
|
+
swallow_nil{ types.detect { |offer| offer.call(field) }.call(field) }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
map_type { |field| :select if field.options.key?(:select) }
|
|
18
|
+
map_type { |field| :password if field.name =~ /password/ }
|
|
19
|
+
map_type { |field| swallow_nil{ field.reflection.macro } }
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Custom inputs
|
|
23
|
+
|
|
24
|
+
mattr_accessor :inputs
|
|
25
|
+
self.inputs = {}
|
|
26
|
+
|
|
27
|
+
def self.map_input *args
|
|
28
|
+
to = args.extract_options![:to]
|
|
29
|
+
args.each { |type| inputs[type] = to }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.input_for field
|
|
33
|
+
inputs[field.type] || ("Puffer::Inputs::#{field.type.to_s.camelize}".constantize rescue Puffer::Inputs::Base)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
map_input :belongs_to, :has_one, :to => Puffer::Inputs::Association
|
|
37
|
+
map_input :has_many, :has_and_belongs_to_many, :to => Puffer::Inputs::CollectionAssociation
|
|
38
|
+
map_input :date, :time, :datetime, :timestamp, :to => Puffer::Inputs::DateTime
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# Customs renderers
|
|
42
|
+
|
|
43
|
+
mattr_accessor :renderers
|
|
44
|
+
self.renderers = {}
|
|
45
|
+
|
|
46
|
+
def self.map_renderer *args
|
|
47
|
+
to = args.extract_options![:to]
|
|
48
|
+
args.each { |type| renderers[type] = to }
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# Customs filters
|
|
53
|
+
|
|
54
|
+
mattr_accessor :filters
|
|
55
|
+
self.filters = {}
|
|
56
|
+
|
|
57
|
+
def self.map_filter *args
|
|
58
|
+
to = args.extract_options![:to]
|
|
59
|
+
args.each { |type| filters[type] = to }
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
data/lib/puffer/fields/field.rb
CHANGED
|
@@ -31,7 +31,7 @@ module Puffer
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def type
|
|
34
|
-
@type ||= options[:type] ? options[:type].to_sym : (Puffer::
|
|
34
|
+
@type ||= options[:type] ? options[:type].to_sym : (Puffer::Customs.type_for(self) || (column ? column.type : :string))
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def to_s
|
|
@@ -50,6 +50,10 @@ module Puffer
|
|
|
50
50
|
options[:html] || {}
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
+
def input builder
|
|
54
|
+
Puffer::Customs.input_for(self).render builder, self
|
|
55
|
+
end
|
|
56
|
+
|
|
53
57
|
def model
|
|
54
58
|
@model ||= begin
|
|
55
59
|
associations = field.split('.')
|
data/lib/puffer/fields.rb
CHANGED
|
@@ -1,27 +1,6 @@
|
|
|
1
1
|
module Puffer
|
|
2
2
|
class Fields < Array
|
|
3
3
|
|
|
4
|
-
class_attribute :offers
|
|
5
|
-
self.offers = []
|
|
6
|
-
|
|
7
|
-
def self.offer_type &block
|
|
8
|
-
offers.push block if block_given?
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def self.offered_type field
|
|
12
|
-
swallow_nil{ offers.detect { |offer| offer.call(field) }.call(field) }
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
offer_type do |field|
|
|
16
|
-
:select if field.options.key?(:select)
|
|
17
|
-
end
|
|
18
|
-
offer_type do |field|
|
|
19
|
-
:password if field.name =~ /password/
|
|
20
|
-
end
|
|
21
|
-
offer_type do |field|
|
|
22
|
-
swallow_nil{ field.reflection.macro }
|
|
23
|
-
end
|
|
24
|
-
|
|
25
4
|
def field *args
|
|
26
5
|
push Field.new(*args)
|
|
27
6
|
last
|
data/lib/puffer/inputs/base.rb
CHANGED
|
@@ -4,10 +4,14 @@ module Puffer
|
|
|
4
4
|
|
|
5
5
|
attr_accessor :builder, :template, :field
|
|
6
6
|
|
|
7
|
-
def
|
|
7
|
+
def self.render *args
|
|
8
|
+
new(*args).render
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def initialize builder, field
|
|
8
12
|
@builder = builder
|
|
9
13
|
@field = field
|
|
10
|
-
@template = template
|
|
14
|
+
@template = builder.instance_variable_get :@template
|
|
11
15
|
end
|
|
12
16
|
|
|
13
17
|
def render
|
data/lib/puffer.rb
CHANGED
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.19"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["pyromaniac"]
|
|
12
|
-
s.date = %q{2011-
|
|
12
|
+
s.date = %q{2011-03-01}
|
|
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 = [
|
|
@@ -68,6 +68,7 @@ Gem::Specification.new do |s|
|
|
|
68
68
|
"lib/puffer/controller/helpers.rb",
|
|
69
69
|
"lib/puffer/controller/mapping.rb",
|
|
70
70
|
"lib/puffer/controller/mutate.rb",
|
|
71
|
+
"lib/puffer/customs.rb",
|
|
71
72
|
"lib/puffer/engine.rb",
|
|
72
73
|
"lib/puffer/extensions/activerecord.rb",
|
|
73
74
|
"lib/puffer/extensions/controller.rb",
|
|
@@ -76,7 +77,6 @@ Gem::Specification.new do |s|
|
|
|
76
77
|
"lib/puffer/extensions/mapper.rb",
|
|
77
78
|
"lib/puffer/fields.rb",
|
|
78
79
|
"lib/puffer/fields/field.rb",
|
|
79
|
-
"lib/puffer/inputs.rb",
|
|
80
80
|
"lib/puffer/inputs/association.rb",
|
|
81
81
|
"lib/puffer/inputs/base.rb",
|
|
82
82
|
"lib/puffer/inputs/boolean.rb",
|
|
@@ -94,6 +94,7 @@ Gem::Specification.new do |s|
|
|
|
94
94
|
"puffer.gemspec",
|
|
95
95
|
"spec/dummy/Rakefile",
|
|
96
96
|
"spec/dummy/app/controllers/admin/categories_controller.rb",
|
|
97
|
+
"spec/dummy/app/controllers/admin/news_controller.rb",
|
|
97
98
|
"spec/dummy/app/controllers/admin/posts_controller.rb",
|
|
98
99
|
"spec/dummy/app/controllers/admin/profiles_controller.rb",
|
|
99
100
|
"spec/dummy/app/controllers/admin/tags_controller.rb",
|
|
@@ -104,6 +105,7 @@ Gem::Specification.new do |s|
|
|
|
104
105
|
"spec/dummy/app/helpers/application_helper.rb",
|
|
105
106
|
"spec/dummy/app/models/category.rb",
|
|
106
107
|
"spec/dummy/app/models/friendship.rb",
|
|
108
|
+
"spec/dummy/app/models/news.rb",
|
|
107
109
|
"spec/dummy/app/models/post.rb",
|
|
108
110
|
"spec/dummy/app/models/post_category.rb",
|
|
109
111
|
"spec/dummy/app/models/profile.rb",
|
|
@@ -135,6 +137,7 @@ Gem::Specification.new do |s|
|
|
|
135
137
|
"spec/dummy/db/migrate/20101011155830_create_tags.rb",
|
|
136
138
|
"spec/dummy/db/migrate/20101011160326_create_taggings.rb",
|
|
137
139
|
"spec/dummy/db/migrate/20110107082706_create_friendships.rb",
|
|
140
|
+
"spec/dummy/db/migrate/20110301072545_create_news.rb",
|
|
138
141
|
"spec/dummy/db/schema.rb",
|
|
139
142
|
"spec/dummy/public/404.html",
|
|
140
143
|
"spec/dummy/public/422.html",
|
|
@@ -156,6 +159,7 @@ Gem::Specification.new do |s|
|
|
|
156
159
|
"spec/dummy/public/stylesheets/.gitkeep",
|
|
157
160
|
"spec/dummy/script/rails",
|
|
158
161
|
"spec/fabricators/categories_fabricator.rb",
|
|
162
|
+
"spec/fabricators/news_fabricator.rb",
|
|
159
163
|
"spec/fabricators/posts_fabricator.rb",
|
|
160
164
|
"spec/fabricators/profiles_fabricator.rb",
|
|
161
165
|
"spec/fabricators/tags_fabricator.rb",
|
|
@@ -176,6 +180,7 @@ Gem::Specification.new do |s|
|
|
|
176
180
|
s.summary = %q{Admin interface builder}
|
|
177
181
|
s.test_files = [
|
|
178
182
|
"spec/dummy/app/controllers/admin/categories_controller.rb",
|
|
183
|
+
"spec/dummy/app/controllers/admin/news_controller.rb",
|
|
179
184
|
"spec/dummy/app/controllers/admin/posts_controller.rb",
|
|
180
185
|
"spec/dummy/app/controllers/admin/profiles_controller.rb",
|
|
181
186
|
"spec/dummy/app/controllers/admin/tags_controller.rb",
|
|
@@ -186,6 +191,7 @@ Gem::Specification.new do |s|
|
|
|
186
191
|
"spec/dummy/app/helpers/application_helper.rb",
|
|
187
192
|
"spec/dummy/app/models/category.rb",
|
|
188
193
|
"spec/dummy/app/models/friendship.rb",
|
|
194
|
+
"spec/dummy/app/models/news.rb",
|
|
189
195
|
"spec/dummy/app/models/post.rb",
|
|
190
196
|
"spec/dummy/app/models/post_category.rb",
|
|
191
197
|
"spec/dummy/app/models/profile.rb",
|
|
@@ -213,8 +219,10 @@ Gem::Specification.new do |s|
|
|
|
213
219
|
"spec/dummy/db/migrate/20101011155830_create_tags.rb",
|
|
214
220
|
"spec/dummy/db/migrate/20101011160326_create_taggings.rb",
|
|
215
221
|
"spec/dummy/db/migrate/20110107082706_create_friendships.rb",
|
|
222
|
+
"spec/dummy/db/migrate/20110301072545_create_news.rb",
|
|
216
223
|
"spec/dummy/db/schema.rb",
|
|
217
224
|
"spec/fabricators/categories_fabricator.rb",
|
|
225
|
+
"spec/fabricators/news_fabricator.rb",
|
|
218
226
|
"spec/fabricators/posts_fabricator.rb",
|
|
219
227
|
"spec/fabricators/profiles_fabricator.rb",
|
|
220
228
|
"spec/fabricators/tags_fabricator.rb",
|
|
@@ -234,7 +242,7 @@ Gem::Specification.new do |s|
|
|
|
234
242
|
s.specification_version = 3
|
|
235
243
|
|
|
236
244
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
237
|
-
s.add_runtime_dependency(%q<rails>, ["~> 3.0.
|
|
245
|
+
s.add_runtime_dependency(%q<rails>, ["~> 3.0.4"])
|
|
238
246
|
s.add_runtime_dependency(%q<will_paginate>, ["~> 3.0.pre2"])
|
|
239
247
|
s.add_runtime_dependency(%q<cells>, ["~> 3.4.4"])
|
|
240
248
|
s.add_development_dependency(%q<capybara>, [">= 0.4.0"])
|
|
@@ -246,7 +254,7 @@ Gem::Specification.new do |s|
|
|
|
246
254
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
|
247
255
|
s.add_development_dependency(%q<mongrel>, [">= 0"])
|
|
248
256
|
else
|
|
249
|
-
s.add_dependency(%q<rails>, ["~> 3.0.
|
|
257
|
+
s.add_dependency(%q<rails>, ["~> 3.0.4"])
|
|
250
258
|
s.add_dependency(%q<will_paginate>, ["~> 3.0.pre2"])
|
|
251
259
|
s.add_dependency(%q<cells>, ["~> 3.4.4"])
|
|
252
260
|
s.add_dependency(%q<capybara>, [">= 0.4.0"])
|
|
@@ -259,7 +267,7 @@ Gem::Specification.new do |s|
|
|
|
259
267
|
s.add_dependency(%q<mongrel>, [">= 0"])
|
|
260
268
|
end
|
|
261
269
|
else
|
|
262
|
-
s.add_dependency(%q<rails>, ["~> 3.0.
|
|
270
|
+
s.add_dependency(%q<rails>, ["~> 3.0.4"])
|
|
263
271
|
s.add_dependency(%q<will_paginate>, ["~> 3.0.pre2"])
|
|
264
272
|
s.add_dependency(%q<cells>, ["~> 3.4.4"])
|
|
265
273
|
s.add_dependency(%q<capybara>, [">= 0.4.0"])
|
data/spec/dummy/config/routes.rb
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
Dummy::Application.routes.draw do
|
|
2
2
|
|
|
3
|
+
match '/admin' => 'puffer/dashboard#index', :as => :admin
|
|
4
|
+
|
|
3
5
|
namespace :puffer do
|
|
4
6
|
root :to => 'dashboard#index'
|
|
5
7
|
resource :session
|
|
@@ -25,6 +27,7 @@ Dummy::Application.routes.draw do
|
|
|
25
27
|
resources :categories do
|
|
26
28
|
resources :posts
|
|
27
29
|
end
|
|
30
|
+
resources :news
|
|
28
31
|
end
|
|
29
32
|
|
|
30
33
|
end
|
data/spec/dummy/db/schema.rb
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#
|
|
11
11
|
# It's strongly recommended to check this file into your version control system.
|
|
12
12
|
|
|
13
|
-
ActiveRecord::Schema.define(:version =>
|
|
13
|
+
ActiveRecord::Schema.define(:version => 20110301072545) do
|
|
14
14
|
|
|
15
15
|
create_table "categories", :force => true do |t|
|
|
16
16
|
t.string "title"
|
|
@@ -26,6 +26,13 @@ ActiveRecord::Schema.define(:version => 20110107082706) do
|
|
|
26
26
|
t.datetime "updated_at"
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
+
create_table "news", :force => true do |t|
|
|
30
|
+
t.string "title"
|
|
31
|
+
t.text "body"
|
|
32
|
+
t.datetime "created_at"
|
|
33
|
+
t.datetime "updated_at"
|
|
34
|
+
end
|
|
35
|
+
|
|
29
36
|
create_table "post_categories", :force => true do |t|
|
|
30
37
|
t.integer "post_id"
|
|
31
38
|
t.integer "category_id"
|
|
@@ -19,6 +19,21 @@ describe Puffer::Resource do
|
|
|
19
19
|
resource.edit_path(@mock_category).should == edit_admin_category_path(@mock_category)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
it "regular path with plural model name" do
|
|
23
|
+
@news = Fabricate :news
|
|
24
|
+
@mock_news = mock_model News, :id => 42
|
|
25
|
+
|
|
26
|
+
get admin_news_path(@news)
|
|
27
|
+
resource = Puffer::Resource.new request.params.merge(:controller => 'admin/news', :action => 'show'), request
|
|
28
|
+
|
|
29
|
+
resource.collection_path.should == admin_news_index_path
|
|
30
|
+
resource.member_path.should == admin_news_path(@news)
|
|
31
|
+
resource.member_path(@mock_news).should == admin_news_path(@mock_news)
|
|
32
|
+
resource.new_path.should == new_admin_news_path
|
|
33
|
+
resource.edit_path.should == edit_admin_news_path(@news)
|
|
34
|
+
resource.edit_path(@mock_news).should == edit_admin_news_path(@mock_news)
|
|
35
|
+
end
|
|
36
|
+
|
|
22
37
|
it "plural path" do
|
|
23
38
|
@post = Fabricate :post_with_categories
|
|
24
39
|
@category = @post.categories.first
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: puffer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 57
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 0
|
|
9
|
-
-
|
|
10
|
-
version: 0.0.
|
|
9
|
+
- 19
|
|
10
|
+
version: 0.0.19
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- pyromaniac
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-
|
|
18
|
+
date: 2011-03-01 00:00:00 +03:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -25,12 +25,12 @@ dependencies:
|
|
|
25
25
|
requirements:
|
|
26
26
|
- - ~>
|
|
27
27
|
- !ruby/object:Gem::Version
|
|
28
|
-
hash:
|
|
28
|
+
hash: 15
|
|
29
29
|
segments:
|
|
30
30
|
- 3
|
|
31
31
|
- 0
|
|
32
|
-
-
|
|
33
|
-
version: 3.0.
|
|
32
|
+
- 4
|
|
33
|
+
version: 3.0.4
|
|
34
34
|
requirement: *id001
|
|
35
35
|
prerelease: false
|
|
36
36
|
name: rails
|
|
@@ -242,6 +242,7 @@ files:
|
|
|
242
242
|
- lib/puffer/controller/helpers.rb
|
|
243
243
|
- lib/puffer/controller/mapping.rb
|
|
244
244
|
- lib/puffer/controller/mutate.rb
|
|
245
|
+
- lib/puffer/customs.rb
|
|
245
246
|
- lib/puffer/engine.rb
|
|
246
247
|
- lib/puffer/extensions/activerecord.rb
|
|
247
248
|
- lib/puffer/extensions/controller.rb
|
|
@@ -250,7 +251,6 @@ files:
|
|
|
250
251
|
- lib/puffer/extensions/mapper.rb
|
|
251
252
|
- lib/puffer/fields.rb
|
|
252
253
|
- lib/puffer/fields/field.rb
|
|
253
|
-
- lib/puffer/inputs.rb
|
|
254
254
|
- lib/puffer/inputs/association.rb
|
|
255
255
|
- lib/puffer/inputs/base.rb
|
|
256
256
|
- lib/puffer/inputs/boolean.rb
|
|
@@ -268,6 +268,7 @@ files:
|
|
|
268
268
|
- puffer.gemspec
|
|
269
269
|
- spec/dummy/Rakefile
|
|
270
270
|
- spec/dummy/app/controllers/admin/categories_controller.rb
|
|
271
|
+
- spec/dummy/app/controllers/admin/news_controller.rb
|
|
271
272
|
- spec/dummy/app/controllers/admin/posts_controller.rb
|
|
272
273
|
- spec/dummy/app/controllers/admin/profiles_controller.rb
|
|
273
274
|
- spec/dummy/app/controllers/admin/tags_controller.rb
|
|
@@ -278,6 +279,7 @@ files:
|
|
|
278
279
|
- spec/dummy/app/helpers/application_helper.rb
|
|
279
280
|
- spec/dummy/app/models/category.rb
|
|
280
281
|
- spec/dummy/app/models/friendship.rb
|
|
282
|
+
- spec/dummy/app/models/news.rb
|
|
281
283
|
- spec/dummy/app/models/post.rb
|
|
282
284
|
- spec/dummy/app/models/post_category.rb
|
|
283
285
|
- spec/dummy/app/models/profile.rb
|
|
@@ -309,6 +311,7 @@ files:
|
|
|
309
311
|
- spec/dummy/db/migrate/20101011155830_create_tags.rb
|
|
310
312
|
- spec/dummy/db/migrate/20101011160326_create_taggings.rb
|
|
311
313
|
- spec/dummy/db/migrate/20110107082706_create_friendships.rb
|
|
314
|
+
- spec/dummy/db/migrate/20110301072545_create_news.rb
|
|
312
315
|
- spec/dummy/db/schema.rb
|
|
313
316
|
- spec/dummy/public/404.html
|
|
314
317
|
- spec/dummy/public/422.html
|
|
@@ -330,6 +333,7 @@ files:
|
|
|
330
333
|
- spec/dummy/public/stylesheets/.gitkeep
|
|
331
334
|
- spec/dummy/script/rails
|
|
332
335
|
- spec/fabricators/categories_fabricator.rb
|
|
336
|
+
- spec/fabricators/news_fabricator.rb
|
|
333
337
|
- spec/fabricators/posts_fabricator.rb
|
|
334
338
|
- spec/fabricators/profiles_fabricator.rb
|
|
335
339
|
- spec/fabricators/tags_fabricator.rb
|
|
@@ -379,6 +383,7 @@ specification_version: 3
|
|
|
379
383
|
summary: Admin interface builder
|
|
380
384
|
test_files:
|
|
381
385
|
- spec/dummy/app/controllers/admin/categories_controller.rb
|
|
386
|
+
- spec/dummy/app/controllers/admin/news_controller.rb
|
|
382
387
|
- spec/dummy/app/controllers/admin/posts_controller.rb
|
|
383
388
|
- spec/dummy/app/controllers/admin/profiles_controller.rb
|
|
384
389
|
- spec/dummy/app/controllers/admin/tags_controller.rb
|
|
@@ -389,6 +394,7 @@ test_files:
|
|
|
389
394
|
- spec/dummy/app/helpers/application_helper.rb
|
|
390
395
|
- spec/dummy/app/models/category.rb
|
|
391
396
|
- spec/dummy/app/models/friendship.rb
|
|
397
|
+
- spec/dummy/app/models/news.rb
|
|
392
398
|
- spec/dummy/app/models/post.rb
|
|
393
399
|
- spec/dummy/app/models/post_category.rb
|
|
394
400
|
- spec/dummy/app/models/profile.rb
|
|
@@ -416,8 +422,10 @@ test_files:
|
|
|
416
422
|
- spec/dummy/db/migrate/20101011155830_create_tags.rb
|
|
417
423
|
- spec/dummy/db/migrate/20101011160326_create_taggings.rb
|
|
418
424
|
- spec/dummy/db/migrate/20110107082706_create_friendships.rb
|
|
425
|
+
- spec/dummy/db/migrate/20110301072545_create_news.rb
|
|
419
426
|
- spec/dummy/db/schema.rb
|
|
420
427
|
- spec/fabricators/categories_fabricator.rb
|
|
428
|
+
- spec/fabricators/news_fabricator.rb
|
|
421
429
|
- spec/fabricators/posts_fabricator.rb
|
|
422
430
|
- spec/fabricators/profiles_fabricator.rb
|
|
423
431
|
- spec/fabricators/tags_fabricator.rb
|
data/lib/puffer/inputs.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module Puffer
|
|
2
|
-
module Inputs
|
|
3
|
-
|
|
4
|
-
mattr_accessor :mappings
|
|
5
|
-
self.mappings = {}
|
|
6
|
-
|
|
7
|
-
def self.map_type *args
|
|
8
|
-
to = args.extract_options![:to]
|
|
9
|
-
args.each { |type| mappings[type] = to }
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
map_type :belongs_to, :has_one, :to => Puffer::Inputs::Association
|
|
13
|
-
map_type :has_many, :has_and_belongs_to_many, :to => Puffer::Inputs::CollectionAssociation
|
|
14
|
-
map_type :date, :time, :datetime, :timestamp, :to => Puffer::Inputs::DateTime
|
|
15
|
-
|
|
16
|
-
def self.map_field field
|
|
17
|
-
mappings[field.type] || ("Puffer::Inputs::#{field.type.to_s.camelize}".constantize rescue Puffer::Inputs::Base)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
end
|