]> source.dussan.org Git - redmine.git/commitdiff
Menus items:
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 22 Feb 2008 18:19:00 +0000 (18:19 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 22 Feb 2008 18:19:00 +0000 (18:19 +0000)
* fixed broken translation when a plugin is installed (closes #649)
* small fix to the plugin API: options parameter added to Redmine::Plugin#menu

git-svn-id: http://redmine.rubyforge.org/svn/trunk@1172 e93f8b46-1217-0410-a6f0-8f06a7374b81

extra/sample_plugin/init.rb
lib/redmine/menu_manager.rb
lib/redmine/plugin.rb

index 48a5d935cd96059c23d9c804e86b31953e92daa7..7389aaa6fbc06fc2907617b73fff9309a70e6321 100644 (file)
@@ -21,5 +21,5 @@ Redmine::Plugin.register :sample_plugin do
   end
 
   # A new item is added to the project menu
-  menu :project_menu, :label_plugin_example, :controller => 'example', :action => 'say_hello'
+  menu :project_menu, :sample_plugin, { :controller => 'example', :action => 'say_hello' }, :caption => 'Sample'
 end
index 3b29912a19d47d30abbcc0d384933723c356a37f..c645b5ce812ebe58523550a33e448d7298b5f3a6 100644 (file)
@@ -122,7 +122,7 @@ module Redmine
     
     class MenuItem
       include GLoc
-      attr_reader :name, :url, :param, :condition, :caption, :html_options
+      attr_reader :name, :url, :param, :condition, :html_options
       
       def initialize(name, url, options)
         raise "Invalid option :if for menu item '#{name}'" if options[:if] && !options[:if].respond_to?(:call)
@@ -131,9 +131,14 @@ module Redmine
         @url = url
         @condition = options[:if]
         @param = options[:param] || :id
-        @caption = options[:caption] || (l_has_string?("label_#{name}".to_sym) ? "label_#{name}".to_sym : name.to_s.humanize)
+        @caption_key = options[:caption]
         @html_options = options[:html] || {}
       end
+      
+      def caption
+        # check if localized string exists on first render (after GLoc strings are loaded)
+        @caption ||= (@caption_key || (l_has_string?("label_#{@name}".to_sym) ? "label_#{@name}".to_sym : @name.to_s.humanize))
+      end
     end    
   end
 end
index e6047974ef5cd0c13515cbf86a170947ea9aac90..36632c13efc565543bf4b777c364f9cd60493960 100644 (file)
@@ -66,11 +66,12 @@ module Redmine #:nodoc:
 
     # Adds an item to the given +menu+.
     # The +id+ parameter (equals to the project id) is automatically added to the url.
-    #   menu :project_menu, :label_plugin_example, :controller => 'example', :action => 'say_hello'
+    #   menu :project_menu, :plugin_example, { :controller => 'example', :action => 'say_hello' }, :caption => 'Sample'
     #   
-    # Currently, only the project menu can be extended. Thus, the +name+ parameter must be +:project_menu+
-    def menu(name, label, url)
-      Redmine::MenuManager.map(name) {|menu| menu.push label, url}
+    # +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}
     end
 
     # Defines a permission called +name+ for the given +actions+.