diff options
| author | Andy Staudacher <andy.st@gmail.com> | 2009-11-15 19:44:47 -0800 | 
|---|---|---|
| committer | Andy Staudacher <andy.st@gmail.com> | 2009-11-15 19:44:47 -0800 | 
| commit | 0733dc37fda27a5ba35f9020edf3c66aa41a95a0 (patch) | |
| tree | 6877946232f1b01b1c8709054c689f6658cef34f /modules/gallery/libraries/Menu.php | |
| parent | 218493c50be9362d4abed6900a816308fee5d978 (diff) | |
| parent | 9379308f91a476f790fb8d444536719535c584e4 (diff) | |
Merge commit 'upstream/master'
Conflicts:
	modules/gallery/tests/xss_data.txt
Diffstat (limited to 'modules/gallery/libraries/Menu.php')
| -rw-r--r-- | modules/gallery/libraries/Menu.php | 90 | 
1 files changed, 31 insertions, 59 deletions
| diff --git a/modules/gallery/libraries/Menu.php b/modules/gallery/libraries/Menu.php index 07b2b2b8..e2b68d1a 100644 --- a/modules/gallery/libraries/Menu.php +++ b/modules/gallery/libraries/Menu.php @@ -43,6 +43,11 @@ class Menu_Element {     * @chainable     */    public function label($label) { +    // Guard against developers who forget to internationalize label strings +    if (!($label instanceof SafeString)) { +      $label = new SafeString($label); +    } +      $this->label = $label;      return $this;    } @@ -74,25 +79,25 @@ class Menu_Element {      return $this;    } +  /** +   * Specifiy a view for this menu item +   * @chainable +   */ +  public function view($view) { +    $this->view = $view; +    return $this; +  } +  }  /**   * Menu element that provides a link to a new page.   */  class Menu_Element_Link extends Menu_Element { -  public function __toString() { -    if (isset($this->css_id) && !empty($this->css_id)) { -      $css_id = " id=\"$this->css_id\""; -    } else { -      $css_id = ""; -    } -    if (isset($this->css_class) && !empty($this->css_class)) { -      $css_class = " $this->css_class"; -    } else { -      $css_class = ""; -    } -    return "<li><a$css_id class=\"gMenuLink $css_class\" href=\"$this->url\" " . -      "title=\"$this->label\">$this->label</a></li>"; +  public function render() { +    $view = new View(isset($this->view) ? $this->view : "menu_link.html"); +    $view->menu = $this; +    return $view;    }  } @@ -111,19 +116,10 @@ class Menu_Element_Ajax_Link extends Menu_Element {      return $this;    } -  public function __toString() { -    if (isset($this->css_id) && !empty($this->css_id)) { -      $css_id = " id=\"$this->css_id\""; -    } else { -      $css_id = ""; -    } -    if (isset($this->css_class) && !empty($this->css_class)) { -      $css_class = " $this->css_class"; -    } else { -      $css_class = ""; -    } -    return "<li><a$css_id class=\"gAjaxLink $css_class\" href=\"$this->url\" " . -      "title=\"$this->label\" ajax_handler=\"$this->ajax_handler\">$this->label</a></li>"; +  public function render() { +    $view = new View(isset($this->view) ? $this->view : "menu_ajax_link.html"); +    $view->menu = $this; +    return $view;    }  } @@ -131,19 +127,10 @@ class Menu_Element_Ajax_Link extends Menu_Element {   * Menu element that provides a pop-up dialog   */  class Menu_Element_Dialog extends Menu_Element { -  public function __toString() { -    if (isset($this->css_id) && !empty($this->css_id)) { -      $css_id = " id=\"$this->css_id\""; -    } else { -      $css_id = ""; -    } -    if (isset($this->css_class) && !empty($this->css_class)) { -      $css_class = " $this->css_class"; -    } else { -      $css_class = ""; -    } -    return "<li><a$css_id class=\"gDialogLink $css_class\" href=\"$this->url\" " . -           "title=\"$this->label\">$this->label</a></li>"; +  public function render() { +    $view = new View(isset($this->view) ? $this->view : "menu_dialog.html"); +    $view->menu = $this; +    return $view;    }  } @@ -171,7 +158,7 @@ class Menu_Core extends Menu_Element {      case "root":        $menu = new Menu("root"); -      $menu->css_class("gMenu"); +      $menu->css_class("g-menu");        return $menu;      case "submenu": @@ -182,19 +169,6 @@ class Menu_Core extends Menu_Element {      }    } -  public function compact() { -    foreach ($this->elements as $target_id => $element) { -      if ($element->type == "submenu") { -        if (empty($element->elements)) { -          $this->remove($target_id); -        } else { -          $element->compact(); -        } -      } -    } -    return $this; -  } -    public function __construct($type) {      parent::__construct($type);      $this->elements = array(); @@ -242,11 +216,9 @@ class Menu_Core extends Menu_Element {      return null;    } -  public function __toString() { -    $html = $this->is_root ? "<ul class=\"$this->css_class\">" : -      "<li title=\"$this->label\"><a href=\"#\">$this->label</a><ul>"; -    $html .= implode("\n", $this->elements); -    $html .= $this->is_root ? "</ul>" : "</ul></li>"; -    return $html; +  public function render() { +    $view = new View(isset($this->view) ? $this->view : "menu.html"); +    $view->menu = $this; +    return $view;    }  } | 
