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@1173 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
d08a5b7787
commit
1869df4ddc
17 changed files with 313 additions and 378 deletions
|
|
@ -3,13 +3,17 @@
|
|||
<actions>
|
||||
<action name="dispMenuAdminContent" type="view" admin_index="true" standalone="true" />
|
||||
<action name="dispMenuAdminInsert" type="view" standalone="true" />
|
||||
<action name="dispMenuAdminManagement" type="view" standalone="true" />
|
||||
<action name="dispMenuAdminMidList" type="view" standalone="true" />
|
||||
|
||||
<action name="getMenuAdminTplInfo" type="model" standalone="true" />
|
||||
|
||||
<action name="procMenuAdminInsert" type="controller" standalone="true" />
|
||||
<action name="procMenuAdminDelete" type="controller" standalone="true" />
|
||||
|
||||
<action name="procMenuAdminInsertItem" type="controller" standalone="true" />
|
||||
<action name="procMenuAdminDeleteItem" type="controller" standalone="true" />
|
||||
<action name="procMenuAdminMakeXmlFile" type="controller" standalone="true" />
|
||||
<action name="procMenuAdminMove" type="controller" standalone="true" />
|
||||
<action name="procMenuAdminMoveItem" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
* @brief 메뉴(menu) 모듈의 기본 언어팩
|
||||
**/
|
||||
|
||||
$lang->cmd_menu_insert = '메뉴 생성';
|
||||
$lang->cmd_menu_management = '메뉴 설정';
|
||||
|
||||
$lang->layout_name = '레이아웃 이름';
|
||||
$lang->menu_count = '메뉴의 수';
|
||||
$lang->menu_management = '메뉴 관리';
|
||||
$lang->depth = '단계';
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('menu', 'view', 'dispMenuAdminContent');
|
||||
$oModuleController->insertActionForward('menu', 'view', 'dispMenuAdminInsert');
|
||||
$oModuleController->insertActionForward('menu', 'view', 'dispMenuAdminManagement');
|
||||
|
||||
// 레이아웃에서 사용할 디렉토리 생성
|
||||
FileHandler::makeDir('./files/cache/menu');
|
||||
|
|
|
|||
|
|
@ -13,10 +13,25 @@
|
|||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴 추가
|
||||
**/
|
||||
function procMenuAdminInsert() {
|
||||
// 입력할 변수 정리
|
||||
$args->title = Context::get('title');
|
||||
$args->menu_srl = getNextSequence();
|
||||
$args->listorder = $args->menu_srl * -1;
|
||||
|
||||
$output = executeQuery('menu.insertMenu', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->add('menu_srl', $args->menu_srl);
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴 삭제
|
||||
* 삭제시 메뉴 xml 캐시 파일도 삭제
|
||||
* menu_item과 xml 캐시 파일 모두 삭제
|
||||
**/
|
||||
function procMenuAdminDelete() {
|
||||
$menu_srl = Context::get('menu_srl');
|
||||
|
|
@ -30,11 +45,10 @@
|
|||
}
|
||||
}
|
||||
|
||||
// DB에서 삭제
|
||||
$args->menu_srl = $menu_srl;
|
||||
|
||||
// 메뉴 메뉴 삭제
|
||||
$args->menu_srl = $menu_srl;
|
||||
$output = executeQuery("menu.deleteMenuMenus", $args);
|
||||
$output = executeQuery("menu.deleteMenuItems", $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 메뉴 삭제
|
||||
|
|
@ -45,9 +59,9 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴에 메뉴 추가
|
||||
* @brief 메뉴에 아이템 추가
|
||||
**/
|
||||
function procMenuAdminInsertMenu() {
|
||||
function procMenuAdminInsertItem() {
|
||||
// 입력할 변수 정리
|
||||
$source_args = Context::getRequestVars();
|
||||
unset($source_args->module);
|
||||
|
|
@ -59,6 +73,7 @@
|
|||
|
||||
// 변수를 다시 정리 (form문의 column과 DB column이 달라서)
|
||||
$args->menu_srl = $source_args->menu_srl;
|
||||
$args->menu_item_srl = $source_args->menu_item_srl;
|
||||
$args->parent_srl = $source_args->parent_srl;
|
||||
$args->menu_srl = $source_args->menu_srl;
|
||||
$args->menu_id = $source_args->menu_id;
|
||||
|
|
@ -71,113 +86,104 @@
|
|||
$args->active_btn = $source_args->menu_active_btn;
|
||||
$args->group_srls = $source_args->group_srls;
|
||||
|
||||
$menu = Context::get('menu');
|
||||
|
||||
// 이미 존재하는지를 확인
|
||||
$oMenuModel = &getModel('menu');
|
||||
$menu_info = $oMenuModel->getMenuMenuInfo($args->menu_srl);
|
||||
$item_info = $oMenuModel->getMenuItemInfo($args->menu_item_srl);
|
||||
|
||||
// 존재하게 되면 update를 해준다
|
||||
if($menu_info->menu_srl == $args->menu_srl) {
|
||||
$output = executeQuery('menu.updateMenuMenu', $args);
|
||||
if($item_info->menu_item_srl == $args->menu_item_srl) {
|
||||
$output = executeQuery('menu.updateMenuItem', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 존재하지 않으면 insert를 해준다
|
||||
} else {
|
||||
$args->listorder = -1*$args->menu_srl;
|
||||
$output = executeQuery('menu.insertMenuMenu', $args);
|
||||
$args->listorder = -1*$args->menu_item_srl;
|
||||
$output = executeQuery('menu.insertMenuItem', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
}
|
||||
|
||||
// 해당 메뉴의 정보를 구함
|
||||
$menu_info = $oMenuModel->getMenuInfo($menu);
|
||||
$menu_title = $menu_info->menu->{$args->menu_id}->name;
|
||||
$menu_info = $oMenuModel->getMenu($args->menu_srl);
|
||||
$menu_title = $menu_info->title;
|
||||
|
||||
// XML 파일을 갱신하고 위치을 넘겨 받음
|
||||
$xml_file = $this->makeXmlFile($args->menu_srl, $args->menu_id);
|
||||
$xml_file = $this->makeXmlFile($args->menu_srl);
|
||||
|
||||
$this->add('xml_file', $xml_file);
|
||||
$this->add('menu_srl', $args->menu_srl);
|
||||
$this->add('menu_id', $args->menu_id);
|
||||
$this->add('menu_item_srl', $args->menu_item_srl);
|
||||
$this->add('menu_title', $menu_title);
|
||||
|
||||
// 현재 mid에 해당하는 모듈의 menu_srl 을 무조건 변경
|
||||
if(eregi("^mid=", $args->url)) {
|
||||
$target_args->menu_srl = $args->menu_srl;
|
||||
$target_args->mid = substr($args->url,4);
|
||||
$output = executeQuery("module.updateModuleMenu", $target_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴 메뉴 삭제
|
||||
**/
|
||||
function procMenuAdminDeleteMenu() {
|
||||
function procMenuAdminDeleteItem() {
|
||||
// 변수 정리
|
||||
$args = Context::gets('menu_srl','menu','menu_srl','menu_id');
|
||||
$args = Context::gets('menu_srl','menu_item_srl');
|
||||
|
||||
$oMenuModel = &getModel('menu');
|
||||
|
||||
// 원정보를 가져옴
|
||||
$node_info = $oMenuModel->getMenuMenuInfo($args->menu_srl);
|
||||
if($node_info->parent_srl) $parent_srl = $node_info->parent_srl;
|
||||
$item_info = $oMenuModel->getMenuItemInfo($args->menu_item_srl);
|
||||
if($item_info->parent_srl) $parent_srl = $item_info->parent_srl;
|
||||
|
||||
// 자식 노드가 있는지 체크하여 있으면 삭제 못한다는 에러 출력
|
||||
$output = executeQuery('menu.getChildMenuCount', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
if($output->data->count>0) return new Object(-1, msg_cannot_delete_for_child);
|
||||
if($output->data->count>0) return new Object(-1, 'msg_cannot_delete_for_child');
|
||||
|
||||
// DB에서 삭제
|
||||
$output = executeQuery("menu.deleteMenuMenu", $args);
|
||||
$output = executeQuery("menu.deleteMenuItem", $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 해당 메뉴의 정보를 구함
|
||||
$menu_info = $oMenuModel->getMenuInfo($args->menu);
|
||||
$menu_title = $menu_info->menu->{$args->menu_id}->name;
|
||||
$menu_info = $oMenuModel->getMenu($args->menu_srl);
|
||||
$menu_title = $menu_info->title;
|
||||
|
||||
// XML 파일을 갱신하고 위치을 넘겨 받음
|
||||
$xml_file = $this->makeXmlFile($args->menu_srl, $args->menu_id);
|
||||
$xml_file = $this->makeXmlFile($args->menu_srl);
|
||||
|
||||
$this->add('xml_file', $xml_file);
|
||||
$this->add('menu_id', $args->menu_id);
|
||||
$this->add('menu_title', $menu_title);
|
||||
$this->add('menu_srl', $parent_srl);
|
||||
$this->add('menu_item_srl', $parent_srl);
|
||||
$this->setMessage('success_deleted');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴의 메뉴를 이동
|
||||
**/
|
||||
function procMenuAdminMoveMenu() {
|
||||
function procMenuAdminMoveItem() {
|
||||
// 변수 설정
|
||||
$menu_id = Context::get('menu_id');
|
||||
$source_node_srl = str_replace('menu_'.$menu_id.'_','',Context::get('source_node_srl'));
|
||||
$target_node_srl = str_replace('menu_'.$menu_id.'_','',Context::get('target_node_srl'));
|
||||
$source_item_srl = str_replace('menu_'.$menu_id.'_','',Context::get('source_item_srl'));
|
||||
$target_item_srl = str_replace('menu_'.$menu_id.'_','',Context::get('target_item_srl'));
|
||||
|
||||
// target_node 의 값을 구함
|
||||
// target_item 의 값을 구함
|
||||
$oMenuModel = &getModel('menu');
|
||||
$target_node = $oMenuModel->getMenuMenuInfo($target_node_srl);
|
||||
$target_item = $oMenuModel->getMenuItemInfo($target_item_srl);
|
||||
|
||||
// source_node에 target_node_srl의 parent_srl, listorder 값을 입력
|
||||
$source_args->menu_srl = $source_node_srl;
|
||||
$source_args->parent_srl = $target_node->parent_srl;
|
||||
$source_args->listorder = $target_node->listorder;
|
||||
$output = executeQuery('menu.updateMenuMenuParent', $source_args);
|
||||
// source_item에 target_item_srl의 parent_srl, listorder 값을 입력
|
||||
$source_args->menu_item_srl = $source_item_srl;
|
||||
$source_args->parent_srl = $target_item->parent_srl;
|
||||
$source_args->listorder = $target_item->listorder;
|
||||
$output = executeQuery('menu.updateMenuItemParent', $source_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// target_node의 listorder값을 +1해 준다
|
||||
$target_args->menu_srl = $target_node_srl;
|
||||
$target_args->parent_srl = $target_node->parent_srl;
|
||||
$target_args->listorder = $target_node->listorder -1;
|
||||
$output = executeQuery('menu.updateMenuMenuParent', $target_args);
|
||||
// target_item의 listorder값을 +1해 준다
|
||||
$target_args->menu_item_srl = $target_item_srl;
|
||||
$target_args->parent_srl = $target_item->parent_srl;
|
||||
$target_args->listorder = $target_item->listorder -1;
|
||||
$output = executeQuery('menu.updateMenuItemParent', $target_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// xml파일 재생성
|
||||
$xml_file = $this->makeXmlFile($target_node->menu_srl, $menu_id);
|
||||
$xml_file = $this->makeXmlFile($target_item->menu_srl);
|
||||
|
||||
// return 변수 설정
|
||||
$this->add('menu_id', $menu_id);
|
||||
$this->add('source_node_srl', Context::get('source_node_srl'));
|
||||
$this->add('menu_srl', $target_item->menu_srl);
|
||||
$this->add('xml_file', $xml_file);
|
||||
$this->add('source_item_srl', $source_item_srl);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -188,20 +194,17 @@
|
|||
**/
|
||||
function procMenuAdminMakeXmlFile() {
|
||||
// 입력값을 체크
|
||||
$menu_id = Context::get('menu_id');
|
||||
$menu = Context::get('menu');
|
||||
$menu_srl = Context::get('menu_srl');
|
||||
|
||||
// 해당 메뉴의 정보를 구함
|
||||
$oMenuModel = &getModel('menu');
|
||||
$menu_info = $oMenuModel->getMenuInfo($menu);
|
||||
$menu_title = $menu_info->menu->{$menu_id}->name;
|
||||
$menu_info = $oMenuModel->getMenu($menu_srl);
|
||||
$menu_title = $menu_info->title;
|
||||
|
||||
// xml파일 재생성
|
||||
$xml_file = $this->makeXmlFile($menu_srl, $menu_id);
|
||||
$xml_file = $this->makeXmlFile($menu_srl);
|
||||
|
||||
// return 값 설정
|
||||
$this->add('menu_id',$menu_id);
|
||||
$this->add('menu_title',$menu_title);
|
||||
$this->add('xml_file',$xml_file);
|
||||
}
|
||||
|
|
@ -209,19 +212,19 @@
|
|||
/**
|
||||
* @brief 메뉴의 xml 파일을 만들고 위치를 return
|
||||
**/
|
||||
function makeXmlFile($menu_srl, $menu_id) {
|
||||
function makeXmlFile($menu_srl) {
|
||||
// xml파일 생성시 필요한 정보가 없으면 그냥 return
|
||||
if(!$menu_srl || !$menu_id) return;
|
||||
if(!$menu_srl) return;
|
||||
|
||||
// DB에서 menu_srl에 해당하는 메뉴 목록을 listorder순으로 구해옴
|
||||
// DB에서 menu_srl에 해당하는 메뉴 아이템 목록을 listorder순으로 구해옴
|
||||
$args->menu_srl = $menu_srl;
|
||||
$args->menu_id = $menu_id;
|
||||
$output = executeQuery("menu.getMenuMenuList", $args);
|
||||
$args->sort_index = 'listorder';
|
||||
$output = executeQuery('menu.getMenuItems', $args);
|
||||
if(!$output->toBool()) return;
|
||||
|
||||
// 캐시 파일의 이름을 지정
|
||||
$xml_file = sprintf("./files/cache/menu/%s_%s.xml.php", $menu_srl, $menu_id);
|
||||
$php_file = sprintf("./files/cache/menu/%s_%s.php", $menu_srl, $menu_id);
|
||||
$xml_file = sprintf("./files/cache/menu/%s.xml.php", $menu_srl);
|
||||
$php_file = sprintf("./files/cache/menu/%s.php", $menu_srl);
|
||||
|
||||
// 구해온 데이터가 없다면 노드데이터가 없는 xml 파일만 생성
|
||||
$list = $output->data;
|
||||
|
|
@ -238,10 +241,10 @@
|
|||
$list_count = count($list);
|
||||
for($i=0;$i<$list_count;$i++) {
|
||||
$node = $list[$i];
|
||||
$menu_srl = $node->menu_srl;
|
||||
$menu_item_srl = $node->menu_item_srl;
|
||||
$parent_srl = $node->parent_srl;
|
||||
|
||||
$tree[$parent_srl][$menu_srl] = $node;
|
||||
$tree[$parent_srl][$menu_item_srl] = $node;
|
||||
}
|
||||
|
||||
// xml 캐시 파일 생성
|
||||
|
|
@ -264,11 +267,11 @@
|
|||
**/
|
||||
function getXmlTree($source_node, $tree) {
|
||||
if(!$source_node) return;
|
||||
foreach($source_node as $menu_srl => $node) {
|
||||
foreach($source_node as $menu_item_srl => $node) {
|
||||
$child_buff = "";
|
||||
|
||||
// 자식 노드의 데이터 가져옴
|
||||
if($menu_srl&&$tree[$menu_srl]) $child_buff = $this->getXmlTree($tree[$menu_srl], $tree);
|
||||
if($menu_item_srl&&$tree[$menu_item_srl]) $child_buff = $this->getXmlTree($tree[$menu_item_srl], $tree);
|
||||
|
||||
// 변수 정리
|
||||
$name = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->name);
|
||||
|
|
@ -285,7 +288,7 @@
|
|||
else $group_check_code = "true";
|
||||
$attribute = sprintf(
|
||||
'node_srl="%s" text=\'<?=(%s?"%s":"")?>\' url=\'<?=(%s?"%s":"")?>\' open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" ',
|
||||
$menu_srl,
|
||||
$menu_item_srl,
|
||||
$group_check_code,
|
||||
$name,
|
||||
$group_check_code,
|
||||
|
|
@ -313,9 +316,9 @@
|
|||
$output = array("buff"=>"", "url_list"=>array());
|
||||
if(!$source_node) return $output;
|
||||
|
||||
foreach($source_node as $menu_srl => $node) {
|
||||
foreach($source_node as $menu_item_srl => $node) {
|
||||
// 자식 노드가 있으면 자식 노드의 데이터를 먼저 얻어옴
|
||||
if($menu_srl&&$tree[$menu_srl]) $child_output = $this->getPhpCacheCode($tree[$menu_srl], $tree);
|
||||
if($menu_item_srl&&$tree[$menu_item_srl]) $child_output = $this->getPhpCacheCode($tree[$menu_item_srl], $tree);
|
||||
else $child_output = array("buff"=>"", "url_list"=>array());
|
||||
|
||||
// 노드의 url에 ://가 있으면 바로 링크, 아니면 제로보드의 링크를 설정한다 ($node->href가 완성된 url)
|
||||
|
|
@ -344,7 +347,7 @@
|
|||
// 속성을 생성한다 ( url_list를 이용해서 선택된 메뉴의 노드에 속하는지를 검사한다. 꽁수지만 빠르고 강력하다고 생각;;)
|
||||
$attribute = sprintf(
|
||||
'"node_srl"=>"%s","text"=>(%s?"%s":""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(in_array(Context::get("zbxe_url"),array(%s))?1:0),"list"=>array(%s)',
|
||||
$node->menu_srl,
|
||||
$node->menu_item_srl,
|
||||
$group_check_code,
|
||||
$name,
|
||||
$group_check_code,
|
||||
|
|
@ -360,7 +363,7 @@
|
|||
);
|
||||
|
||||
// buff 데이터를 생성한다
|
||||
$output['buff'] .= sprintf('%s=>array(%s),', $node->menu_srl, $attribute);
|
||||
$output['buff'] .= sprintf('%s=>array(%s),', $node->menu_item_srl, $attribute);
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,64 +15,22 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 menu_srl의 정보를 이용하여 템플릿을 구한후 return
|
||||
* 관리자 페이지에서 특정 메뉴의 정보를 추가하기 위해 서버에서 tpl을 컴파일 한후 컴파일 된 html을 직접 return
|
||||
* @brief 전체 메뉴 목록을 구해옴
|
||||
**/
|
||||
function getMenuAdminTplInfo() {
|
||||
// 해당 메뉴의 정보를 가져오기 위한 변수 설정
|
||||
$menu_id = Context::get('menu_id');
|
||||
$menu_srl = Context::get('menu_srl');
|
||||
$layuot = Context::get('menu');
|
||||
$parent_srl = Context::get('parent_srl');
|
||||
function getMenuList($obj) {
|
||||
|
||||
// 회원 그룹의 목록을 가져옴
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $group_list);
|
||||
$args->sort_index = $obj->sort_index;
|
||||
$args->page = $obj->page?$obj->page:1;
|
||||
$args->list_count = $obj->list_count?$obj->list_count:20;
|
||||
$args->page_count = $obj->page_count?$obj->page_count:10;
|
||||
|
||||
// parent_srl이 있고 menu_srl이 없으면 하부 메뉴 추가임
|
||||
if(!$menu_srl && $parent_srl) {
|
||||
// 상위 메뉴의 정보를 가져옴
|
||||
$parent_info = $this->getMenuMenuInfo($parent_srl);
|
||||
// document.getDocumentList 쿼리 실행
|
||||
$output = executeQuery('menu.getMenuList', $args);
|
||||
|
||||
// 추가하려는 메뉴의 기본 변수 설정
|
||||
$menu_info->menu_srl = getNextSequence();
|
||||
$menu_info->parent_srl = $parent_srl;
|
||||
$menu_info->parent_menu_name = $parent_info->name;
|
||||
// 결과가 없거나 오류 발생시 그냥 return
|
||||
if(!$output->toBool()||!count($output->data)) return $output;
|
||||
|
||||
// root에 메뉴 추가하거나 기존 메뉴의 수정일 경우
|
||||
} else {
|
||||
// menu_srl 이 있으면 해당 메뉴의 정보를 가져온다
|
||||
if($menu_srl) $menu_info = $this->getMenuMenuInfo($menu_srl);
|
||||
|
||||
// 찾아진 값이 없다면 신규 메뉴 추가로 보고 menu_srl값만 구해줌
|
||||
if(!$menu_info->menu_srl) {
|
||||
$menu_info->menu_srl = getNextSequence();
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('menu_info', $menu_info);
|
||||
|
||||
// template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다.
|
||||
require_once("./classes/template/TemplateHandler.class.php");
|
||||
$oTemplate = new TemplateHandler();
|
||||
$tpl = $oTemplate->compile($this->module_path.'tpl', 'menu_info');
|
||||
|
||||
// return 할 변수 설정
|
||||
$this->add('menu_id', $menu_id);
|
||||
$this->add('tpl', $tpl);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief DB 에 생성된 메뉴의 목록을 구함
|
||||
* 생성되었다는 것은 DB에 등록이 되었다는 것을 의미
|
||||
**/
|
||||
function getMenuItemList() {
|
||||
$output = executeQuery('menu.getMenuList');
|
||||
if(!$output->data) return;
|
||||
|
||||
if(is_array($output->data)) return $output->data;
|
||||
return array($output->data);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -85,153 +43,71 @@
|
|||
$output = executeQuery('menu.getMenu', $args);
|
||||
if(!$output->data) return;
|
||||
|
||||
// menu, extra_vars를 정리한 후 xml 파일 정보를 불러옴 (불러올때 결합)
|
||||
$info = $output->data;
|
||||
$menu_title = $info->title;
|
||||
$menu = $info->menu;
|
||||
$vars = unserialize($info->extra_vars);
|
||||
|
||||
return $this->getMenuInfo($menu, $menu_srl, $menu_title, $vars);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴의 경로를 구함
|
||||
**/
|
||||
function getMenuPath($menu_name) {
|
||||
$class_path = sprintf('./menus/%s/', $menu_name);
|
||||
if(is_dir($class_path)) return $class_path;
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴의 종류와 정보를 구함
|
||||
* 다운로드되어 있는 메뉴의 종류 (생성과 다른 의미)
|
||||
**/
|
||||
function getDownloadedMenuList() {
|
||||
// 다운받은 메뉴과 설치된 메뉴의 목록을 구함
|
||||
$searched_list = FileHandler::readDir('./menus');
|
||||
$searched_count = count($searched_list);
|
||||
if(!$searched_count) return;
|
||||
|
||||
// 찾아진 메뉴 목록을 loop돌면서 필요한 정보를 간추려 return
|
||||
for($i=0;$i<$searched_count;$i++) {
|
||||
// 메뉴의 이름
|
||||
$menu = $searched_list[$i];
|
||||
|
||||
// 해당 메뉴의 정보를 구함
|
||||
$menu_info = $this->getMenuInfo($menu);
|
||||
|
||||
$list[] = $menu_info;
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 모듈의 conf/info.xml 을 읽어서 정보를 구함
|
||||
* 이것 역시 캐싱을 통해서 xml parsing 시간을 줄인다..
|
||||
**/
|
||||
function getMenuInfo($menu, $menu_srl = 0, $menu_title = "", $vars = null) {
|
||||
// 요청된 모듈의 경로를 구한다. 없으면 return
|
||||
$menu_path = $this->getMenuPath($menu);
|
||||
if(!$menu_path) return;
|
||||
|
||||
// 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음
|
||||
$xml_file = sprintf("%sconf/info.xml", $menu_path);
|
||||
if(!file_exists($xml_file)) return;
|
||||
|
||||
// cache 파일을 비교하여 문제 없으면 include하고 $menu_info 변수를 return
|
||||
$cache_file = sprintf('./files/cache/menu/%s.%s.cache.php', $menu, Context::getLangType());
|
||||
if(file_exists($cache_file)&&filectime($cache_file)>filectime($xml_file)) {
|
||||
include $cache_file;
|
||||
return $menu_info;
|
||||
}
|
||||
|
||||
// cache 파일이 없으면 xml parsing하고 변수화 한 후에 캐시 파일에 쓰고 변수 바로 return
|
||||
$oXmlParser = new XmlParser();
|
||||
$tmp_xml_obj = $oXmlParser->loadXmlFile($xml_file);
|
||||
$xml_obj = $tmp_xml_obj->menu;
|
||||
if(!$xml_obj) return;
|
||||
|
||||
$buff = '';
|
||||
|
||||
// 메뉴의 제목, 버전
|
||||
$buff .= sprintf('$menu_info->menu = "%s";', $menu);
|
||||
$buff .= sprintf('$menu_info->path = "%s";', $menu_path);
|
||||
$buff .= sprintf('$menu_info->title = "%s";', $xml_obj->title->body);
|
||||
$buff .= sprintf('$menu_info->version = "%s";', $xml_obj->attrs->version);
|
||||
$buff .= sprintf('$menu_info->menu_srl = $menu_srl;');
|
||||
$buff .= sprintf('$menu_info->menu_title = $menu_title;');
|
||||
|
||||
// 작성자 정보
|
||||
$buff .= sprintf('$menu_info->author->name = "%s";', $xml_obj->author->name->body);
|
||||
$buff .= sprintf('$menu_info->author->email_address = "%s";', $xml_obj->author->attrs->email_address);
|
||||
$buff .= sprintf('$menu_info->author->homepage = "%s";', $xml_obj->author->attrs->link);
|
||||
$buff .= sprintf('$menu_info->author->date = "%s";', $xml_obj->author->attrs->date);
|
||||
$buff .= sprintf('$menu_info->author->description = "%s";', $xml_obj->author->description->body);
|
||||
|
||||
// 추가 변수 (템플릿에서 사용할 제작자 정의 변수)
|
||||
if(!is_array($xml_obj->extra_vars->var)) $extra_vars[] = $xml_obj->extra_vars->var;
|
||||
else $extra_vars = $xml_obj->extra_vars->var;
|
||||
$extra_var_count = count($extra_vars);
|
||||
$buff .= sprintf('$menu_info->extra_var_count = "%s";', $extra_var_count);
|
||||
for($i=0;$i<$extra_var_count;$i++) {
|
||||
unset($var);
|
||||
unset($options);
|
||||
$var = $extra_vars[$i];
|
||||
|
||||
$buff .= sprintf('$menu_info->extra_var->%s->name = "%s";', $var->attrs->id, $var->name->body);
|
||||
$buff .= sprintf('$menu_info->extra_var->%s->type = "%s";', $var->attrs->id, $var->type->body);
|
||||
$buff .= sprintf('$menu_info->extra_var->%s->value = $vars->%s;', $var->attrs->id, $var->attrs->id);
|
||||
$buff .= sprintf('$menu_info->extra_var->%s->description = "%s";', $var->attrs->id, str_replace('"','\"',$var->description->body));
|
||||
|
||||
$options = $var->options;
|
||||
if(!$options) continue;
|
||||
|
||||
if(!is_array($options)) $options = array($options);
|
||||
$options_count = count($options);
|
||||
for($j=0;$j<$options_count;$j++) {
|
||||
$buff .= sprintf('$menu_info->extra_var->%s->options["%s"] = "%s";', $var->attrs->id, $options[$j]->value->body, $options[$j]->name->body);
|
||||
}
|
||||
}
|
||||
|
||||
// 메뉴
|
||||
if(!is_array($xml_obj->menus->menu)) $menus[] = $xml_obj->menus->menu;
|
||||
else $menus = $xml_obj->menus->menu;
|
||||
|
||||
$menu_count = count($menus);
|
||||
$buff .= sprintf('$menu_info->menu_count = "%s";', $menu_count);
|
||||
for($i=0;$i<$menu_count;$i++) {
|
||||
$id = $menus[$i]->attrs->id;
|
||||
if($menus[$i]->attrs->default == "true") $buff .= sprintf('$menu_info->default_menu = "%s";', $id);
|
||||
$buff .= sprintf('$menu_info->menu->{%s}->id = "%s";',$id, $menus[$i]->attrs->id);
|
||||
$buff .= sprintf('$menu_info->menu->{%s}->name = "%s";',$id, $menus[$i]->name->body);
|
||||
$buff .= sprintf('$menu_info->menu->{%s}->maxdepth = "%s";',$id, $menus[$i]->maxdepth->body);
|
||||
$buff .= sprintf('$menu_info->menu->{%s}->xml_file = "./files/cache/menu/".$menu_srl."_%s.xml.php";',$id, $id);
|
||||
$buff .= sprintf('$menu_info->menu->{%s}->php_file = "./files/cache/menu/".$menu_srl."_%s.php";',$id, $id);
|
||||
}
|
||||
|
||||
$buff = '<?php if(!defined("__ZBXE__")) exit(); '.$buff.' ?>';
|
||||
FileHandler::writeFile($cache_file, $buff);
|
||||
|
||||
if(file_exists($cache_file)) include $cache_file;
|
||||
$menu_info = $output->data;
|
||||
$menu_info->xml_file = sprintf('./files/cache/menu/%s.xml.php',$menu_srl);
|
||||
$menu_info->php_file = sprintf('./files/cache/menu/%s.php',$menu_srl);
|
||||
return $menu_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 menu_srl의 정보를 return
|
||||
* @brief 특정 menu_srl의 아이템 정보를 return
|
||||
* 이 정보중에 group_srls의 경우는 , 로 연결되어 들어가며 사용시에는 explode를 통해 array로 변환 시킴
|
||||
**/
|
||||
function getMenuMenuInfo($menu_srl) {
|
||||
// menu_srl 이 있으면 해당 메뉴의 정보를 가져온다
|
||||
$args->menu_srl = $menu_srl;
|
||||
$output = executeQuery('menu.getMenuMenu', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
function getMenuItemInfo($menu_item_srl) {
|
||||
// menu_item_srl이 있으면 해당 메뉴의 정보를 가져온다
|
||||
$args->menu_item_srl = $menu_item_srl;
|
||||
$output = executeQuery('menu.getMenuItem', $args);
|
||||
$node = $output->data;
|
||||
if($node->group_srls) $node->group_srls = explode(',',$node->group_srls);
|
||||
else $node->group_srls = array();
|
||||
return $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 menu_srl의 정보를 이용하여 템플릿을 구한후 return
|
||||
* 관리자 페이지에서 특정 메뉴의 정보를 추가하기 위해 서버에서 tpl을 컴파일 한후 컴파일 된 html을 직접 return
|
||||
**/
|
||||
function getMenuAdminTplInfo() {
|
||||
// 해당 메뉴의 정보를 가져오기 위한 변수 설정
|
||||
$menu_item_srl = Context::get('menu_item_srl');
|
||||
$parent_srl = Context::get('parent_srl');
|
||||
|
||||
// 회원 그룹의 목록을 가져옴
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
// parent_srl이 있고 menu_item_srl이 없으면 하부 메뉴 추가임
|
||||
if(!$menu_item_srl && $parent_srl) {
|
||||
// 상위 메뉴의 정보를 가져옴
|
||||
$parent_info = $this->getMenuItemInfo($parent_srl);
|
||||
|
||||
// 추가하려는 메뉴의 기본 변수 설정
|
||||
$item_info->menu_item_srl = getNextSequence();
|
||||
$item_info->parent_srl = $parent_srl;
|
||||
$item_info->parent_menu_name = $parent_info->name;
|
||||
|
||||
// root에 메뉴 추가하거나 기존 메뉴의 수정일 경우
|
||||
} else {
|
||||
// menu_item_srl 이 있으면 해당 메뉴의 정보를 가져온다
|
||||
if($menu_item_srl) $item_info = $this->getMenuItemInfo($menu_item_srl);
|
||||
|
||||
// 찾아진 값이 없다면 신규 메뉴 추가로 보고 menu_item_srl값만 구해줌
|
||||
if(!$item_info->menu_item_srl) {
|
||||
$item_info->menu_item_srl = getNextSequence();
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('item_info', $item_info);
|
||||
|
||||
// template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다.
|
||||
require_once("./classes/template/TemplateHandler.class.php");
|
||||
$oTemplate = new TemplateHandler();
|
||||
$tpl = $oTemplate->compile($this->module_path.'tpl', 'menu_item_info');
|
||||
|
||||
// return 할 변수 설정
|
||||
$this->add('tpl', $tpl);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -18,32 +18,62 @@
|
|||
* @brief 메뉴 관리의 첫 페이지
|
||||
**/
|
||||
function dispMenuAdminContent() {
|
||||
// 등록된 메뉴 목록을 구해옴
|
||||
$obj->page = Context::get('page');
|
||||
$obj->sort_index = 'listorder';
|
||||
$obj->list_count = 20;
|
||||
$obj->page_count = 20;
|
||||
|
||||
$oMenuModel = &getModel('menu');
|
||||
$menu_list = $oMenuModel->getMenuList();
|
||||
Context::set('menu_list', $menu_list);
|
||||
$output = $oMenuModel->getMenuList($obj);
|
||||
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('menu_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('index');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴 등록/수정 페이지
|
||||
* @brief 메뉴 등록 페이지
|
||||
**/
|
||||
function dispMenuAdminInsert() {
|
||||
// 선택된 메뉴의 정보르 구해서 세팅
|
||||
$menu_srl = Context::get('menu_srl');
|
||||
|
||||
if($menu_srl) {
|
||||
// 메뉴의 정보를 가져옴
|
||||
$oMenuModel = &getModel('menu');
|
||||
$menu_info = $oMenuModel->getMenu($menu_srl);
|
||||
|
||||
// 등록된 메뉴이 없으면 오류 표시
|
||||
if(!$menu_info) return $this->dispMenuAdminContent();
|
||||
|
||||
Context::set('menu_info', $menu_info);
|
||||
if($menu_info->menu_srl == $menu_srl) Context::set('menu_info', $menu_info);
|
||||
}
|
||||
|
||||
$this->setTemplateFile('menu_insert');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메뉴 관리 페이지
|
||||
**/
|
||||
function dispMenuAdminManagement() {
|
||||
// 선택된 메뉴의 정보르 구해서 세팅
|
||||
$menu_srl = Context::get('menu_srl');
|
||||
|
||||
if(!$menu_srl) return $this->dispMenuAdminContent();
|
||||
|
||||
// 메뉴의 정보를 가져옴
|
||||
$oMenuModel = &getModel('menu');
|
||||
$menu_info = $oMenuModel->getMenu($menu_srl);
|
||||
if($menu_info->menu_srl == $menu_srl) Context::set('menu_info', $menu_info);
|
||||
else return $this->dispMenuAdminContent();
|
||||
|
||||
Context::set('menu_info', $menu_info);
|
||||
|
||||
$this->setTemplateFile('menu_management');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 메뉴에서 선택할 수 있는 mid목록을 보여줌
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<query id="getMenuItems" action="select">
|
||||
<tables>
|
||||
<table name="menu_menu" />
|
||||
<table name="menu_item" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
|
|
@ -9,6 +9,6 @@
|
|||
<condition operation="equal" column="menu_srl" var="menu_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="listorder" order="asc" />
|
||||
<index var="sort_index" default="listorder" order="desc" />
|
||||
</navigation>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@
|
|||
</columns>
|
||||
<navigation>
|
||||
<index var="sort_index" default="listorder" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
</tables>
|
||||
<columns>
|
||||
<column name="menu_srl" var="menu_srl" filter="number" notnull="notnull" />
|
||||
<column name="title" var="name" notnull="notnull" />
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
<column name="listorder" var="listorder" notnull="notnull" />
|
||||
<column name="regdate" var="regdate" default="curdate()" />
|
||||
</columns>
|
||||
|
|
|
|||
|
|
@ -3,8 +3,9 @@
|
|||
<table name="menu_item" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="menu_srl" var="menu_srl" filter="number" notnull="notnull" />
|
||||
<column name="menu_item_srl" var="menu_item_srl" filter="number" notnull="notnull" />
|
||||
<column name="parent_srl" var="parent_srl" filter="number" default="0" />
|
||||
<column name="menu_srl" var="menu_srl" filter="number" notnull="notnull" />
|
||||
<column name="name" var="name" notnull="notnull" />
|
||||
<column name="url" var="url" />
|
||||
<column name="open_window" var="open_window" />
|
||||
|
|
|
|||
15
modules/menu/schemas/menu_item.xml
Normal file
15
modules/menu/schemas/menu_item.xml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<table name="menu_item">
|
||||
<column name="menu_item_srl" type="number" size="12" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="parent_srl" type="number" size="12" notnull="notnull" default="0" />
|
||||
<column name="menu_srl" type="number" size="12" notnull="notnull" index="idx_menu_srl" />
|
||||
<column name="name" type="varchar" size="250" />
|
||||
<column name="url" type="varchar" size="250" />
|
||||
<column name="open_window" type="char" size="1" default="N" />
|
||||
<column name="expand" type="char" size="1" default="N" />
|
||||
<column name="normal_btn" type="varchar" size="255" />
|
||||
<column name="hover_btn" type="varchar" size="255" />
|
||||
<column name="active_btn" type="varchar" size="255" />
|
||||
<column name="group_srls" type="text" />
|
||||
<column name="listorder" type="number" size="11" default="0" inex="idx_listorder" />
|
||||
<column name="regdate" type="date" index="idx_regdate" />
|
||||
</table>
|
||||
|
|
@ -5,5 +5,9 @@
|
|||
<response callback_func="completeDeleteMenuItem">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="menu_title" />
|
||||
<tag name="xml_file" />
|
||||
<tag name="menu_srl" />
|
||||
<tag name="menu_item_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
|
|||
|
|
@ -8,5 +8,6 @@
|
|||
<tag name="menu_srl" />
|
||||
<tag name="xml_file" />
|
||||
<tag name="menu_title" />
|
||||
<tag name="menu_item_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<response callback_func="completeMoveMenuItem">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="menu_id" />
|
||||
<tag name="source_node_srl" />
|
||||
<tag name="xml_file" />
|
||||
<tag name="source_item_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
|
|||
|
|
@ -21,29 +21,31 @@ function completeDeleteMenu(ret_obj) {
|
|||
}
|
||||
|
||||
/* 빈 메뉴 아이템 추가 */
|
||||
function doInsertLayoutMenuItem(parent_srl) {
|
||||
function doInsertMenuItem(parent_srl) {
|
||||
if(typeof(parent_srl)=='undefined') parent_srl = 0;
|
||||
var params = {node_srl:0, parent_srl:parent_srl}
|
||||
doGetMenuItemInfo(params);
|
||||
doGetMenuItemInfo('menu', params);
|
||||
deSelectNode();
|
||||
}
|
||||
|
||||
/* 메뉴 클릭시 적용할 함수 */
|
||||
function doGetMenuItemInfo(obj) {
|
||||
// layout, menu_id, node_srl을 추출
|
||||
function doGetMenuItemInfo(menu_id, obj) {
|
||||
// menu, menu_id, node_srl을 추출
|
||||
var fo_obj = xGetElementById("fo_menu");
|
||||
var node_srl = 0;
|
||||
var parent_srl = 0;
|
||||
|
||||
if(typeof(obj)!="undefined") {
|
||||
if(typeof(obj.getAttribute)!="undefined") {
|
||||
node_srl = obj.getAttribute("node_srl");
|
||||
} else {
|
||||
node_srl = obj.node_srl;
|
||||
parent_srl = obj.parent_srl;
|
||||
}
|
||||
}
|
||||
|
||||
var params = new Array();
|
||||
params["menu_srl"] = node_srl;
|
||||
params["menu_item_srl"] = node_srl;
|
||||
params["parent_srl"] = parent_srl;
|
||||
|
||||
// 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다.
|
||||
|
|
@ -59,87 +61,80 @@ function completeGetMenuItemTplInfo(ret_obj, response_tags) {
|
|||
fo_obj.menu_name.focus();
|
||||
}
|
||||
|
||||
|
||||
/* 메뉴를 드래그하여 이동한 후 실행할 함수 , 이동하는 node_srl과 대상 node_srl을 받음 */
|
||||
function doMoveTree(menu_id, source_node_srl, target_node_srl) {
|
||||
var fo_obj = xGetElementById("fo_move_menu");
|
||||
fo_obj.menu_id.value = menu_id;
|
||||
fo_obj.source_node_srl.value = source_node_srl;
|
||||
fo_obj.target_node_srl.value = target_node_srl;
|
||||
|
||||
// 이동 취소를 선택하였을 경우 다시 그림;;
|
||||
if(!procFilter(fo_obj, move_layout_menu)) {
|
||||
var params = new Array();
|
||||
params["menu_id"] = menu_id;
|
||||
params["source_node_srl"] = source_node_srl;
|
||||
completeMoveLayoutMenu(params);
|
||||
}
|
||||
}
|
||||
|
||||
function completeMoveLayoutMenu(ret_obj) {
|
||||
var menu_id = ret_obj['menu_id'];
|
||||
var source_node_srl = ret_obj['source_node_srl'];
|
||||
|
||||
var fo_menu = xGetElementById("fo_"+menu_id);
|
||||
if(!fo_menu) return;
|
||||
|
||||
var params = new Array();
|
||||
params["menu_id"] = menu_id;
|
||||
params["layout"] = fo_menu.layout.value;
|
||||
params["layout_srl"] = fo_menu.layout_srl.value;
|
||||
var xml_file = fo_menu.xml_file.value;
|
||||
var menu_title = fo_menu.menu_title.value;
|
||||
var tmp = source_node_srl.split('_');
|
||||
var menu_srl = tmp[tmp.length-1];
|
||||
loadTreeMenu(xml_file, menu_id, "menu_zone_"+menu_id, menu_title, doGetMenuItemInfo, menu_srl, doMoveTree);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* 메뉴 아이템 입력후 */
|
||||
function completeInsertMenuItem(ret_obj) {
|
||||
var menu_id = ret_obj['menu_id'];
|
||||
var xml_file = ret_obj['xml_file'];
|
||||
var menu_title = ret_obj['menu_title'];
|
||||
var menu_srl = ret_obj['menu_srl'];
|
||||
var menu_item_srl = ret_obj['menu_item_srl'];
|
||||
|
||||
if(!xml_file) return;
|
||||
loadTreeMenu(xml_file, menu_id, "menu_zone_"+menu_id, menu_title, doGetMenuItemInfo, menu_srl, doMoveTree);
|
||||
|
||||
if(!menu_srl) xInnerHtml("menu_zone_info_"+menu_id, "");
|
||||
loadTreeMenu(xml_file, 'menu', 'menu_zone_menu', menu_title, doGetMenuItemInfo, menu_item_srl, doMoveTree);
|
||||
|
||||
if(!menu_srl) xInnerHtml("menu_zone_info", "");
|
||||
}
|
||||
|
||||
/* 메뉴 삭제 */
|
||||
function doDeleteLayoutMenu(menu_srl, menu_id) {
|
||||
var fo_obj = xGetElementById("fo_"+menu_id);
|
||||
if(!fo_obj) return;
|
||||
|
||||
procFilter(fo_obj, delete_layout_menu);
|
||||
/* 메뉴를 드래그하여 이동한 후 실행할 함수 , 이동하는 item_srl과 대상 item_srl을 받음 */
|
||||
function doMoveTree(menu_id, source_item_srl, target_item_srl) {
|
||||
var fo_obj = xGetElementById("fo_move_menu");
|
||||
fo_obj.menu_id.value = menu_id;
|
||||
fo_obj.source_item_srl.value = source_item_srl;
|
||||
fo_obj.target_item_srl.value = target_item_srl;
|
||||
|
||||
// 이동 취소를 선택하였을 경우 다시 그림;;
|
||||
if(!procFilter(fo_obj, move_menu_item)) {
|
||||
var params = new Array();
|
||||
params["xml_file"] = xGetElementById('fo_menu').xml_file.value;
|
||||
params["source_item_srl"] = source_item_srl;
|
||||
completeMoveMenuItem(params);
|
||||
}
|
||||
}
|
||||
|
||||
function completeMoveMenuItem(ret_obj) {
|
||||
var source_item_srl = ret_obj['source_item_srl'];
|
||||
var xml_file = ret_obj['xml_file'];
|
||||
|
||||
var fo_menu = xGetElementById("fo_menu");
|
||||
if(!fo_menu) return;
|
||||
|
||||
var title = fo_menu.title.value;
|
||||
loadTreeMenu(xml_file, 'menu', "menu_zone_menu", title, doGetMenuItemInfo, source_item_srl, doMoveTree);
|
||||
}
|
||||
|
||||
/* 메뉴 목록 갱신 */
|
||||
function doReloadTreeMenu(menu_id) {
|
||||
var fo_obj = xGetElementById("fo_"+menu_id);
|
||||
if(!fo_obj) return;
|
||||
|
||||
function doReloadTreeMenu(menu_srl) {
|
||||
var params = new Array();
|
||||
params["menu_id"] = menu_id;
|
||||
params["layout"] = fo_obj.layout.value;
|
||||
params["layout_srl"] = fo_obj.layout_srl.value;
|
||||
params["menu_srl"] = menu_srl;
|
||||
|
||||
// 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다.
|
||||
var response_tags = new Array('error','message','menu_id', 'xml_file', 'menu_title');
|
||||
exec_xml('layout', 'procLayoutAdminMakeXmlFile', params, completeInsertLayoutMenu, response_tags, params);
|
||||
var response_tags = new Array('error','message', 'xml_file', 'menu_title');
|
||||
exec_xml('menu', 'procMenuAdminMakeXmlFile', params, completeInsertMenuItem, response_tags, params);
|
||||
}
|
||||
|
||||
/* 메뉴 삭제 */
|
||||
function doDeleteMenuItem(menu_item_srl) {
|
||||
var fo_obj = xGetElementById("fo_menu");
|
||||
if(!fo_obj) return;
|
||||
|
||||
procFilter(fo_obj, delete_menu_item);
|
||||
}
|
||||
|
||||
/* 메뉴 아이템 삭제 후 */
|
||||
function completeDeleteMenuItem(ret_obj) {
|
||||
var menu_title = ret_obj['menu_title'];
|
||||
var menu_srl = ret_obj['menu_srl'];
|
||||
var menu_item_srl = ret_obj['menu_item_srl'];
|
||||
var xml_file = ret_obj['xml_file'];
|
||||
alert(ret_obj['message']);
|
||||
|
||||
loadTreeMenu(xml_file, 'menu', 'menu_zone_menu', menu_title, doGetMenuItemInfo, menu_item_srl, doMoveTree);
|
||||
xInnerHtml("menu_zone_info", "");
|
||||
}
|
||||
|
||||
|
||||
/* 레이아웃의 메뉴에 mid 추가 */
|
||||
function doInsertMid(mid, menu_id) {
|
||||
if(!opener) {
|
||||
|
|
@ -147,7 +142,7 @@ function doInsertMid(mid, menu_id) {
|
|||
return;
|
||||
}
|
||||
|
||||
var fo_obj = opener.xGetElementById("fo_"+menu_id);
|
||||
var fo_obj = opener.xGetElementById("fo_menu");
|
||||
if(!fo_obj) {
|
||||
window.close();
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -1,39 +1,39 @@
|
|||
<input type="hidden" name="menu_item_srl" value="{$menu_info->menu_item_srl}" />
|
||||
<input type="hidden" name="parent_srl" value="{$menu_info->parent_srl}" />
|
||||
<input type="hidden" name="menu_item_srl" value="{$item_info->menu_item_srl}" />
|
||||
<input type="hidden" name="parent_srl" value="{$item_info->parent_srl}" />
|
||||
|
||||
<table border="1" width="100%">
|
||||
<col width="100" />
|
||||
<col width="*" />
|
||||
<!--@if($menu_info->parent_menu_name)-->
|
||||
<!--@if($item_info->parent_menu_name)-->
|
||||
<tr>
|
||||
<th>{$lang->parent_menu_name}</th>
|
||||
<td>{$menu_info->parent_menu_name}</td>
|
||||
<td>{$item_info->parent_menu_name}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_name}</th>
|
||||
<td><input type="text" name="menu_name" value="{htmlspecialchars($menu_info->name)}" /></td>
|
||||
<td><input type="text" name="menu_name" value="{htmlspecialchars($item_info->name)}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_url}</th>
|
||||
<td><input type="text" name="menu_url" value="{htmlspecialchars($menu_info->url)}" /><input type="button" value="{$lang->cmd_search_mid}" onclick="popopen('{getUrl('module','menu','act','dispMenuAdminMidList','menu_id', $menu_id)}');return false;"/></td>
|
||||
<td><input type="text" name="menu_url" value="{htmlspecialchars($item_info->url)}" /><input type="button" value="{$lang->cmd_search_mid}" onclick="popopen('{getUrl('module','menu','act','dispMenuAdminMidList','menu_id', $menu_id)}');return false;"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_url}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_open_window}</th>
|
||||
<td><input type="checkbox" name="menu_open_window" value="Y" <!--@if($menu_info->open_window=="Y")-->checked="true"<!--@end--> /></td>
|
||||
<td><input type="checkbox" name="menu_open_window" value="Y" <!--@if($item_info->open_window=="Y")-->checked="true"<!--@end--> /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_open_window}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_expand}</th>
|
||||
<td><input type="checkbox" name="menu_expand" value="Y" <!--@if($menu_info->expand=="Y")-->checked="true"<!--@end--> /></td>
|
||||
<td><input type="checkbox" name="menu_expand" value="Y" <!--@if($item_info->expand=="Y")-->checked="true"<!--@end--> /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_menu_expand}</td>
|
||||
|
|
@ -44,21 +44,21 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->menu_normal_btn}</td>
|
||||
<td><input type="text" name="menu_normal_btn" value="{htmlspecialchars($menu_info->normal_btn)}" /></td>
|
||||
<td><input type="text" name="menu_normal_btn" value="{htmlspecialchars($item_info->normal_btn)}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->menu_hover_btn}</td>
|
||||
<td><input type="text" name="menu_hover_btn" value="{htmlspecialchars($menu_info->hover_btn)}" /></td>
|
||||
<td><input type="text" name="menu_hover_btn" value="{htmlspecialchars($item_info->hover_btn)}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->menu_active_btn}</td>
|
||||
<td><input type="text" name="menu_active_btn" value="{htmlspecialchars($menu_info->active_btn)}" /></td>
|
||||
<td><input type="text" name="menu_active_btn" value="{htmlspecialchars($item_info->active_btn)}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->menu_group_srls}</th>
|
||||
<td>
|
||||
<!--@foreach($group_list as $key=>$val)-->
|
||||
<input type="checkbox" name="group_srls" value="{$key}" id="group_{$key}" <!--@if(in_array($key, $menu_info->group_srls))-->checked="true"<!--@end-->/>
|
||||
<input type="checkbox" name="group_srls" value="{$key}" id="group_{$key}" <!--@if(is_array($item_info->group_srls)&&in_array($key, $item_info->group_srls))-->checked="true"<!--@end-->/>
|
||||
<label for="group_{$key}">{$val->title}</label>
|
||||
<!--@end-->
|
||||
</td>
|
||||
|
|
@ -68,10 +68,10 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<!--@if($menu_info->name)-->
|
||||
<!--@if($item_info->name)-->
|
||||
<input type="submit" value="{$lang->cmd_save}" />
|
||||
<input type="button" value="{$lang->cmd_make_child}" onclick="doInsertLayoutMenu('{$menu_info->menu_item_srl}');return false" />
|
||||
<input type="button" value="{$lang->cmd_delete}" onclick="doDeleteLayoutMenu('{$menu_item_srl}');return false" />
|
||||
<input type="button" value="{$lang->cmd_make_child}" onclick="doInsertMenuItem('{$item_info->menu_item_srl}');return false" />
|
||||
<input type="button" value="{$lang->cmd_delete}" onclick="doDeleteMenuItem('{$menu_item_srl}');return false" />
|
||||
<!--@else-->
|
||||
<input type="submit" value="{$lang->cmd_submit}" />
|
||||
<!--@end-->
|
||||
|
|
@ -5,8 +5,9 @@
|
|||
|
||||
<!-- 메뉴 이동을 위해 임시로 사용하는 form -->
|
||||
<form id="fo_move_menu" action="./" method="get">
|
||||
<input type="hidden" name="source_node_srl" />
|
||||
<input type="hidden" name="target_node_srl" />
|
||||
<input type="hidden" name="menu_id" />
|
||||
<input type="hidden" name="source_item_srl" />
|
||||
<input type="hidden" name="target_item_srl" />
|
||||
</form>
|
||||
|
||||
|
||||
|
|
@ -22,7 +23,8 @@
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
<form id="fo_menu" action="./" method="get" onsubmit="return procFilter(this, insert_menu)">
|
||||
<form id="fo_menu" action="./" method="get" onsubmit="return procFilter(this, insert_menu_item)">
|
||||
<input type="hidden" name="title" value="{$menu_info->title}" />
|
||||
<input type="hidden" name="menu_srl" value="{$menu_info->menu_srl}" />
|
||||
<input type="hidden" name="xml_file" value="{$menu_info->xml_file}" />
|
||||
<input type="hidden" name="php_file" value="{$menu_info->php_file}" />
|
||||
|
|
@ -37,10 +39,10 @@
|
|||
<input type="checkbox" id="menu_enable_move" /> <label for="menu_enable_move">{$lang->cmd_enable_move_menu}</label>
|
||||
</div>
|
||||
<div>
|
||||
<input type="button" value="{$lang->cmd_insert}" onclick="doInsertLayoutMenuItem('{$menu_info->menu_srl}');return false;" />
|
||||
<input type="button" value="{$lang->cmd_insert}" onclick="doInsertMenuItem('menu');return false;" />
|
||||
<input type="button" value="{$lang->cmd_open_all}" onclick="openAllTreeMenu('menu');return false;" />
|
||||
<input type="button" value="{$lang->cmd_close_all}" onclick="closeAllTreeMenu('menu');return false;" />
|
||||
<input type="button" value="{$lang->cmd_remake_cache}" onclick="doReloadTreeMenu('menu');return false;" />
|
||||
<input type="button" value="{$lang->cmd_remake_cache}" onclick="doReloadTreeMenu('{$menu_info->menu_srl}');return false;" />
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue