alacarte 0.0.6 → 0.0.7
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.textile +3 -2
- data/app/helpers/alacarte_helper.rb +2 -1
- data/lib/alacarte/menu.rb +14 -5
- data/lib/alacarte/menus.rb +5 -1
- data/lib/alacarte/version.rb +1 -1
- metadata +5 -5
data/README.textile
CHANGED
@@ -73,7 +73,8 @@ YourApplication::Application.menus.draw do
|
|
73
73
|
link :other_site, 'http://someurl.com'
|
74
74
|
# ...
|
75
75
|
|
76
|
-
|
76
|
+
# add menu items with runtime methods for path generation
|
77
|
+
link :my_account, lambda { account_path(current_user) }, :if => lambda{ current_user }
|
77
78
|
|
78
79
|
end
|
79
80
|
|
@@ -101,4 +102,4 @@ The output is generated as a ul-li list with anchor elements. If there is an ele
|
|
101
102
|
<li><a href="/" class="nl active">nl</a></li>
|
102
103
|
<li><a href="/" class="fr">fr</a></li>
|
103
104
|
</ul>
|
104
|
-
</pre>
|
105
|
+
</pre>
|
@@ -20,7 +20,8 @@ module AlacarteHelper
|
|
20
20
|
|
21
21
|
_item = case item.type
|
22
22
|
when :link
|
23
|
-
|
23
|
+
_path = item.path.respond_to?(:call) ? item.path.call : item.path
|
24
|
+
link_to(item.label.html_safe, _path, _html_options)
|
24
25
|
else
|
25
26
|
content_tag(item.type, item.label, _html_options)
|
26
27
|
end
|
data/lib/alacarte/menu.rb
CHANGED
@@ -3,10 +3,10 @@ module Alacarte
|
|
3
3
|
# Alacarte::Menu is the base class for defining menu items.
|
4
4
|
class Menu
|
5
5
|
|
6
|
-
VALID_ELEMENTS = [:link, :span]
|
6
|
+
VALID_ELEMENTS = [:link, :span, :separator, :title, :subtitle, :line]
|
7
7
|
@@env = nil
|
8
8
|
|
9
|
-
attr_reader :parent, :type, :name, :deep_name, :path, :as, :label, :options, :items, :
|
9
|
+
attr_reader :parent, :type, :name, :deep_name, :path, :as, :label, :options, :items, :blocks, :html_options, :group_options, :wrapper_options, :translation_key
|
10
10
|
|
11
11
|
# Tests if an environment was set to the Alacarte::Menu
|
12
12
|
def self.env?
|
@@ -49,7 +49,8 @@ module Alacarte
|
|
49
49
|
@translation_key = (block_given? && @type != :menu) ? "#{deep_name}.root" : "#{deep_name}"
|
50
50
|
@label = options[:label] || I18n.t("alacarte.menus.#{@translation_key}", :default => @translation_key.to_s)
|
51
51
|
@as = options[:as] || @name
|
52
|
-
@
|
52
|
+
@blocks = []
|
53
|
+
@blocks << block if block_given?
|
53
54
|
@html_options = options[:html]
|
54
55
|
@group_options = options[:group]
|
55
56
|
@wrapper_options = options[:wrapper]
|
@@ -57,9 +58,13 @@ module Alacarte
|
|
57
58
|
build
|
58
59
|
end
|
59
60
|
|
61
|
+
def extend(&block)
|
62
|
+
@blocks << block if block_given?
|
63
|
+
end
|
64
|
+
|
60
65
|
# Tests if a block was passed to the Alacarte::Menu object
|
61
66
|
def block?
|
62
|
-
|
67
|
+
(@blocks.size > 0)
|
63
68
|
end
|
64
69
|
|
65
70
|
# Builds the menu, based on the environment that is passed.
|
@@ -67,7 +72,11 @@ module Alacarte
|
|
67
72
|
@@env = env if env
|
68
73
|
@items = []
|
69
74
|
|
70
|
-
|
75
|
+
if Menu.env? && self.block?
|
76
|
+
@blocks.each do |block|
|
77
|
+
self.instance_eval(&block)
|
78
|
+
end
|
79
|
+
end
|
71
80
|
end
|
72
81
|
|
73
82
|
# Tests to see if the current menu item is valid in the current setting
|
data/lib/alacarte/menus.rb
CHANGED
@@ -9,7 +9,11 @@ module Alacarte
|
|
9
9
|
|
10
10
|
# Define a menu in a draw block
|
11
11
|
def menu(name, *args, &block)
|
12
|
-
self[name]
|
12
|
+
if self[name]
|
13
|
+
self[name].extend(&block)
|
14
|
+
else
|
15
|
+
self[name] = Menu.new(nil, :menu, name, *args, &block)
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
end
|
data/lib/alacarte/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alacarte
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 7
|
10
|
+
version: 0.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Stijn Mathysen
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2012-04-24 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: This Rails plugin allows you to create a menu system, using a dsl (similar to routes).
|
@@ -75,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
75
|
requirements: []
|
76
76
|
|
77
77
|
rubyforge_project: alacarte
|
78
|
-
rubygems_version: 1.8.
|
78
|
+
rubygems_version: 1.8.10
|
79
79
|
signing_key:
|
80
80
|
specification_version: 3
|
81
81
|
summary: Provides a generic menu system for Rails
|