Pluggable admin menu (patch #2031 by Yuki Sonoda with slight changes).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2022 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
3f4defe482
commit
d771847078
|
@ -34,6 +34,12 @@
|
||||||
<%= link_to l(:label_settings), :controller => 'settings' %>
|
<%= link_to l(:label_settings), :controller => 'settings' %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<% menu_items_for(:admin_menu) do |item, caption, url, selected| -%>
|
||||||
|
<%= content_tag 'p',
|
||||||
|
link_to(h(caption), item.url, item.html_options),
|
||||||
|
:class => ["icon22", "icon22-#{item.name}"].join(' ') %>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
<p class="icon22 icon22-info">
|
<p class="icon22 icon22-info">
|
||||||
<%= link_to l(:label_information_plural), :controller => 'admin', :action => 'info' %>
|
<%= link_to l(:label_information_plural), :controller => 'admin', :action => 'info' %>
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -124,6 +124,10 @@ Redmine::MenuManager.map :application_menu do |menu|
|
||||||
# Empty
|
# Empty
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Redmine::MenuManager.map :admin_menu do |menu|
|
||||||
|
# Empty
|
||||||
|
end
|
||||||
|
|
||||||
Redmine::MenuManager.map :project_menu do |menu|
|
Redmine::MenuManager.map :project_menu do |menu|
|
||||||
menu.push :overview, { :controller => 'projects', :action => 'show' }
|
menu.push :overview, { :controller => 'projects', :action => 'show' }
|
||||||
menu.push :activity, { :controller => 'projects', :action => 'activity' }
|
menu.push :activity, { :controller => 'projects', :action => 'activity' }
|
||||||
|
|
|
@ -70,6 +70,15 @@ module Redmine
|
||||||
|
|
||||||
def render_menu(menu, project=nil)
|
def render_menu(menu, project=nil)
|
||||||
links = []
|
links = []
|
||||||
|
menu_items_for(menu, project) do |item, caption, url, selected|
|
||||||
|
links << content_tag('li',
|
||||||
|
link_to(h(caption), url, (selected ? item.html_options.merge(:class => 'selected') : item.html_options)))
|
||||||
|
end
|
||||||
|
links.empty? ? nil : content_tag('ul', links.join("\n"))
|
||||||
|
end
|
||||||
|
|
||||||
|
def menu_items_for(menu, project=nil)
|
||||||
|
items = []
|
||||||
Redmine::MenuManager.allowed_items(menu, User.current, project).each do |item|
|
Redmine::MenuManager.allowed_items(menu, User.current, project).each do |item|
|
||||||
unless item.condition && !item.condition.call(project)
|
unless item.condition && !item.condition.call(project)
|
||||||
url = case item.url
|
url = case item.url
|
||||||
|
@ -82,11 +91,14 @@ module Redmine
|
||||||
end
|
end
|
||||||
caption = item.caption(project)
|
caption = item.caption(project)
|
||||||
caption = l(caption) if caption.is_a?(Symbol)
|
caption = l(caption) if caption.is_a?(Symbol)
|
||||||
links << content_tag('li',
|
if block_given?
|
||||||
link_to(h(caption), url, (current_menu_item == item.name ? item.html_options.merge(:class => 'selected') : item.html_options)))
|
yield item, caption, url, (current_menu_item == item.name)
|
||||||
|
else
|
||||||
|
items << [item, caption, url, (current_menu_item == item.name)]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
links.empty? ? nil : content_tag('ul', links.join("\n"))
|
end
|
||||||
|
return block_given? ? nil : items
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue