parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

tricord 22.11.2006 12:58 / 22.11.2006 16:21

Как я понимаю надо построить раскрывающееся дерево. Можно решить следующими способами:
1. Построить раскрытое дерево, а потом Java скриптом рулить им,
пример
2. Строить средствами Парсера(Большое спасибо Мише за его примеры):
 
@main[]
^pSQL.server{
# достаем не более 20 корневых сообщений (parent_id == 0)
$rootMessages[^getMessagesByParent[0;20]]

# достаем все сообщения в тредах, которые мы только что достали
$messages[^getMessagesByThread[$rootMessages]]

# создаем хеш, в котором ключи — id элемента, содержание — таблица со всеми их дочерними элементами
$hashTree[^createHashTree[$messages]]

# cоздаем хэш со всеми родителями текущего элемента(id) включая его самого.
$ParentsForIdHash[^getParentsForIdHash[$form:id]]

# выводим все его элементы в виде раскрывающегося дерева дерева
^printMessagesByParent1[0]

}

@printMessagesByParent1[parent_id][levelmessages]
###################################################################################################
#
^if($hashTree.[$parent_id]){
	$levelmessages[$hashTree.[$parent_id]]
       <ul>
	^levelmessages.menu{	
	    ^if(def $form:mid && $form:id == $levelmessages.forum_message_id){
	         <li><a href="?id=$levelmessages.forum_message_id"><b>$levelmessages.title</b></a></li>
	       }{               
                              ^if($form:id == $levelmessages.forum_message_id){
		       <li><b>$levelmessages.title</b></li>
	                                                                                                                }{
		       <li ><a href="?id=$levelmessages.forum_message_id">$levelmessages.title</a></li>
	                                                                                                                    }	      
	      }
	      	      	      
                ^if($parentsMessage.[$levelmessages.forum_message_id]){
	        ^printMessagesByParent1[$levelmessages.forum_message_id]
        }              
        }
       </ul>
}
#end @printMessagesByParent1[]