Class: Redmine::MenuManager::MenuItem
- Includes:
- I18n
- Defined in:
- lib/redmine/menu_manager.rb
Instance Attribute Summary collapse
-
#child_menus ⇒ Object
readonly
Returns the value of attribute child_menus.
-
#condition ⇒ Object
readonly
Returns the value of attribute condition.
-
#last ⇒ Object
readonly
Returns the value of attribute last.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#param ⇒ Object
readonly
Returns the value of attribute param.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#permission ⇒ Object
readonly
Returns the value of attribute permission.
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Attributes inherited from MenuNode
Instance Method Summary collapse
-
#allowed?(user, project) ⇒ Boolean
Checks if a user is allowed to access the menu item by:.
- #caption(project = nil) ⇒ Object
- #html_options(options = {}) ⇒ Object
-
#initialize(name, url, options = {}) ⇒ MenuItem
constructor
A new instance of MenuItem.
Methods included from I18n
#current_language, #day_letter, #day_name, #find_language, #format_date, #format_hours, #format_time, included, #l, #l_hours, #l_hours_short, #l_or_humanize, #languages_options, #ll, #lu, #month_name, #set_language_if_valid, #valid_languages
Methods inherited from MenuNode
#add, #add_at, #add_last, #children, #each, #position, #prepend, #remove!, #root, #size
Constructor Details
#initialize(name, url, options = {}) ⇒ MenuItem
Returns a new instance of MenuItem.
429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 |
# File 'lib/redmine/menu_manager.rb', line 429 def initialize(name, url, ={}) if [:if] && ![:if].respond_to?(:call) raise ArgumentError, "Invalid option :if for menu item '#{name}'" end if [:html] && ![:html].is_a?(Hash) raise ArgumentError, "Invalid option :html for menu item '#{name}'" end if [:parent] == name.to_sym raise ArgumentError, "Cannot set the :parent to be the same as this item" end if [:children] && ![:children].respond_to?(:call) raise ArgumentError, "Invalid option :children for menu item '#{name}'" end @name = name @url = url @condition = [:if] @permission = [:permission] @permission ||= false if .key?(:permission) @param = [:param] || :id @caption = [:caption] @html_options = [:html] || {} # Adds a unique class to each menu item based on its name @html_options[:class] = [@html_options[:class], @name.to_s.dasherize].compact.join(' ') @parent = [:parent] @child_menus = [:children] @last = [:last] || false super @name.to_sym end |
Instance Attribute Details
#child_menus ⇒ Object (readonly)
Returns the value of attribute child_menus.
426 427 428 |
# File 'lib/redmine/menu_manager.rb', line 426 def @child_menus end |
#condition ⇒ Object (readonly)
Returns the value of attribute condition.
426 427 428 |
# File 'lib/redmine/menu_manager.rb', line 426 def condition @condition end |
#last ⇒ Object (readonly)
Returns the value of attribute last.
426 427 428 |
# File 'lib/redmine/menu_manager.rb', line 426 def last @last end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
426 427 428 |
# File 'lib/redmine/menu_manager.rb', line 426 def name @name end |
#param ⇒ Object (readonly)
Returns the value of attribute param.
426 427 428 |
# File 'lib/redmine/menu_manager.rb', line 426 def param @param end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
426 427 428 |
# File 'lib/redmine/menu_manager.rb', line 426 def parent @parent end |
#permission ⇒ Object (readonly)
Returns the value of attribute permission.
426 427 428 |
# File 'lib/redmine/menu_manager.rb', line 426 def @permission end |
#url ⇒ Object (readonly)
Returns the value of attribute url.
426 427 428 |
# File 'lib/redmine/menu_manager.rb', line 426 def url @url end |
Instance Method Details
#allowed?(user, project) ⇒ Boolean
Checks if a user is allowed to access the menu item by:
-
Checking the permission or the url target (project only)
-
Checking the conditions of the item
487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 |
# File 'lib/redmine/menu_manager.rb', line 487 def allowed?(user, project) if url.blank? # this is a virtual node that is only there for its children to be diplayed in the menu # it is considered an allowed node if at least one of the children is allowed all_children = children all_children += .call(project) if unless all_children.detect{|child| child.allowed?(user, project)} return false end elsif user && project if unless user.allowed_to?(, project) return false end elsif .nil? && url.is_a?(Hash) unless user.allowed_to?(url, project) return false end end end if condition && !condition.call(project) # Condition that doesn't pass return false end return true end |
#caption(project = nil) ⇒ Object
459 460 461 462 463 464 465 466 467 468 469 470 471 |
# File 'lib/redmine/menu_manager.rb', line 459 def caption(project=nil) if @caption.is_a?(Proc) c = @caption.call(project).to_s c = @name.to_s.humanize if c.blank? c else if @caption.nil? l_or_humanize(name, :prefix => 'label_') else @caption.is_a?(Symbol) ? l(@caption) : @caption end end end |
#html_options(options = {}) ⇒ Object
473 474 475 476 477 478 479 480 481 |
# File 'lib/redmine/menu_manager.rb', line 473 def (={}) if [:selected] o = @html_options.dup o[:class] += ' selected' o else @html_options end end |