01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
|
|
<?php
/******************************************************************************/
/* */
/* __ ____ */
/* ___ / / ___ / __/__ __ _____________ ___ */
/* / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-< */
/* / .__/_//_/ .__/___/\___/\_,_/_/ \__/\__/___/ */
/* /_/ /_/ */
/* */
/* */
/******************************************************************************/
/* */
/* Titre : Classes de génération de menu (sans base de données) */
/* */
/* URL : http://www.phpsources.org/scripts430-PHP.htm */
/* Auteur : bud */
/* Date édition : 22 Juil 2008 */
/* */
/******************************************************************************/
/**
*** Menu building class
*** => complete constructor to add new items
**/
class Menu
{
/**
*** +---------------------------------------------------------------+
*** | Menu |
*** +---------------------------------------------------------------+
*** | brief class constructor |
*** +---------------------------------------------------------------+
**/
function Menu()
{
$this->add("home", "index.php");
$this->add("category name 1", "cat2.php");
$this->add("category name 1", "cat2.php");
}
/**
*** +---------------------------------------------------------------+
*** | add |
*** +---------------------------------------------------------------+
*** | brief add an item to the menu |
*** | param $name: screen name of the link |
*** | param $page: path to the page to call |
*** +---------------------------------------------------------------+
**/
function add($name, $page)
{
$this->$page->name = $name;
$this->$page->page = $page;
}
}
/**
*** Sub-Menu building class
*** => complete build() method to add new items
**/
class Submenu extends Menu
{
var $menu;
/**
*** +---------------------------------------------------------------+
*** | Submenu |
*** +---------------------------------------------------------------+
*** | brief class constructor |
*** +---------------------------------------------------------------+
**/
function Submenu($menu)
{
$this->menu = $menu;
$this->build();
}
/**
*** +---------------------------------------------------------------+
*** | build |
*** +---------------------------------------------------------------+
*** | brief build submenu object |
*** | param $name: title of the page |
*** | param $page: title of the page |
*** | param $submenu: title of the page |
*** +---------------------------------------------------------------+
**/
function build()
{
switch( $this->menu )
{
case 'index.php':
case 'sub11.php':
case 'sub12.php':
case 'sub13.php':
$this->menu = 'cat1.php';
parent::add("sub 1 1", "sub11.php");
parent::add("sub 1 2", "sub12.php");
parent::add("sub 1 3", "sub13.php");
break;
case 'cat2.php':
case 'sub21.php':
case 'sub22.php':
case 'sub23.php':
$this->menu = 'cat2.php';
parent::add("sub 2 1", "sub21.php");
parent::add("sub 2 2", "sub22.php");
parent::add("sub 2 3", "sub23.php");
break;
case 'cat3.php':
case 'sub31.php':
case 'sub32.php':
case 'sub33.php':
$this->menu = 'cat3.php';
parent::add("sub 3 1", "sub31.php");
parent::add("sub 3 2", "sub32.php");
parent::add("sub 3 3", "sub33.php");
break;
default:
$this->menu = NULL;
break;
}
}
}
/**
*** +---------------------------------------------------------------+
*** | menu |
*** | /! do not forget to change default value of uri (line 3) |
*** +---------------------------------------------------------------+
*** | brief print menu |
*** | CSS item: ul#menu, ul#submenu |
*** | selected item: li a.selected |
*** +---------------------------------------------------------------+
**/
function menu()
{
// get the name of the requested page
preg_match("!/((w+).php)!",$_SERVER['REQUEST_URI'], $uri);
if( !isset($uri[1]) ) $uri=array("", "index.php");
// initialization
$menu = new Menu();
$submenu = new Submenu($uri[1]);
// printing menu
print("<!-- menu -->n");
print("<ul id="menu">n");
foreach($menu as $item)
{
if( is_object($item) )
{
print("t<li><a href="./".$item->page.""");
if( $item->page == $uri[1] || $item->page == $submenu->menu )
{
print(" class="selected"");
}
print(">".$item->name."</a></li>n");
}
}
print("</ul>n");
// printing submenu (if it exists)
if( !is_null($submenu->menu) )
{
print("n<!-- sub menu -->n");
print("<ul id="submenu">n");
foreach($submenu as $item)
{
if( is_object($item) )
{
print("t<li><a href="./".$item->page.""");
if( $item->page == $uri[1] )
{
print(" class="selected"");
}
print(">".$item->name."</a></li>n");
}
}
print("</ul>n");
}
}
menu();
?>
|