Class: Menu

  • Package: saf.GUI
  • Author: John Luxford <lux@simian.ca>
  • Copyright: Copyright (C) 2001-2003, Simian Systems Inc.
  • License: http://www.sitellite.org/index/license Simian Open Software License
  • Version: 2.6, 2003-06-18, $Id: Menu.php,v 1.12 2007/12/20 09:07:53 lux Exp $
  • Access: public

Menu is a class that is used to generate navigation systems on the
fly on web sites, based on a self-referencial database table structure.

New in 1.2:
- Fixed a PHP4.2+ compatibility issue where it was calling $GLOBALS['PHP_SELF'],
now it calls $_SERVER['PHP_SELF'], and calls global $_SERVER so that versions
of PHP prior to 4.1 can rely on a $_SERVER reference to $HTTP_SERVER_VARS.

New in 2.0:
- Rewritten so that Menu is no longer so strongly tied to EasyText. The PHP
API is much improved. New features include loading of the site tree in a
single database call (in the getTree() method), and storing the resulting
tree in memory or in a file as PHP code (created using the buildConfig()
method) which can be retrived using the loadConfig() method. Trees can also
be built manually using the addItem() method, which takes care off all the
messy stuff for you.
- Moved from saf.EasyText.Menu to saf.GUI.Menu.

New in 2.2:
- Changed addItem() so that it returns a reference to the new item object.

New in 2.4:
- Changed sorting order to be by $showcol instead of $idcol.

New in 2.6:
- Removed the EasyText() and EasyTextInit() methods.
- Added the countChildren() and getChildren() methods.

New in 2.8:
- Added sort_weight field.


Usage Example


<?php

$menu 
= new Menu ('sitellite_page''id''title''below_page');

$menu->getTree ();

echo 
$menu->trail ('contact''<a href="/index/##id##">##title##</a>');

?>

Return to Top



Properties


$template

  • Access: public

The template to use to generate the menu item.


$fill

  • Access: public

The object or associative array to use to fill the template with upon
calling render().


$span

  • Access: public

The span of this cell. Set to -1 and the cell will disappear. Use
$this->attrs['colspan'] or ['rowspan'] to set these properties in the
corresponding HTML <td> tag.


$attrs = array ()

  • Access: public

Contains all HTML <td> properties for the current object.


$default

  • Access: public

$default is an optional default value to place in cells whose
templates result in no output.


$type = 'db'


$collection


$limit


$fields


$total = 0


$list = false


$remember = array ()


$skipHeaders = array ()


$header = ''


$footer = ''


$editUrl = false


$addUrl = false


$deleteUrl = false


$error

  • Access: public

Contains the most recent error message if an error has occurred,
false otherwise.


$name

  • Access: public

The name of the menu.


$xpos

  • Access: public

The distance from the left edge of the browser window to display
the menu in collapsible display mode. Default is 0.


$ypos

  • Access: public

The distance from the top edge of the browser window to display
the menu in collapsible display mode. Default is 0.


$menuWidth

  • Access: public

The width of the drop menu this item is a part of. Used for
inheriting to a child menu.


$lineHeight

  • Access: public

The height of this item and each item in its parent drop menu.
Used for inheriting to a child menu.


$itemTemplate

  • Access: public

The template used to draw each drop menu item.


$direction = 'right'

  • Access: public

The direction of the drop menu this item is a part of. Used for
inheriting to a child menu.


$items = array ()

  • Access: public

An array of DropMenuItem objects


$extraMouseOver = ''

  • Access: public

Optional extra JavaScript to call when the item is in focus.


$extraMouseOut = ''

  • Access: public

Optional extra JavaScript to call when the item loses focus.


$text

  • Access: public

The text of the menu item.


$link

  • Access: public

The URL to link this item to.


$menu_tpl

  • Access: public

The menu template to use to generate child drop menus.


$child

  • Access: public

The child DropMenu object of this item.


$mouseover

  • Access: private

The private mouseover data detailing this item's behaviour.


$matrix = array ()

  • Access: public

Contains the grid.


$table

  • Access: public

The name of the database table (if any) that this menu is being
pulled from.


$row = array ()

  • Access: public

Contains all HTML <tr> properties for the current object.


$cell = array ()

  • Access: public

Contains all HTML <td> properties for the current object,
if this layout is not the top-level layout object.


$tree

  • Access: public

Contains a multi-dimensional array of MenuItem objects.


$idcolumn

  • Access: public

The name of the column in the database table that contains the
primary key values.


$showcolumn

  • Access: public

The name of the column in the database table that is to be
displayed.


$refcolumn

  • Access: public

