action_links 0.3.1 → 0.4.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.
@@ -51,4 +51,10 @@ Configuration is optional. Everything will work out of the box.
51
51
 
52
52
  * Namespaced objects
53
53
 
54
- action_links [:manage, @product]
54
+ action_links [:manage, @product]
55
+
56
+ * Return just the link with optional parameters
57
+
58
+ =action_link :edit, @event
59
+ // or more advanced
60
+ =action_link :clone, @event, link_wrapper: :li, url: url_for([:clone, @event]), icon: 'copy', text: 'Copy'
@@ -2,10 +2,13 @@ module ActionLinks
2
2
  class Configuration
3
3
  attr_accessor :bootstrap_action_classes
4
4
  attr_accessor :bootstrap_action_icons
5
+ attr_accessor :action_icons
5
6
 
6
7
  def initialize
7
8
  @bootstrap_action_classes = { :show => 'btn', :edit => 'btn', :destroy => 'btn btn-danger' }
8
9
  @bootstrap_action_icons = { :show => 'icon-eye-open', :edit => 'icon-pencil', :destroy => 'icon-remove icon-white' }
10
+
11
+ @action_icons = { :show => 'eye-open', :edit => 'pencil', :destroy => 'remove' }
9
12
  end
10
13
  end
11
14
  end
@@ -21,7 +21,21 @@ module ActionLinks
21
21
  end
22
22
 
23
23
  def action_link(action, object_or_array, options = {})
24
- ActionLinks::Link.new(action, object_or_array, options = {})
24
+ link = ActionLinks::Link.new(action, object_or_array, options)
25
+
26
+ link_url_or_array = options[:url] || link.url_array
27
+
28
+ if allowed_to_visit?(link) && (!current_page?(link_url_or_array) || link.destroy?) # Check user permissions on action
29
+ title = link.icon ? content_tag(:i, '', :class => "icon-#{link.icon}") + " " + link.title : link.title # append icon to title if it exists
30
+
31
+ html_link = link_to(title, link_url_or_array, link.html_options)
32
+
33
+ if options[:link_wrapper]
34
+ content_tag(options[:link_wrapper], html_link, :class=>options[:link_wrapper_class])
35
+ else
36
+ html_link # Return plain link if wrapper is not specified
37
+ end
38
+ end
25
39
  end
26
40
 
27
41
  def action_link_builder(object_or_array, options = {}, &block)
@@ -17,9 +17,19 @@ module ActionLinks
17
17
  def object_name
18
18
  @object_name ||= object.class.model_name.human
19
19
  end
20
+
21
+ def icon
22
+ @icon ||= Proc.new {
23
+ if options.include? :icon # You have to do it this was to allow support of passing nil to :icon, without it getting overridden by ActionLinks.config
24
+ options[:icon]
25
+ else
26
+ ActionLinks.config.action_icons[action] || nil
27
+ end
28
+ }.call
29
+ end
20
30
 
21
31
  def title
22
- @title ||= I18n.t(action, :scope=>'action_links', :default=>action.to_s.humanize)
32
+ @title ||= options[:text] || I18n.t(action, :scope=>'action_links', :default=>action.to_s.humanize)
23
33
  end
24
34
 
25
35
  def url_array
@@ -39,13 +49,13 @@ module ActionLinks
39
49
  end
40
50
 
41
51
  def remote?
42
- options[:remote].include? action
52
+ options[:remote].include? action if options[:remote]
43
53
  end
44
54
 
45
55
  def html_options
46
56
  return @html_options unless @html_options.nil?
47
57
 
48
- @html_options = { :class=>action.to_s.parameterize, :title=>"#{title} #{object_name}" }
58
+ @html_options = { :class=>"#{action.to_s.parameterize} #{options[:class]}", :title=>"#{title} #{object_name}" }
49
59
  @html_options[:remote] = true if remote?
50
60
 
51
61
  if action == :destroy
@@ -1,3 +1,3 @@
1
1
  module ActionLinks
2
- VERSION = '0.3.1'
2
+ VERSION = '0.4.0'
3
3
  end
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.3.1
4
+ version: 0.4.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-09-21 00:00:00.000000000 Z
13
+ date: 2012-11-16 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