andrewroth_activeadmin 0.3.4.3 → 0.3.4.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/CHANGELOG.md +18 -32
- data/Gemfile +5 -7
- data/activeadmin.gemspec +1 -1
- data/features/step_definitions/additional_web_steps.rb +3 -3
- data/features/step_definitions/asset_steps.rb +1 -1
- data/features/step_definitions/comment_steps.rb +3 -3
- data/features/step_definitions/configuration_steps.rb +5 -5
- data/features/step_definitions/dashboard_steps.rb +2 -2
- data/features/step_definitions/index_scope_steps.rb +5 -5
- data/features/step_definitions/pagination_steps.rb +2 -2
- data/features/step_definitions/tab_steps.rb +1 -1
- data/features/step_definitions/user_steps.rb +1 -1
- data/features/step_definitions/web_steps.rb +4 -4
- data/lib/active_admin/arbre.rb +0 -1
- data/lib/active_admin/arbre/builder.rb +8 -5
- data/lib/active_admin/arbre/context.rb +1 -1
- data/lib/active_admin/arbre/html/attributes.rb +1 -1
- data/lib/active_admin/arbre/html/class_list.rb +0 -4
- data/lib/active_admin/arbre/html/collection.rb +2 -2
- data/lib/active_admin/arbre/html/document.rb +1 -1
- data/lib/active_admin/arbre/html/element.rb +5 -9
- data/lib/active_admin/arbre/html/tag.rb +3 -3
- data/lib/active_admin/arbre/html/text_node.rb +2 -2
- data/lib/active_admin/locales/de.yml +1 -0
- data/lib/active_admin/menu_item.rb +25 -17
- data/lib/active_admin/resource_controller/collection.rb +1 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/views/components/columns.rb +4 -4
- data/script/use_rails +14 -7
- data/spec/spec_helper.rb +5 -11
- data/spec/spec_helper_without_rails.rb +10 -0
- data/spec/support/detect_rails_version.rb +22 -3
- data/spec/unit/arbre/context_spec.rb +1 -1
- data/spec/unit/arbre/html/element_spec.rb +5 -5
- data/spec/unit/arbre/html/tag_attributes_spec.rb +3 -3
- data/spec/unit/arbre/html_spec.rb +32 -22
- data/spec/unit/menu_item_spec.rb +25 -20
- data/spec/unit/views/tabbed_navigation_spec.rb +2 -1
- data/tasks/test.rake +15 -13
- metadata +10 -9
- data/lib/active_admin/arbre/core_extensions.rb +0 -5
@@ -65,14 +65,14 @@ module Arbre
|
|
65
65
|
|
66
66
|
# Returns a string of classes
|
67
67
|
def class_names
|
68
|
-
class_list.
|
68
|
+
class_list.to_s
|
69
69
|
end
|
70
70
|
|
71
71
|
def class_list
|
72
72
|
get_attribute(:class) || set_attribute(:class, ClassList.new)
|
73
73
|
end
|
74
74
|
|
75
|
-
def
|
75
|
+
def to_s
|
76
76
|
indent("<#{tag_name}#{attributes_html}>", content, "</#{tag_name}>").html_safe
|
77
77
|
end
|
78
78
|
|
@@ -118,7 +118,7 @@ module Arbre
|
|
118
118
|
|
119
119
|
|
120
120
|
def attributes_html
|
121
|
-
attributes.any? ? " " + attributes.
|
121
|
+
attributes.any? ? " " + attributes.to_s : nil
|
122
122
|
end
|
123
123
|
|
124
124
|
def set_for_attribute(record)
|
@@ -9,6 +9,7 @@ de:
|
|
9
9
|
delete: "Löschen"
|
10
10
|
delete_confirmation: "Wollen Sie dieses Element wirklich löschen?"
|
11
11
|
new_model: "%{model} erstellen"
|
12
|
+
create_model: "%{model} erstellen"
|
12
13
|
edit_model: "%{model} bearbeiten"
|
13
14
|
delete_model: "%{model} löschen"
|
14
15
|
details: "%{model} Details"
|
@@ -1,18 +1,25 @@
|
|
1
1
|
module ActiveAdmin
|
2
2
|
class MenuItem
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
|
4
|
+
|
5
|
+
# Generates a route using the rails application url helpers
|
6
|
+
#
|
7
|
+
# @param [Symbol] named_route
|
8
|
+
#
|
9
|
+
# @returns [String] The generated route
|
10
|
+
def self.generate_url(named_route)
|
11
|
+
Rails.application.routes.url_helpers.send(named_route)
|
12
|
+
end
|
13
|
+
|
7
14
|
attr_accessor :name, :url, :priority, :parent, :display_if_block
|
8
|
-
|
15
|
+
|
9
16
|
def initialize(name, url, priority = 10, options = {})
|
10
17
|
@name, @url, @priority = name, url, priority
|
11
18
|
@children = []
|
12
19
|
@cached_url = {} # Stores the cached url in a hash to allow us to change it and still cache it
|
13
20
|
|
14
21
|
@display_if_block = options.delete(:if)
|
15
|
-
|
22
|
+
|
16
23
|
yield(self) if block_given? # Builder style syntax
|
17
24
|
end
|
18
25
|
|
@@ -20,54 +27,55 @@ module ActiveAdmin
|
|
20
27
|
item = MenuItem.new(name, url, priority, options, &block)
|
21
28
|
item.parent = self
|
22
29
|
@children << item
|
23
|
-
end
|
24
|
-
|
30
|
+
end
|
31
|
+
|
25
32
|
def children
|
26
33
|
@children.sort
|
27
34
|
end
|
28
|
-
|
35
|
+
|
29
36
|
def parent?
|
30
37
|
!parent.nil?
|
31
38
|
end
|
32
|
-
|
39
|
+
|
33
40
|
def dom_id
|
34
41
|
name.downcase.gsub( " ", '_' ).gsub( /[^a-z0-9_]/, '' )
|
35
42
|
end
|
36
|
-
|
43
|
+
|
37
44
|
def url
|
38
45
|
case @url
|
39
46
|
when Symbol
|
40
|
-
generated =
|
47
|
+
generated = self.class.generate_url(@url) # Call the named route
|
41
48
|
else
|
42
49
|
generated = @url
|
43
50
|
end
|
44
51
|
@cached_url[@url] ||= generated
|
45
52
|
end
|
46
|
-
|
53
|
+
|
47
54
|
# Returns an array of the ancestory of this menu item
|
48
55
|
# The first item is the immediate parent fo the item
|
49
56
|
def ancestors
|
50
57
|
return [] unless parent?
|
51
58
|
[parent, parent.ancestors].flatten
|
52
59
|
end
|
53
|
-
|
60
|
+
|
54
61
|
# Returns the child item with the name passed in
|
55
62
|
# @blog_menu["Create New"] => <#MenuItem @name="Create New" >
|
56
63
|
def [](name)
|
57
64
|
@children.find{ |i| i.name == name }
|
58
65
|
end
|
59
|
-
|
66
|
+
|
60
67
|
def <=>(other)
|
61
68
|
result = priority <=> other.priority
|
62
69
|
result = name <=> other.name if result == 0
|
63
70
|
result
|
64
71
|
end
|
65
|
-
|
72
|
+
|
66
73
|
# Returns the display if block. If the block was not explicitly defined
|
67
74
|
# a default block always returning true will be returned.
|
68
75
|
def display_if_block
|
69
76
|
@display_if_block || lambda { |_| true }
|
70
77
|
end
|
71
78
|
|
72
|
-
|
79
|
+
|
80
|
+
end
|
73
81
|
end
|
@@ -124,7 +124,7 @@ module ActiveAdmin
|
|
124
124
|
end
|
125
125
|
|
126
126
|
def paginate(chain)
|
127
|
-
chain.
|
127
|
+
chain.send(Kaminari.config.page_method_name, params[:page]).per(@per_page || active_admin_namespace.default_per_page)
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
data/lib/active_admin/version.rb
CHANGED
@@ -14,6 +14,10 @@ module ActiveAdmin
|
|
14
14
|
calculate_columns!
|
15
15
|
end
|
16
16
|
|
17
|
+
def to_s
|
18
|
+
super.to_s + "<div style=\"clear:both;\"></div>".html_safe
|
19
|
+
end
|
20
|
+
|
17
21
|
protected
|
18
22
|
|
19
23
|
def margin_size
|
@@ -35,10 +39,6 @@ module ActiveAdmin
|
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
38
|
-
def to_html
|
39
|
-
super.to_s + "<div style=\"clear:both;\"></div>".html_safe
|
40
|
-
end
|
41
|
-
|
42
42
|
end
|
43
43
|
|
44
44
|
class Column < ActiveAdmin::Component
|
data/script/use_rails
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
# Switches the development environment to use the given
|
4
4
|
# version of rails. Caches the Gemfile.locks so that
|
5
5
|
# switching it very fast.
|
6
|
+
#
|
7
|
+
require File.expand_path("../../spec/support/detect_rails_version", __FILE__)
|
6
8
|
|
7
9
|
def cmd(command)
|
8
10
|
puts command
|
@@ -34,13 +36,18 @@ if File.exists?(gem_lock_file) && ARGV.include?('--clobber')
|
|
34
36
|
cmd "rm #{gem_lock_file}"
|
35
37
|
end
|
36
38
|
|
37
|
-
|
38
|
-
|
39
|
+
write_rails_version(version)
|
40
|
+
|
41
|
+
# Ensure that bundler installs
|
42
|
+
ENV['RUBYOPT'] = ''
|
43
|
+
|
44
|
+
if File.exists?(gem_lock_file)
|
45
|
+
cmd("rm Gemfile.lock") if file_or_symlink?("Gemfile.lock")
|
46
|
+
cmd("ln -s #{gem_lock_file} Gemfile.lock")
|
47
|
+
cmd("bundle")
|
48
|
+
else
|
39
49
|
cmd "rm Gemfile.lock" if file_or_symlink?("Gemfile.lock")
|
40
|
-
cmd "
|
50
|
+
cmd "bundle install"
|
41
51
|
cmd "mv Gemfile.lock #{gem_lock_file}"
|
52
|
+
cmd("ln -s #{gem_lock_file} Gemfile.lock")
|
42
53
|
end
|
43
|
-
|
44
|
-
cmd("rm Gemfile.lock") if file_or_symlink?("Gemfile.lock")
|
45
|
-
cmd("ln -s #{gem_lock_file} Gemfile.lock")
|
46
|
-
cmd("bundle")
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,4 @@
|
|
1
|
-
|
2
|
-
$LOAD_PATH << File.expand_path('../support', __FILE__)
|
3
|
-
|
4
|
-
ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', __FILE__)
|
5
|
-
|
6
|
-
require 'detect_rails_version'
|
7
|
-
ENV['RAILS'] = detect_rails_version
|
8
|
-
|
9
|
-
require "bundler"
|
10
|
-
Bundler.setup
|
1
|
+
require File.expand_path("../spec_helper_without_rails", __FILE__)
|
11
2
|
|
12
3
|
require 'shoulda/active_record'
|
13
4
|
include Shoulda::ActiveRecord::Macros
|
@@ -97,7 +88,10 @@ module ActiveAdminIntegrationSpecHelper
|
|
97
88
|
end
|
98
89
|
|
99
90
|
ENV['RAILS_ENV'] = 'test'
|
100
|
-
|
91
|
+
|
92
|
+
require 'detect_rails_version'
|
93
|
+
rails_version = detect_rails_version
|
94
|
+
ENV['RAILS_ROOT'] = File.expand_path("../rails/rails-#{rails_version}", __FILE__)
|
101
95
|
|
102
96
|
# Create the test app if it doesn't exists
|
103
97
|
unless File.exists?(ENV['RAILS_ROOT'])
|
@@ -0,0 +1,10 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH << File.expand_path('../support', __FILE__)
|
3
|
+
|
4
|
+
ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', __FILE__)
|
5
|
+
|
6
|
+
require 'detect_rails_version'
|
7
|
+
ENV['RAILS'] = detect_rails_version
|
8
|
+
|
9
|
+
require "bundler"
|
10
|
+
Bundler.setup
|
@@ -2,9 +2,28 @@
|
|
2
2
|
#
|
3
3
|
# You can pass it in as an ENV variable or it will use
|
4
4
|
# the current Gemfile.lock to find it
|
5
|
+
|
6
|
+
unless defined?(RAILS_VERSION_FILE)
|
7
|
+
RAILS_VERSION_FILE = File.expand_path("../../../.rails-version", __FILE__)
|
8
|
+
end
|
9
|
+
|
10
|
+
unless defined?(DEFAULT_RAILS_VERSION)
|
11
|
+
DEFAULT_RAILS_VERSION = "3.1.3"
|
12
|
+
end
|
13
|
+
|
5
14
|
def detect_rails_version
|
6
|
-
|
15
|
+
detected_version = if File.exists?(RAILS_VERSION_FILE)
|
16
|
+
version = File.read(RAILS_VERSION_FILE).chomp.strip
|
17
|
+
version != "" ? version : DEFAULT_RAILS_VERSION
|
18
|
+
else
|
19
|
+
DEFAULT_RAILS_VERSION
|
20
|
+
end
|
21
|
+
|
22
|
+
puts "Detected Rails: #{detected_version}" if ENV['DEBUG']
|
23
|
+
|
24
|
+
detected_version
|
25
|
+
end
|
7
26
|
|
8
|
-
|
9
|
-
|
27
|
+
def write_rails_version(version)
|
28
|
+
File.open(RAILS_VERSION_FILE, "w+"){|f| f << version }
|
10
29
|
end
|
@@ -27,7 +27,7 @@ describe Arbre::Context do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should use a cached version of the HTML for method delegation" do
|
30
|
-
current_dom_context.should_receive(:
|
30
|
+
current_dom_context.should_receive(:to_s).once.and_return("<h1>札幌市北区</h1>")
|
31
31
|
current_dom_context.index('<').should == 0
|
32
32
|
current_dom_context.index('<').should == 0
|
33
33
|
end
|
@@ -73,7 +73,7 @@ describe Arbre::HTML::Element do
|
|
73
73
|
let(:child){ "Hello World" }
|
74
74
|
it "should add as a TextNode" do
|
75
75
|
element.children.first.should be_instance_of(Arbre::HTML::TextNode)
|
76
|
-
element.children.first.
|
76
|
+
element.children.first.to_s.should == "Hello World"
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
@@ -90,13 +90,13 @@ describe Arbre::HTML::Element do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
it "should add the string as a child" do
|
93
|
-
element.children.first.
|
93
|
+
element.children.first.to_s.should == "Goodbye"
|
94
94
|
end
|
95
95
|
|
96
96
|
it "should html escape the string" do
|
97
97
|
string = "Goodbye <br />"
|
98
98
|
element.content = string
|
99
|
-
element.
|
99
|
+
element.to_s.should == "Goodbye <br />"
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
@@ -146,8 +146,8 @@ describe Arbre::HTML::Element do
|
|
146
146
|
|
147
147
|
describe "rendering to html" do
|
148
148
|
it "should render the children collection" do
|
149
|
-
element.children.should_receive(:
|
150
|
-
element.
|
149
|
+
element.children.should_receive(:to_s).and_return("content")
|
150
|
+
element.to_s.should == "content"
|
151
151
|
end
|
152
152
|
end
|
153
153
|
|
@@ -14,7 +14,7 @@ describe Arbre::HTML::Tag, "Attributes" do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should render the attributes to html" do
|
17
|
-
tag.
|
17
|
+
tag.to_s.should == <<-HTML
|
18
18
|
<tag id="my_id"></tag>
|
19
19
|
HTML
|
20
20
|
end
|
@@ -47,13 +47,13 @@ HTML
|
|
47
47
|
describe "rendering attributes" do
|
48
48
|
it "should html safe the attribute values" do
|
49
49
|
tag.set_attribute(:class, "\">bad things!")
|
50
|
-
tag.
|
50
|
+
tag.to_s.should == <<-HTML
|
51
51
|
<tag class="">bad things!"></tag>
|
52
52
|
HTML
|
53
53
|
end
|
54
54
|
it "should should escape the attribute names" do
|
55
55
|
tag.set_attribute(">bad", "things")
|
56
|
-
tag.
|
56
|
+
tag.to_s.should == <<-HTML
|
57
57
|
<tag >bad="things"></tag>
|
58
58
|
HTML
|
59
59
|
end
|
@@ -6,7 +6,7 @@ describe Arbre do
|
|
6
6
|
|
7
7
|
it "should render a single element" do
|
8
8
|
content = span("Hello World")
|
9
|
-
content.
|
9
|
+
content.to_s.should == <<-HTML
|
10
10
|
<span>Hello World</span>
|
11
11
|
HTML
|
12
12
|
end
|
@@ -15,7 +15,7 @@ HTML
|
|
15
15
|
content = span do
|
16
16
|
span "Hello World"
|
17
17
|
end
|
18
|
-
content.
|
18
|
+
content.to_s.should == <<-HTML
|
19
19
|
<span>
|
20
20
|
<span>Hello World</span>
|
21
21
|
</span>
|
@@ -28,7 +28,7 @@ HTML
|
|
28
28
|
li "Second"
|
29
29
|
li "Third"
|
30
30
|
end
|
31
|
-
content.
|
31
|
+
content.to_s.should == <<-HTML
|
32
32
|
<ul>
|
33
33
|
<li>First</li>
|
34
34
|
<li>Second</li>
|
@@ -51,7 +51,7 @@ HTML
|
|
51
51
|
li first
|
52
52
|
li second
|
53
53
|
end
|
54
|
-
content.
|
54
|
+
content.to_s.should == <<-EOS
|
55
55
|
<ul>
|
56
56
|
<li>First</li>
|
57
57
|
<li>Second</li>
|
@@ -66,7 +66,7 @@ EOS
|
|
66
66
|
li
|
67
67
|
end
|
68
68
|
end
|
69
|
-
content.
|
69
|
+
content.to_s.should == <<-HTML
|
70
70
|
<div>
|
71
71
|
<ul></ul>
|
72
72
|
<li>
|
@@ -82,7 +82,7 @@ HTML
|
|
82
82
|
li
|
83
83
|
end
|
84
84
|
end
|
85
|
-
content.
|
85
|
+
content.to_s.should == <<-HTML
|
86
86
|
<div>
|
87
87
|
<ul>
|
88
88
|
<li></li>
|
@@ -95,7 +95,7 @@ HTML
|
|
95
95
|
content = div do
|
96
96
|
span(ul(li))
|
97
97
|
end
|
98
|
-
content.
|
98
|
+
content.to_s.should == <<-HTML
|
99
99
|
<div>
|
100
100
|
<span>
|
101
101
|
<ul>
|
@@ -113,7 +113,7 @@ HTML
|
|
113
113
|
li
|
114
114
|
end
|
115
115
|
end
|
116
|
-
content.
|
116
|
+
content.to_s.should == <<-HTML
|
117
117
|
<div id="my-tag">
|
118
118
|
<ul>
|
119
119
|
<li></li>
|
@@ -131,12 +131,22 @@ HTML
|
|
131
131
|
item.parent.should == list
|
132
132
|
end
|
133
133
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
134
|
+
|
135
|
+
["Hello World", 1, 1.5].each do |value|
|
136
|
+
it "should append the return value of '#{value}' when no other children added to the DOM" do
|
137
|
+
li do
|
138
|
+
value
|
139
|
+
end.to_s.should == "<li>#{value}</li>\n"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
["Hello World", 1, 1.5].each do |value|
|
144
|
+
it "should not append the return value of '#{value}' when children have been added to the DOM" do
|
145
|
+
li do
|
146
|
+
text_node("Already Added")
|
147
|
+
value
|
148
|
+
end.to_s.should == "<li>Already Added</li>\n"
|
149
|
+
end
|
140
150
|
end
|
141
151
|
|
142
152
|
describe "text nodes" do
|
@@ -150,19 +160,19 @@ HTML
|
|
150
160
|
describe "self-closing nodes" do
|
151
161
|
it "should not self-close script tags" do
|
152
162
|
tag = script :type => 'text/javascript'
|
153
|
-
tag.
|
163
|
+
tag.to_s.should == <<-HTML
|
154
164
|
<script type="text/javascript"></script>
|
155
165
|
HTML
|
156
166
|
end
|
157
167
|
it "should self-close meta tags" do
|
158
168
|
tag = meta :content => "text/html; charset=utf-8"
|
159
|
-
tag.
|
169
|
+
tag.to_s.should == <<-HTML
|
160
170
|
<meta content="text/html; charset=utf-8\"/>
|
161
171
|
HTML
|
162
172
|
end
|
163
173
|
it "should self-close link tags" do
|
164
174
|
tag = link :rel => "stylesheet"
|
165
|
-
tag.
|
175
|
+
tag.to_s.should == <<-HTML
|
166
176
|
<link rel="stylesheet"/>
|
167
177
|
HTML
|
168
178
|
end
|
@@ -170,17 +180,17 @@ HTML
|
|
170
180
|
|
171
181
|
describe "html safe" do
|
172
182
|
it "should escape the contents" do
|
173
|
-
span("<br />").
|
183
|
+
span("<br />").to_s.should == <<-HTML
|
174
184
|
<span><br /></span>
|
175
185
|
HTML
|
176
186
|
end
|
177
187
|
|
178
188
|
it "should return html safe strings" do
|
179
|
-
span("<br />").
|
189
|
+
span("<br />").to_s.should be_html_safe
|
180
190
|
end
|
181
191
|
|
182
192
|
it "should not escape html passed in" do
|
183
|
-
span(span("<br />")).
|
193
|
+
span(span("<br />")).to_s.should == <<-HTML
|
184
194
|
<span>
|
185
195
|
<span><br /></span>
|
186
196
|
</span>
|
@@ -192,7 +202,7 @@ HTML
|
|
192
202
|
span {
|
193
203
|
"<br />"
|
194
204
|
}
|
195
|
-
}.
|
205
|
+
}.to_s.should == <<-HTML
|
196
206
|
<span>
|
197
207
|
<span><br /></span>
|
198
208
|
</span>
|
@@ -200,7 +210,7 @@ HTML
|
|
200
210
|
end
|
201
211
|
|
202
212
|
it "should escape the contents of attributes" do
|
203
|
-
span(:class => "<br />").
|
213
|
+
span(:class => "<br />").to_s.should == <<-HTML
|
204
214
|
<span class="<br />"></span>
|
205
215
|
HTML
|
206
216
|
end
|