mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-14 00:39:57 +09:00
git-svn-id: http://xe-core.googlecode.com/svn/trunk@311 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
42bc6d7daa
commit
94561be97f
5 changed files with 60 additions and 26 deletions
|
|
@ -11,6 +11,7 @@
|
|||
$lang->menu_count = '메뉴의 수';
|
||||
$lang->menu_management = '메뉴 관리';
|
||||
$lang->depth = '단계';
|
||||
$lang->parent_menu_name = '상위 메뉴명';
|
||||
$lang->menu_name = '메뉴명';
|
||||
$lang->menu_srl = '메뉴의 고유 번호';
|
||||
$lang->menu_id = '메뉴의 이름';
|
||||
|
|
|
|||
|
|
@ -84,9 +84,9 @@
|
|||
}
|
||||
|
||||
// XML 파일을 갱신하고 위치을 넘겨 받음
|
||||
$xml_file = $this->makeXmlFile($args->layout_srl);
|
||||
$xml_file = $this->makeXmlFile($args->layout_srl, $args->menu_id);
|
||||
|
||||
$this->add('xml_file', $xml_file[$args->menu_id]);
|
||||
$this->add('xml_file', $xml_file);
|
||||
$this->add('menu_srl', $args->menu_srl);
|
||||
$this->add('menu_id', $args->menu_id);
|
||||
$this->add('menu_title', $menu_title);
|
||||
|
|
@ -117,15 +117,15 @@
|
|||
}
|
||||
|
||||
// XML 파일을 갱신하고 위치을 넘겨 받음
|
||||
$xml_file = $this->makeXmlFile($args->layout_srl);
|
||||
$xml_file = $this->makeXmlFile($args->layout_srl, $args->menu_id);
|
||||
|
||||
$this->add('xml_file', $xml_file[$args->menu_id]);
|
||||
$this->add('xml_file', $xml_file);
|
||||
$this->add('menu_id', $args->menu_id);
|
||||
$this->add('menu_title', $menu_title);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief xml 파일을 갱싱
|
||||
* @brief xml 파일을 갱신
|
||||
**/
|
||||
function procMakeXmlFile() {
|
||||
// 입력값을 체크
|
||||
|
|
@ -146,47 +146,68 @@
|
|||
}
|
||||
|
||||
// xml파일 재생성
|
||||
$xml_file = $this->makeXmlFile($layout_srl);
|
||||
$xml_file = $this->makeXmlFile($layout_srl, $menu_id);
|
||||
|
||||
// return 값 설정
|
||||
$this->add('menu_id',$menu_id);
|
||||
$this->add('menu_title',$menu_title);
|
||||
$this->add('xml_file',$xml_file[$menu_id]);
|
||||
$this->add('xml_file',$xml_file);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴의 xml 파일을 만들고 위치를 return
|
||||
**/
|
||||
function makeXmlFile($layout_srl) {
|
||||
function makeXmlFile($layout_srl, $menu_id) {
|
||||
if(!$layout_srl || !$menu_id) return;
|
||||
|
||||
// DB에서 layout_srl에 해당하는 메뉴 목록을 listorder순으로 구해옴
|
||||
$oDB = &DB::getInstance();
|
||||
$args->layout_srl = $layout_srl;
|
||||
$args->menu_id = $menu_id;
|
||||
$output = $oDB->executeQuery("layout.getLayoutMenuList", $args);
|
||||
if(!$output->toBool()) return;
|
||||
|
||||
// xml 파일의 이름을 지정
|
||||
$xml_file = sprintf("./files/cache/layout/%s_%s.xml", $layout_srl, $menu_id);
|
||||
|
||||
// 구해온 데이터가 없다면 걍 return
|
||||
$list = $output->data;
|
||||
if(!$list) {
|
||||
$xml_buff = "<root />";
|
||||
FileHandler::writeFile($xml_file, $xml_buff);
|
||||
return $xml_file;
|
||||
}
|
||||
if(!is_array($list)) $list = array($list);
|
||||
|
||||
// 루프를 돌면서 tree 구성
|
||||
$list_count = count($list);
|
||||
for($i=0;$i<$list_count;$i++) {
|
||||
$node = $list[$i];
|
||||
$menu_id = $node->menu_id;
|
||||
$menu_list[$menu_id][] = $node;
|
||||
$menu_id_list[] = $menu_id;
|
||||
}
|
||||
if(!count($menu_id_list)) return;
|
||||
$menu_srl = $node->menu_srl;
|
||||
$parent_srl = $node->parent_srl;
|
||||
|
||||
foreach($menu_id_list as $menu_id) {
|
||||
unset($node_list);
|
||||
$node_list = $menu_list[$menu_id];
|
||||
$buff = "";
|
||||
foreach($node_list as $node) {
|
||||
$buff .= sprintf('<node node_srl="%s" text="%s" />', $node->menu_srl, $node->name);
|
||||
$tree[$parent_srl][$menu_srl] = $node;
|
||||
}
|
||||
if($buff) $buff = "<root>".$buff."</root>";
|
||||
else $buff = "<root />";
|
||||
|
||||
$xml_file[$menu_id] = sprintf("./files/cache/layout/%s_%s.xml", $layout_srl, $menu_id);
|
||||
FileHandler::writeFile($xml_file[$menu_id], $buff);
|
||||
}
|
||||
$xml_buff = "<root>".$this->getXmlTree($tree[0], $tree)."</root>";
|
||||
FileHandler::writeFile($xml_file, $xml_buff);
|
||||
return $xml_file;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief array로 정렬된 노드들을 parent_srl을 참조하면서 recursive하게 돌면서 xml 데이터 생성
|
||||
**/
|
||||
function getXmlTree($source_node, $tree) {
|
||||
if(!$source_node) return;
|
||||
foreach($source_node as $menu_srl => $node) {
|
||||
$child_buff = "";
|
||||
|
||||
if($menu_srl&&$tree[$menu_srl]) $child_buff = $this->getXmlTree($tree[$menu_srl], $tree);
|
||||
|
||||
if($child_buff) $buff .= sprintf('<node node_srl="%s" text="%s">%s</node>', $node->menu_srl, $node->name, $child_buff);
|
||||
else $buff .= sprintf('<node node_srl="%s" text="%s" />', $node->menu_srl, $node->name);
|
||||
}
|
||||
return $buff;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -177,9 +177,14 @@
|
|||
|
||||
// parent_srl이 있고 menu_srl이 없으면 하부 메뉴 추가임
|
||||
if(!$menu_srl && $parent_srl) {
|
||||
// 상위 메뉴의 정보를 가져옴
|
||||
$parent_info = $this->getLayoutMenuInfo($parent_srl);
|
||||
|
||||
// 추가하려는 메뉴의 기본 변수 설정
|
||||
$oDB = &DB::getInstance();
|
||||
$menu_info->menu_srl = $oDB->getNextSequence();
|
||||
$menu_info->parent_srl = $parent_srl;
|
||||
$menu_info->parent_menu_name = $parent_info->name;
|
||||
} else {
|
||||
// menu_srl 이 있으면 해당 메뉴의 정보를 가져온다
|
||||
if($menu_srl) $menu_info = $this->getLayoutMenuInfo($menu_srl);
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="layout_srl" var="layout_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="equal" column="menu_id" var="menu_id" filter="number" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="listorder" order="desc" />
|
||||
|
|
|
|||
|
|
@ -4,6 +4,12 @@
|
|||
<table border="1" width="100%">
|
||||
<col width="100" />
|
||||
<col width="*" />
|
||||
<!--@if($menu_info->parent_menu_name)-->
|
||||
<tr>
|
||||
<th>{$lang->parent_menu_name}</th>
|
||||
<td>{$menu_info->parent_menu_name}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_name}</th>
|
||||
<td><input type="text" name="menu_name" value="{$menu_info->name}" /></td>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue