link_to_action 0.1.1 → 0.1.2
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/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
|