cancan-rest-links 0.1.5 → 0.1.6
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.markdown +10 -0
- data/VERSION +1 -1
- data/cancan-rest-links.gemspec +1 -1
- data/lib/cancan-rest-links/helpers/rest_links.rb +57 -22
- metadata +2 -2
data/README.markdown
CHANGED
@@ -11,6 +11,16 @@ Note: The link helpers require a hash called #auth_labels, which is used to look
|
|
11
11
|
|
12
12
|
An example of this functionality can be found in the [Cream](http://github.com/kristianmandrup/cream) framework where this gem is used.
|
13
13
|
|
14
|
+
## Rails 3 usage
|
15
|
+
|
16
|
+
See the configure_spec in the /specs folder.
|
17
|
+
|
18
|
+
<code>
|
19
|
+
require 'cancan-rest-links/rails/configure'
|
20
|
+
</code>
|
21
|
+
|
22
|
+
|
23
|
+
|
14
24
|
## Note on Patches/Pull Requests
|
15
25
|
|
16
26
|
* Fork the project.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.6
|
data/cancan-rest-links.gemspec
CHANGED
@@ -1,37 +1,26 @@
|
|
1
1
|
module CanCan::Link
|
2
2
|
module Rest
|
3
3
|
def index_link(object, label = nil)
|
4
|
-
label ||=
|
4
|
+
label ||= index_label
|
5
5
|
obj = index_obj(object)
|
6
6
|
path = send :"#{obj}_path"
|
7
7
|
link = link_to(label, path) if can?(:read, object)
|
8
8
|
end
|
9
|
-
|
10
|
-
def index_obj(obj)
|
11
|
-
o = case obj
|
12
|
-
when Array
|
13
|
-
obj.first.class
|
14
|
-
when Class
|
15
|
-
obj
|
16
|
-
else
|
17
|
-
obj.class
|
18
|
-
end
|
19
|
-
o.name.pluralize.downcase
|
20
|
-
end
|
21
|
-
|
9
|
+
|
22
10
|
def create_link(object, label = nil)
|
23
|
-
label ||=
|
24
|
-
|
11
|
+
label ||= new_label
|
12
|
+
obj_name = object_class(object).to_s.downcase
|
13
|
+
path = send :"new_#{obj_name}_path"
|
25
14
|
link = link_to(label, path) if can?(:create, object)
|
26
15
|
end
|
27
16
|
|
28
17
|
def edit_link(object, label = nil)
|
29
|
-
label ||=
|
18
|
+
label ||= edit_label
|
30
19
|
link_to(label, [:edit, object]) if can?(:edit, object)
|
31
20
|
end
|
32
21
|
|
33
|
-
def delete_link(object, options = nil)
|
34
|
-
options ||= {:label =>
|
22
|
+
def delete_link(object, options = nil)
|
23
|
+
options ||= {:label => delete_label, :confirm => confirm_label}
|
35
24
|
case options
|
36
25
|
when String
|
37
26
|
label = options
|
@@ -40,13 +29,13 @@ module CanCan::Link
|
|
40
29
|
confirm_msg = options[:confirm]
|
41
30
|
when Array
|
42
31
|
label = options[0]
|
43
|
-
confirm_msg = options.size > 1 ? options[1] :
|
32
|
+
confirm_msg = options.size > 1 ? options[1] : confirm_label
|
44
33
|
end
|
45
34
|
link_to(label, object, :method => :delete, :confirm => confirm_msg) if can?(:destroy, object)
|
46
35
|
end
|
47
36
|
|
48
|
-
def show_link(object, label = nil)
|
49
|
-
label ||=
|
37
|
+
def show_link(object, label = nil)
|
38
|
+
label ||= show_label
|
50
39
|
link_to(label, object) if can?(:read, object)
|
51
40
|
end
|
52
41
|
|
@@ -60,6 +49,52 @@ module CanCan::Link
|
|
60
49
|
|
61
50
|
# alias_method :list_link, :index_link and so on...
|
62
51
|
multi_alias LINKS.merge(:_after_ => :link)
|
52
|
+
|
53
|
+
protected
|
54
|
+
|
55
|
+
def index_label
|
56
|
+
get_label :index
|
57
|
+
end
|
58
|
+
|
59
|
+
def new_label
|
60
|
+
get_label :new
|
61
|
+
end
|
62
|
+
|
63
|
+
def edit_label
|
64
|
+
get_label :edit
|
65
|
+
end
|
66
|
+
|
67
|
+
def show_label
|
68
|
+
get_label :show
|
69
|
+
end
|
70
|
+
|
71
|
+
def delete_label
|
72
|
+
get_label :delete
|
73
|
+
end
|
74
|
+
|
75
|
+
def confirm_label
|
76
|
+
get_label :confirm
|
77
|
+
end
|
78
|
+
|
79
|
+
def get_label key
|
80
|
+
raise 'the method #auth_labels must be available on the View' if !respond_to? :auth_labels
|
81
|
+
auth_labels[key]
|
82
|
+
end
|
83
|
+
|
84
|
+
def index_obj(obj)
|
85
|
+
object_class(obj).name.pluralize.downcase
|
86
|
+
end
|
87
|
+
|
88
|
+
def object_class obj
|
89
|
+
case obj
|
90
|
+
when Array
|
91
|
+
obj.first.class
|
92
|
+
when Class
|
93
|
+
obj
|
94
|
+
else
|
95
|
+
obj.class
|
96
|
+
end
|
97
|
+
end
|
63
98
|
end
|
64
99
|
end
|
65
100
|
|