link_to_action 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +1 -0
- data/lib/link_to_action/helpers.rb +12 -9
- data/lib/link_to_action/version.rb +1 -1
- data/test/dummy/config/initializers/link_to_action.rb +34 -0
- data/test/helpers_test.rb +50 -4
- data/test/support/misc_helpers.rb +15 -0
- data/test/support/models.rb +5 -0
- data/test/test_helper.rb +28 -1
- metadata +16 -10
data/README.md
CHANGED
@@ -26,17 +26,18 @@ module LinkToAction::Helpers
|
|
26
26
|
class_default = LinkToAction.class_default
|
27
27
|
class_action = LinkToAction.send("class_#{action}")
|
28
28
|
end
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
size_class = LinkToAction.size_class_default
|
33
|
-
end
|
34
|
-
class_string = [class_default, class_action, size_class, options[:class]].compact.join(' ')
|
29
|
+
size = options.delete(:size) || 'default'
|
30
|
+
class_string = [ class_default, class_action, size_class(size),
|
31
|
+
options[:class] ].compact.join(' ')
|
35
32
|
class_string unless class_string.blank?
|
36
33
|
end
|
37
34
|
|
38
|
-
def
|
39
|
-
|
35
|
+
def size_class(size)
|
36
|
+
LinkToAction.send("size_class_#{size}")
|
37
|
+
end
|
38
|
+
|
39
|
+
def action_icon(action, icon, icon_size)
|
40
|
+
[ icon, icon_size ].compact.join(' ')
|
40
41
|
end
|
41
42
|
|
42
43
|
def link_to_action(action, object, options)
|
@@ -44,7 +45,9 @@ module LinkToAction::Helpers
|
|
44
45
|
params = options.delete(:params) || {}
|
45
46
|
params[:action] = action if [ :new, :edit ].include? action
|
46
47
|
options[:class] = action_class(action, options)
|
47
|
-
|
48
|
+
icon = options.delete(:icon) || LinkToAction.send("icon_#{action}")
|
49
|
+
icon_size = options.delete(:icon_size) || LinkToAction.icons_size
|
50
|
+
iilink_to action_icon(action, icon, icon_size), name, action_path(action, object, params),
|
48
51
|
options if cancan?(action, object)
|
49
52
|
end
|
50
53
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
LinkToAction.setup do |config|
|
2
|
+
# Use CanCan, default false
|
3
|
+
# config.use_cancan = false
|
4
|
+
|
5
|
+
# Add icons to links, default false
|
6
|
+
# config.use_icons = false
|
7
|
+
|
8
|
+
# Icons size, default 'large'
|
9
|
+
# config.icons_size = 'large'
|
10
|
+
|
11
|
+
# Icons for actions
|
12
|
+
# config.icon_new = 'plus'
|
13
|
+
# config.icon_edit = 'edit'
|
14
|
+
# config.icon_destroy = 'trash'
|
15
|
+
# config.icon_back = 'undo'
|
16
|
+
|
17
|
+
# Use classes, default false
|
18
|
+
# config.use_classes = false
|
19
|
+
|
20
|
+
# Classes by default are adopted to twitter-bootstrap
|
21
|
+
# config.class_default = 'btn'
|
22
|
+
|
23
|
+
# Classes for actions
|
24
|
+
# config.class_new = 'btn-primary'
|
25
|
+
# config.class_edit = nil
|
26
|
+
# config.class_destroy = 'btn-danger'
|
27
|
+
# config.class_back = nil
|
28
|
+
|
29
|
+
# Size can be set using class, by default is adopted to twitter-bootstrap
|
30
|
+
# config.size_class_default = nil
|
31
|
+
# config.size_class_large = 'btn-large'
|
32
|
+
# config.size_class_small = 'btn-small'
|
33
|
+
# config.size_class_mini = 'btn-mini'
|
34
|
+
end
|
data/test/helpers_test.rb
CHANGED
@@ -1,15 +1,61 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class HelperTest < ActionView::TestCase
|
4
|
+
test 'link_to_new' do
|
5
|
+
assert_equal "<a href=\"/users/new\">New User</a>",
|
6
|
+
link_to_new(User)
|
7
|
+
end
|
8
|
+
|
9
|
+
test 'link_to_edit' do
|
10
|
+
assert_equal "<a href=\"/users/1/edit\">Edit User</a>", link_to_edit(@user)
|
11
|
+
end
|
12
|
+
|
13
|
+
test 'link_to_destroy' do
|
14
|
+
assert_equal "<a href=\"/users/1\" data-confirm=\"Are you sure?\" data-method=\"delete\" data-skip-pjax=\"true\" rel=\"nofollow\">Delete User</a>",
|
15
|
+
link_to_destroy(@user)
|
16
|
+
end
|
17
|
+
|
18
|
+
test 'link_to_destroy with cancan disallowed' do
|
19
|
+
swap LinkToAction, use_cancan: true do
|
20
|
+
assert_equal nil, link_to_destroy(@user)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
4
24
|
test 'link_to_back first time' do
|
5
25
|
assert_equal "<a href=\"javascript:history.back()\">Back</a>",
|
6
26
|
link_to_back
|
7
27
|
end
|
8
28
|
|
9
|
-
|
29
|
+
test 'link_to_back with size' do
|
30
|
+
assert_equal "<a href=\"javascript:history.back()\" class=\"btn-mini\">Back</a>",
|
31
|
+
link_to_back(size: :mini)
|
32
|
+
end
|
33
|
+
|
34
|
+
test 'link_to_back using icons' do
|
35
|
+
swap LinkToAction, use_icons: true do
|
36
|
+
assert_equal "<a href=\"javascript:history.back()\"><i class=\"icon-undo icon-large\"></i> Back</a>",
|
37
|
+
link_to_back
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
test 'link_to_back specifying icon' do
|
42
|
+
swap LinkToAction, use_icons: true do
|
43
|
+
assert_equal "<a href=\"javascript:history.back()\"><i class=\"icon-chevron-left icon-large\"></i> Back</a>",
|
44
|
+
link_to_back(icon: 'chevron-left')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
test 'link_to_back specifying icon size' do
|
49
|
+
swap LinkToAction, use_icons: true do
|
50
|
+
assert_equal "<a href=\"javascript:history.back()\"><i class=\"icon-undo icon-small\"></i> Back</a>",
|
51
|
+
link_to_back(icon_size: :small)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
10
55
|
test 'link_to_back first time with classes' do
|
11
|
-
LinkToAction
|
12
|
-
|
13
|
-
|
56
|
+
swap LinkToAction, use_classes: true do
|
57
|
+
assert_equal "<a href=\"javascript:history.back()\" class=\"btn\">Back</a>",
|
58
|
+
link_to_back
|
59
|
+
end
|
14
60
|
end
|
15
61
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module MiscHelpers
|
2
|
+
# copy'n'paste from plataformatec/show_for
|
3
|
+
def swap(object, new_values)
|
4
|
+
old_values = {}
|
5
|
+
new_values.each do |key, value|
|
6
|
+
old_values[key] = object.send key
|
7
|
+
object.send :"#{key}=", value
|
8
|
+
end
|
9
|
+
yield
|
10
|
+
ensure
|
11
|
+
old_values.each do |key, value|
|
12
|
+
object.send :"#{key}=", value
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
3
|
+
|
1
4
|
# Configure Rails Environment
|
2
5
|
ENV["RAILS_ENV"] = "test"
|
3
6
|
|
@@ -18,4 +21,28 @@ end
|
|
18
21
|
|
19
22
|
class ActionView::TestCase
|
20
23
|
include LinkToAction::Helpers
|
21
|
-
|
24
|
+
include MiscHelpers
|
25
|
+
|
26
|
+
def new_user_path
|
27
|
+
'/users/new'
|
28
|
+
end
|
29
|
+
|
30
|
+
def edit_user_path(user)
|
31
|
+
# user.id == ?
|
32
|
+
"/users/#{1}/edit"
|
33
|
+
end
|
34
|
+
|
35
|
+
def user_path(user)
|
36
|
+
"/users/1"
|
37
|
+
end
|
38
|
+
|
39
|
+
def can?(object, ability)
|
40
|
+
false
|
41
|
+
end
|
42
|
+
|
43
|
+
setup :setup_new_user
|
44
|
+
|
45
|
+
def setup_new_user(options={})
|
46
|
+
@user = User.new(id: 1, name: 'username')
|
47
|
+
end
|
48
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: link_to_action
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &11166740 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 3.2.8
|
22
|
-
type: :
|
22
|
+
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *11166740
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement: &
|
26
|
+
name: simplecov
|
27
|
+
requirement: &11164580 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *11164580
|
36
36
|
description: link_to for specific actions
|
37
37
|
email:
|
38
38
|
- denis.peplin@gmail.com
|
@@ -51,6 +51,8 @@ files:
|
|
51
51
|
- LICENSE
|
52
52
|
- Rakefile
|
53
53
|
- README.md
|
54
|
+
- test/support/models.rb
|
55
|
+
- test/support/misc_helpers.rb
|
54
56
|
- test/helpers_test.rb
|
55
57
|
- test/test_helper.rb
|
56
58
|
- test/dummy/README.rdoc
|
@@ -63,6 +65,7 @@ files:
|
|
63
65
|
- test/dummy/config/boot.rb
|
64
66
|
- test/dummy/config/application.rb
|
65
67
|
- test/dummy/config/initializers/secret_token.rb
|
68
|
+
- test/dummy/config/initializers/link_to_action.rb
|
66
69
|
- test/dummy/config/initializers/session_store.rb
|
67
70
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
68
71
|
- test/dummy/config/initializers/inflections.rb
|
@@ -97,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
100
|
version: '0'
|
98
101
|
segments:
|
99
102
|
- 0
|
100
|
-
hash:
|
103
|
+
hash: 2755617306880632693
|
101
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
105
|
none: false
|
103
106
|
requirements:
|
@@ -106,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
109
|
version: '0'
|
107
110
|
segments:
|
108
111
|
- 0
|
109
|
-
hash:
|
112
|
+
hash: 2755617306880632693
|
110
113
|
requirements: []
|
111
114
|
rubyforge_project:
|
112
115
|
rubygems_version: 1.8.11
|
@@ -114,6 +117,8 @@ signing_key:
|
|
114
117
|
specification_version: 3
|
115
118
|
summary: Links to actions
|
116
119
|
test_files:
|
120
|
+
- test/support/models.rb
|
121
|
+
- test/support/misc_helpers.rb
|
117
122
|
- test/helpers_test.rb
|
118
123
|
- test/test_helper.rb
|
119
124
|
- test/dummy/README.rdoc
|
@@ -126,6 +131,7 @@ test_files:
|
|
126
131
|
- test/dummy/config/boot.rb
|
127
132
|
- test/dummy/config/application.rb
|
128
133
|
- test/dummy/config/initializers/secret_token.rb
|
134
|
+
- test/dummy/config/initializers/link_to_action.rb
|
129
135
|
- test/dummy/config/initializers/session_store.rb
|
130
136
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
131
137
|
- test/dummy/config/initializers/inflections.rb
|