diff options
Diffstat (limited to 'modules/gallery/libraries')
| -rw-r--r-- | modules/gallery/libraries/Menu.php | 19 | ||||
| -rw-r--r-- | modules/gallery/libraries/Theme_View.php | 14 | 
2 files changed, 26 insertions, 7 deletions
diff --git a/modules/gallery/libraries/Menu.php b/modules/gallery/libraries/Menu.php index 83bd1616..79274057 100644 --- a/modules/gallery/libraries/Menu.php +++ b/modules/gallery/libraries/Menu.php @@ -23,6 +23,11 @@ class Menu_Element {    public $css_id;    public $css_class;    public $id; +  public $type; + +  public function __construct($type) { +    $this->type = $type; +  }    /**     * Set the id @@ -125,26 +130,26 @@ class Menu_Core extends Menu_Element {    public static function factory($type) {      switch($type) {      case "link": -      return new Menu_Element_Link(); +      return new Menu_Element_Link($type);      case "dialog": -      return new Menu_Element_Dialog(); +      return new Menu_Element_Dialog($type);      case "root": -      $menu = new Menu(); -      $menu->is_root = true; -      return $menu; +      return  new Menu("root");      case "submenu": -      return new Menu(); +      return new Menu("submenu");      default:        throw Exception("@todo UNKNOWN_MENU_TYPE");      }    } -  public function __construct() { +  public function __construct($type) { +    parent::__construct($type);      $this->elements = array(); +    $this->is_root = $type == "root";    }    /** diff --git a/modules/gallery/libraries/Theme_View.php b/modules/gallery/libraries/Theme_View.php index 31c2faa7..904a3c07 100644 --- a/modules/gallery/libraries/Theme_View.php +++ b/modules/gallery/libraries/Theme_View.php @@ -103,11 +103,25 @@ class Theme_View_Core extends View {            call_user_func_array(array($class, "site"), array(&$menu, $this));          }        } + +      $this->_remove_empty_items($menu);      }      print $menu;    } +  private function _remove_empty_items($menu) { +    foreach ($menu->elements as $target_id => $element) { +      if ($element->type == "submenu") { +        if (empty($element->elements)) { +          $menu->remove($target_id); +        } else { +          $this->_remove_empty_items($element); +        } +      } +    } +  } +    public function album_menu() {      $this->_menu("album");    }  | 
