示例#1
0
 /**
  * Output a navigation menu
  *
  */
 public function OutputMenu($menu, $start_level, $source_menu = false)
 {
     global $page, $gp_menu, $gp_titles, $GP_MENU_LINKS, $GP_MENU_CLASS, $GP_MENU_CLASSES;
     //source menu
     if ($source_menu === false) {
         $source_menu =& $gp_menu;
     }
     // opening ul
     $attr_ul = $this->clean_attributes;
     $attr_ul['class']['menu_top'] = $GP_MENU_CLASSES['menu_top'];
     if (\gp\tool\Output::$edit_area_id) {
         $attr_ul['id'] = \gp\tool\Output::$edit_area_id;
         $attr_ul['class']['editable_area'] = 'editable_area';
     }
     // Without any output the menu wouldn't be editable
     // An empty <ul> is not valid
     if (!count($menu)) {
         $attr_ul['class']['empty_menu'] = 'empty_menu';
         $this->FormatMenuElement('div', $attr_ul);
         echo '</div>';
         return;
     }
     $this->prev_level = $start_level;
     $open = false;
     $li_count = array();
     $this->parents = \gp\tool::Parents($page->gp_index, $source_menu);
     //output
     $this->FormatMenuElement('ul', $attr_ul);
     $menu = array_keys($menu);
     foreach ($menu as $menu_ii => $menu_key) {
         $this->curr_key = $menu_key;
         $this->curr_info = $source_menu[$menu_key];
         $this->curr_level = $this->curr_info['level'];
         if ($this->HiddenLevel()) {
             continue;
         }
         $attr_a = $this->MenuAttributesA();
         $attr_li = $this->clean_attributes;
         $attr_ul = $this->clean_attributes;
         //ordered or "indexed" classes
         if ($page->menu_css_ordered && !empty($GP_MENU_CLASSES['li_'])) {
             for ($i = $this->prev_level; $i > $this->curr_level; $i--) {
                 unset($li_count[$i]);
             }
             if (!isset($li_count[$this->curr_level])) {
                 $li_count[$this->curr_level] = 0;
             } else {
                 $li_count[$this->curr_level]++;
             }
             $attr_li['class']['li_'] = $GP_MENU_CLASSES['li_'] . $li_count[$this->curr_level];
         }
         if ($page->menu_css_indexed && !empty($GP_MENU_CLASSES['li_title_'])) {
             $attr_li['class']['li_title_'] = $GP_MENU_CLASSES['li_title_'] . $this->curr_key;
         }
         //selected classes
         $next_index = $menu_ii + 1;
         if (array_key_exists($next_index, $menu)) {
             $next_index = $menu[$next_index];
             if ($this->curr_level < $source_menu[$next_index]['level']) {
                 $attr_a['class']['haschildren'] = $GP_MENU_CLASSES['haschildren'];
                 $attr_li['class']['haschildren_li'] = $GP_MENU_CLASSES['haschildren_li'];
             }
         }
         $this->Attrs($attr_a, $attr_li);
         $this->FormatStart($menu_ii, $attr_li, $attr_ul, $open);
         $this->FormatMenuElement('li', $attr_li);
         $this->FormatMenuElement('a', $attr_a);
         $this->prev_level = $this->curr_level;
         $open = true;
     }
     $this->CloseLevel($start_level);
     if ($open) {
         echo '</li></ul>';
     }
 }
示例#2
0
 /**
  * Traverse the main menu upwards looking for a configuration setting for $var
  * Start at the title represented by $checkId
  * Set $value to the configuration setting if a parent page has the configuration setting
  *
  * @return bool
  */
 static function ParentConfig($checkId, $var, &$value)
 {
     global $gp_titles, $gp_menu;
     $parents = \gp\tool::Parents($checkId, $gp_menu);
     foreach ($parents as $parent_index) {
         if (!empty($gp_titles[$parent_index][$var])) {
             $value = $gp_titles[$parent_index][$var];
             return true;
         }
     }
     return false;
 }
示例#3
0
 /**
  * Get the css class representing the current page's visibility
  *
  */
 public static function VisibilityClass($class, $index)
 {
     global $gp_menu, $gp_titles;
     if (isset($gp_titles[$index]['vis'])) {
         $class .= ' private-list';
         return $class;
     }
     $parents = \gp\tool::Parents($index, $gp_menu);
     foreach ($parents as $parent_index) {
         if (isset($gp_titles[$parent_index]['vis'])) {
             $class .= ' private-inherited';
             break;
         }
     }
     return $class;
 }