action_links 0.2.2 → 0.3.0
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.rdoc +20 -6
- data/lib/action_links.rb +10 -1
- data/lib/action_links/configuration.rb +11 -0
- data/lib/action_links/helpers.rb +46 -6
- data/lib/action_links/version.rb +1 -1
- metadata +3 -2
data/README.rdoc
CHANGED
@@ -16,25 +16,39 @@ From the command line
|
|
16
16
|
> bundle install
|
17
17
|
|
18
18
|
|
19
|
+
== Configuration
|
20
|
+
|
21
|
+
Configuration is optional. Everything will work out of the box.
|
22
|
+
|
23
|
+
ActionLinks.configure do |config|
|
24
|
+
config.bootstrap_action_classes = { :show => 'btn', :edit => 'btn', :destroy => 'btn btn-danger' }
|
25
|
+
config.bootstrap_action_icons = { :show => 'icon-eye-open', :edit => 'icon-pencil', :destroy => 'icon-remove icon-white' }
|
26
|
+
end
|
27
|
+
|
19
28
|
== Usage
|
20
29
|
|
21
30
|
* Basic Usage
|
22
31
|
|
23
|
-
|
32
|
+
action_links @user
|
24
33
|
|
25
34
|
* Include actions
|
26
35
|
|
27
|
-
|
36
|
+
action_links @user, :include => [:download]
|
28
37
|
|
29
38
|
* Exclude actions
|
30
39
|
|
31
|
-
|
40
|
+
action_links @user, :exclude => [:edit, :destroy]
|
32
41
|
|
33
42
|
* Pass in block
|
34
43
|
|
35
|
-
|
36
|
-
|
44
|
+
action_links @user do
|
45
|
+
link_to "Hello World", dashboard_path
|
46
|
+
end
|
47
|
+
|
48
|
+
* Bootstrap buttons. See configuration to customize button types and icons.
|
49
|
+
|
50
|
+
bootstrap_action_links @user
|
37
51
|
|
38
52
|
* Namespaced objects
|
39
53
|
|
40
|
-
|
54
|
+
action_links [:manage, @product]
|
data/lib/action_links.rb
CHANGED
@@ -2,4 +2,13 @@ require 'action_links/version'
|
|
2
2
|
require 'action_links/engine' if defined?(Rails)
|
3
3
|
|
4
4
|
module ActionLinks
|
5
|
-
|
5
|
+
require 'action_links/configuration'
|
6
|
+
|
7
|
+
def self.configure
|
8
|
+
yield config
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.config
|
12
|
+
@config ||= Configuration.new
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module ActionLinks
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :bootstrap_action_classes
|
4
|
+
attr_accessor :bootstrap_action_icons
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@bootstrap_action_classes = { :show => 'btn', :edit => 'btn', :destroy => 'btn btn-danger' }
|
8
|
+
@bootstrap_action_icons = { :show => 'icon-eye-open', :edit => 'icon-pencil', :destroy => 'icon-remove icon-white' }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/action_links/helpers.rb
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
module ActionLinks
|
2
2
|
module Helpers
|
3
|
-
|
4
|
-
def action_links(object_or_array, options={}, &block)
|
3
|
+
def action_links(object_or_array, options = {}, &block)
|
5
4
|
list = ActionLinks::List.new(object_or_array, options)
|
6
5
|
|
7
6
|
links = list.links.map { |link|
|
8
|
-
|
9
|
-
|
10
|
-
link_to(link.title, link.url_array, link.html_options)
|
11
|
-
end
|
7
|
+
if allowed_to_visit?(link) && !already_at?(link)
|
8
|
+
link_to(link.title, link.url_array, link.html_options)
|
12
9
|
end
|
13
10
|
}
|
14
11
|
|
@@ -22,5 +19,48 @@ module ActionLinks
|
|
22
19
|
}.join("\n").html_safe
|
23
20
|
end
|
24
21
|
end
|
22
|
+
|
23
|
+
def action_link(action, object_or_array, options = {})
|
24
|
+
ActionLinks::Link.new(action, object_or_array, options = {})
|
25
|
+
end
|
26
|
+
|
27
|
+
def action_link_builder(object_or_array, options = {}, &block)
|
28
|
+
ActionLinks::List.new(object_or_array, options).links.each do |link|
|
29
|
+
if allowed_to_visit?(link) && !already_at?(link)
|
30
|
+
yield(link)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
|
37
|
+
def bootstrap_action_links(object_or_array, options = {})
|
38
|
+
css_classes = options[:bootstrap_action_classes] || ActionLinks.config.bootstrap_action_classes
|
39
|
+
icons = options[:bootstrap_action_icons] || ActionLinks.config.bootstrap_action_icons
|
40
|
+
|
41
|
+
links = []
|
42
|
+
|
43
|
+
ActionLinks::List.new(object_or_array, options).links.each do |link|
|
44
|
+
if allowed_to_visit?(link) && !already_at?(link)
|
45
|
+
links << link_to(link.url_array, link.html_options.merge(:class => css_classes[link.action])) do
|
46
|
+
link_content = [content_tag(:span, link.title, :class => :title)]
|
47
|
+
link_content.unshift(content_tag(:i, '', :class => icons[link.action])) if icons[link.action]
|
48
|
+
link_content.join(' ').html_safe
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
links.join("\n").html_safe
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def already_at?(link)
|
59
|
+
current_page?(link.url_array) && !link.destroy?
|
60
|
+
end
|
61
|
+
|
62
|
+
def allowed_to_visit?(link)
|
63
|
+
permitted_to?(link.action, link.object)
|
64
|
+
end
|
25
65
|
end
|
26
66
|
end
|
data/lib/action_links/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: action_links
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-07-13 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: Automatically includes action links (show, edit, destroy) based on the
|
16
16
|
current page and user roles/permissions
|
@@ -26,6 +26,7 @@ files:
|
|
26
26
|
- Rakefile
|
27
27
|
- action_links.gemspec
|
28
28
|
- lib/action_links.rb
|
29
|
+
- lib/action_links/configuration.rb
|
29
30
|
- lib/action_links/engine.rb
|
30
31
|
- lib/action_links/helpers.rb
|
31
32
|
- lib/action_links/link.rb
|