The name of the column in the database table that makes a
self-reference to the primary key, or id, column.


$listcolumn

  • Access: public

The name of the column in the database table that says
whether or not to display each record as an item.


$sortcolumn

  • Access: public

The field to sort by, in case of a sort field. A sort field outweighs
the default sorting alphabetically.


$sortorder

  • Access: public

The sort order, either 'ASC' (ascending) or 'DESC' (descending).


$sitelliteAllowed

  • Access: public

Specifies whether or not to use the global $sitellite object
(from the Sitellite CMS-only package saf.App.Conf.Sitellite) to add
automatic permission limits on the database query. For more information,
see saf.App.Conf.Sitellite in DocReader.


$cache = false


$cacheLocation = 'cache/.menu'


$closedPic

  • Access: public

The path to the image to use for the'"closed' graphic in the
collapsible display mode. Defaults to '/pix/false.gif'.


$openedPic

  • Access: public

The path to the image to use for the'"opened' graphic in the
collapsible display mode. Defaults to '/pix/true.gif'.


$hideValue

  • Access: public

The value that the database column in $listcolumn is supposed
to contain when a field is not to be shown. Defaults to 'no'.


$colours

  • Access: public

A list of background colours to use to differentiate between
levels in the collapsible display mode. Starts at #ffffff (white) and
goes down to #999999 (medium grey) and back.


$jsDir

  • Access: public

The directory to find the JavaScript for the collapsible view
in. Default is '/js'.


$includedJs

  • Access: public

Remembers whether or not the JavaScript for the collapsible
display mode has been included yet or not.


$initFunc

  • Access: public

The name of the JavaScript init() function for this menu.
Different menus on the same page need separate init() functions.
The default is 'saf_xbinit_' plus the name of the database table
linked to this menu.

Return to Top



Methods


Menu ($table = '', $idcol = '', $showcol = '', $refcol = '', $listcol = '', $sectioncol = '', $templatecol = '')

  • Access: public

Constructor method.


getTree ()

  • Access: public
  • Return: boolean

Builds the item tree from the database table specified.


findParent ($ref)


&addItem ($id, $title, $ref = '', $sect = '', $template = '')

  • Access: public
  • Return: object reference

Adds an item to the tree. $ref is the id of the parent item.


loadConfig ($file)

  • Access: public

Loads the item tree from an include file or string.


makeConfig ()

  • Access: public
  • Return: string

Creates the PHP code for a config file from the item tree.


display ($mode = 'html', $tplt = '', $recursive = 1)

  • Access: public
  • Return: string

Renders the menu. $mode can be 'html' or 'collapsible'.
$tplt can be a single template or an array of templates. If $recursive
is set to 0 or false, it will only render a single level of the tree.
Note: Do not set $recursive to true, rather set it to 1, so that it
can be used to count the level of depth within the menu structure a
given item is, and so it will use the proper template if $tplt is
an array.


trail ($id, $tplt = '', $home = true, $separator = ' &gt; ')

  • Access: public
  • Return: array

Generates a breadcrumb trail from the start of the tree to the
specified item, returned as an array of template-rendered items. If
$home is true, add a 'home' link by calling the homeLink() method.


includeJavaScript ()

  • Access: public
  • Return: string

Returns the HTML code to include the necessary JavaScript files
for the collapsible display mode.


homeLink ($tplt)

  • Access: public
  • Return: string

Returns a 'home' link. Called by the trail() method to add an
optional 'home' link to breadcrumb trails. The home link id is always
'index', and the title is always 'Home', which can be changed or translated
if a global $intl saf.I18n object is found.


section ($id = '', $tplt = '', $open = '', $recursive = false, $skip = '')

  • Access: public
  • Return: string

Returns a section of the item tree, rendered as an XHTML-compliant
unordered list. $open allows you to specify the id of a single item in
the section which can be 'opened' to either one more level or entirely (if
$recursive is set to true). This makes it possible to display a section
such as a product list and while the visitor is viewing a specific product,
to also show sub-links pertaining to that product. $skip specifies an
optional item to ignore (ie. in a "related links" context, ignore the
current item).


countChildren ($id = false)

  • Access: public
  • Return: integer

Returns the number of child items of the specified item.
If $id is not specified, returns the number of top-level items.


getChildren ($id = false)

  • Access: public
  • Return: array

Returns the children of the specified item.
If $id is not specified, returns the top-level items.


clear ()

  • Access: public

Clears the item tree.


getSections ($item = false)

  • Access: public

Retrieves a list of all of the items denoted as section roots.

Return to Top

Copyright © 2008 Sitellite CMS Project

Powered by Sitellite 5.0 Content Management System