Use the main menu for project related actions that support cross-project display.

git-svn-id: http://svn.redmine.org/redmine/trunk@15983 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2016-11-19 10:30:02 +00:00
parent 33d78d605d
commit 124a459d55
23 changed files with 66 additions and 14 deletions

View File

@@ -203,7 +203,21 @@ Redmine::MenuManager.map :account_menu do |menu|
end
Redmine::MenuManager.map :application_menu do |menu|
# Empty
menu.push :projects, {:controller => 'projects', :action => 'index'},
:permission => nil,
:caption => :label_project_plural
menu.push :activity, {:controller => 'activities', :action => 'index'}
menu.push :issues, {:controller => 'issues', :action => 'index'},
:if => Proc.new {User.current.allowed_to?(:view_issues, nil, :global => true)},
:caption => :label_issue_plural
menu.push :time_entries, {:controller => 'timelog', :action => 'index'},
:if => Proc.new {User.current.allowed_to?(:view_time_entries, nil, :global => true)},
:caption => :label_spent_time
menu.push :gantt, { :controller => 'gantts', :action => 'show' }, :caption => :label_gantt
menu.push :calendar, { :controller => 'calendars', :action => 'show' }, :caption => :label_calendar
menu.push :news, {:controller => 'news', :action => 'index'},
:caption => :label_news_plural
end
Redmine::MenuManager.map :admin_menu do |menu|

View File

@@ -22,6 +22,9 @@ module Redmine
module MenuController
def self.included(base)
base.class_attribute :main_menu
base.main_menu = true
base.extend(ClassMethods)
end
@@ -51,6 +54,14 @@ module Redmine
self.class.menu_items
end
def current_menu(project)
if project && !project.new_record?
:project_menu
elsif self.class.main_menu
:application_menu
end
end
# Returns the menu item name according to the current action
def current_menu_item
@current_menu_item ||= menu_items[controller_name.to_sym][:actions][action_name.to_sym] ||
@@ -77,12 +88,14 @@ module Redmine
# Renders the application main menu
def render_main_menu(project)
render_menu((project && !project.new_record?) ? :project_menu : :application_menu, project)
if menu_name = controller.current_menu(project)
render_menu(menu_name, project)
end
end
def display_main_menu?(project)
menu_name = project && !project.new_record? ? :project_menu : :application_menu
Redmine::MenuManager.items(menu_name).children.present?
menu_name = controller.current_menu(project)
menu_name.present? && Redmine::MenuManager.items(menu_name).children.present?
end
def render_menu(menu, project=nil)