diff --git a/lib/redmine/menu_manager.rb b/lib/redmine/menu_manager.rb index f6431928ef1ed3eb11e2ea0e8a2f0e63841a75d9..730097d745692fe5ad7e451e4bb703d308de8f6c 100644 --- a/lib/redmine/menu_manager.rb +++ b/lib/redmine/menu_manager.rb @@ -94,7 +94,11 @@ module Redmine def map(menu_name) @items ||= {} mapper = Mapper.new(menu_name.to_sym, @items) - yield mapper + if block_given? + yield mapper + else + mapper + end end def items(menu_name) diff --git a/lib/redmine/plugin.rb b/lib/redmine/plugin.rb index cf6c194a268cc88ae6e8dc52df31cd95506e6ed9..8123003cc463a98cdfebcb6fdb9537a07a3f0bfa 100644 --- a/lib/redmine/plugin.rb +++ b/lib/redmine/plugin.rb @@ -70,8 +70,14 @@ module Redmine #:nodoc: # # +name+ parameter can be: :top_menu, :account_menu, :application_menu or :project_menu # - def menu(name, item, url, options={}) - Redmine::MenuManager.map(name) {|menu| menu.push item, url, options} + def menu(menu, item, url, options={}) + Redmine::MenuManager.map(menu).push(item, url, options) + end + alias :add_menu_item :menu + + # Removes +item+ from the given +menu+. + def delete_menu_item(menu, item) + Redmine::MenuManager.map(menu).delete(item) end # Defines a permission called +name+ for the given +actions+.