Ejemplo n.º 1
0
 function setMenuItemsMenuPath($items)
 {
     $this->setMenuItems(WFMenuTree::menuTreeBuildingToMenuTree($items));
 }
Ejemplo n.º 2
0
 /**
  *  Builds a hierarchical array of {@link WFMenuItemBasic} objects from the passed hierarchical associative array.
  *
  *  assoc array format:
  *  <code>
  *  $menuArray = array(
  *                  'topMenu1' => array(
  *                                      'Menu Item 1' => '/link/to/target1',
  *                                      'Menu Item 2' => '/link/to/target2',
  *                                      'Menu Item 2' => WFMenuItemBasic::WFMenuItemBasic()->setLink('http://yahoo.com')->setTarget('_blank')
  *                                      ),
  *                  'topMenuItem2' => '/link/to/target'
  *                  );
  *  </code>
  *
  *  NOTE: This function is very useful for converting menus set up in skin delegates (ie namedContent) to nice menus.
  *
  *  @param array The array of menu items.
  *  @param object WFMenuItemBasic The menu item to add items found to as submenus.
  *  @return array An array of WFMenuItemBasic objects.
  */
 static function nestedArrayToMenuTree($menuArray, $addToMenuItem = null)
 {
     $topMenuItems = array();
     foreach ($menuArray as $label => $value) {
         if ($value instanceof WFMenuItemBasic) {
             $currentMenuItem = $value;
             if ($currentMenuItem->label() === NULL) {
                 $currentMenuItem->setLabel($label);
             }
         } else {
             $currentMenuItem = new WFMenuItemBasic();
             $currentMenuItem->setLabel($label);
         }
         if ($addToMenuItem == NULL) {
             $topMenuItems[] = $currentMenuItem;
         } else {
             $addToMenuItem->addChild($currentMenuItem);
         }
         if (is_array($value)) {
             $item = WFMenuTree::nestedArrayToMenuTree($value, $currentMenuItem);
         } else {
             if (!$value instanceof WFMenuItemBasic) {
                 $currentMenuItem->setLink($value);
             }
         }
     }
     return $topMenuItems;
 }