| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
firesanek 05.10.2006 16:36
сейчас еще раз все внимательно поизучал.. получилось вот что.@shTree[id;data]
<script type="text/javascript">
function displaySubTree(num, level, hide)
{
var el = document.all["subtree_" + num];
var img = document.all["bullet_" + num];
if (el.style.display == "none") el.style.display = "block"; else el.style.display = "none";
img.src = "/img$Site:LangImagePrfix/admin/b_" + level + ((el.style.display == "none")?"_off":"_on") + hide + ".gif";
}
</script>
$LevelNum(1)
$NodeNum(0)
^if($data.N){
^shTreeLevelN[$id;^data.N.junction[]]
}{
^shTreeLevel[$id;^data.$LevelNum.junction[]]
}
@shTreeLevel[id;leveldata]
^leveldata.menu{
# ^throw[a;=$leveldata=]
$title[^data.$LevelNum.show[$leveldata]]
^NodeNum.inc[]
^LevelNum.inc[]
и т.д.т.е. data я получаю в shTree, а затем в shTreeLevel передаю тот же data, но лишь одно поле из него: junction.это: ^data.$LevelNum.show[$leveldata] все таки вызов метода. в поле хеша show кладется junction, т.е. указатель на код (в вашем случае не метод).получается что то что написано тут (создание хеша и заполнение поля show):
^if(def $Types){
^shTree[^if($IdPresent){$Id};
$.1[
$.junction[$getTypes]
$.show[$shTypeItem]
]
$.2[
$.junction[$getYears] ^rem{ функция получения данных для соответствующего уровня}
$.args[id] ^rem{ параметры функции, описанной выше }
$.show[$shYearItem] ^rem{ функция вывода текста элемента дерева }
$.current[$.id[$CurVal.type]] ^rem{ значение аргументов для текущего (выделенного пользователем) узла }
]
$.3[
$.junction[$getMonths]
$.args[type,year]
$.show[$shMonthItem]
$.current[$.type[$CurVal.type] $.year[$CurVal.year]]
]
$.4[
$.junction[$getNewsHeads] ^rem{ на последнем уровне у этой функции всегда должно быть в результате поле id }
$.args[type,year,month]
$.show[$shNewsItem]
$.current[$.type[$CurVal.type] $.year[$CurVal.year] $.month[$CurVal.month]]
]
]
}{
^shTree[^if($IdPresent){$Id};
$.1[
$.junction[$getYears]
$.show[$shYearItem]
]
$.2[
$.junction[$getMonths]
$.args[year]
$.show[$shMonthItem]
$.current[$.year[$CurVal.year]]
]
$.3[
$.junction[$getNewsHeads] ^rem{ на последнем уровне у этой функции всегда должно быть в результате поле id }
$.args[year,month]
$.show[$shNewsItem]
$.current[$.year[$CurVal.year] $.month[$CurVal.month]]
]
]
}ненужно?