вот весь код класса, Кстати с днем рождения :-)
Роман 28.11.2003 16:06
код не мой а с этого форума, я его просто чуток переделываю под себя:
## Класс TNavigation
##
## 1. В переменную Sroot загружается файл /root.cfg, содержащий основное меню сайта
## Структура файла:
## uri/title/status/... [любое количество дополнительных полей]
## поле status может содержать одно из значений:
## hide - скрыто в основном меню,
## admin - только для администратора
##
## 2. Если в текущей папке находится файл section.cfg, то грузим его в переменную $section
## Структура файла:
## uri/title/... [любое количество дополнительных полей]
## если в поле uri стоит знак ~, то это не ссылка, а начало новой секции
## если поле uri не определено, то это ссылка на текущий раздел
##
## 3. Методы:
## Init[] - инициализация переменных
## SecondNav[] - строит таблицу со вторичной навигацией ("градусник", "хлебные крошки")
## и записывает ее в переменную secondnav.
##
##
##
@CLASS
TNavigation
## ***********************************
## Инициализация переменных
## ***********************************
@Init[]
$sitename[$env:SERVER_NAME]
## Загружаем главное меню сайта
$root[^table::load[/root.cfg]]
## Вычисляем количество записей
$rootcount(0)
^root.menu{
^if(def $root.status){}{
$rootcount($rootcount + 1)
}
}
## ***********************************
## Вторичная навигация
## ***********************************
@SecondNav[][tempsection]
## Инициализируем secondnav и записываем в него главную страницу
$self.secondnav[^table::create{uri title}]
^self.secondnav.append{/ $sitename}
## Разбираем uri
$uri[$request:uri ]
$urisplit[^uri.lsplit[/]]
## Проходим по urisplit
^urisplit.menu{
^if((^urisplit.line[] > 1) && (^urisplit.line[] < $urisplit)){
^if(^urisplit.line[] == 2){
^if(^root.locate[uri;/$urisplit.piece/]){
^secondnav.append{^if(^urisplit.line[] == ($urisplit - 1)){}{$root.uri} ^taint[as-is][$root.title]}
}
$currenturi[$root.uri]
}{
## Если в текущей папке есть файл section.cfg, то ищем в нем
^if(-f "${currenturi}section.cfg"){
$tempsection[^table::load[${currenturi}section.cfg]]
^if(^tempsection.locate[uri;$urisplit.piece/]){
^secondnav.append{^if(^urisplit.line[] == ($urisplit - 1)){}{${currenturi}$tempsection.uri} ^taint[as-is][$tempsection.title]}
}
}
$currenturi[${currenturi}$urisplit.piece/]
}
}
}
@ShowSecondNav[]
<table width=* height=15 border=0 CELLPADDING=0 CELLSPACING=0 align=left>
<tr>
^SecondNav[]
^secondnav.menu{
^if(def $secondnav.uri){
<td height=13 class=vvmenu><img src="../images/strn.gif" WIDTH=11 HEIGHT=13 border=0><a href="$secondnav.uri" >^secondnav.title.lower[]</a></td>
}{
<td height=13 class=vvmenu><img src="../images/strn.gif" WIDTH=11 HEIGHT=13 border=0>^secondnav.title.lower[]</td>
}
}[]
</tr>
</table>
@ShowRoot[]
<table width=541 height=30 border=0 CELLPADDING=0 CELLSPACING=0 bgColor='#E0F9E5'>
<tr>
<td width=1 height=30 bgColor='#ffffff'><img src="images/zero.gif" WIDTH=1 HEIGHT=30 border=0></td>
^root.menu{
^ShowRoot_cell[]
}
</tr>
</table>
@ShowRoot_cell[]
^if(def $root.status){}{
^if($root.uri eq $request:uri){
<td width=89 align="center" class=vmenu bgColor='#D5EDD9'" >
$root.title
</td>
<td width=1 height=30 bgColor='#ffffff'><img src="images/zero.gif" WIDTH=1 HEIGHT=30 border=0></td>
}{
<td width=89 align="center" class=vmenu onmouseover="this.bgColor='#D5EDD9'"
onmouseout="this.bgColor='#E0F9E5'">
<a href="$root.uri">$root.title</a>
</td>
<td width=1 height=30 bgColor='#ffffff'><img src="images/zero.gif" WIDTH=1 HEIGHT=30 border=0></td>
}
}
@Showleftnav[]
<table width=150 border=0 CELLPADDING=0 CELLSPACING=0 bgColor='#E0F9E5'>
^vnt[]
</table>
@vnt[]
^if(-f "${currenturi}section.cfg"){
$lmenu[^table::load[${currenturi}section.cfg]]
^lmenu.menu{
^Showlmenu_cell[]
}
}{<tr><td>нет</td></tr>}
@Showlmenu_cell[]
^if($lmenu.uri eq $request:uri){
<tr><td width=89 align="center" class=vmenu bgColor='#D5EDD9'" >
$lmenu.title
</td></tr>
}{
<tr><td width=89 align="center" class=vmenu onmouseover="this.bgColor='#D5EDD9'"
onmouseout="this.bgColor='#E0F9E5'">
<a href="$lmenu.uri">$lmenu.title</a>
</td></tr>
}
^tempsection.menu{
^Showleftnav_cell[]
}
</table>
@Showleftnav_cell[]
^if($tempsection.uri eq $request:uri){
<tr><td width=* align="center" class=vmenu bgColor='#D5EDD9'" > $tempsection.title </td></tr>
}{
<tr><td width=* align="center" class=vmenu onmouseover="this.bgColor='#D5EDD9'" onmouseout="this.bgColor='#E0F9E5'">
<a href="$tempsection.uri">$tempsection.title</a>
</td>
</tr>
}