dynamic_menu 3.0.0.rc2 → 3.0.0.rc3
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/lib/dynamic_menu/advanced_array.rb +13 -0
- data/lib/dynamic_menu/advanced_hash.rb +7 -2
- data/lib/dynamic_menu/base.rb +18 -4
- data/lib/dynamic_menu/inheritable_menus.rb +20 -3
- data/lib/dynamic_menu/version.rb +1 -1
- data/lib/dynamic_menu.rb +1 -0
- data/lib/engine.rb +3 -2
- data/lib/generators/dynamic_menu/templates/menu.rb +1 -2
- metadata +3 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
module DynamicMenu
|
2
|
-
module
|
2
|
+
module AdvancedObjects
|
3
3
|
class AdvancedHash
|
4
4
|
|
5
5
|
def initialize
|
@@ -7,8 +7,13 @@ module DynamicMenu
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def tap! *args, &block
|
10
|
-
|
10
|
+
yield block;
|
11
|
+
# @instance = @instance.map(*args, &block)
|
11
12
|
end
|
13
|
+
|
14
|
+
def add *args
|
15
|
+
@instance.merge(args);
|
16
|
+
end
|
12
17
|
|
13
18
|
def method_missing method, *args, &block
|
14
19
|
super unless @instance.methods.index method
|
data/lib/dynamic_menu/base.rb
CHANGED
@@ -3,11 +3,13 @@ module DynamicMenu
|
|
3
3
|
|
4
4
|
def initialize(parent)
|
5
5
|
@parent ||= parent
|
6
|
-
|
6
|
+
load_instance_vars
|
7
|
+
@menuLinks = AdvancedArray.new
|
8
|
+
build_menu
|
7
9
|
end
|
8
10
|
|
9
11
|
def get_menu_links
|
10
|
-
@menuLinks ||
|
12
|
+
@menuLinks || AdvancedArray.new
|
11
13
|
end
|
12
14
|
|
13
15
|
def method_missing(method, *args)
|
@@ -20,11 +22,23 @@ module DynamicMenu
|
|
20
22
|
file = Rails.root.to_s+"/app/menus/#{params[:controller]}/#{menu_name}.rb"
|
21
23
|
load file
|
22
24
|
links_obj = "#{menu_name}Menu".classify.constantize.new(@parent)
|
23
|
-
@menuLinks
|
25
|
+
@menuLinks << links_obj.get_menu_links
|
26
|
+
end
|
27
|
+
|
28
|
+
def load_instance_vars
|
29
|
+
@parent.instance_variables.each do |var|
|
30
|
+
instance_variable_set(var.intern,@parent.instance_variable_get(var.intern))
|
31
|
+
end
|
24
32
|
end
|
25
33
|
|
26
34
|
def menu_instance
|
27
|
-
@menuLinks ||=
|
35
|
+
@menuLinks ||= AdvancedArray.new
|
36
|
+
end
|
37
|
+
|
38
|
+
def add *args
|
39
|
+
args.each do |arg|
|
40
|
+
@menuLinks << arg
|
41
|
+
end
|
28
42
|
end
|
29
43
|
|
30
44
|
end
|
@@ -2,16 +2,33 @@ module DynamicMenu
|
|
2
2
|
module InheritableMenus
|
3
3
|
mattr_accessor :menu
|
4
4
|
@@menu = Hash.new
|
5
|
-
|
6
|
-
|
7
5
|
def get_current_menu
|
8
6
|
path = Rails.root.join('app/menus')
|
9
7
|
full_path = path + "#{params[:controller]}/#{params[:action]}.rb"
|
10
8
|
if File.exists?(full_path)
|
11
9
|
load full_path
|
12
10
|
"#{params[:action]}Menu".classify.constantize.new(self)
|
11
|
+
else
|
12
|
+
#Depending on the action (for example edit) it should look for a relationship (:create=:new or :update=:edit)
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
|
+
def dynamic_menu_file_loader controller, action
|
17
|
+
path = Rails.root.join('app/menus')
|
18
|
+
full_path += "#{controller}/#{action}.rb"
|
19
|
+
try_again_des = try_again? action
|
20
|
+
if !try_again_des.nil?
|
21
|
+
dynamic_menu_file_loader controller, try_again_des
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def try_again? action
|
26
|
+
if action == :create
|
27
|
+
return :new
|
28
|
+
elsif action == :update
|
29
|
+
return :edit
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
16
33
|
end
|
17
34
|
end
|
data/lib/dynamic_menu/version.rb
CHANGED
data/lib/dynamic_menu.rb
CHANGED
data/lib/engine.rb
CHANGED
@@ -2,8 +2,9 @@ module DynamicMenu
|
|
2
2
|
class Engine < ::Rails::Engine
|
3
3
|
initializer "dynamic_menu.inheritable_menus" do |app|
|
4
4
|
ActionView::Base.send :include, DynamicMenu::InheritableMenus
|
5
|
-
ActionView::Base.send :include, DynamicMenu::
|
6
|
-
ActionController::Base.send :include, DynamicMenu::
|
5
|
+
ActionView::Base.send :include, DynamicMenu::AdvancedObjects
|
6
|
+
ActionController::Base.send :include, DynamicMenu::AdvancedObjects
|
7
|
+
DynamicMenu::Base.send :include, DynamicMenu::AdvancedObjects
|
7
8
|
end
|
8
9
|
end
|
9
10
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
class <%= @menu_name.capitalize %>Menu < DynamicMenu::Base
|
2
2
|
def build_menu
|
3
|
-
|
4
|
-
menu["Change Me"] = "http://example.com/change_the_url"
|
3
|
+
add link_to "Change me","#" if can? :read, All #change this line and add lines using add
|
5
4
|
end
|
6
5
|
end
|
7
6
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamic_menu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.
|
4
|
+
version: 3.0.0.rc3
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -50,6 +50,7 @@ executables: []
|
|
50
50
|
extensions: []
|
51
51
|
extra_rdoc_files: []
|
52
52
|
files:
|
53
|
+
- lib/dynamic_menu/advanced_array.rb
|
53
54
|
- lib/dynamic_menu/advanced_hash.rb
|
54
55
|
- lib/dynamic_menu/base.rb
|
55
56
|
- lib/dynamic_menu/inheritable_menus.rb
|