merb-admin 0.6.6 → 0.6.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +2 -2
- data/app/controllers/main.rb +7 -10
- data/app/helpers/main_helper.rb +4 -0
- data/app/views/layout/form.html.erb +1 -1
- data/app/views/layout/list.html.erb +1 -1
- data/app/views/main/delete.html.erb +2 -2
- data/app/views/main/edit.html.erb +2 -2
- data/app/views/main/index.html.erb +3 -3
- data/app/views/main/list.html.erb +2 -2
- data/app/views/main/new.html.erb +1 -1
- data/lib/abstract_model.rb +9 -9
- data/lib/activerecord_support.rb +1 -4
- data/lib/datamapper_support.rb +1 -5
- data/lib/generic_support.rb +2 -6
- data/lib/merb-admin.rb +1 -1
- data/lib/sequel_support.rb +1 -6
- data/spec/requests/main_spec.rb +7 -10
- data/spec/spec_helper.rb +0 -1
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -11,7 +11,7 @@ http://github.com/sferik/merb-admin/raw/master/screenshots/edit.png
|
|
11
11
|
== Installation
|
12
12
|
$ gem install merb-admin -s http://gemcutter.org
|
13
13
|
In your app, add the following dependency to <tt>config/dependencies.rb</tt>:
|
14
|
-
dependency "merb-admin", "0.6.
|
14
|
+
dependency "merb-admin", "0.6.7"
|
15
15
|
Add the following route to <tt>config/router.rb</tt>:
|
16
16
|
add_slice(:merb_admin, :path_prefix => "admin")
|
17
17
|
Then, run the following rake task:
|
@@ -21,7 +21,7 @@ If you're feeling crafty, you can set a couple configuration options in <tt>conf
|
|
21
21
|
Merb::BootLoader.before_app_loads do
|
22
22
|
Merb::Slices::config[:merb_admin][:app_name] = "My App"
|
23
23
|
Merb::Slices::config[:merb_admin][:per_page] = 100
|
24
|
-
Merb::Slices::config[:merb_admin][:excluded_models] = [
|
24
|
+
Merb::Slices::config[:merb_admin][:excluded_models] = ["Top", "Secret"]
|
25
25
|
end
|
26
26
|
== Usage
|
27
27
|
Start the server:
|
data/app/controllers/main.rb
CHANGED
@@ -67,7 +67,7 @@ class MerbAdmin::Main < MerbAdmin::Application
|
|
67
67
|
|
68
68
|
def destroy
|
69
69
|
if @object.destroy
|
70
|
-
redirect(url(:merb_admin_list, :model_name => @abstract_model.
|
70
|
+
redirect(url(:merb_admin_list, :model_name => @abstract_model.to_param), :message => {:notice => "#{@abstract_model.pretty_name} was successfully destroyed"})
|
71
71
|
else
|
72
72
|
raise BadRequest
|
73
73
|
end
|
@@ -80,7 +80,7 @@ class MerbAdmin::Main < MerbAdmin::Application
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def get_model
|
83
|
-
model_name = params[:model_name]
|
83
|
+
model_name = to_model_name(params[:model_name])
|
84
84
|
@abstract_model = MerbAdmin::AbstractModel.new(model_name)
|
85
85
|
get_properties
|
86
86
|
end
|
@@ -143,7 +143,7 @@ class MerbAdmin::Main < MerbAdmin::Application
|
|
143
143
|
end
|
144
144
|
|
145
145
|
def get_attributes
|
146
|
-
@attributes = params[@abstract_model.
|
146
|
+
@attributes = params[@abstract_model.to_param] || {}
|
147
147
|
# Delete fields that are blank
|
148
148
|
@attributes.each do |key, value|
|
149
149
|
@attributes[key] = nil if value.blank?
|
@@ -170,24 +170,21 @@ class MerbAdmin::Main < MerbAdmin::Application
|
|
170
170
|
end
|
171
171
|
|
172
172
|
def update_associations(association, ids = [])
|
173
|
-
associated_object = @object.send(association[:name])
|
174
|
-
@object.clear_association(associated_object)
|
175
|
-
@object.save
|
176
173
|
ids.each do |id|
|
177
174
|
update_association(association, id)
|
178
175
|
end
|
179
176
|
end
|
180
177
|
|
181
178
|
def redirect_on_success
|
182
|
-
|
179
|
+
param = @abstract_model.to_param
|
183
180
|
pretty_name = @abstract_model.pretty_name
|
184
181
|
action = params[:action]
|
185
182
|
if params[:_continue]
|
186
|
-
redirect(url(:merb_admin_edit, :model_name =>
|
183
|
+
redirect(url(:merb_admin_edit, :model_name => param, :id => @object.id), :message => {:notice => "#{pretty_name} was successfully #{action}d"})
|
187
184
|
elsif params[:_add_another]
|
188
|
-
redirect(url(:merb_admin_new, :model_name =>
|
185
|
+
redirect(url(:merb_admin_new, :model_name => param), :message => {:notice => "#{pretty_name} was successfully #{action}d"})
|
189
186
|
else
|
190
|
-
redirect(url(:merb_admin_list, :model_name =>
|
187
|
+
redirect(url(:merb_admin_list, :model_name => param), :message => {:notice => "#{pretty_name} was successfully #{action}d"})
|
191
188
|
end
|
192
189
|
end
|
193
190
|
|
data/app/helpers/main_helper.rb
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
</div>
|
33
33
|
<div class="breadcrumbs">
|
34
34
|
<%= link_to("Home", url(:merb_admin_dashboard)) %> ›
|
35
|
-
<%= link_to(@abstract_model.
|
35
|
+
<%= link_to(@abstract_model.pretty_name, url(:merb_admin_list, :model_name => @abstract_model.to_param)) %> ›
|
36
36
|
<%= page_name %>
|
37
37
|
</div>
|
38
38
|
<%= partial('layout/message', :message => message) unless message.blank? -%>
|
@@ -27,7 +27,7 @@
|
|
27
27
|
</div>
|
28
28
|
<div class="breadcrumbs">
|
29
29
|
<%= link_to("Home", url(:merb_admin_dashboard)) %> ›
|
30
|
-
<%= @abstract_model.
|
30
|
+
<%= @abstract_model.pretty_name %>
|
31
31
|
</div>
|
32
32
|
<%= partial('layout/message', :message => message) unless message.blank? -%>
|
33
33
|
<div id="content" class="flex">
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<p>Are you sure you want to delete the <%= @abstract_model.pretty_name.downcase %> “<%= object_label(@object) %>”? All of the following related items will be deleted:</p>
|
2
2
|
<ul>
|
3
3
|
<li>
|
4
|
-
<%= @abstract_model.pretty_name %>: <%= link_to(object_label(@object), url(:merb_admin_edit, :model_name => @abstract_model.
|
4
|
+
<%= @abstract_model.pretty_name %>: <%= link_to(object_label(@object), url(:merb_admin_edit, :model_name => @abstract_model.to_param, :id => @object.id)) %>
|
5
5
|
<ul>
|
6
6
|
<% @abstract_model.has_many_associations.each do |association| %>
|
7
7
|
<% @object.send(association[:name]).reject{|child| child.nil?}.each do |child| %>
|
@@ -20,7 +20,7 @@
|
|
20
20
|
</ul>
|
21
21
|
</li>
|
22
22
|
</ul>
|
23
|
-
<%= form_for(@object, :action => url(:merb_admin_destroy, :model_name => @abstract_model.
|
23
|
+
<%= form_for(@object, :action => url(:merb_admin_destroy, :model_name => @abstract_model.to_param, :id => @object.id), :method => :delete) do %>
|
24
24
|
<div>
|
25
25
|
<%= submit "Yes, I'm sure" %>
|
26
26
|
</div>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div id="content-main">
|
2
|
-
<%= form_for(@object, :action => url(:merb_admin_update, :model_name => @abstract_model.
|
2
|
+
<%= form_for(@object, :action => url(:merb_admin_update, :model_name => @abstract_model.to_param, :id => @object.id)) do %>
|
3
3
|
<div>
|
4
4
|
<%= partial('properties', :properties => @properties) -%>
|
5
5
|
<%= partial('belongs_to', :with => @abstract_model.belongs_to_associations, :as => :association) -%>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<div class="submit-row" >
|
9
9
|
<%= submit "Save", :class => "default", :name => "_save" %>
|
10
10
|
<p class="deletelink-box">
|
11
|
-
<%= link_to("Delete", url(:merb_admin_delete, :model_name => @abstract_model.
|
11
|
+
<%= link_to("Delete", url(:merb_admin_delete, :model_name => @abstract_model.to_param, :id => @object.id), :class => "deletelink") %>
|
12
12
|
</p>
|
13
13
|
<%= submit "Save and add another", :name => "_add_another" %>
|
14
14
|
<%= submit "Save and continue editing", :name => "_continue" %>
|
@@ -7,13 +7,13 @@
|
|
7
7
|
<% @abstract_models.each do |abstract_model| %>
|
8
8
|
<tr>
|
9
9
|
<th scope="row">
|
10
|
-
<%= link_to(abstract_model.
|
10
|
+
<%= link_to(abstract_model.pretty_name, url(:merb_admin_list, :model_name => abstract_model.to_param)) %>
|
11
11
|
</th>
|
12
12
|
<td>
|
13
|
-
<%= link_to("Add", url(:merb_admin_new, :model_name => abstract_model.
|
13
|
+
<%= link_to("Add", url(:merb_admin_new, :model_name => abstract_model.to_param), :class => "addlink") %>
|
14
14
|
</td>
|
15
15
|
<td>
|
16
|
-
<%= link_to("Edit", url(:merb_admin_list, :model_name => abstract_model.
|
16
|
+
<%= link_to("Edit", url(:merb_admin_list, :model_name => abstract_model.to_param), :class => "changelink") %>
|
17
17
|
</td>
|
18
18
|
</tr>
|
19
19
|
<% end %>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
<div id="content-main">
|
10
10
|
<ul class="object-tools">
|
11
11
|
<li>
|
12
|
-
<%= link_to("Add #{@abstract_model.pretty_name.downcase}", url(:merb_admin_new, :model_name => @abstract_model.
|
12
|
+
<%= link_to("Add #{@abstract_model.pretty_name.downcase}", url(:merb_admin_new, :model_name => @abstract_model.to_param), :class => "addlink") %>
|
13
13
|
</li>
|
14
14
|
</ul>
|
15
15
|
<div class="<%= filters_exist ? "module filtered" : "module" %>" id="changelist">
|
@@ -72,7 +72,7 @@
|
|
72
72
|
<tr class="row<%= index % 2 == 0 ? "1" : "2" %>">
|
73
73
|
<% @properties.each do |property| %>
|
74
74
|
<td>
|
75
|
-
<%= link_to(object_property(object, property), url(:merb_admin_edit, :model_name => @abstract_model.
|
75
|
+
<%= link_to(object_property(object, property), url(:merb_admin_edit, :model_name => @abstract_model.to_param, :id => object.id)) %>
|
76
76
|
</td>
|
77
77
|
<% end %>
|
78
78
|
</tr>
|
data/app/views/main/new.html.erb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<div id="content-main">
|
2
|
-
<%= form_for(@object, :action => url(:merb_admin_create, :model_name => @abstract_model.
|
2
|
+
<%= form_for(@object, :action => url(:merb_admin_create, :model_name => @abstract_model.to_param)) do %>
|
3
3
|
<div>
|
4
4
|
<%= partial('properties', :properties => @properties) -%>
|
5
5
|
<%= partial('belongs_to', :with => @abstract_model.belongs_to_associations, :as => :association) -%>
|
data/lib/abstract_model.rb
CHANGED
@@ -10,29 +10,29 @@ module MerbAdmin
|
|
10
10
|
when :activerecord, :sequel
|
11
11
|
Dir.glob(Merb.dir_for(:model) / Merb.glob_for(:model)).each do |filename|
|
12
12
|
File.read(filename).scan(/class ([\w\d_\-:]+)/).flatten.each do |model_name|
|
13
|
-
add_model(model_name
|
13
|
+
add_model(model_name)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
when :datamapper
|
17
|
-
DataMapper::Model.descendants.each do |
|
18
|
-
add_model(
|
17
|
+
DataMapper::Model.descendants.each do |model|
|
18
|
+
add_model(model.to_s)
|
19
19
|
end
|
20
20
|
else
|
21
21
|
raise "MerbAdmin does not support the #{orm} ORM"
|
22
22
|
end
|
23
23
|
@models.sort!{|x, y| x.model.to_s <=> y.model.to_s}
|
24
24
|
end
|
25
|
-
|
26
|
-
def self.add_model(
|
27
|
-
|
28
|
-
model = lookup(name)
|
25
|
+
|
26
|
+
def self.add_model(model_name)
|
27
|
+
model = lookup(model_name)
|
29
28
|
@models << new(model) if model
|
30
29
|
end
|
31
30
|
|
32
|
-
# Given a
|
31
|
+
# Given a string +model_name+, finds the corresponding model class
|
33
32
|
def self.lookup(model_name)
|
33
|
+
return nil if MerbAdmin[:excluded_models].include?(model_name)
|
34
34
|
begin
|
35
|
-
model = Object.full_const_get(model_name
|
35
|
+
model = Object.full_const_get(model_name)
|
36
36
|
rescue NameError
|
37
37
|
raise "MerbAdmin could not find model #{model_name}"
|
38
38
|
end
|
data/lib/activerecord_support.rb
CHANGED
@@ -39,7 +39,7 @@ module MerbAdmin
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def create(params = {})
|
42
|
-
model.create(params)
|
42
|
+
model.create(params).extend(InstanceMethods)
|
43
43
|
end
|
44
44
|
|
45
45
|
def new(params = {})
|
@@ -143,9 +143,6 @@ module MerbAdmin
|
|
143
143
|
end
|
144
144
|
|
145
145
|
module InstanceMethods
|
146
|
-
def clear_association(association)
|
147
|
-
association.clear
|
148
|
-
end
|
149
146
|
end
|
150
147
|
|
151
148
|
end
|
data/lib/datamapper_support.rb
CHANGED
@@ -39,7 +39,7 @@ module MerbAdmin
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def create(params = {})
|
42
|
-
model.create(params)
|
42
|
+
model.create(params).extend(InstanceMethods)
|
43
43
|
end
|
44
44
|
|
45
45
|
def new(params = {})
|
@@ -136,10 +136,6 @@ module MerbAdmin
|
|
136
136
|
def update_attributes(attributes)
|
137
137
|
update(attributes)
|
138
138
|
end
|
139
|
-
|
140
|
-
def clear_association(association)
|
141
|
-
association.clear
|
142
|
-
end
|
143
139
|
end
|
144
140
|
|
145
141
|
end
|
data/lib/generic_support.rb
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
module MerbAdmin
|
2
2
|
class AbstractModel
|
3
3
|
module GenericSupport
|
4
|
-
def
|
5
|
-
model.to_s.snake_case.
|
6
|
-
end
|
7
|
-
|
8
|
-
def plural_name
|
9
|
-
model.to_s.snake_case.pluralize.to_sym
|
4
|
+
def to_param
|
5
|
+
model.to_s.snake_case.gsub("::", "__")
|
10
6
|
end
|
11
7
|
|
12
8
|
def pretty_name
|
data/lib/merb-admin.rb
CHANGED
@@ -24,7 +24,7 @@ if defined?(Merb::Plugins)
|
|
24
24
|
|
25
25
|
# Slice metadata
|
26
26
|
self.description = "MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data."
|
27
|
-
self.version = "0.6.
|
27
|
+
self.version = "0.6.7"
|
28
28
|
self.author = "Erik Michaels-Ober"
|
29
29
|
|
30
30
|
# Stub classes loaded hook - runs before LoadClasses BootLoader
|
data/lib/sequel_support.rb
CHANGED
@@ -76,7 +76,7 @@ module MerbAdmin
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def create(params = {})
|
79
|
-
model.create(params)
|
79
|
+
model.create(params).extend(InstanceMethods)
|
80
80
|
end
|
81
81
|
|
82
82
|
def new(params = {})
|
@@ -268,11 +268,6 @@ module MerbAdmin
|
|
268
268
|
def update_attributes(attributes)
|
269
269
|
update(attributes)
|
270
270
|
end
|
271
|
-
|
272
|
-
def clear_association(association)
|
273
|
-
# FIXME: This should be changed to use the remove_all_* association method.
|
274
|
-
association.clear
|
275
|
-
end
|
276
271
|
end
|
277
272
|
|
278
273
|
end
|
data/spec/requests/main_spec.rb
CHANGED
@@ -80,16 +80,13 @@ describe "MerbAdmin" do
|
|
80
80
|
it "should show \"Site administration\"" do
|
81
81
|
@response.body.should contain("Site administration")
|
82
82
|
end
|
83
|
-
|
84
|
-
it "should be sorted correctly" do
|
85
|
-
@response.body.should contain(/Division.*Draft.*League.*Player.*Team/m)
|
86
|
-
end
|
87
83
|
end
|
88
84
|
|
89
85
|
describe "dashboard with excluded models" do
|
90
86
|
before(:each) do
|
91
|
-
MerbAdmin[:excluded_models] = [
|
87
|
+
MerbAdmin[:excluded_models] = ["Player"]
|
92
88
|
@response = request(url(:merb_admin_dashboard))
|
89
|
+
MerbAdmin[:excluded_models] = []
|
93
90
|
end
|
94
91
|
|
95
92
|
it "should respond sucessfully" do
|
@@ -245,9 +242,9 @@ describe "MerbAdmin" do
|
|
245
242
|
|
246
243
|
describe "list with 2 objects", :given => "two players exist" do
|
247
244
|
before(:each) do
|
248
|
-
MerbAdmin[:paginate] = true
|
249
245
|
MerbAdmin[:per_page] = 1
|
250
246
|
@response = request(url(:merb_admin_list, :model_name => "player"))
|
247
|
+
MerbAdmin[:per_page] = 100
|
251
248
|
end
|
252
249
|
|
253
250
|
it "should respond sucessfully" do
|
@@ -261,9 +258,9 @@ describe "MerbAdmin" do
|
|
261
258
|
|
262
259
|
describe "list with 20 objects", :given => "twenty players exist" do
|
263
260
|
before(:each) do
|
264
|
-
MerbAdmin[:paginate] = true
|
265
261
|
MerbAdmin[:per_page] = 1
|
266
262
|
@response = request(url(:merb_admin_list, :model_name => "player"))
|
263
|
+
MerbAdmin[:per_page] = 100
|
267
264
|
end
|
268
265
|
|
269
266
|
it "should respond sucessfully" do
|
@@ -277,9 +274,9 @@ describe "MerbAdmin" do
|
|
277
274
|
|
278
275
|
describe "list with 20 objects, page 8", :given => "twenty players exist" do
|
279
276
|
before(:each) do
|
280
|
-
MerbAdmin[:paginate] = true
|
281
277
|
MerbAdmin[:per_page] = 1
|
282
278
|
@response = request(url(:merb_admin_list, :model_name => "player"), :params => {:page => 8})
|
279
|
+
MerbAdmin[:per_page] = 100
|
283
280
|
end
|
284
281
|
|
285
282
|
it "should respond sucessfully" do
|
@@ -293,9 +290,9 @@ describe "MerbAdmin" do
|
|
293
290
|
|
294
291
|
describe "list with 20 objects, page 17", :given => "twenty players exist" do
|
295
292
|
before(:each) do
|
296
|
-
MerbAdmin[:paginate] = true
|
297
293
|
MerbAdmin[:per_page] = 1
|
298
294
|
@response = request(url(:merb_admin_list, :model_name => "player"), :params => {:page => 17})
|
295
|
+
MerbAdmin[:per_page] = 100
|
299
296
|
end
|
300
297
|
|
301
298
|
it "should respond sucessfully" do
|
@@ -309,9 +306,9 @@ describe "MerbAdmin" do
|
|
309
306
|
|
310
307
|
describe "list show all", :given => "two players exist" do
|
311
308
|
before(:each) do
|
312
|
-
MerbAdmin[:paginate] = true
|
313
309
|
MerbAdmin[:per_page] = 1
|
314
310
|
@response = request(url(:merb_admin_list, :model_name => "player"), :params => {:all => true})
|
311
|
+
MerbAdmin[:per_page] = 100
|
315
312
|
end
|
316
313
|
|
317
314
|
it "should respond sucessfully" do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merb-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Michaels-Ober
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-19 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|